-
Notifications
You must be signed in to change notification settings - Fork 36
/
Copy pathWHATSNEW
3171 lines (2380 loc) · 139 KB
/
WHATSNEW
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
What's New
==========
This file summarizes OMNeT++ changes in each release. For changes related to
simulation model compatibility, see doc/API-Changes. For more detailed info
about all changes, see include/ChangeLog, src/*/ChangeLog, and ide/ChangeLog.
OMNeT++ 4.3 (March 2013)
------------------------
IDE:
- Updated to Eclipse 3.8.2.
- The CDT debugger no longer stops at the main() function by default.
- The budnled gdb is downgraded to 7.4
Tools:
- The configure script now correctly detects the X headers on Mac OS X 10.8.
OMNeT++ 4.3rc1 (Jan 2013)
-------------------------
IDE:
- Analysis tool: added support for computed scalars. Read the updated the
User Guide for further details.
- Analysis tool: added 'Logarithmic X axis' option to scatter chart.
- Added NED editor support for named channels.
- Added support for opening files from the command line, i.e. use:
$ omnetpp Aloha.ned
- Added full screen mode (Ctrl-Shift-F11).
- Usability improvements in the Analysis Tool.
- Better error reporting in the Sequence Chart and Event Log views.
- The CDT C++ code analyzer has been turned off as it was reporting
too many false positives.
- The IDE has been switched over to use CDT's DSF debugger instead of
the older CDI.
- The IDE no longer runs the C/C++ Indexer before build (the code now
collects the information for makefile dependency generation by other
means)
- Added pretty printing of STL containers (std::map, etc), simtime_t
and other objects to the debugger; see the updated User Guide for
details.
- Updated the bundled MinGW (GCC, linker and GDB).
- Updated to Eclipse 3.8.1; the IDE now requires Java 1.6+.
NED:
- Added named channels support, e.g. "...<--> eth1: EthernetChannel <-->...",
with the purpose of making it easier to address channel objects when
assigning parameters from ini files. Channel definitions can now specify
a default name (via the @defaultname property), too.
Sim:
- Added the cPatternMatcher and cMatchExpression utility classes to the API.
cPatternMatcher is a glob-style pattern matching class. cMatchExpression
builds on top of cPatternMatcher and lets you combine patterns with AND,
OR, NOT for matching fields of arbitrary objects.
- Added hasEncapsulatedPacket() to cPacket.
- Implemented calculateWeightedSingleShortestPathsTo() in cTopology.
- Signals implementation now allows static initialization of simsignal_t
variables.
- Fixed a bug in Expression where '-2m' was evaluated to '2' (meter was lost)
Tools:
- The simulator now supports Mac OS X 10.8 (you need to install XQuartz; see
the Install Guide)
- Simplified makefile output: Makefiles now output only the filenames to the
console instead of whole commands. This makes the build output less noisy.
If you need the old behavior, use the 'V=1' (verbose on) option on
the make command line.
OMNeT++ 4.2.2 (March 2012)
--------------------------
Bugs fixed: http://tinyurl.com/omnetpp422-fixes
OMNeT++ 4.2.1 (Jan 2012)
------------------------
Bugs fixed: http://tinyurl.com/omnetpp421-fixes
OMNeT++ 4.2 (Nov 2011)
----------------------
Several bug fixes.
OMNeT++ 4.2rc2 (Nov 2011)
-------------------------
Documentation:
- Revised and significantly expanded the "C++ Development" chapter in the
User Guide to better assist model developers; smaller improvements in
other chapters
Tools:
- Updated MSYS and MinGW binaries in the Windows distribution.
- The build system now creates 64-bit binaries on Mac OS X 10.6 and 10.7
(if your processor supports it). Previously the -m32 flag was added to
the GCC command line to force the creation of 32-bit binaries. (This
was necessary because earlier versions of CDT did not support 64-bit
debugging).
- Enabled pretty-printing of variables in gdb (see below)
IDE:
- Better C++ debugging experience: std::string, std::vector, std::map and
other standard classes as well as simtime_t are now displayed in a
meaningful way; simulation objects (cObject) display their full paths.
This functionality is enabled by gdb pretty printer extensions written
in Python, and is thus available for command-line gdb debugging too.
For activating the pretty printers, see misc/gdb/README.
- NED documentation generator improvements: better-looking tables in the
generated documentation; running Doxygen is now cancellable; etc.
- Dropped PowerPC support for the IDE because Mac OS X 10.7 no longer
supports this architecture.
Sim:
- Refactored operator= and copy constructor in all classes. Now they
delegate to the same function in the super class, and the common
part of the two is factored out to private copy() functions.
- Fixed all warnings to make it compile using -Wall -Werror.
- Coroutines used for 'activities' are now implemented using the
swapcontext() POSIX call (if it is available on the system).
Sample simulations:
- Database example revived. It demonstrates using database as configuration
source, as storage for output scalars and vectors, and as source of
network topology. Currently it works with MySQL.
Countless bug fixes and smaller improvements.
OMNeT++ 4.2rc1 (Aug 2011)
-------------------------
Ini files:
- Ini files: iterations (${...}) can now refer to other iteration variables,
using the dollar or the dollar-brace syntax ($var or ${var}). This
improvement makes it possible to have loops where the inner iteration range
depends on the outer one. When needed, the default top-down nesting order
of iteration loops is modified (loops are reordered) to ensure that
expressions only refer to more outer loop variables, but not to inner ones.
When this is not possible, an error is generated with the "circular
dependency" message. Variables are substituted textually, and the text
resulting from substitution is NOT evaluated except in the '<from>..<to>
step <step>' syntax, and in the 'constraint=' ini file option. CAUTION:
textual substitution means that variables in arithmetic expressions should
be protected with parentheses. The text substitution model was chosen for
greater flexibility as well as the ability to produce a more consistent
semantics. See src/envir/ChangeLog for more details.
- Incompatible change: In the constraint= configuration option, variables now
MUST be referenced with the dollar sign ($foo or ${foo} syntax), and also
be surrounded with parens (to ensure precedence after the textual variable
substitution). For example, the expression x+y<10 must be changed to
$x+$y<10, or for greater safety, to ($x)+($y)<10.
- Parallel iteration: it is now supported to use named iteration
variables and parallel iteration together (${foo=...!bar} syntax.)
This was not supported previously.
- Some iteration-related error messages have been improved to provide
more context.
Sim:
- Result filter/recorder interfaces and registration macros made public
(moved to src/sim), so that users can contribute their own result filters
and recorders. Files: cresultlistener.h, cresultfilter.h cresultrecorder.h.
Result filters have to be subclassed from cResultFilter or the more specific
cNumericResultFilter or cObjectResultFilter base classes and registered with
the Register_ResultFilter() macro; result recorders have to be subclassed
from cResultRecorder or the more specific cNumericResultRecorder, and
registered with the Register_ResultRecorder() macro. After that, the new
filter or recorder can be used in the source= and record= attributes of
@statistic, and with the **.result-recording-modes configuration option.
- The Define_Function() macros have been renamed to Define_NED_Math_Function().
For backwards compatibility, the old macro definitions remain, but issue
a deprecation warning. Note that the preferred way of defining new NED
functions is now the Define_NED_Function() macro.
- The API for custom NED functions defined via Define_NED_Function() has been
changed. cDynamicExpression::Value (the old value class) has been factored
out to a new cNEDValue class. Data members are no longer public, they can
be manipulated via various methods. NOTE: This change is NOT backwards
compatible: user-supplied NED functions will need to be revised.
Look at src/sim/nedfunctions.cc for code examples.
- Measurement unit support: added "mps" (m/s) and "kmph" (km/h) as recognized
units; changed "Kbps" to the more standard "kbps"; changed byte multiples
notation to use the now-standard IEC binary prefixes: KB -> KiB,
MB -> MiB, GB -> GiB, TB -> TiB. The latter changes affect backwards
compatibility, i.e. you may need to update existing models.
Tools:
- opp_run: bugfix: release-mode simulation models compiled as shared libraries
could not be run using a debug-mode opp_run program (they either crashed
or reported that a module was not registered with the Register_Module()
macro.) As part of the fix, a new opp_run_release program has been
introduced, and opp_run (which is now always compiled as debug) delegates
to it when necessary.
Due to makefile changes related to the fix, you may need to re-create the
makefiles of your simulation when upgrading to OMNeT++ 4.2. (You only need
to do that when working on the command line. The IDE automatically recreates
the makefiles, so no action is needed on your part if you are using only the
IDE.) See src/envir/ChangeLog for details of this change.
- Implemented number filter expressions using multiple inputs for statistics source
expressions. For example:
@statistic[dropRate](source="count(packetDropped)/count(packetSent)");
- opp_msgc: improvement: announcements and type definitions now observe
whether they are above the namespace declaration (=outside the namespace)
or below it (=inside the namespace). This change makes it consistent with
cplusplus blocks that had this behavior for quite some time. A related
improvement is that type lookup in namespaces has been modified to make it
possible to use unqualified names when declaring fields. See
src/nedxml/ChangeLog for details.
- Akaroa support improved; samples/aloha/akaroa.ini was added as example
Documentation:
- Several chapters in the User Manual have been updated; especially, the
Message Definitions section was turned into a separate chapter, and
was completely revised.
IDE:
- Upgraded to Eclipse 3.7
- Added Eclipse Marketplace to the Help menu. You can now install
additional features from the market.
- Before running the simulations, the IDE will show the command line in
the console view to help you execute the same simulation from the
command line.
- Ctrl-Tab now works on freshly opened NED files even if you do not explicitly
select a simple module. In that case, the IDE opens the .h and .cc files
associated with the first simple module in the NED file.
- Improvement on the Manage Build Configurations dialog: newly created build
configurations are now configured, by copying the source entries from one
of the existing build configurations.
- Project Makemake Options property page: overhaul for better usability.
- Documentation generator: turn on JAVADOC_AUTOBRIEF in newly generated
doxy.cfg files. (When this option is on, there is no need for @brief
in C++ doxy comments; instead the first sentence of the comment is taken
automatically as brief description.)
- Bug fixes on: IDE makefile generator; the Project Features feature;
the Inifile Editor (hover info, content assist, etc); the NED editor
(display string proposals for connections and channels, etc.); Organize
Imports feature; NED documentation generator; Simulation Launcher (e.g.
launching folders with simulations in them works again);
- SVN support removed from the IDE. It had very few users, and can be
installed from the Market if needed.
- Removed Animation Player as it was only a "technology preview" bundled
with the beta releases to gather feedback from the user community. The
animator is scheduled to appear in the next major OMNeT++ release.
OMNeT++ 4.2b2 (May 2011)
------------------------
Most important feature: "Project Features" (see below).
NED:
- Added support for conditional submodules. Syntax:
udp: UDP if needsUDP {...}
tcp: <tcpType> like ITCP if needsTCP {...}
- Added the xml() NED function, which accepts a string argument and parses
it as XML. Its most notable use is eliminating "empty.xml" files from INET:
one can use xml("<root/>") in NED files instead.
- Implemented default value for parametric submodule and channel types.
NED now supports the following syntax:
mobility: <default("NullMobility")> like IMobility;
The effect is that the NullMobility NED type will be used for the mobility
submodule if the type name is not specified otherwise, e.g. in the config-
uration with something like
**.mobility.type-name = "ConstSpeedMobility"
- Added the firstAvailable() NED function, which is helpful with the Project
Features feature (see below). It accepts any number of strings (see new
varargs support for NED functions), interprets them as NED type names
(either short names or fully qualified names), and returns the first one
that exists and is also "available" (its C++ implementation class exists).
Example usage:
tcp: <default(firstAvailable("TCP_lwIP", "TCP_NSC", "TCP"))> {..}
It chooses the TCP_lwIP, TCP_NSC or TCP module type for the tcp submodule,
in this order, unless the type is explicitly defined to be something else
in the configuration.
- Parametric submodule type can now also be specified in NED files, using
patterns that end in the new "typename" keyword. An example:
network Net {
parameters:
host[*].tcp.typename = "TCP_lwIP";
...
}
Ini files:
- The "type-name" per-object configuration option (**.typename=) has been
renamed in to "typename", for consistency with the similar new NED feature.
Sim:
- Implemented varargs support for NED functions. If the signature (see
Define_NED_Function() and Define_NED_Function2() macros) ends in ", ...",
then the function will accept any number of additional arguments of any type.
At runtime, the implementation has access to both the actual number and
types of args. When passing extra args, optional arguments (those marked
with '?' in the signature) must all be present, i.e. varargs can only come
when all typed args are there.
IDE:
- Upgraded to Eclipse 3.6.2
- Implemented the "Project Features" feature, which makes it possible to
disable unused parts ("features") of a project to reduce compilation time
and complexity. It has been invented to help INET Framework users and
developers deal with the growing size of the framework. Features are
described in the project's .oppfeatures file, authored by INET developers.
Users can activate/deactivate features in the Project Features page of
the Project Properties dialog (this page is directly accessible from the
Project menu and from the Build Configurations submenu of the project's
context menu in Project Explorer). Features map to NED packages and C++
source folders; disabling a feature maps to NED package exclusion, and
folder exclusion in CDT (C++ Development) configuration. Features can also
define C/C++ symbols (for #ifdefs), and extra libraries to link with.
At build time, the IDE checks the project's configuration (NED, CDT) and
if it is inconsistent with the selected features, it offers fixing it.
Features can also be used from the command line by exporting Makefiles
(or opp_makemake commands) that reflect a particular enablement of features.
- Support for excluding (disabling) NED packages. This feature is needed for
the Project Features feature. Exclusions can be edited on the NED Source
Folders project property page, and are saved into the project's .nedfolders
file.
IDE/Animation Player:
- Implemented lazy loading of the eventlog file: the tool can now animate
large eventlog files with acceptable performance.
- Animation effects refined, e.g. packet transmission on a datarate channel.
- Heavy bugfixing. Note that the tool is still being actively developed, and
it is generally not yet ready for everyday use.
IDE/Inifile Editor:
- Usability: the editor now comes up with the page (text or form) that was
used last time, and not always with the form editor. (When you flip the
editor to the other page, the page type is stored in the preferences.
When an editor is opened, the setting is read from the preferences and
the corresponding page is activated.)
- Improved text hover (F2) and hyperlink (Ctrl+click) support: the editor
can now show information and go to the definition of modules that occur
in the inifile key. For example, for a **.host[*].tcp.sackSupport = true
line, the user can hover over (or Ctrl+click) the host[*] part, and the
editor will show relevant information and go to the definition of the
host[] submodule vector in the NED network description.
- Improved content assist: per-object configuration options are now filtered
by the type of object that the key refers to; for example, if you type
**.ppp[*].txPkBytes.<Ctrl+Space>, the editor will know from the NED files
that txPkBytes is a statistic, and offer completions accordingly.
- Content assist: different types of completions (modules, parameters,
statistics, configuration options, etc) are now marked with icons.
- Markers on included inifiles are now removed when the main inifile is
closed. (Fix for #176)
- Added the Copy action to the Module Parameters view context menu: you can
now select the key for an unassigned parameter in the view, and copy/paste
it into the editor area.
IDE/Wizards:
- New Tictoc Example and New Source-Sink Example wizards: fix: the root
Makefile executed opp_makemake in the src/ folder at each build,
overwriting the IDE-generated Makefile.
- New OMNeT++ Project wizard template: now it is possible to set "custom make"
for a folder: specify <foldername>:CUSTOM in the makemakeOptions= template
variable in template.properties. Use "." to name the project root folder.
Example: makemakeOptions = .: CUSTOM, src: --deep -meta:recurse...
- New option for template.properties: preRunTemplate=<fti-file-name>. Example:
preRunTemplate = main.fti. The option causes the given template file to be
evaluated for its side effects, just after the user hits Finish but before
any file is copied or template is evaluated. It is not allowed to produce
text output, but the variables it sets will be substituted into other
template.properties variables, and will also be available in other template
files. (Note: all other templates are run in isolation, and cannot change
variables for other templates!) The preRunTemplate option is the only way
to programmatically set the value of makemakeOptions and similar
template.properties options.
IDE/Graphical Editor:
- Switched back double-click behaviour to Open NED Type action. The Properties
dialog can now opened with Ctrl+Enter (Alt+Enter was unavailable.)
IDE/Sequence Chart and Event Log:
- Added show/hide options for arrows that represent mixed dependencies.
(Such arrows are drawn when the sequence chart is filtered, and represent
e.g. a sequence of message sendings and self-messages)
- Eventlog: enhanced performance of event tracing filter
- Simulations now record the termination message and result code into the
eventlog file
- Note: eventlog file format has changed (in order to better serve the
Animation Tool) -- .elog files recorded with any prior version of OMNeT++
have to be re-recorded.
Many bug fixes, mostly in the IDE; you can see the detailed list at:
http://tinyurl.com/omnetpp42b2-fixes
OMNeT++ 4.2b1 (Feb 2011)
------------------------
Partial list of changes since 4.1 (see ChangeLog files in individual folders
for a more complete list):
Simulation runtime:
- Removed #include <winsock.h> from <platdep/timeutil.h>; the reason
is that it conflicted with lwIP code recently integrated into INET.
<platdep/sockets.h> still includes <winsock.h>, but now
<platdep/sockets.h> (and <platdep/timeutil.h>) MUST precede <omnetpp.h>
in all source files.
- Ini files: implemented multiple inheritance for sections. Syntax:
[Config Foobar]
extends = Foo, Bar
When the runtime looks for a config option or param assignment, sections
are examined in a "fallback order" until the first match is found. In the
above example the order would be: Foobar, Foo, Bar, General.
OMNeT++ uses C3 lineratization to compute the section fallback order,
see e.g. http://en.wikipedia.org/wiki/C3_linearization
- Ini files: better parsing for iteration variables, e.g. the value in
${x=uniform(1,2)} is now parsed as one item, not as "uniform(1" and "2)".
Nested parens/brackets/braces and string literals are recognized;
escaping commas and close-braces is now possible using backslash.
- NED: fixed deep parameter assignments: parameter references were
interpreted in the wrong context. Deep parameter assignments are when
an inifile-like pattern is used to name the parameter(s) to be set, as in:
network Inet {
parameters:
host[*].tcp.nagleEnabled = true;
...
}
- Resolved spurious errors: 'Class "..." not found -- perhaps its code
was not linked in, or the class wasn't registered with Register_Class()'
Added a check to ensure that the debug and the release versions of
the simulation library are not loaded at the same time. This problem
occurred when a model was built as 'release' and the debug version of
'opp_run' was used to start it. As a result, the simulation seemingly
started but complained about missing classes.
- Fix: Some classes were thrown out by the linker if OMNeT++ was statically
built, and the simulation was complaining at runtime about the missing
cCompoundModule class.
- Eventlog recording: .elog file format change: message creations and
duplications (cloning) are now recorded; MC (ModuleCreated) entries now
precede GC (GateCreated) entries. IMPORTANT: The sequence chart in the
IDE will only work on .elog files in the new format, existing event logs
need to be re-recorded!
IDE/Animation Player:
- This is a new component in the IDE, you can access it by right-clicking
an .elog file and selecting "Open With / OMNeT++ Animation Player" from
the context menu. This is a preliminary implementation (Technology
Preview) not yet optimized for large files, the practical maximum file
size it can handle is about 10MB.
IDE/C++ Development:
- Added a new "Clean Local" item to the project's context menu that does
not clean referenced projects. This resolves the problem that CDT's
"Clean Project" command also cleans the referenced projects, e.g. if
you have a Foo project that depends on INET, cleaning Foo also cleans
INET which takes a long time to recompile. Now you can use the
"Clean Local" command to clean Foo only.
- Added new "OMNeT++ Code Formatter" profile. This coding convention follows
the rules used in the OMNeT++ kernel and the INET Framework. (No tabs, etc.)
- Added MachO64 binary parsers and error parsers. This makes it possible to
debug a 64-bit executable on Mac OS X 10.6
- Linux only: Added support for profiling with Valgrind. To activate this
feature, select "Profile as... / OMNeT++ Simulation" from the Project
Exporer context menu. This feature requires Valgrind to be installed
on your system. (Note: the main IDE toolbar does not show a Profile button
next to the Run and Debug buttons at this time, but profiling is still
available via the Project Explorer context menu.)
- The Makemake page in Project Properties can now fix the "Source Folders
differ across configurations" problem in the project setup, which usually
occurs when you add a build configuration to an existing project later.
The dialog now displays a "Fix it" link.
IDE/Graphical Editor:
- Several performance optimizations for the NED Editor. It can open much larger
files than before. NED validation is done now in a background thread and
does not block the UI.
- Select 'NED Type Selection' dialog now works correctly on first open. It
shows the defining projects for the types.
- Enhanced drag and drop capabilities in NED Graphical Editor. You can
drop NED types into a compound module either to create submodules
(if you drop it into the submodule area), or to turn it into
an inner type (if you drop on the title of the compound module).
- The Graphical Editor now displays the file's package name at the top.
- Graphical Editor displays self-connections as arcs in the module's upper
right corner.
- The resize/move feedback figures have been changed from a simple outline
to translucent blue.
- Added a 'Properties' dialog that can edit one or several objects
at a time, and allows you to change graphical and type information.
It also has a preview panel.
- Enhanced editing of type fields in the 'Property View'. The editor correctly
enumerates the possible choices and adds an import statement if necessary.
- 'Open Type' and 'Open Supertype' have been reassigned to the F3 function key.
Double-click now opens the 'Properties' dialog.
- The IDE now uses the use native (C++) layouter code for placing unpinned
submodules, which means better performance and consistency with the
simulation runtime (Tkenv).
IDE/Inifile Editor:
- Support for inifile improvements in this release, namely multiple section
inheritance and better parsing for iteration variables
- Performance improvements: inifile is now analyzed in the background so that
it does not block the UI, and features that need its results (hover text,
content assist, etc) have a timeout how long they are willing to wait for it
(see bug #132 for details). It is now also possible to disable inifile
analysis. Further performance and UI responsiveness improvements are planned.
IDE/Sequence Chart:
- Added 'Goto Simulation Time' and 'Goto Event Number' in the context menu.
- 'Go to Simulation Time' in the 'Event Log' view now supports relative values.
- The Sequence Chart tool now knows about message creations and duplications
(cloning), and as a result, in certain situations it is now able to better
identify relationships between events and draw a better sequence chart.
NOTE: Due to changes in the .elog file format, the tool will only work with
newly recorded files. Existing event logs need to be re-recorded!
IDE/Launcher:
- The command-line for launching the simulation now uses relative paths instead
of absolute ones. This makes the starting command-line easier to understand.
IDE/Documentation Generator:
- Added tilde notation as an alternative to automatic hyperlinking of module
names in comments. The latter was often too agressive (e.g. linking to the
IP module in the phrase "IP address" is wrong). Automatic hyperlinking can
now be turned off in the generator, and then the user is expected to mark
words to be hyperlinked with a tilde: "the ~IP module". The INET Framework
has already been converted to use the tilde notation.
- Added Javascript to autoload frameset page if a content page is opened by
itself. This is useful when URLs to specific content pages are posted on
the mailing list or sent over email.
- Implemented @include in NED comments. Lines in the included file don't have
to start with "//", but otherwise they are processed exactly as NED comment
text.
- Fix: External pages (@externalpage) now appear unded the "Selected Topics"
node of the navigation tree in the generated documentation.
- Several minor fixes: recognize the <u> (underline) HTML tag; sanitize the
file names for @page; added/refined test cases
Tkenv:
- Parallel simulation: Placeholder modules are now displayed with a semi-
transparent icon (or if it's a rectangle or oval, with dotted border).
- Fix (bug #248): compute coordinates (and sizes) in double and not int;
necessary if background scaling (bgs display string tag) is set up.
- Better choice of default user interface font, especially on Linux.
- The generic UI font and the font used in graphics are now configurable
in the Simulation Options dialog.
- The default font for log text is now proportional (same as the generic UI
font), for better readability and space efficiency. It can be customized
(switched back to a monospace font, etc) in the Simulation Options dialog.
- Minor: menu items have been changed to title case
- Tcl errors are now logged into .tkenvlog instead of dumping them on stdout.
Misc:
- Added -g option to 'scavetool scalar' command. You can specify how the
scalars are grouped into columns/variables.
- The build system can now build large projects on windows. The 32K command-line
limitation has been resolved.
- Updated base system to Eclipse 3.6.1
- Added a detailed IDE change log file doc/IDE-Changes
Several bugs have been fixed; you can see the detailed list at:
http://tinyurl.com/omnetpp42b1-fixes
OMNeT++ 4.1 (June 2010)
-----------------------
Changes after 4.1rc2:
- Testing on various Linux distros, updated Installation Guide
- Simulation error messages now contain the event number and the simulation
time
- Tkenv: contents of simulation error dialogs are now inserted into the
main window as well, for reference and easier copy/paste
- Various bug fixes
OMNeT++ 4.1 rc2 (June 2010)
-------------------------------
Simulation kernel:
- cChannel: added forceTransmissionFinishTime(simtime t), so that
channels can support aborted transmissions (needed e.g. for Ethernet).
- cChannel: added getNominalDatarate(). This is often needed in models,
for example in INET to fill in the interface entry.
- added forgetXMLDocument(filename) and flushXMLDocumentCache() to
cEnvir (see bug #131)
- cPar: added a note to the xmlValue() method that the lifetime of
the returned objects may be limited. Modules should NOT hang on to
cXMLElement pointers between events!
Envir:
- Ini file inclusion now behaves as textual substitution: if an included
ini file does not contain [General] or [Config XXX] lines, the file's
content will be treated as if copy/pasted into the section containing
the include. Ini files that do not start with a section heading will
now be accepted and treated as if they started with [General].
Rationale: allow factoring out orthogonal pieces of config into
separate files.
IDE:
- Added support for the `m` tag on connections allowing to set the preferred
directions of a connection between a submodule and its compound module.
Misc:
- various fixes on Tkenv, the IDE and the build system
OMNeT++ 4.1 rc1 (May 2010)
--------------------------
Partial list of changes since 4.1b4 (see ChangeLog files in individual folders
for a more complete list):
Simulation kernel:
- Enter_Method_Silent() may now take arguments (a printf-like arg list),
and it logs the call into the event log file.
- Re-added cChannel::calculateDuration() that was removed in 4.1b3
- Fix: exponential(), normal(), truncnormal() and geometric() could produce
+INF, due to log(dblrand()) in their code where dblrand() can produce zero.
As a side-effect of the fix, the fingerprints of all simulations that use
those distributions as input have changed.
NED:
- New NED function: expand(). It substitutes ${} config variables into a string.
Example usage in a NED parameter:
string fileName = default(expand("${resultdir}/${configname}-${runnumber}.txt"));
MSG:
- Implemented @sizetype property for array fields; it can be used to specify
the C++ type of the array size and array indices (by default it is unsigned
int).
- Fix: A "using namespace" line inside a cplusplus {{...}} block confused the
parser.
Tkenv:
- Implemented bilinear filtering for image/icon resize in Tkenv.
- Simulation Options dialog: layouting algorithm can now be chosen
from Fast, Advanced and Adaptive (default: Adaptive)
- Implemented minimum icon size, resize window on layout and auto-adjust zoom
options. New controls in the Simulation Options dialog:
- "[] Resize window to fit network with current zoom level first"
- "[] Adjust zoom so that network fills window"
- "Minimum icon size when zoomed out (pixels)"
- Added hotkeys for zoom in/out: Ctrl+N and Ctrl+M. Ctrl+N was already
used by "Toggle module name", it was reassigned to Ctrl+D.
- Improvements on the classic ("fast") layouting algorithm
- Application icon for Tkenv
- Several bug fixes (see ChangeLog)
IDE:
- Analysis Tool: charts now support a much higher zoom level
- NED Documentation Generator: generating full inheritance and usage diagrams
can now be turned off (they were often too busy to be useful)
- Several other bug fixes
OMNeT++ 4.1 beta 4 (April 2010)
-------------------------------
Simulation kernel:
- Added statistics to the built-in channel types, ned.DatarateChannel and
ned.DelayChannel. They are not recorded by default; recording can be turned
on with "**.channel.result-recording-modes = all" in the configuration.
DatarateChannel records the following: busy state (as vector);
utilization (time average as scalar); number of packets (as scalar);
number of bytes (as scalar); number of packets discarded in channel
disabled state (as scalar); throughput (bps, as scalar). You can see the
declarations of these statistics by running "opp_run -h neddecls".
- handleParameterChange() is now called for each component with NULL
as the parameterName after the last stage of the initialization phase.
This allows the components to refresh their cached parameter values
if some parameters were changed during the initialization phase.
Existing code needs to be updated to accept name=NULL and interpret
it as "any parameter".
- signals framework: changes in the cIListener interface since the previous
beta; changed cTimestampedValue class (which is used to emit a signal for
statistics purposes with a different timestamp than the current simulation
time) to support all data types
- histogram classes: added getters getNumFirstVals() and getRangeExtension-
Factor(); for integer histograms, cell boundaries are now at whole numbers,
not halfs; implemented dup(); default number of cells changed
- cChannel's process() method (which was introduced in the previous beta)
was renamed to processMessage()
NED:
- Inner types can now refer to the parameters of their enclosing type.
- Statistics recording: introduced the source= key within the @statistic
property, which lets you use a derived value as statistic. For example:
@statistic[dropPercent](source=100*dropRatio;record=vector,last),
where dropRatio is a signal emitted from the module. This feature also
lets one emit message or packet objects as signals, and record some
property of them as statistics. For example:
@statistic[bytesSent](source=packetBytes(pkSent);record=sum).
- The @signal property can now be used to declare signals, for example
those that can be used as source for @statistic. An example:
@signal[pkSent](type=cPacket).
- Introduced optional statistic recording modes: now you can add optional
items to the record= key of the the @statistic property, by appending "?"
to them. For example: @statistic[eed](record=vector?,histogram?,mean).
By default, only non-optional items are active; optional ones can be
turned on with **.result-recording-modes = all (see below).
- Implemented the @dynamic property. When a submodule is marked with @dynamic
or @dynamic(true) inside a compound module, the submodule will not be
instantiated at network setup; rather, it is expected that it will be
instantiated at runtime, using dynamic module creation. A module created
this way will pick up parameter values from the submodule declaration in
the NED file as well as from the ini file. @dynamic submodules are
displayed in the graphical NED editor as semi-transparent, but otherwise
can be edited (and configured in the inifile editor) like other submodules.
Envir:
- The result-recording-mode= configuration option was renamed to
result-recording-modes=.
- result-recording-modes now has support for optional recording modes (those
marked with "?" in @statistic(record=..), see above). The value "default"
selects non-optional modes from @statistic(record=..), and "all" selects
all of them. The list can be fine-tuned by adding recording modes prefixed
with "+" or "-" (for "add" and "remove", respectively). A lone "-" disables
all recording modes. Some examples:
**.result-recording-modes = default,+vector,-histogram
**.result-recording-modes = all,-vector
**.result-recording-modes = last
The first one selects non-optional recording modes plus records everything
as output vector, but disables histogram recording. The second one selects
all recording modes but disables vector recording. The third one only
records the last value from all statistics. There are further examples in
src/envir/ChangeLog.
- Created a result filter and result recorder API, for filters/recorders
that can be used in the source= and record= keys of @statistic.
Result filters must subclass from ResultFilter, recorders subclass from
ResultRecorder; classes must be registered with the Register_ResultFilter()
and Register_ResultRecorder() macros.
- New command-line options: -h neddecls prints the NED declarations for
built-in types (ned.DatarateChannel, etc); -h resultfilters and -h
resultrecorders prints the list of available result filters and
result recorders (such as min, max, mean, timeavg, last, histogram,
vector, packetBytes, packetBits, etc).
- Result file change: integer histograms are now marked with "attr type int"
instead of "attr isDiscrete 1" in output scalar files.
IDE:
- NED editor: added banner comment for module/channel types created
graphically
- Ini file editor usability: more specific names for table columns in form
editor; split "Output Files" page into "Result Recording" and "Event Log"
pages in form editor
- Analysis editor: separate horizontal and vertical zoom controls;
more usable context menu for charts; result file reading made more
robust (better error messages on errors); at the same time, removed
support for reading old-syle (3.x) vector files
- Sequence Chart: more usable context menu; display of method calls and
message reuse arrows turned off by default
- Improved the display of @statistic and @signal properties in Module
Hierarchy view
- Dozens of bugfixes and other improvements
Tooling:
- Updated MinGW and MSYS tools in the Windows distribution. The new MSYS
now should work on Win64 (although the compiler still produces 32bit code).
The GCC compiler is updated to a pre-release version of MinGW 4.5 (this
solves the debugging issues on Windows platform).
Build system:
- Extra long command lines are supported now for the MinGW linker. (Uses a
temporary file to pass args to the linker if the command line is >32K.)
Tkenv:
- It is now possible to turn eventlog recording on/off interactively, not only
via omnetpp.ini options; see "Toggle eventlog recording" toolbar button.
- Module initialization messages are now not printed; we added an option to
turn them back on in the Simulation Options dialog.
Cmdenv:
- Printing of module initialization messages is now suppressed in express mode
Bugfixes since beta 3:
- in express mode, log messages (ev<<) were not recorded into the eventlog
- NED graphical editor added explicit "ned.IdealChannel" to connections
- NED editor failed to add blank lines between components created graphically
- pack/unpack error for "long long" type fixed (on MinGW compiler)
- fixed (reduced) the size of filter text field in the NED editor palette
- Go To C++ Definition in NED file is working again
- opp_test: %subst to understand backrefs ($1) in the replacement string
- many other bug fixes
OMNeT++ 4.1 beta 3 (March 2010)
-------------------------------
Simulation library:
- New channel programming model. The user needs to override the process()
method of cChannel, which has the following parameters: the message;
the time the message will reach the source gate of the connection; and
a reference to a struct (cChannel::result_t) in which the method should
return the results. result_t fields to be filled in are the propagation
delay, the transmission duration, and a flag to indicate whether to model
that the message got lost in the channel (when this is set, the simulation
kernel will delete the message after process() returns).
- New class: cHistogram. It is a merger of cDoubleHistogram and cLongHistogram
(which have been kept for compatibility). cHistogram can work in "integers"
or "doubles" mode; the difference is that in "integers mode", cell boundaries
will be chosen to be integers. The default behavior is to automatically
choose the mode after precollecting some (by default 100) observations.
The significance of cHistogram is that the "histogram" recording mode
of the new statistics framework (see below) uses cHistogram in its default
setup.
- New statistics recording framework using signals. The module's C++ code
emits statistics as signals, and collector objects are attached externally,
by the simulation framework. Statistics are declared in NED files using
@statistic properties, and actual recording (whether to record values as
output vector, or as histogram, or the average/minimum/maximum etc value
as scalars) can be configured from ini files. The runtime cost of
statistics that are not recorded is minimal, which allows module authors
to emit lots of statistics in the code, and let the end users decide which
statistics they want to record and in what form. Earlier, such functionality
would have required extensive C++ programming in module.
- Added a simTime() NED function that returns the current simulation time.
simTime() makes it possible to create time-dependent distributions, e.g.:
interArrivalTime = exponential(simTime()<10s ? 0.5s : 2s)