-
Notifications
You must be signed in to change notification settings - Fork 147
/
WhatsNew
1554 lines (1177 loc) · 69.7 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
==========
OMNeT++ 3.3.2 (August 2023)
---------------------------
This is a modernized version of omnetpp-3.3.1 that makes it possible to build
and use the now 17-year-old package in today's software environments. The
primary objective of this release is to facilitate the execution of old
simulation models, e.g. for reproducing simulation results or as a basis of
porting them to more recent versions of OMNeT++.
Main changes:
- Minor source code adjustments to enable compilation with modern C++ compilers
and eliminate compiler warnings. Backported several bug fixes from newer versions.
- Adjusted to make the code compatible with more recent versions of Tcl/Tk
libraries. In addition to the original Tcl/Tk-8.4 and BLT-2.4z, graphical
parts now works with Tcl/Tk-8.6 and BLT-2.5.3, too.
- Backported the setcontext()/switchcontext() based coroutine library from
omnetpp-4.2, to make activity() modules work again. (The original "portable
coroutines" library which used setjmp()/longjmp() to switch stacks no longer
works with recent glibc versions.)
- Updated the 'setenv' and 'configure' scripts, to make them more consistent with
those in more recent or modernized releases.
1. 'configure' now mandates having 'setenv' sourced before it runs.
2. 'setenv' now sets OMNETPP_IMAGE_PATH, in order to prevent model
frameworks from accidentally making omnetpp's bundled icons unaccessible
from Tkenv by simply appending to OMNETPP_IMAGE_PATH.
3. 'configure' now creates 'configure.user' from 'configure.user.dist'
if it does not already exist.
- The Makefiles were updated with more dependencies to enable parallel build.
OMNeT++ 3.3.1 (Mar 2019)
------------------------
Source code adjustments for improved compiler and library compatibility.
The changes made it possible to compile it on Ubuntu 18.04 LTS and GCC 7.3.
This version was originally released as omnetpp-3.3p1-src-gcc73.tgz.
OMNeT++ 3.3 (Oct 2006)
----------------------
This release contains several GUI enhancements in Tkenv, and several bugfixes.
Tkenv:
- display string enhancement: connections with zero thickness set ("o=,0")
now do not appear in the network graphics.
- added object icons to inspector listboxes
- added Run/Fast/Express buttons to every module inspector window, as well as
a "Find/inspect messages, queues, etc within this module" button. These
functions are all available via hotkeys too (F5,F6,F7,Ctrl+S).
- added "Copy to clipboard" and "Save window contents" toolbar icons to all
text windows. (Copy has already been available with Ctrl+C.)
- main window position gets saved and restored
Bugfixes:
- fix: gamma_d() was bogus for the alpha<1 case [reported by Patrick McDonnell]
- fix: worked around a fiber-related Visual C++ problem that caused certain
activity()-based modules crash when the simulation was restarted.
- fixed a bug which sometimes caused Tkenv to crash when inspecting an
internally refcounted message.
- fixed a bug in Tkenv's setObjectListResult() [crash reported by Rodolfo
Ribeiro Gomes and others]
- fix: on some Linux systems, Tkenv used unreadably small font size in some
dialogs
- opp_msgc improvements: don't accept reserved words as identifiers; added
OMNeT++ version check into generated code
- fix: the simulation can now be in a directory whose path name contains spaces
(e.g. "Program Files"); opp_nmakemake also fixed to accept include paths
with spaces.
- many other minor fixes and improvements; see the ChangeLogs of the
corresponding source directories for more details.
OMNeT++ 3.2p1 (Jan 2006)
------------------------
This is a maintenance release. Changes include:
- support for VC8.0 (Microsoft Visual C++ 2005 [Express]).
- opp_nmakemake -b <dir> failed for directory names containing "++"
- fixed bug in Plove/Scalars "Save picture" function
OMNeT++ 3.2 (Oct 2005)
----------------------
The following brief list wraps up the most important new features and
changes since the 3.1 release. Please read on to the sections about the
the prereleases (3.2pre1..4) for more details on these points, and for
a more complete list. Even more details can be found in the doc/API-Changes
file and the ChangeLog files of the individual source directories.
General:
- support for database (MySQL) storage of: model topology, model
configuration, output vectors and scalars and model topology.
Simulation core:
- simplified the signature of simple module constructors; Module_Class_Mem-
bers() is no longer required. Please check below or in doc/API-changes
for backward compatibility information.
- cleanup-time garbage collection turned OFF by default. It can be turned
on manually, but the preferred way is to add proper destructors to
simple modules.
- implemented reference counting of encapsulated messages, primarily to
increase the performance of wireless simulations.
- WATCH() revisited: now its variants support STL container classes, and
basically any data type that has operator<<.
- modules can now get notified when a module parameter changes. Just redefine
the new handleParameterChange(const char *parname) method of cModule.
- several other API improvements -- see doc/API-Changes.
- several opp_msgc improvements
GUI:
- added the TimeBar to Tkenv, and made the "Find/Inspect Objects" dialog
nonmodal (a long-standing wish).
- several GNED refinements, the most visible one being that on opening a NED
file it automatically tries to open all its imports as well (feature can
be turned off).
- big usability improvements in Plove and Scalars: Chart Settings dialog
has been redesigned, and your custom settings can be saved as defaults.
Plove also has new filters, and some problems got fixed in existing ones.
OMNeT++ 3.2pre4 (Sep 2005)
--------------------------
Simulation kernel:
- cleanup-time garbage collection turned OFF by default. Simple modules
have to deallocate all dynamically objects themselves, that is,
proper destructors have to be added to every simple module class.
Related new omnetpp.ini entries: perform-gc=<yes/no>, print-undisposed=
<yes/no>.
- added method cSimpleModule::cancelAndDelete(cMessage *msg) method, to
facilitate writing destructors.
- requirement for simple module constructors changed: they are invoked
without args now. Module_Class_Members() is now unnecessary, but still
accepted. See include/ChangeLog for details. All sample simulations
have been updated accordingly.
POTENTIAL INCOMPATIBILITY: modules with handcoded constructors need
to be modified. Add default values to constructor arguments:
(const char *name=NULL, cModule *parent=NULL).
- dup() method got moved to cPolymorphic, and return type changed to
cPolymorphic. In the next release we'll drop MSVC 6.0 support,
and move to covariant return types (which MSVC 6.0 doesn't support).
New examples:
- database integration. With the given extensions, one can transparently
redirect output vectors and output scalars into a MySQL database, read
module parameters from a MySQL database (all without modification of
existing models), or build a network from topology stored in a database.
Other:
- NED: enabled parent module gates to get connected with "++".
parentmodgate++ connects the first unconnected gate, but it doesn't
create new ones -- it is an error to exceed sizeof(gate).
- Precision in output vector/scalar files, that is, the number of
significant digits printed can be set from the configuration now:
[General] / output-scalar-precision=<int>, output-vector-precision=<int>.
The default is 12, but it might not be straightforward to decide what
is the "optimal" setting -- see src/envir/ChangeLog for a discussion.
- configure script revised significantly: better detection of compiler
(e.g. the Intel compiler is autodetected now); detection of linker
flags needed for OMNeT++ models to be put into static/dynamic libs
(-z allextract/--whole-archive, --export-dynamic); detection of "make"
program (must be GNU make); improvement in detecting BLT and MPI.
Now it also allows variables to be defined on the command line before
running ./configure, as an alternative to configure.user.
- nedtool and the preload-ned-files= omnetpp.ini entry now distinguishes
between two types of listfiles, @listfile and @@listfile; the difference
is in the interpretation of relative paths contained in the list file;
see src/nedc/ChangeLog for details.
- GNED: further improvements
OMNeT++ 3.2pre3 (Aug 2005)
--------------------------
Tkenv:
- the "Find/Inspect Objects" dialog became nonmodal, and it can be kept
open while the simulation is running.
- added the "Run until next local event" command to modules' context menu
(which pops up when you right-click an icon)
GNED:
- reorganized and improved connection properties dialog (knows what gates
submodules have, which gates are vectors, only offers output gates as src
gate and input gates as dest gate, etc.)
opp_msgc:
- "const fix": generate both const and non-const getter methods for fields
of class or struct type.
- it is no longer required to write out "fields:" in an otherwise empty
class definition
- added the possibility to set a base class field. E.g. kind=5 will
generate the setKind(5) line into the constructor.
- generate a protected and unimplemented operator==(), to prevent
accidental usage of compiler-generated one
- added the possibility (-P option) to declare generated classes to be
dllexport/dllimport on Windows.
- generated C++ header now contains relevant part of the .msg files as
Doxygen comment
nedtool, dynamic NED loading:
- don't look for the module type if the module vector size is zero
opp_nmakemake:
- added options (-s, -t, -d) to enable building Windows DLLs from simple
modules, plus -P option to support opp_msgc's similar option
Simulation kernel:
- implemented reference counting of encapsulated messages. This should
dramatically increase performance of wireless simulations, where lots
of message duplication is done (AirFrames) with most copies discarded
without looking into them (noisy channel or wrong L2 dest address).
There' nominal (<1%) performance penalty for other simulations.
omnetpp.ini:
- one can now use parameters like $MODULE_FULLPATH in the 2nd argument
of xmldoc(), i.e. the paths expression to select part of an XML file
to load. This allows for assigning XML params of several modules with a
single line in omnetpp.ini. Consider the following:
**.xmlConfig=xmldoc("all-in-one.xml","config[@mod=$MODULE_FULLPATH]")
where all-in-one.xml contains <config mod="net.host1.rt">...</config>
elements for every module.
- also fixed some anomalies in the XML path expression interpreter.
OMNeT++ 3.2pre2
---------------
Simulation kernel:
- WATCH() overhaul: now anything can be watched that has operator<<. If it
also has operator>>, you can use WATCH_RW() to make it editable on the GUI.
Objects and pointers to objects can be watched with WATCH_OBJ() and
WATCH_PTR(). STL container classes can be watched via WATCH_VECTOR(),
WATCH_PTRVECTOR(), WATCH_MAP(), WATCH_PTRMAP(), etc.
- modules can now get notified when a module parameter changes. Just redefine
the new handleParameterChange(const char *parname) method of cModule.
Tkenv:
- flush omnetpp.vec every time the simulation is stopped (to enable looking
at it with Plove to decide if simulation needs to be run longer)
- added support for OPP_PLUGIN_PATH environment variable, and
[Tkenv]/plugin-path= omnetpp.ini entry.
- cGate inspector: channel attributes (delay, error and datarate)
can now be changed from the GUI.
- added support for custom items on the context menu (e.g. right-click
on a router, "Inspect Routing Table..." Usage: place a .tcl file into
the plugin path (./plugins by default) that calls the extendContextMenu
Tcl procedure.
GNED: Michael Franzen contributed several improvements and fixes:
- new option: "Open imported files automatically": tries to open all the
files that are imported by an opened NED file. (It takes care that
every NED file is opened only once.)
- an "import path" can be specified, which is a list of directories
where imported files are searched for (Andras)
- new option: "Autoextend gates using gate++ notation". When this option
is enabled (Options Menu), GNED does not generate "gatesizes" sections,
and automatically uses the extension operator "++" on all gates that
are connected. However, you always can use indices in the property page
of modules to override automatic gate extension.
- "Auto-calculate gate size": when switched on, this option generates
"gatesize" entries for every gate of a module that is endpoint for
indexed connections. The code searches for the maximum index of all
connections ending at that port and generates the "gatesize" entry
from that. If no indexed connection to the port is found, the
"gatesize" entry is removed again.
- "Set 'nocheck' for new modules": generates "connections nocheck" for
all newly generated modules. This feature has a counterpart in the
property page of modules: an "Allow unconnected gates" checkbox
to enable/disable this feature for each module individually.
- plus several smaller fixes
Heaps of small API improvements, see include/ChangeLog. A sample:
- cOutvector: added recordWithTimestamp()
- cDisplayString: setTagArg() now accepts numeric (long) arg too.
- cMessage: if "vector" is a vector gate, msg->arrivedOn("vector")
now checks if msg arrived one of the vector's gates.
- cXMLElement: added getFirstChildWithTagName() and getNextSiblingBy-
TagName()
Thanks to Michael Tuexen, Ignacio Arenas Jimenez and Wei Yang Ng who suggested
several of the above improvements.
OMNeT++ 3.2pre1
----------------
- Plove and Scalars: improved Chart Settings dialog, and default settings
can now be saved. New Plove filters, and fix in the winavg filter.
- Tkenv: added Timeline Status Bar
- Tkenv: fixed the r= display string tag (it displayed a circle half the
specified size)
- Tkenv: cMessage inspector now displays message size in bytes as well (not
just in bits); also, it now displays time *until* arrival time (a delta)
in addition to the absolute arrival time.
- new cMessage member functions: byteLength(), setByteLength(), addByte-
Length(). They just invoke the length(), setLength(), addLength() methods.
- new utility function simtimeToStrShort()
- fixed gcc-4 compilation errors, and removed -fwritable-strings compiler
option
- fixes and improvements on opp_neddoc
- configure script now accepts NO_TCL=1 variable (for emergency use only)
- opp_nmakemake: improved output of recursive build
- Readme.MSVC updated on how to build DLLs from simple modules
Plus a number of smaller fixes, see the ChangeLogs in individual directories.
Documentation update is still TBD.
OMNeT++ 3.1 (Mar 2005)
----------------------
This release contains several bugfixes since 3.0, as well as new features
and new example simulations. To see a detailed list of problems fixed, check
the ChangeLog files in the various source directories. Thanks all of you who
have discovered and reported the problems.
A brief list of enhancements since version 3.0:
Real-time/hybrid simulation:
- Real-time simulation has been implemented, and it is demonstrated by the
"Dyna/Real Time" sample simulation.
- An example for hybrid (hardware-in-the-loop) simulation is now provided,
which is the "Sockets" sample simulation. It uses TCP sockets to communicate
with the outside world -- in real-life applications this will probably need
to be replaced with some other means of communication.
- In relation to the above: new methods got added to the cScheduler interface.
For Windows:
- Debug info (*.pdb) files have been included in the installer, so one can now
single-step into the simulation kernel and user interface library sources
while debugging.
Simulation library:
- New utility class: cStringTokenizer. It splits strings to "tokens" along
given separator characters (by default spaces).
- Changed the way scheduled events or pending messages are handled when their
destination module gets deleted during runtime. Before, these messages were
deleted by the cSimpleModule destructor, but this made it very long to clean
up large models. Now, messages are not deleted in the destructor, but left
in the FES -- they will be discarded in cSimulation::selectNextModule() when
they're met.
- cDisplayString's getTagArg() method was modified to never return NULL; it
returns "" instead when the requested tag is not in the display string.
Configuration:
- Ini file runs can be given descriptions, and they will be displayed in the
Tkenv run selection dialog. Just add the description="some text" line
under the [Run x] headings.
- New omnetpp.ini entry to help debugging: [General]/debug-on-errors=
true/false. If turned on, runtime errors (such as scheduling a message
into the past) will cause the program to break into the C++ debugger
if one is running, or just-in-time debugging is enabled. This makes it
possible to investigate the context of the error (stack frames, variables
etc). It works by doing INT 3 (debugger interrupt) on Windows, and
raise(SIGABRT) on Linux.
- Slight change in the rules of handling included ini files, NED list files
and all filenames mentioned in them. All filenames are now understood as
relative to the location of the file which contains the reference,
rather than relative to the current working directory of the simulation.
This change is not backwards compatible, but has been found not to affect
any of the simulation frameworks already ported to 3.0.
Tkenv:
- Implemented the "t=<string>,<color>" display string tag for connections.
It makes the given string to appear near the connection arrow.
- Tooltips can now be added to submodule icons, connection arrows and messages.
The tooltip text has to be given in the "tt=<tooltip-string>" display
string tag, and will be displayed if the mouse rests over the component for
a while. Tooltips allows more info to be displayed than can be squeezed
into the "t=" display string tag.
- Added support for -r <run-number> command-line option, which has the same
effect as (but takes priority over) the [Tkenv]/default-run ini file entry.
Misc:
- opp_makemake, opp_nmakemake: implemented -X option (ignore subdirectory
during recursive build)
- The -h command-line option is now understood by both Cmdenv and Tkenv,
and handled in a consistent way
- The place/ icon directory was renamed to misc/ (Please update display
strings containing "i=place/..")
- nedc got removed from the distribution
Known problem: OMNeT++ windows have no Maximize button under recent
KDE versions. This is a known Tk+kwin problem which was fixed in Tk
early 2004.
OMNeT++ 3.0 (Dec 2004)
----------------------
The following list summarizes *all* changes since OMNeT++ 2.3:
- The simulation kernel has received an overhaul.
- A new step-by-step tutorial, revised documentation and several new
sample simulations have been included to shorten your learning curve.
- Dynamic NED loading will cut model build time and simplify your work.
- Documentation generation tool will document your own large simulation
models, and help you quickly get an overview about the structure
of 3rd party models.
- The new Random Number Architecture features a modern, very long cycle
Random Number Generator (Mersenne Twister) for more realistic simulation
results, and RNG mapping for more flexibility in simulation experiments.
- Simulation models can now conveniently access XML configuration files
for complex input.
- Plove now features a powerful interactive charting component, and also
an internal data-flow engine for processing output vectors before
plotting.
- The new Scalars tool complements Plove, and lets you analyze and plot
scalar data produced by simulations.
- Support for Parallel Distributed Simulation
- Several Simulation GUI usability enhancements will save you time, and
make your work more efficient.
- New icons, and enhanced animation capabilities (icon coloring, queue
length display, status text, transmission range, transient bubbles,
etc.) improve the overall look and feel of your models, give you more
insight, and make the models instantly presentable.
- For better visualization of model dynamics, OMNeT++ now supports
animation of direct message sending and C++ method calls across modules.
- The automatic network layouting using the SpringEmbedder algorithm will
let you work with large networks in the GUI, without the need for
individual positioning of nodes.
- Ready to receive your extensions: plug-in interfaces for new random
number generators, new configuration databases and simulation event
schedulers complement existing plug-in interfaces for recording simulation
data, and let you implement custom input/output, real-time simulation,
hardware-in-the-loop simulation and more.
Delta from 3.0 beta 1:
- User Manual revised
- Several bugfixes and new test cases, significant performance improvements
in the network setup code; more intuitive error messages at places.
- The new <parametername>.use-default=true notation in omnetpp.ini makes it
possible to apply the NED file defaults (specified via input()) to some
or all unassigned module parameters.
- histogram classes (cLongHistogram, cDoubleHistogram) revisited
OMNeT++ 3.0 beta 1 (Nov 24 2004)
--------------------------------
- added new TicToc tutorial
- nedtool: implemented -h option (put output files into current dir, not source
file's dir) [patch from Johnny Lai]
- Windows binary release contains 4 sets of libs now: vc6-debug, vc6-release,
vc7-debug, vc7-release.
- several fixes and improvements
OMNeT++ 3.0 alpha 9 (Nov 3 2004)
--------------------------------
- fixed configure script problems in alpha 8
- new random number architecture: support for Mersenne Twister and Akaroa
RNGs; unlimited number of RNGs; RNG mapping (module-local RNG numbers
can be mapped arbitrarily to physical RNGs from omnetpp.ini. Details
in src/envir/ChangeLog and on omnetpp.org.
- Tkenv fixes and usability improvements: (1) allow user interactions during
message animation: animation speed can be changed with the slider, STOP
button can be clicked, inspectors can be closed, etc; (2) improved
"Fast Run until next local event" function: now it always animates events
that occur in the local module; (3) fixed display string handling bugs: in
"t=", commas and equals signs weren't handled properly.
- signatures of fullPath() and info() functions changed to use std::string.
The new signatures are both safer (no danger of accidental buffer overrun
or confusion caused by using static buffers) and easier to use.
POTENTIAL INCOMPATIBILITY: fullPath() calls in sprintf(), ev.printf(),
new cException() etc calls should be changed to fullPath().c_str().
(ev<< statements are not affected.)
- support for categorized icons (icons grouped into subdirectories with
the bitmaps folder) in GNED and Tkenv
- linking problems (linker symbol conflicts) with recent Akaroa versions
resolved
OMNeT++ 3.0 alpha 8 (Oct 2004)
--------------------------------
- in .msg files, struct fields can have initializers (a constructor gets
generated)
- Tkenv: minor improvements
- configure script refinements
OMNeT++ 3.0 alpha 7 (Sept 2004)
-------------------------------
Several improvements and bug fixes since 3.0a6. Detailed list of changes:
- loading XML config files via "xml"-type NED parameters or
ev.getXMLDocument(): If the document has an attached DTD (DOCTYPE
declaration), the document will be validated, and attribute default values
will be completed from the DTD.
- Scalars tool: enhanced Copy to clipboard functionality: different
variables can be put on different columns. This makes it easier to use
Excel's PivotTable or OpenOffice's DataPilot) functionality to analyze
data.
- NED: gate vectors, if there's no "gatesizes:", will be created with zero
size. (Previously they were created with size one -- this is a potential
incompatibility.) A zero-sized gate vector is internally represented by a
single gate object whose size() method returns zero, and cannot be
connected.
- Tkenv: bitmap path can now be specified in omnetpp.ini, using the
[Tkenv]/bitmap-path= entry. Value should be "quoted", and directories
should be separated by ";". The contents of the OMNETPP_BITMAP_PATH
environment variable (or if that's not set, the compilation-time bitmap
path) gets concatenated to this one.
IMPORTANT: if you forget the quotes, ONLY THE FIRST DIRECTORY will be
used with the rest ignored, because ";" is the comment mark in omnetpp.ini!
- opp_makemake, opp_nmakemake: facilitated creating makefiles which only
have relative paths in them. The -b <basedir> option was added. <basedir>
is supposed to be the toplevel directory of large multi-directory
simulation model (such as IPSuite or MF). The -b option will cause all path
names (passed with -I, -L, etc.) to be converted from absolute to relative.
This means that makefiles will not need to be re-generated or edited when
the project is compiled in a different directory.
- opp_neddoc: backslashing can be used to prevent intentional hyperlinking
of a word which is also a component (e.g. module) name. That is, if you
write "\IP", "IP" won't get hyper-linked in the HTML output, even if
there's a module type called IP. Single backslashes will be removed from
the HTML output -- double them if you want them to appear.
- opp_neddoc: on Windows, listing directories on the command line which had
no .ned or .msg files in them caused opp_neddoc to stop with "file not
found" error.
OMNeT++ 3.0 alpha 6 (Aug 2004)
------------------------------
POTENTIAL INCOMPATIBILITY: because the resolution of "*" has changed (it no
longer matches "."), you may need to revise your existing omnetpp.ini files.
New features introduced in this release, in nutshell: enhanced wildcard
resolution in omnetpp.ini; direct support for XML config files via the "xml"
NED parameter type; Cmdenv now lets you choose which modules' ev output you
want to print; plugin interface for using configuration data sources other
than omnetpp.ini. Several improvements in opp_neddoc and opp_makemake, and
some bugfixes.
For more details, see article
http://www.omnetpp.org/article.php?story=20040722133521209
OMNeT++ 3.0 alpha 5 (June 2004)
-------------------------------
Plove has been completely rewritten under the skin. It is no longer a wrapper
around grep, awk and gnuplot -- it boasts a powerful internal extensible
data-flow engine (for filtering and processing output vectors before plotting),
and a BLT-based plotting window (which allows a multiple plots via tabbed
window, and these plots are a bit easier to customize than gnuplot-based ones
were -- oh yes and they allow arbitrary zooming on the fly). The new Plove
can also do scatter plot. Calculating histograms and cumulative distribution
functions and various other refinements will come soon.
What else? opp_msgc now generates the pack/unpack operations so parallel
simulation has become a lot more transparent. Plus a couple of bugfixes of
course. The test suite (test/core) is supposed to pass completely, except
for one little known bug in ev<< w/ Cmdenv.
OMNeT++ 3.0 alpha 4 (May 2004)
------------------------------
This alpha release introduces a new tool, Scalars for analysing output scalar
(.sca) files. Scalars requires BLT. Another novelty is the new "control info"
field in cMessage which provides a better way to implement communication
between protocol layers than the traditional "interface packet" approach
used in older IPSuite versions. (IPSuite has also been switched over to employ
the control info approach.)
OMNeT++ 3.0 alpha 3 (March 2004)
--------------------------------
Bugfixes.
OMNeT++ 3.0 alpha 2 (March 2004)
--------------------------------
Improvements on opp_(n)makemake, Plove, Tkenv, parallel simulation; bugfixes.
OMNeT++ 3.0 alpha 1 (Jan 2004)
------------------------------
Sames as 3.0 Preview
OMNeT++ 3.0 Preview, 2004 January
---------------------------------
This is an intermediate code snapshot -- it was released to show you what
features are planned for release 3.0, and possibly to get early feedback
about them. It has not been fully tested.
The model documentation tool opp_neddoc has been introduced. It generates
fully hyperlinked documentation with diagrams from comments in .ned and .msg
files. It can also link to Doxygen-generated C++ documentation. It works both
on Unix and Windows.
Several Tkenv network animation enhancements: next event marker; animation
of sendDirect() and method calls between modules; message icons; auto-layouting
of networks; icon coloring; module "bubbles" (callouts); display of queue
length next to module icon; display of a status string above module icon;
optional modifier icon on top of submodule icon; submodule icon optionally on
top of a rect/oval; display of "transmission range"; color names in display
strings are accepted in HSB (hue-saturation-brightness) too.
Changing display strings was made more comfortable from simple modules.
Other Tkenv enhancements: powerful object search dialog; enhanced plugin
support (see test/tkenv/plugin); better tabnotebook and multi-column listbox
widgets via BLT. All Tkenv settings restored from .tkenvrc now.
New sample simulations: Tictoc (a step-by-step tutorial), Aloha, CQN (Closed
Queueing Network), Queueing, Routing, RoutingDB, Point-to-Point Transmitter.
Other changes are that Dyna and Dyna2, Fifo and Fifo2 was merged, Topo was
renamed to NEDDemo, Token renamed to TokenRing. The Nim example has finally
retired. The new/revised sample simulations demonstrate new Tkenv features
and also more simulation kernel features. They also mark a shift from
activity() based modules towards handleMessage()-based ones.
Dynamic loading of NED files has been implemented, which means it is possible
to use NED files directly, without nedc and C++ compilation. NED files
containing compound modules and networks can be loaded dynamically.
NED files can be loaded interactively (Tkenv "Load NED file" toolbar icon)
or automatically (via omnetpp.ini, preload-ned-files= entry). (alpha!)
Simulation kernel: internal object ownership handling, has been redesigned,
which both reduced memory footprint (sizeof(cObject)) and increased speed.
Another efficiency improvement is that for short object name strings,
the string is now stored inside cObject (and not dynamically allocated via
new char[...].)
Distributed simulation support rewritten, currently experimental. (alpha!)
Several new tests in test suite, also for testing opp_neddoc and Tkenv.
TODO:
The Manual is still to be updated at places. Further items are the
introduction of new RNG architecture based on modern RNGs, and testing
and completion of nedxml/nedtool (which will bring the retirement of nedc).
OMNeT++ 2.3 release (June 2003)
-------------------------------
A major revision of the User Manual has taken place. In addition to
documenting new features, several existing sections have been revised,
updated and expanded for clarity and informativeness, based on feedback
from the community.
Even if you already have a printed copy of an earlier manual, this is
a good time to discard it and print a new one -- even experienced OMNeT++
users will find a wealth of new information in it. For the list of
changes, see the "Document History" table at the front of the manual.
Deprecations! To ensure your simulation will be compatible with future
releases, please check doc/API-Changes.txt and remove use of
deprecated functions from you simulation models. Functions deprecated
now are likely to be removed in next major release.
Improvements:
- message subclassing: generated message classes now accept message kind
in the constructor.
Bugfixes since 2.3b2:
- fixed problem with deleting dynamically created modules
- fixed opp_msgc problem with RedHat9's broken Perl (doesn't recognize [^\s]
in regexps)
- minor improvements: opp_nmakemake now autodetects C++ file extension
(.cc or .cpp); opp_msgc doesn't choke on -I flag
OMNeT++ 2.3b2 release (March 2003)
----------------------------------
This is a bugfix release. Resolved issues include:
- wrong handling of channels (bug was introduced in 2.3b1)
- opp_test failed on Unix if "." was not in the PATH
- various smaller bugs in GNED, Tkenv, Envir, and opp_nmakemake
- added several test cases (e.g. for channel testing) in test/
See doc/API-Changes.txt for the list of changes since 2.2, including those
that affect compatibility. ChangeLogs in respective source directories
contain even more details.
OMNeT++ 2.3b1 release (February 2003)
-------------------------------------
Licensing change: The license used in previous versions has been replaced
with a new "Academic Public License" (doc/License). This license gives
noncommercial users rights to use, modify and distribute copies of OMNeT++.
The possibility of using OMNeT++ under the GPL has been removed. Commercial
users of OMNeT++ should obtain a commercial license.
Major changes of this release in nutshell:
- The simulation kernel has been ported to use C++ exceptions and RTTI
(Run-time Type Information) and on Windows, the Fiber API. Also, there
has been extensive internal refactoring and refinement of the APIs.
- The "message subclassing" feature has been officially introduced. It is now
documented in the manual, and used by several sample simulations.
- Added the implementation of several distributions: continuous distributions
gamma, beta, Erlang, chi^2, student-t, Cauchy, triangular, lognormal, Weibull
and Pareto; discrete distributions Bernoulli, binomial, geometric, negbino-
mial and Poisson [contributed by Werner Sandmann and Kay Michael Masslow].
- Contains an alpha version of the new NED compiler architecture,
built upon XML foundations. This includes a tool for generating
documentation from NED files.
- Akaroa support. Akaroa does MRIP (multiple replications in parallel).
- Tkenv GUI has been polished -- both functionality and usability has been
greatly improved. Plove GUI was also redesigned.
For the list of changes that affect portability of simulation models,
see the new doc/API-Changes.txt file. You can find even more detailed
information in the ChangeLogs of the respective source directories.
A more detailed list of changes follows:
Simulation kernel refactoring:
- On Windows, now Win32 native coroutines are used (Fibers API). This change
made it possible to introduce the use of C++ exceptions.
- Error handling in simulation kernel (and in other libs too) has been ported
to C++ exceptions. This not only resulted in cleaner kernel code, but also
has benefits for you:
* you can now use try-catch for better error handling. The API documentation
describes which methods throw exceptions. The common exception class
is cException.
* methods like end(), endSimulation(), deleteModule() terminate the module
immediately even when called from handleMessage(). In earlier versions,
handleMessage() had to go through in any case.
* you can now safely use C++ libraries that throw exceptions, e.g. STL.
Methods like cSimpleModule::error() and opp_error() are remained for backward
compatibility, but they simply throw cException. opp_warning() remained but
its use is discouraged.
- Use of C++ RTTI (Run-time Type Information). From now on, you can use
dynamic_cast<> in your code, and you don't need to provide a className()
method in your classes (because the kernel can figure it out using typeid
in the base class, cObject).
- Eliminated gcc 3.0.x warnings, and changed to the I/O headers <iostream>, etc.
- Several smaller auxiliary classes have been turned into inner classes of
their respective 'main' classes. (For example, cQueueIterator became
cQueue::Iterator, sTopoNode became cTopology::Node, etc; full list in
include/ChangeLog.) Compatibility typedefs exist for the old names.
- Cleanup in cObject and cSimulation: several internally used methods have been
eliminated or moved to better places. (For example, inspector-related methods
cObject::inspector() and cObject::inspectorFactoryName() have been removed,
and inspectors are now fully internal matter of Tkenv.)
- Refactoring on dynamic module creation: instead of modtype->buildInside(mod),
one should now write mod->buildInside(), which is more natural.
(The former syntax still works -- a cModuleType::buildInside() is still
provided for backward compatibility). buildInside() delegates task to
doBuildInside() (a new method), so it's doBuildInside() which should be
redefined in subclasses, and also nedc generates now doBuildInside() code.
- Container classes are now more consistent in what they do when the requested
object doesn't exist:
* Convention 1: methods returning an object reference (e.g. cPar&) now
always throw an exception if the object is not found. (Until now, some
methods issued a warning and returned null reference, i.e. *(cPar*)NULL).
* Convention 2: methods returning a pointer (e.g. cGate*) return NULL
pointer if the object is not found. (Until now, some methods issued
a warning and returned NULL pointer.)
These conventions necessitated the following changes:
* par() of cModule and cMessage now throws an exception if parameter was not
found. (In simple module code, check for existence of a parameter before
accessing it can now be replaced with try-catch.)
* cModule: cGate *gate() methods no longer issue a warning if the gate is
not found, just return NULL.
* cArray::remove(cObject *) and cQueue::remove(cObject *) methods
now return NULL instead of the original pointer if the object was
not found.
- cPar can now use compiled expressions subclassed from cDoubleExpression (a
new class). This is needed for code generated by the new nedtool.
- cSimulation changes:
* lastModuleIndex() renamed to lastModuleId();
* operator[] deprecated (use module(int) method instead)
* del() renamed to deleteModule(); add() renamed to addModule()
- Channels are now represented by real objects (subclassed from cChannel)
rather than parameters in cGate. Channels can be assigned to connections
via cGate's setChannel() method; at the same time, DEPRECATED cGate's
setDelay(), setError(), setDatarate(), setLink() methods (these attributes
should be set on the channel object).
- cSubModIterator: operator[] deprecated (use operator()(int) method instead)
- For further, more internal changes and for more details on the above changes
see include/ChangeLog and src/sim/ChangeLog.
Simulation kernel new features:
- Added convenience functions to cGate, cMessage, and cArray (see
API-Changes.txt for details).
- A new utility class cDisplayStringParser lets you easily manipulate display
strings.
Message subclassing, new NED compiler architecture:
- The Perl-based message compiler opp_msgc is now available in bin/. Message
subclassing is documented in the manual, and it is demonstrated by several
sample simulations. 40+ test cases deal with testing the generated code.
- Added nedtool, the new NED and message compiler (alpha). nedtool converts
NED from/to XML, providing much better integration possibilities (for example
it is now possible to use XML/XSLT to generate NED topologies from external
data sources -- or to extract NED info to arbitrary XML format.)
- Added nedxml library (the library under nedtool) to src/, and its API-doc
to doc/nedxml-api.
Manual:
- Manual source has been converted from Word to Latex [thanks to Ulrich Kaage
for this non-trivial and time consuming task!]. He also added an Index.
HTML conversion (using L2H, by myself) is not 100% yet, you should regard
the PDF as the authoritative form.
- New chapter about message subclassing, plus various updates, fixes and
clarifications [thanks to Phillip Feldman for his comments]
Build:
- In addition to Cygwin, the MinGW compiler is now also supported in Windows.
Older Cygwin versions with the 2.95.x compiler cannot be used any more.
- Improved MSVC support: opp_nmakemake creates MSVC makefiles; running the
test suite now works smoothly with MSVC; opp_stacktool displays reserved
stack size for executables.
- MSVC projects now need *different* compiler flags. Every source should be
compiled with exceptions enabled and using /GR, otherwise there will be RTTI
exceptions. Because of the Fiber API, reserved stack size should be set to
a low value, 64K.
- New utilities (Unix, MSVC): opp_neddoc creates HTML documentation for NED
files; opp_neddocall creates HTML documentation for all nedfiles in a
directory tree; splitvec to split output vector files.
- There are new targets in Makefiles that are generated by opp_makemake:
Target neddoc.html generates a file named neddoc.html by using the
opp_neddoc tool on all NED files. Target htmldocs generates HTML
documentation of all source files (*.h and *.cc) using Doxygen. The
HTML files are placed into the sub-directory ./htmldoc. Also, Makefile
now generates ../doc/api/tags. This tag file can be included when generating
model documentation.
- Improved configure script. Now we support Tk8.4, and also optional packages
like Akaroa.
- Test suite: the number of test cases has grown from 19 to about 120 since
omnetpp-2.2; now it covers a bigger part of the core functionality (modules,
messages, queues, parameter) as well as message subclassing and some aspects
of NED and Cmdenv. Tests for the distributions are in test/distr.
GNED, Plove:
- The Plove GUI has been redesigned, with focus on intuitiveness and usability.
It also features icon toolbars, tooltips and more self-explanatory dialogs.
- The number of module icons available for simulations has grown from 41 to ~90
since the 2.2 release. GNED also has an improved icon selector dialog now.
- There have been other small fixes and improvements in GNED, e.g. fixed the
bug which caused display strings always being added to connections.
- All Tk GUIs now make use of the combobox widget from Bryan Oakley.
Envir changes (apply both to Cmdenv and Tkenv):
- Integrated Steffen Sroka's Akaroa extension that supports multiple
independent replicated simulation runs.
Akaroa can be activated by specifying
[General]
outputvectormanager-class=AkOutputVectorManager
in the ini file. By default, all output vectors are under Akaroa
control; the <modulename>.<vectorname>.akaroa=false setting can be used
to make Akaroa ignore specific vectors. For more info see the Akaroa
home page and the OMNeT++ documentation.
- Added fname-append-host=yes/no ini file setting. When turned on, appends
the host name to the names of the output
files (output vector, output scalar, snapshot files). This is
useful when the simulation is run on multiple machines concurrently
(parallel independent runs (Akaroa) or parallel/distributed simulation),
and all running instances write to the same directory (e.g. shared
via NFS mount). [Idea from Steffen Sroka's Akaroa extension]
- 2 bugfixes: (1) output scalar file did not get opened sometimes; (2) output
scalar file got removed between runs
Cmdenv:
- Cmdenv can now display various performance measures like event/sec,
event/simsec, simsec/sev, number of message objects, etc. during execution,
so you can compare Tkenv and Cmdenv performances.
- The omnetpp.ini entries that control Cmdenv execution mode and amount of
printed info have been changed. An express-mode=yes/no (default: no) switch
has been introduced, with a meaning similar to Tkenv. Normal mode
(express-mode=no) can be controlled with the module-messages=yes/no,
event-banners=yes/no, and message-trace=yes/no entries (the third adds new
functionality), while express mode is affected by the status-frequency=
<num-events>, performance-display=yes/no entries. autoflush=yes/no has
also been added. The display-update=, verbose-simulation= entries are now
obsolete.
- The -h command-line switch now lists all networks and modules linked into
the executable.
Tkenv:
- Inspector windows are now restored from a ./.tkenvrc file if you restart the
simulation. More precisely: as soon as an inspected object (identified by
fullpath and classname) gets created in the simulation, its window pops up.
Objects must have unique names for this to work properly! [Thanks to Nicky
Van Foreest for the idea]
- For better navigation of simulation objects, an object tree view has been
added to the left side of the main window. It can be turned off from the
toolbar for performance.