DOWNLOAD
5823 Hits
Created on  10/20/2005 11:34
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.

Simulation core:
- simplified the signature of simple module constructors; Module_Class_Members() 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 getNextSiblingByTagName()

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(), addByteLength(). 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.