What's New ========== OMNeT++ 2.3p1 release (November 2003) ------------------------------------- This is a bugfix release, and its main job is to resolve issues of compiling the package with the Microsoft .NET compiler (aka VC7). It also improves Tkenv to make structures defined in .msg files visible (before, only "{...}" was displayed), and contains a number of user interface refinements and fixes to GNED (thanks to Eric Wu and Steve Woon for the hints). What it doesn't contain yet are the new opp_neddoc, new Tkenv features such as senddirect animation, the new parallel simulation architecture, dynamic loading of NED files and other refinements. These features need more testing and they're not appropriate for a bugfix release anyway. 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 , 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 ..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= , 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. - Inspector windows have been re-though to make them more intuitive, consistent and informative. All inspector windows now feature an inspector bar with object fullpath, classname and pointer value (useful for debugging), and a color code to make it easier to match different inspectors of the same object. Axis labelling have been added to output vector inspectors. Added tooltips to graphical module inspectors, speeded up animation of on very long connection arrows, and refined functionality of the Step icon into 3 distinct icons ("Run until next local event", "Fast", "Stop"). - Improved File|New run and New network dialogs (now also available from the toolbar) offer choice from a combobox. Other improvements: main text window is now cleared when simulation is restarted; more tooltips & toolbar icons; better output in Message Trace window; increased event number status bar field width by 3 digits (it was limited in size to 1.000.000 events); - With "ring" layout, changed display order of modules from clockwise to the more natural counter-clockwise. - Extensive internal refactoring mostly because of the introduction exception handling and reorganization of inspector registration and creation. Sample simulations: - HCube, Token Ring and Dyna2 now use message subclassing. Token Ring has also been significantly revised. The PVMEx example has been removed. - A new example simulation Topo has been created to demonstrate NED features. Currently it shows how to build various parametric topologies (chain, mesh, ring, star, random graph, binary tree, hexagonal grid) using NED. OMNeT++ 2.2p1,p2,p3 ------------------- Only exist in source patch form. In the OMNeT++ 2.2 release (May 2002) ------------------------------------- It's almost a year since the last, 2.1 release, and that's why this change list tends to be a bit lengthy. Sorry about that. For this release I got many more bugfixes, bug reports and suggestions than for any previous one. Thanks to everybody who helped! Huge credit goes to Ulrich Kaage in Karlsruhe who built up a server infrastructure (CVS, bugtracker, Wiki, etc.) and was restless in testing and improving OMNeT++. Thanks Uli! This is the first release since the CVS went online last year. This release contains experimental support for the long-demanded feature known as 'message subclassing'. This means that C++ message classes can be generated from NED code, replacing the practice of dynamically adding cPar objects to messages. Data fields added via the subclassing mechanism are inspectable in Tkenv. The new NED syntax is experimental; the compiler extensions have been temporarily implemented in Perl. The new Dyna2 sample simulation demonstrates this feature. See doc/msgsubclassing.txt for more information. The simulation kernel now has an indexed and hyperlinked on-line API reference, generated from header file comments. (We're using Doxygen.) At the same time, the Reference chapter in the manual was deleted. Distributed simulation can now use the MPI library which is more readily available nowadays than PVM. (Code contributed by Eric Wu). The simulation kernel was made const-correct; because of this, older code may need changes (especially where one didn't use the Module_Class_Members() macro to define module classes.) There were other changes on the simulation kernel to make it cleaner. cGate::setDisplayString() was fixed: changes are now immediately reflected in the Tkenv graphics as they should. cModule's display string methods were reorganized: the displayString(int type) method was split into displayString() and displayStringAsParent(), eliminating the type parameter. Similar change was made to the set...() methods. (Old methods remained but are now deprecated.) All setDisplayString() methods are now compatible with auto-layouted modules (randomly placed modules won't jump around in Tkenv after each display update). New methods: opp_nextrand(long& seed); opp_strlen(..); opp_strprettytrunc(..); opp_mkindexedname(..) (the latter was formerly called indexedname()). fullName() no longer uses a static buffer; with fullPath(), it is possible to avoid static buffers by using the new fullPath(buffer,buflen) method. In NED, an expression may now refer to a submodule parameter with the following syntax: submod.par or submod[index].par. A limitation is that the index might not be an expression itself. Foundations of a simulation kernel regression test suite have been laid down. The test/ subdirectory contains a few initial test cases that rely on the new opp_test tool. The test tool can be very well used to build model tests, too. Also, as tests tend to be compact and easy to write, the test tool is also excellent for experimenting with OMNeT++ library classes. See doc/opp_test.txt for details. The Envir library has been extended with a plugin mechanism: one can now plug in code that actually handles recording output vectors (e.g. one can write them to database instead of files, apply filtering before writing them out, or send them to a simulation controller app) without having to modify the user interface library, the simulation kernel or existing models. Similar mechanisms exist for output scalars and snapshots. The new include/envirext.h header contains the interfaces the plugins have to conform to: cOutputVectorManager, cOutputScalarManager, cSnapshotManager. Tkenv's plugin handling was improved: plugins are searched in the directories in OMNETPP_PLUGIN_PATH (set to ./plugins by default). DLL file names that are looked for now correctly depend on the platform (*.dll on windows, .so* on Unix). For the default output vector mechanism (vec files), number precision was increased to 9 digits (fprintf format changed). The module parameter change logging feature is no longer supported. Size limitations on omnetpp.ini were removed (only max line length=1024 chars remained). ChangeLogs are now GNU-style, with the most recent entries at the top. Exit codes of simulation programs were made more natural: 0 if the simulation terminated normally, 1 otherwise. Also, SIGTERM and SIGINT signals are now handled more gracefully: they call finish() before terminating the simulation (Unix only). In GNED, regexp find/replace now understands the \1,\2,... notation in replace strings. Backwards search was implemented in the Find/Replace dialogs of GNED and Tkenv. Fixed Plove's problems with tabs/spaces in vector files and slashes/backslashes on Windows, and also GNED's problems with command-line arguments. The makefiles now use a new Perl-based dependency generator which works on all platforms. opp_makemake: added -L option, and removed Makefile.in from the 'depend' target. In the OMNeT++ 2.1 release (May 2001) ------------------------------------- This release is devoted to making OMNeT++ easier to install, easier to use and easier to learn. Most important, there is now a binary package for Windows. The install package comes with Tcl/Tk, Gnuplot and some Unix utilities (grep, awk) bundled, and in addition to the OMNeT++ programs and libraries compiled with MSVC, it also contains prebuilt executables of the sample simulations. To shorten the learning curve, the package contains Nick van Foreest's Queueing Tutorial. Some MSVC integration stuff (AppWizard, macro to add a NED file to the project) was also added. Changes in the source distribution: it now includes the Tutorial and the sources of the MSVC integration components. To facilitate creating binary distributions, omnetpp.h and the other simulation kernel headers have been moved out of src/sim/, to a new include/ directory. There was no change on the simulation kernel itself. Further enhancements: Plove can now be built as a single executable with compiled-in Tcl code; on Windows, Plove and GNED can now be compiled as GUI apps (using WinMain() instead of main()). I added makefiles for Win95/98/ME (although I couldn't test them). Borland C++ is no longer supported: I removed the old project files (*.ide), but added back (unsupported) Makefile.bc's. In the OMNeT++ 2.0 patch 1 (March 2001) --------------------------------------- Fixes build issues with Cygwin, PVM, and static libs under Unix. In the OMNeT++ 2.0 final version (February 2001) ------------------------------------------------ There are a number of enhancements mainly on the GUI parts, GNED and Tkenv, but the simulation API remains fully compatible. Bugs that were reported since the 2.0b5 release have largely been fixed. All those who cared to report bugs and suggested features -- thanks! In cQueue, a number of methods were made virtual to enable customizing the class (e.g. adding statistics for maintaining average queue length, etc.). Some bugfixes on cQueue, cArray and cBag. I also added the OMNETPP_VERSION symbol to the sim header files (currently #defined as 0x0200). Tkenv was enhanced quite a bit. Now you can now open module output windows for all modules (not only for simple modules), and the window will accumulate ev<< output from that module and all submodules. (This feature is especially useful for tracing dynamically created modules). Now you can search for text in all module windows (^F Find, F3/^N Find next). Hotkeys were assigned to the run commands too (F4 Step, F5 Run, F6 Fast, F7 Express, F8 Stop), and the behaviour of the "step within module" command (^F4) was refined. I added a Performance status bar (it displays events/sec, simulated sec/sec, events/simulated sec readings). Another toolbar shows (among others) the number of message objects currently in existence -- this feature may help you discover the most common kind of memory leaks: forgetting to delete messages. Display string handling was improved: modules in a module vector may now be positioned individually, and submodule display strings may use the parent module's parameters, too. See src/tkenv/ChangeLog for details. The most important addition to GNED is its new, experimental XML support (needs the TclXML-1.2 package). XML will play a much more significant role in future releases of OMNeT++, as a universal data exchange format. Many smaller enhancements: GNED now accepts NED file names as command line arguments; .gnedrc was introduced; more & better Properties dialogs (Channel, Connection, Module, etc. Properties); GNED is more careful now when you want to exit the program; the File menu now has a Save all item. Plus a number of other fixes to improve the robustness and reliability of the code. A short section was added to the manual about parallel simulation in general. In the OMNeT++ 2.0 beta 5 version (June 2000) --------------------------------------------- Fixed the errors/warnings that occurred when compiling 2.0b4 with gcc 2.95.2. In the OMNeT++ 2.0 beta 4 version (May 2000) -------------------------------------------- This is release is a preparation to the 2.0 final release: most of the changes improve on the ISO compliance, cleanliness, portability or quality of the code and fix bugs, but there are a number of new features too. Steps toward better ISO compliance: the source was made 'const char *'-correct, and the TRUE/FALSE #defines were replaced by the true/false C++ keywords. Also, nearly all '-Wall' gcc warnings were eliminated from the source. Now it is possible to create DLLs from the libraries on Windows. This wasn't as easy as I thought, because there are fundamental conceptual differences between Windows DLLs and Unix shared objects. (For me it seems like the Unix approach is a lot more flexible.) The MSVC makefiles were further refined using a contribution from Balazs Kelemen. Improvements on the simulation library: Multi-stage module initialization support via cModule's initialize(int stage) and int numInitStages() functions. The send...() functions now have versions which take cGate* pointers. sum() and sqrSum() members added to the statistics classes (cStdDev and subclasses); isNumeric() member added to cPar; remove(cObject *) added to cArray. Also, three functions were added to cModule to facilitate navigating the module hierarchy: int findSubmodule(...), cModule *submodule(...) and cModule *moduleByRelativePath(...). New Cmdenv/Tkenv features: you may link more than one user interfaces into the simulation executable, and you can select one at runtime with the [General]/user-interface=Tkenv (or =Cmdenv) ini file option or the -u Tkenv (or -u Cmdenv) command-line argument to the simulation executable. The per-module extra stack size needed by the user interface libraries can now be configured from the ini file: [Cmdenv]/extra-stack= and [Tkenv]/extra-stack= options. The setDisplayString() sim.library functions are now properly handled by Tkenv, so you can change the network graphics at runtime. Module parameters in display strings (e.g. in "p=$xpos,$ypos;i=router") are also implemented finally. However, implementing the message appearance customization feature (message display strings) was left for next releases. In NEDC (and GNED), fixed the ?: operator and changed its precedence to bind looser than || and &&. Changed nedc-generated code to suppress warnings about unused variables (which are normal anyway in machine-generated code); this could only be done for MSVC and Borland C++ because gcc seems to lack such a pragma. Unfortunately I didn't get a chance to further refine GNED. It would really help to have contributors to GNED development, so if you're interested, please write! (Basically only Tcl/Tk programming is required [no need to touch the C++ part], and I could give any support needed.) Makefiles change: the 'install-local' target was eliminated: the new-built libraries and programs are immediately copied to the lib/ and bin/ subdirs. Several other smaller changes like fixed PVM execution; improved error handling, bugfix related to wrong transmissionFinishes() behavior, etc; see the sim/ChangeLog file. In the OMNeT++ 2.0 beta 3 version (Jan 2000) -------------------------------------------- License change: you can now elect to use GPL for the whole OMNeT++ package. Compiling with MSVC is now supported. Makefile.vc files have been added for system components, and project files for sample simulatons. No DLL support yet. MSVC support required a number or small changes in the sources too. The documentation was significantly expanded and reorganized. RefMan got merged into the User Manual, and the new User Manual now contains a lot of background information, new hints and techniques, references to other simulation packages, etc. New sections include in-depth analyis of handleMessage() and activity(), and a comparison with Parsec. GNED has been further enhanced: you can create submodules by dragging a module type from the tree view to the canvas; submodule names can be edited in-place; there are dialogs to edit submodule, connection, channel, etc. specifications directly. A new sample called Demo was added which works as a GUI shell to the other sample simulations, and also demonstrates how you can link several simulation models into a single executable. The other samples were cleaned up a bit too (e.g. indentation & commenting made more consistent). Some API changes were made to improve the clarity of the code. See API_CHANGES in the doc/ directory. TVEnv was removed from the distribution. In the OMNeT++ 2.0 beta 1 and 2 versions (Sep,Nov 1999) ------------------------------------------------------- License conditions have been alleviated: from this release on, one can elect to use GPL for the base components of OMNeT++. The configure script has been replaced by GNU Autoconf. The makefiles have been brushed up (more standard symbol names, autodepend, version number in lib names, etc). Cygwin is now fully supported. DOS+BC3.1 support has been removed for lack of interest. File names longer than 8+3 are now used within the package. Most of the effort since the last release was put into GNED. As a result, GNED can now directly read/write NED files, so you can use it to work on your existing NED sources. Moreover, GNED is now a fully two-way tool: you can edit compound modules in graphic or in NED source form, and switch to the other view any time. The GUI has been improved too: toolbar icons, tooltips, NED syntax highlight. GNED is still in beta and there's some missing functionality. Tkenv's user interface has also undergone some beautifying and bugfixing: now it has toolbar icons, tooltips, etc. OMNETPP_BITMAP_PATH can now contain a list of directories; it includes "." and "./bitmaps" by default, so individual simulation models can have their own icons in their own directories. Smaller enhancements were made to the simulation library. Some of them are: dynamic simple modules can now be created and booted in one step by using cModuleType's createScheduleInit() function; callInitialize() and callFinish() was added to the module classes (for compound modules they work recursively); behavior of cancelEvent() slightly changed. cMessage now has isScheduled() and isSelfMessage() member functions; a "context pointer" was also added to cMessage to facilitate writing modules which use a large number of self messages concurrently. See the ChangeLog in the directory of the individual components for details on what has been changed/fixed/improved. Contributions have been added. They include NED syntax highlight for Emacs, and recipes and sample code to use Octave with OMNeT++. Which is less visible to you, the development has moved to use CVS. In version of Feb, 1999 (OMNeT++ 1.1) ------------------------------------- handleMessage() support added as alternative to activity(). Finite State Machines (FSMs) are now also supported. They are demonstrated in the fifo2 sample simulation. The cPacket class and the protocol.h header was added; its aim is to standardize on protocol models. Negative message kind values are now reserved. Added contributed howto about using OMNeT++ on NT with CYGWIN. Also added contributed report on using message subclassing. The way of writing custom inspectors has been redesigned to make it more flexible. Also, Tkenv now has a plugin interface. Several bugfixes and smaller improvements: Tkenv message inspector redesigned; bugs in the ini file reader and the statistics classes were fixed; vsscanf() was eliminated; the makefiles are now created from makefile.in files; wait(), receive() and surroundings were optimized; bug in GNED bug fixed etc. In version of Aug, 1998 (OMNeT++ 1.0) ------------------------------------- Data collection by output vectors can be configured in the ini file (ie. OPNET 'probes'). Display strings can now be specified in the ini file as an alternative to embedding them in ned files. GNED has been totally rewritten. Now it supports colors, icon selection etc. and correctly generates display strings. Cut/copy/paste capability. A models/support library added with several base/utility classes and modules. Ported to Windows 95/NT. Borland C++ 5.0 project files are included. Numerous smaller improvements on Plove and Tkenv. Possibility to make standalone simulation executables with Tkenv's TCL script parts compiled into the executable. To-do list and coding conventions (style guide) has been added to the docs; please stick to it. Tkenv is now better documented; and so is the cKSplit class. As usually, additions and changes in the User Manual are marked with (new) in the text. It does not necessarily mean the feature documented there is new; most probably only the documentation is. As usually, you're welcome to hack on the code and send in patches! GNED is a very good target to start at. If you plan to do development, you can sign up on the OMNeT++ mailing list and exchange ideas with others. In version of July, 1998 ------------------------ Documentation now includes quickstart reference for OPNET users. Additions to the User Manual are marked with (new!) in the text. Tkenv has been improved significantly. Better animation: message names are displayed and message kind is color-coded. New connection inspector shows a connection path graphically. Module inspector has been redesigned in notepad-style. Right-click popup menus in inspector windows. Variables can be changed at run-time by cWatch inspectors. You can now use the menu and play with the inspectors while simulation is running. Several smaller improvements. Routing support through the cTopology class. Other new classes are cWeightedStdDev, cLinkedList. Direct message encapsulation support. cPar can now store void* pointers. Output scalar file added which accumulates results from several simulation runs. Several refinements on the class library, more informative error messages. Improved makemake script supports large models which span across multiple directories. Plove made more intuitive with mc-like key bindings and right-click popup menus. In version of June 5, 1998 -------------------------- Documentation now comes also in HTML. We now have an LSM entry. Tkenv made the default user interface. Network graphics (module icons, connection arrows etc) and message flow animation has been added to Tkenv. Usefulness of Tkenv dramatically improved. Default graphics for models originally written without graphics (no modifications needed). By default, libraries are now dynamically linked which drastically reduces executable sizes. You can revert to static linking by editing in `configure'. You can load shared objects (e.g simple module code) at run-time (-l command-line option). Source directory tree changed to be more 'unix-like'. New histogram class with user-defined and equal-frequency cells added (thanks to Gabor Lencse), existing ones cleaned up and significantly enhanced. Wildcards (*,?) can be used in omnetpp.ini to supply values to several model parameters at a time. Ini file inclusion and multiple ini files support (via multiple -f command-line options) added. Total stack size for the coroutines can now be given in the omnetpp.ini file. Several bug fixes and minor improvements on Plove, GNED etc. Version of May, 1998 -------------------- Wasn't publicly announced. In version of March, 1998 ------------------------- An new interactive tool, Plove has been added. Plove is for analyzing and plotting output vector files. Plove uses gnuplot to do the actual work. In addition to viewing, you can save the gnuplot graphs to files (postscript, latex, pbm etc) with a click. Filtering the results before plotting (averaging, truncation, smoothing, etc) is possible. Some filters are built in, and you can easily create new filters or modify the existing ones. Portability: Unix and (with some limitations) Win95/NT In version of February, 1998 ---------------------------- Type checking has been added to the NED language and the compiler. New operators have also been added (like binary and/or/xor, shifting etc). Now it is not necessary to declare module parameters and gates in .cc files (Module..End stuff can be left out). A new example program, HCube was added. It simulates an arbitrary-size hypercube network with a simple deflection routing. A configur script was added that -- on Unix platforms -- finds the installation directories of Tcl/Tk, X, PVM and Turbo Vision, and customizes the makefiles accordingly. The Jar compiler has been renamed to NEDC because the name 'Jar' was used by other software (a DOS archiver; Java tar on Solaris etc.) Some scripts in util/ have also been renamed. Now it is possible to specify values with time units (s,ms,us,m,h,d etc.) in omnetpp.ini. Misc improvements: some bugs fixed; some error messages in the sim. kernel made more informative etc. In version of December, 1997 ---------------------------- A graphical model editor (GNED) is here. It's written entirely in Tcl/Tk. Try it. It is the first, simple version; there's more to come. The way of defining simple modules has been simplified a lot. Check out the manual or see the example programs! A new example program (fifo) was added that models a single-server queue and also demonstrates how to derive a simple module from another one. Important: the [All runs] ini file section has been renamed to [Parameters] to reduce misunderstandings. In version of October 15, 1997 ------------------------------ Several member functions (and even classes) have been renamed for the sake of a more readable code as well as consistency in naming and style. The utils directory contains a Unix script (convert) to upgrade your files. The cKSplit class was added -- another, experimental on-line distribution approximation method. Several bugfixes and improvements, updated manual. The arg.list to the constructor of the histogram classes has changed -- beware, the compiler might not warn you! In version of September 15, 1997 -------------------------------- Tkenv has been developed upon a lot -- try it with the improved Token Ring example! Parallel execution via PVM has been tested and significantly improved. Syncpoints (a tool for synchronization) were added. See the user manual for details. Go ahead and do Parallel Discrete Event Simulation (PDES) with OMNeT++! The implementation of the message queue (Future Event Set) has become more efficient: the underlying data structure has been changed to heap. Most important change in the simulation class library: cQueue's interface has changed. See the manual or the source code. Most important change in the ini file: The [General]/number-of-runs option has been replaced by the [Cmdenv]/runs-to-execute option and the -r command-line switch. Check the version.log files for the numerous other changes. Many bugfixes and code cleanups were made. ---------- Copyright (C) 2002 Andras Varga