forked from omnetpp/omnetpp
-
Notifications
You must be signed in to change notification settings - Fork 0
/
WHATSNEW
5398 lines (3941 loc) · 231 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++ 6.0pre7 (March 2020)
-------------------------------
This is a preview release demonstrating our completely revamped charting
solution in the IDE. It is now completely based on Python3, with support
for displaying Matplotlib charts right inside the IDE, accessing simulation
results in the form of Pandas DataFrames, and using the built-in (older)
charts from Python. Analysis files (.anf) created by older versions of the
IDE (and vice versa) cannot be opened by this release, because the internal
model changed substantially.
Changes compared to OMNeT++ 5.6:
Core:
- Introduced structured NED parameters using JSON like syntax.
IDE:
- A completely rewritten Charts interface in the Analysis Tool.
- Updated NED documentation generator with command line support (opp_neddoc).
Samples:
- Added a new sample (pythoncharts) that contains the documentation,
and some sample analysis files for the new Python-based plotting,
using the data from the resultfiles sample.
- Added a new sample (openstreetmap) that displays a city map, with
some animated car traffic on it. Map data comes from an OSM file
exported from openstreetmap.org.
- A new sample (petrinets) demonstrating how to implement stochastic
Petri nets, a well-known formalism for the description of distributed
systems.
OMNeT++ 5.6 (January 2020)
--------------------------
This is primarily a bugfix release, with a small but practically quite useful
NED feature (@reconnect) and minor additions to the simulation library.
Regarding bugfixes, Qtenv has received quite a lot of attention.
NED:
- The new @reconnect property allows reconnecting already connected gates
by specifying it in the new connection's body. This is especially
useful in INET Framework, e.g. because it eliminates the need for "hook"
modules in compound modules that represent network interfaces.
Simulation library:
- SimTime: Added the fromRaw() method.
- cGate: Added the isGateHalf() and getOtherHalf() methods.
- The deleteModule() method was moved from cSimpleModule to cModule, revised,
and its functionality extended: it is now allowed for a running module
to delete itself, also as part of a module tree. (Note: direct deletion
of a module or channel object, i.e. via the "delete" operator, is still
not allowed.)
- cLabelFigure: Added rotation support (setAngle() method).
- cAbstractHistogram: Fixed the getCDF() method which was broken.
- cFigure: Fixed a bug that caused adding figures to be O(n) or slower,
causing a huge performance penalty with 10000 or more figures.
- Several further smaller improvements.
Qtenv:
- Added a "Debug Now" option to the Simulate menu.
- Allow dragging submodules around by holding Shift. (This works by changing
the coordinates in the display string.)
- Added option to export module graphics to an image, and a dialog to
select the exported area.
- Start the animation at t=0, not right before the first event.
- Add some sideways offset to methodcall animation lines and text, to
reduce overlap with connection arrows.
- Connection arrows: Make the "m=[nesw]" display string tag work better
with border-to-border connections.
- Align the lines of info text ("t" display string tag) of submodules and
connections appropriately in the left/top/right positions.
- Performance: cache min(animSpeed) in cCanvas, so that Qtenv doesn't
have to compute it every time.
- Set a busy indicator (spinny cursor) during more potentially long
operations.
- When the layouting process takes a long time (more than five seconds),
ask the user what to do (wait or finish).
- Added an option to disable logging from refreshDisplay().
- Default log prefix format changed to use %K instead of %C. (%K only prints
the context component if it is different from the event's module; %C always
prints it.)
- Log prefix format: Added the %< (trim preceding whitespace) directive.
- Keep caret (cursor) near the same event when switching Log Inspector modes.
- Removed the unused scrollback limit option. Updated the Preferences
dialog accordingly.
- Dozens of further bug fixes and improvements.
IDE:
- Updated to use Eclipse 4.14, CDT 9.10.
- IDE: Made the "Project Features" menu item more creative in finding
the project. (It said "Select a project first" much too often.)
- Analysis Tool: Fix weighted histogram PDF/CDF computation (use sum of
weights instead of observation count).
- NED editor: added manual connection routing using the "m" tag.
- SequenceChart: Avoid out of bounds error when selecting manual axis
ordering, or switching between "Manual" and "Minimize crossings" modes.
- EventlogTable, SequenceChart: Strip ANSI escape sequences from log
message lines.
- Let the user permanently turn off the "OMNeT++ libraries not yet
compiled" dialog.
- Some further fixes and improvements.
Other:
- scavetool: Fixed vector file indexing bug that caused certain blocks
to be left out from the index. This also affects the Analysis Tool in
the IDE, which uses the same code for result file access.
- opp_test, opp_featuretool: Various small fixes.
OMNeT++ 5.5.1 (June 2019)
-------------------------
This release contains minor stability fixes.
OMNeT++ 5.5 (June 2019)
-----------------------
This release contains minor fixes. See the individual ChangeLogs for details.
Core:
- Added the intuniformexcl() NED and C++ function. It returns a random integer
with uniform distribution over [a,b). that is, including a and excluding b.
- The contents of resultfilters.h and resultrecorders.h are now public API,
i.e. part of <omnetpp.h>. This change allows one to derive new result filters/
recorders by subclassing the built-in ones.
- A description string can now be specified when registering new result filters
and recorders. New registration macros have been added for this purpose.
- cXMLElement was optimized to use less memory when large files are loaded.
- cHistogram: Now collects the number of positive and negative infinity values
separately.
- SimTime: Added preciseDiv() for a precise division of an integer and a
simulation time.
- cQueue, cPacketQueue: added a constructor that accepts a comparator
object (not just a function).
- cModule: Added containsModule() method.
Other:
- Several Qtenv-related fixes and improvements
- Added support for osgEarth 2.10 and above
- Updated IDE to Eclipse 4.11. This resolves compatibility issues with JDK 11.
- Workaround for long C++ indexer runtimes in the IDE.
OMNeT++ 5.4.1 (June 2018)
-------------------------
This release contains minor fixes. See the individual ChangeLogs for details.
OMNeT++ 5.4 (June 2018)
-----------------------
This release contains last-minute features and improvements, mostly motivated
by the upcoming INET 4 release. Highlights are the typename and exists()
operators in NED; nan and inf keywords in NED; support for logarithmic units
like dB, dBW, dBm, dBV, dBmV. Qtenv has also gained much more powerful
just-in-time debugging capabilities than before.
Details follow.
NED:
- Allow 'typename' in expressions. Motivation: we want to be able to write:
foo: <> like IFoo if typename!=""
- Added the "exists" operator. Syntax: exists(<submodulename>)
- Introduced "nan" and "inf" as keywords for numeric constants
Core:
- SimTime now has a new method named ustr() that prints the time in an
appropriate unit. It is now used in cClassDescriptor for displaying
simtime_t fields and at a few other places.
- SimTime: more precise computation for integer-SimTime division.
- Measurement units are now available as NED functions as well. They
accept dimensionless numbers and quantities with a compatible unit.
E.g. the expressions mW(2*100) and mW(0.2W) both result in 200mW.
- New measurement units: K, Ohm, mOhm, kOhm, MOhm, uW, nW, pW, fW,
THz, kmps, binary and decimal multiples of bit (Kib, Mib, Gib,
Tib, kb, Mb); deg, rad; pct (percent), ratio.
- Support for logarithmic units: dBW, dBm, dBV, dBmV, dBA, dBmA, dB.
Conversion between logarithmic and corresponding linear units (W vs. dBW)
is supported. Conversion between bit and byte (and multiples) is
also supported.
- cPacket: refined str() method
- Several smaller improvements.
Qtenv:
- Debug-on-error functionality can now be turned on interactively, via the
Simulate -> Debug on Errors menu item.
- When an error occurs and debug-on-error is enabled, Qtenv now offers to
launch and attach an external debugger unless the simulation program is
already being debugged. The same applies to the Debug Next Event
functionality. External debuggers can be configured with the
debugger-attach-command configuration key, and can also be overridden
with the OMNETPP_DEBUGGER_COMMAND environment variable.
- Workaround for a crash with Qt 5.11.
IDE:
- Launcher: fix: The IDE sometimes started build in the UI thread,
locking up the UI for the time of the build, potentially for several
minutes.
- Fixed "unknown" image as module background in the graphical NED editor.
- Fix: do not report "undefined parameter" for typename assignments in NED
- Fix: inifile analysis: typename deep assignments in NED were ignored
OMNeT++ 5.3 (April 2018)
------------------------
Highlights of this release are an improved message compiler (required for INET 4),
much improved histogram support, a more powerful cMessagePrinter API and its
implementation in Qtenv, and better support for smooth animation in Qtenv.
Details follow.
Core:
- Revised message compiler, added import support and more.
See src/nedxml/ChangeLog for details. Use --msg6 to turn on
the new features.
- cPar: integer representation changed from long to int64_t.
See src/include/omnetpp/ChangeLog for details.
- Evaluation of NED expressions now uses integer arithmetic when operands
are integers. Conversions that incur precision loss should now be explicit:
converting a double to integer requires the int() cast; also, converting
an int to double will raise an error if there is actual precision loss,
and you can suppress that error by explicit double() cast. There are many
smaller-scale changes related to this change -- see include/omnetpp/ChangeLog
for details.
- cHistogram has been replaced with new implementation. (The old one is still
available under the name cLegacyHistogram.) The new cHistogram is more
general (supports arbitrary bins), more configurable, and produces much
higher quality histograms even in the default setup due to newly introduced
techniques such as adaptive precollection, bin size rounding and bin edge
snapping, auto-extension with new bins, bin merging to keep the number of
bins optimal, etc. Histogram operation can be customized via histogram
strategy classes (cIHistogramStrategy); several histogram strategies are
provided.
- In recording histograms with @statistic, the number of bins can be specified
by adding numBins=nn: @statistic[x](record=histogram;numBins=100). The actual
number of bins produced might slightly differ, due to auto-extension and
bin merging during result collection.
- cMessagePrinter: API was extended with tags and column names
- cCanvas: added getAnimationSpeed(); better documentation for
setAnimationSpeed() and holdSimulationFor().
- cHistogram, cNedValue: minor changes in the public API
- Result recorders: Added "timeWeightedHistogram" recorder
Qtenv:
- Implemented support for the improved cMessagePrinter Options API, and added
a respective configuration dialog.
- The log viewer now supports ANSI control sequences for text styling:
foreground/background color, and bold/italic/underline text. Styling is
supported in both message history view and log view, i.e. it can be used
in text returned from cMessagePrinter and logged by the EV and other logging
macros.
- Rewritten the controller for smooth animation. The new algorithm is now able
to scale linearly, as long as the simulation can keep up.
- Usability improvements in the Animation Parameters dialog, e.g. it now
also displays the current simulation speed, and it is colored red if the
simulation cannot keep up with the requested animation speed.
- Histogram inspector: visualize outlier bins (drawn with a different
color than normal bins), and show info about them. Setting up the bins while
in the precollection phase can be forced from the GUI.
Fix numeric overflow when large numbers (>= 2^64) are shown.
- Histogram result objects are easier to locate on the GUI, and are now
also found by the Find/Inspect dialog.
- Made statistic recorders "findable" from Qtenv
Tkenv:
- The Tcl/Tk based runtime interface is now deprecated and turned off by
default. It will be removed in future OMNeT++ versions. You can still enable it
in configure.user by setting WITH_TKENV = yes, but we strongly suggest using
Qtenv instead.
Toolchain and dependencies:
- Updated toolchain on Windows (clang 5.0.1, gcc 7.3, gdb 8, osgEarth 2.7)
- Updated toolchain on macOS (OpenSceneGraph 3.2.3, osgEarth 2.7)
- OMNeT++ now requires osgEarth 2.7 or later (check the Install Guide for
further instructions on how to upgrade osgEarth.)
Tools:
- opp_runall, opp_fingerprinttest, opp_test: portability fixes for Windows
and macOS
- opp_fingerprinttest: fix: error messages from the simulation did
not appear
- 'march=native' and 'mtune=native' compiler options are no longer used
by default for a release build, because on certain CPUs this caused rounding
differences so simulations ran on a different trajectory depending on the
actual CPU used.
Samples:
- canvas: Added smooth animation with CarAnimator::refreshDisplay().
- osg-earth, osg-satellites: Switch from ObjectLocator to GeoTransform.
The former was removed after osgEarth 2.8, and the latter has been
around for quite some time now.
Documentation:
- Documented smooth animation in detail, and updated the section on statistical
data collection classes (cStdDev, cHistogram) in the Simulation Manual.
Plus several bug fixes.
OMNeT++ 5.2.1 (December 2017)
-----------------------------
This is a maintenance release.
- Minor bug fixes and improvements in Qtenv.
- Other minor bug fixes.
- Updates to the C++ Development and Launcher chapters of the User Guide.
See ChangeLogs in individual folders for details.
OMNeT++ 5.2 (September 2017)
----------------------------
Highlights of this release are the fine-tuning of result recording and processing
(especially around weighted statistics); many bug fixes and improvements in Qtenv;
makefile changes to allow DEBUG and RELEASE builds of models to co-exist, and
several related changes in the IDE.
Core:
- Figure zIndex is now additive: the effective zIndex is now the sum of the
zIndex values of the figure and all its ancestors up to the root figure.
This provides more flexibility, as the stacking order of figures
is no longer constrained by their position in the figure tree.
- Added cPanelFigure, a new figure type that turns off zoom for its children.
cPanelFigure is handy when one needs to do relative positioning unaffected
by zoom, for example when adding decorations next to submodule icons.
- Statistics recording: added support for collecting time-weighted
statistics. This is useful for variables like queue length. Add
timeWeighted=1 or timeWeighted=true to a @statistic to make it collect
time-weighted statistics. timeWeighted=1 affects the operation of the
following filters/recorders: "mean", "stats" and "histogram". The "timeavg"
recorder always computes time average; an additional recorder "avg" has
also been added that always computes unweighted mean. "mean" emulates
either "avg" or "timeavg", depending on the presence of the timeWeighted=1
option.
- Changed result filters/recorders so that they interpret NaN as "missing data"
and ignore it. The change affects "count" (which now also ignores nullptrs),
"sum", "min", "max", "avg", "timeavg", "sumPerDuration", "stats", "histogram".
For the time weighted case, NaNs mark intervals to be ignored.
- cResultFilter: added an init() method to allow filters access the content
of the @statistic property they occur in.
- The packetBytes/packetBits filter now throw error if object is not a cPacket.
They still accept (and ignore) nullptr.
- Added support for weighted statistics to histogram classes and to cStddev
(the cWeightedStddev class is no longer needed.) The primary motivation
for weighted statistics is the existence of variables where time average
makes much more sense than arithmetic mean, e.g. queue length.
- The OSG viewer was factored out from Qtenv into a separate support library
which is only loaded at runtime on demand. Core OMNeT++ no longer has
any dependence on OSG or OSGEarth. This change improves simulation
startup times and also debugging experience, as it eliminates the loading
of the huge number of shared libraries that OSG and OSGEarth depends on.
(The library loading overhead was also present in simulations that did not
even contain 3D visualization.) The only API change is that one must use
cOsgCanvas::EarthViewpoint instead of osgEarth::Viewpoint when using
the cOsgCanvas::setEarthViewpoint().
Build:
- opp_makemake: IMPORTANT CHANGES regarding debug/release-mode builds:
- Models are built in RELEASE mode by default. Until now, DEBUG was the
default, which resulted in casual users always running their simulations
in DEBUG mode, i.e. much slower than possible.
- RELEASE and DEBUG mode binaries can now co-exist, so users do not have
to recompile when they switch modes (e.g. when they want to debug a
simulation.) This is a significant gain especially for large models
like INET. The goal was achieved by adding the "_dbg" suffix to the
names of DEBUG-mode binaries so they don't collide with RELEASE-mode
ones.
- Binaries are now hard-linked from the build directory (out/) to the
target directory instead of being soft-linked. This leaves the copy
in the target directory intact when the one in the build directory
is deleted.
- Refinements on the build process of OMNeT++ itself: generated files are
created only once, even when using parallel build; do not copy build
artifacts if not actually changed; Makefiles in the samples/ folder
are re-created only if they are missing; etc.
- The samples/ folder is now optional: deleting it in an OMNeT++ installation
will no longer break the build.
IDE/Base:
- The Eclipse platform was updated to the latest Oxygen build (4.7.1)
IDE/Build:
- Makefile generator: follow changes in the command-line opp_makemake tool
IDE/Launching:
- The Run, Profile and Debug launch types now automatically trigger build.
- The launcher now switches the project (and optionally all projects it
depends on) to the appropriate build configuration if necessary: Run
and Profile will perform RELEASE build, Debug will perform DEBUG build.
- For Debug launch, the "_dbg" suffix is added implicitly to the target
name (only for the exe files). The simulations will also load the "_dbg"
versions of libraries when compiled to DEBUG.
- A new "Build before launch" section was added to the Launch config
dialog, which allows you to control whether to switch build configuration
automatically or to ask before the build. The scope of build can also
configured; options are: "None", "This project", or "Project + dependencies".
- If the launch is configured as "Ask before build" (default), a
confirmation dialog is shown on launch (and before the build), asking
whether to switch the active build configuration to the appropriate one.
The dialog allows you to set the decision as permanent and reconfigures
the launch config accordingly.
- Better progress reporting and cancellation for batch runs. Internally,
this is the result of switching to the new JobGroups API of Eclipse.
IDE/Analysis Tool:
- Added support for "statistic" items and for weighted statistics.
Background: Specifying "record=stats" in a @statistic NED property, or
or calling the record() method on a cStddDev object saves a "statistic"
object in the output scalar file. A "statistic" object includes fields
like the count of observations, mean, standard deviation, minimum
and maximum value. "statistic" objects so far have been blown up to
several unrelated scalars upon loading into the Analysis Tool. Now they
are loaded as objects, and appear in the Histograms and All tabs of the
Browse Data page. Statistics fields continue to be available as scalars
as well, so they can be used as chart input.
Also, weighted statistics (like those saved from cWeightedStddev) were
not properly displayed in the Analysis Tool. This has been rectified
as well.
Details:
- The Histograms tab on the Browse Data page now includes "statistics"-
type results as well.
- The Histograms tab now has new table columns: "Kind", "SumWeights",
"#Bins", "Hist.Range", all displayed by default. "Kind" indicates
whether a result item is a "statistic" or a "histogram", and whether
it is weighted or unweighted.
- Individual fields of "statistic" and "histogram" result items are
no longer displayed on the Scalars page.
- Properties for "statistic" and "histogram" result items now includes
"Kind" ("weighted"/"unweighted") and "Sum of weights".
- On the All tab of Browse Data page, result item fields are now in
natural order (i.e. no longer alphabetically sorted).
- Export dialog refined: Added "Open exported file afterwards" checkbox,
better filename generation and validation, etc.
- Changed the syntax for accessing iteration variables in filter
expressions. Before, they could be accessed like run attributes,
with the "attr:" prefix. Now, one needs to use the "itervar:" prefix,
which is more explicit.
- Properties view: properly display attributes, iteration variables and
parameter assignments for runs
- Better display of histogram bins in the Properties view.
The display format of bins was changed from "a..b" to "[a,b)", in order
to clearly indicate that "a" is inclusive and "b" is exclusive.
- The "Variance" line has been removed from Properties view because
it's not too useful and can be easily computed as the square of the
standard deviation.
- Missing or unavailable data in table cells is now displayed with a
hyphen instead of "n.a."
- New icon for scalar items on the All tab of Browse Data page
Qtenv:
- OSG Viewer is now a separate library, loaded only on demand.
- Improved the appearance and usability of the Animation Parameters dialog.
- Show (debug) or (release) in the window title based on NDEBUG.
- Completely overhauled figure rendering. This should improve performance
and fix many issues.
- The size of arrowheads on connections and line figures is now more
reasonable with many combinations of zoom level, line width, and the
"zoomLineWidth" property.
- Implemented cPanelFigure support and cumulative zIndex.
- Figures without a tooltip inherit it from their nearest ancestor
that has one. Empty strings break this inheritance, but are not shown.
The own tooltip of the figure now overrides that of its associated object.
- The special value "kind" is now also accepted as a color in the "i" tag
of display strings of messages as well.
- A large number of miscellaneous improvements, fixes and cleanups;
see src/qtenv/ChangeLog.
Envir:
- EnvirBase: changed the lifecycle of several plugin objects to per-run,
i.e. those objects are now deleted and re-created between runs. Affected
plugins: event log recorder, output vector file recorder, output scalar
file recorder, snapshot recorder, future event set (FES).
The corresponding configuration options have also become per-run options:
eventlogmanager-class=, outputvectormanager-class=, outputscalarmanager-class=,
snapshotmanager-class=, futureeventset-class=.
Side effect: in output vector files, vector IDs now start again from 0
at the start of each run when running multiple runs. Before, they continued
from where the previous run left off.
Scavetool:
- Added --list-itervars option
- Removed obsolete export commands 'vector' and 'scalar'
- Do not export itervars as scalars by default; added -y,
--add-itervars-as-scalars option to turn exporting itervars back on
- Sort runs by runId, for consistent query output
- JSON and CSV exporter changes (applies to IDE Analysis Tool as well):
- Python export changed to JSON export with optional Python flavour
- CSV export renamed to "CSV for spreadsheet" and significantly improved
(also saves iteration variables for better run identification, etc.)
- another CSV export added ("CSV Records"), provenly suitable as input
for the read_csv() of Python Pandas
Result recording and processing:
- Switch to new scalar/vector file recorders: The default values for
the outputscalarmanager-class= and outputvectormanager-class= config
options are now the new classes OmnetppOutputScalarManager and
OmnetppOutputVectorManager. These classes rely on the new result
file writer classes in common/.
The old classes cIndexedFileOutVectorManager and cFileOutScalarManager
still exist. They will be removed in a later version of OMNeT++.
- Save iteration variables separately from run attributes ("itervar"
lines). NOTE: This changes result file format!
- omnetpp recorders: ensure order of "param" lines in the file mirror the
order in the ini file
- Output scalar file recorders: sum and sqrSum are no longer saved for
weighted statistics. This is to follow recent cStddev/cWeightedStddev
change.
- Output scalar files: do not save numeric iteration variables (of
parameter studies) as scalars. Instead we'll add them (as scalars)
at load time, if needed.
- Proper loading and exporting of weighted statistics
- Added StatisticsResult (HistogramResult sans histogram). Until now,
statistic results in scalar files were loaded as several unrelated
scalars, and were not available as a single object.
- OmnetppResultFileLoader: fix: 'run' line is mandatory since version 4.0
- SqliteResultFileLoader: updated: histBin table was renamed to histogramBin
- SqliteResultFileLoader: loading of vector attrs and run params was missing
- SQLite recorder: slight changes in file format
Bugs fixed: see http://dev.omnetpp.org/bugs/changelog_page.php?project_id=1
OMNeT++ 5.1.1 (May 2017)
------------------------
This release contains only minor bugfixes.
- The IDE on Windows now can be started directly from a shortcut. Previously
the IDE was not able to load its native library if it was started from a
shortcut instead of the MinGW shell.
OMNeT++ 5.1 (March 2017)
------------------------
This is the final version of OMNeT++ 5.1. This release significantly improves
and builds upon functionality introduced in version 5.0, and also raises the
bar in other areas.
Highlights:
- A matured Qtenv that now replaces Tkenv as the default runtime GUI.
- Support for smooth custom animation and video recording.
- Better support for simulation campaigns in managing and performing a large
number of runs and in result recording/processing.
- Experimental support for SQLite-based result files.
- Updated toolchain and libraries on Windows including 64-bit Windows support.
- Updated Eclipse base for the IDE (Eclipse v4.6.3).
For further details see the preview version announcements below.
Changes since OMNeT++ 5.1 Preview 3:
Result Analysis:
- Data export functionality in scavetool and the IDE has been reimplemented.
Currently the following export formats are available: CSV, Python source,
OMNeT++ scalar/vector files, SQLite scalar/vector files. The new exporter
interface allows for defining new exporters (including UI) without any
change to scavetool or the Analysis Tool in the IDE, and for more flexible
output formats.
In scavetool, the new 'export' command replaces the now-deprecated 'vector'
and 'scalar' commands.
Qtenv:
- Added graphical inspectors for output vectors and histograms. They are
enabled for cOutVector and cStatistic-based histogram objects, i.e. they
are currently not available for @statistic-based output vectors and
histograms.
Build:
- The configure script no longer detects and tests for the presence of the
'pcap' library. If models need it, they have to implement their own method
to detect and configure it.
Samples:
- The routing example was modified to demonstrate the new, built-in packet
animation in Qtenv. Packets are displayed as arrows along the connection
showing the actual packet length on the wire. Added parameter to be able
to switch between cut-through switching and store-and-forward. Also added
a parameter study into its omnetpp.ini.
Bugs fixed: see http://dev.omnetpp.org/bugs/changelog_page.php?project_id=1
OMNeT++ 5.1 Preview 3 (February 2017)
-------------------------------------
This version is expected to be last preview version before releasing
OMNeT++ 5.1 final.
Core:
- Ordering of 'platdep/sockets.h' and 'omnetpp.h' is no longer important.
It is recommended to include 'omnetpp.h' first.
- Changes in the Canvas API: the insertBelow()/insertAbove() methods
have been added to cFigure; cFigure's parse(cProperty*) and
getAllowedPropertyKeys() methods are now public API; the first argument
of the recently introduced Register_Figure() macro must now be quoted.
- Added opp_get_monotonic_clock_usecs(). This function should be used for
measuring wall-clock time intervals in schedulers and other places instead
of gettimeofday() which is not monitonic.
- opp_run (and all executable simulations) now support the '-h configvars'
to print the list of dollar variables that can be used in configuration values.
- Other minor improvements.
Documentation:
- Install Guide has been updated and covers the installation procedure on
the most recent operating system versions.
- The Simulation Manual has been heavily updated. Look for the (new) symbol
to see the updated content.
- User Guide now has a new chapter about the Qtenv runtime environment.
Build:
- omnetpp.h is now treated as a 'system header', so it will no longer generate
warnings in case a model specifies more stringent checking for the compiler.
- The 'configure' script now accepts WITH_XXX=yes/no options on the command line.
Look into the configure.user file to see the supported variables.
- Cross compilation of OMNeT++ for Windows on a Linux host is now supported.
IDE:
- Fixed an issue when generating NED documentation on Windows
- IDE can now generate a makefile that is exactly the same as the one
generated by the opp_makemake tool.
Qtenv:
- Numerous bug fixes and enhancements.
Tools:
- scavetool: the -f option for the 'query' command adds statistics fields (min,
max, sum, etc.) as scalars.
- msgc: Message compiler now correctly generates 'override' keywords for certain
functions.
- The message compiler now generates code which produces no warnings even
when -Wall -Wextra -Wpedantic is used as a compiler command line option.
Samples:
- osg-earth now has a configuration where off-line map tiles are used instead
of an on-line map tile provider. (Note that this may not work on current
Debian/Ubuntu distros, because they contain an osgEarth library version
that is too old.)
Bugs fixed: see http://dev.omnetpp.org/bugs/changelog_page.php?project_id=1
OMNeT++ 5.1 Preview 2 (December 2016)
-------------------------------------
This release significantly improves and builds upon functionality introduced
in version 5.0, and also raises the bar in other areas. Highlights include:
a much-improved Qtenv that now replaces Tkenv as the default runtime GUI;
support for smooth custom animation and video recording; better support for
simulation campaigns in managing and performing a large number of runs and in
result recording/processing; experimental support for SQLite-based result
files; updated toolchain and libraries on Windows; 64-bit Windows support;
updated Eclipse base for the IDE.
Note:
1. There are now separate downloads for Linux, Windows and macOS. A fourth
package labelled "core" comes without the IDE, and can be used on all other
systems.
2. 32-bit Windows and Linux are no longer supported.
Known Issues:
1. The manuals have not yet been updated.
2. Documentation generation on Windows is currently not working.
Changes since version 5.0:
Core:
- Support for smooth custom animations. The goal was to allow models to visualize
their operation using sophisticated animations while the simulation is running
under a GUI (Qtenv). The key idea is that refreshDisplay() is called repeatedly
at a reasonable rate to render frames. refreshDisplay() knows the animation
position from the simulation time (which is now interpolated between events)
and the "animation time", a variable also made accessible to the model.
Animation-to-simulation speed ratio (sec/simsec) is determined by an "animation speed"
variable (or rather, several such variables) that can be set explicitly from code.
Different animation speeds can be chosen dynamically to adapt the animation
to the current time scale of the interesting events or processes in the simulation.
Animations that need to take place in zero simulation time are supported
with "holds", i.e. holding up the simulation for a certain animation time period.
The actual playing speed of the resulting animation can be controlled in Qtenv
using the "Speed" slider on the toolbar. Note that this feature is only available
in Qtenv (and not in Tkenv which is more-or-less in maintenance mode from now on).
- If a model implements such full-blown animations for a compound module that
OMNeT++'s default animations (message sending/method call animations) become
a liability, they can now be programmatically turned off for that module with
a setBuiltinAnimationsAllowed(false) call.
- Support for self-refreshing figures. cFigure now has a refreshDisplay()
method which is called on every display refresh as long as the containing
canvas is open in the GUI. Overriding that method in custom figure classes
allows the figure to update itself according to the state of the simulation.
The self-refreshing feature is especially useful for figures that implement
various meters, gauges, plots or charts, because this way they don't require
an additional helper module to update them. Note this feature is only available
in Qtenv.
- Custom figure classes are now registered using Register_Figure(), not with
Register_Class(). This allows for more flexibility and a cleaner handling of
C++ namespaces.
- The stacking order of figures is now jointly determined by the child order and
a new runtime-settable cFigure member called zIndex, with the latter taking
priority. In @figure properties in NED files, "zIndex" replaces "childZ" which
was only used at parse time but not stored in figures afterwards.
- A figure can now have a tooltip text set.
- A figure can now be associated with a simulation object, for example a module
or a packet. Association means that the figure more-or-less "stands for" (or
visually represents) the other object in the GUI. For example, when the user
clicks or double-clicks the figure under Qtenv, the associated object is
focused or opened in the GUI. The figure also "inherits" the tooltip of its
associated object, provided it does not have its own tooltip.
- For text figures, one can now optionally turn on a "halo", which makes the
text more readable on all backgrounds.
- Support has been added to load custom images for use by cImageFigure/cIconFigure
and in display strings (cEnvir::loadImage()). It is also possible now to
programmatically add new directories to the image path (cEnvir::appendToImagePath()).
- The dimensions of images used by cImageFigure/cIconFigure can now be determined
programmatically (getImageNaturalWidth() / getImageNaturalHeight() methods).
- Support for measuring the text has been added to cTextFigure and cLabelFigure
(getBounds() method). Note that getBounds() assumes zoom level 1.0.
- Support for accessing the coordinates of auto-layouted submodules (cEnvir::
getSubmoduleBounds()). This functionality is needed by some visualizers in
INET, where nodes of a wired network are typically not explicitly placed.
- In cObject and subclasses, info() has been renamed to str(). The old method
still exists and delegates to the new one. The detailedInfo() method has been
deprecated due to lack of usefulness.
- In NED statistic declarations (@statistic), signal names in the "source"
attribute can now be qualified with the name of a submodule. This will cause
the signal listener to be added to the given submodule instead of the module
containing the @statistic. Example: @statistic[foo](source=a.b.foo). Note that
there is no syntax to specify modules above or outside the one containing the
@statistic, as that would limit the module's reusability (encapsulation
violation).
- In cModule, the arrived() method has been made public API. arrived() is
invoked as part of the send() protocol, and its default version inserts the
message into the FES after some bookkeeping. Overriding arrived() allows one
to perform custom processing at the destination module of a send() call
immediately, still within the send() call.
- cPacket's default getDisplayString() method now falls back to returning the
encapsulated packet's display string, instead of just returning an empty string.
- When formatting error messages, location/time information is now placed *after*
the exception text, not before. The goal was to improve readability, as user
now needs to go through less blabla before getting to the actual error message.
Individual error messages have also been revised for brevity and consistency
(capitalization, use of quotation marks, etc.)
- Several things have been made inspectable at runtime (e.g. from Qtenv):
simulation results being collected (i.e. result filter/recorder objects
added via @statistic); per-signal listeners lists; values of XML module
parameters and cXMLElement trees.
- Unit conversion now knows about C (coulomb) and related units As, mAs, Ah, mAh.
- Many other smaller-scale changes, fixes and refactoring, in part related to
the ones above; see ChangeLogs under src/ for details.
Qtenv:
- Qtenv has reached maturity and it is now the default GUI for simulations.
- Qtenv now requires Qt5.4, and optionally OpenSceneGraph 3.2-3.5 and
osgEarth 2.5-2.7.
- You can use your own Qt bundle by setting the QT_PATH variable in
configure.user before running ./configure. (This may be needed if your Linux
distribution comes with an older version.)
- Added support for smooth custom animations. This means that simulation time is
interpolated between events, and the animation can be stopped between events.
In the event number display, the event number is prefixed with either 'last:'
or 'next:' to make it unambiguous. A new 'Animation Parameters' window has
been added where one can view the current animation speed, framerate, and
other metrics.
- One-stepping now stops right before events so pressing F4 will execute the
next event instantly. For consistency, after initialization, the simulation
time will be set to that of the first event (not always to 0s).
- The simulation time display now has digit grouping and units turned on by
default for better readability. Settings can be changed in the context menu.
- Added built-in support to record animation into a high quality video.
(Press the record button on the toolbar for instructions.)
- Improvements on built-in animations: Messages sent with a nonzero propagation