Announcement: OMNeT++ 5.1 Preview 2 released

386 views
Skip to first unread message

Varga, András

unread,
Dec 23, 2016, 10:05:25 AM12/23/16
to omn...@googlegroups.com
Dear All,

We are happy to announce a preview for OMNeT++ 5.1, just in time so that you can play with it under the Christmas tree ;-)  Feedbacks welcome!

This release significantly improves and builds upon functionality introduced
in version 5.0, and also raises the bar in other areas. Highlights include:
a much-improved Qtenv that now replaces Tkenv as the default runtime GUI;
support for smooth custom animation and video recording; better support for
simulation campaigns in managing and performing a large number of runs and in
result recording/processing; experimental support for SQLite-based result
files; updated toolchain and libraries on Windows; 64-bit Windows support;
updated Eclipse base for the IDE.

Read on for details. Download URL: https://omnetpp.org/component/jdownloads/category/31-release-test-versions

Merry Christmas!
Andras and the OMNeT++ team

--------

Notes:

1. There are now separate downloads for Linux, Windows and macOS. A fourth
   package labelled "core" comes without the IDE, and can be used on all other
   systems.
2. 32-bit Windows and Linux are no longer supported.

Known Issues:

1. The manuals have not yet been updated.
2. Documentation generation on Windows is currently not working.

Changes since version 5.0:

Core:

 - Support for smooth custom animations. The goal was to allow models to visualize
   their operation using sophisticated animations while the simulation is running
   under a GUI (Qtenv). The key idea is that refreshDisplay() is called repeatedly
   at a reasonable rate to render frames. refreshDisplay() knows the animation
   position from the simulation time (which is now interpolated between events)
   and the "animation time", a variable also made accessible to the model.
   Animation-to-simulation speed ratio (sec/simsec) is determined by an "animation speed"
   variable (or rather, several such variables) that can be set explicitly from code.
   Different animation speeds can be chosen dynamically to adapt the animation
   to the current time scale of the interesting events or processes in the simulation.
   Animations that need to take place in zero simulation time are supported
   with "holds", i.e. holding up the simulation for a certain animation time period.
   The actual playing speed of the resulting animation can be controlled in Qtenv
   using the "Speed" slider on the toolbar. Note that this feature is only available
   in Qtenv (and not in Tkenv which is more-or-less in maintenance mode from now on).

 - If a model implements such full-blown animations for a compound module that
   OMNeT++'s default animations (message sending/method call animations) become
   a liability, they can now be programmatically turned off for that module with
   a setBuiltinAnimationsAllowed(false) call.

 - Support for self-refreshing figures. cFigure now has a refreshDisplay()
   method which is called on every display refresh as long as the containing
   canvas is open in the GUI. Overriding that method in custom figure classes
   allows the figure to update itself according to the state of the simulation.
   The self-refreshing feature is especially useful for figures that implement
   various meters, gauges, plots or charts, because this way they don't require
   an additional helper module to update them. Note this feature is only available
   in Qtenv.

 - Custom figure classes are now registered using Register_Figure(), not with
   Register_Class(). This allows for more flexibility and a cleaner handling of
   C++ namespaces.

 - The stacking order of figures is now jointly determined by the child order and
   a new runtime-settable cFigure member called zIndex, with the latter taking
   priority. In @figure properties in NED files, "zIndex" replaces "childZ" which
   was only used at parse time but not stored in figures afterwards.

 - A figure can now have a tooltip text set.

 - A figure can now be associated with a simulation object, for example a module
   or a packet. Association means that the figure more-or-less "stands for" (or
   visually represents) the other object in the GUI. For example, when the user
   clicks or double-clicks the figure under Qtenv, the associated object is
   focused or opened in the GUI. The figure also "inherits" the tooltip of its
   associated object, provided it does not have its own tooltip.

 - For text figures, one can now optionally turn on a "halo", which makes the
   text more readable on all backgrounds.

 - Support has been added to load custom images for use by cImageFigure/cIconFigure
   and in display strings (cEnvir::loadImage()). It is also possible now to
   programmatically add new directories to the image path (cEnvir::appendToImagePath()).

 - The dimensions of images used by cImageFigure/cIconFigure can now be determined
   programmatically (getImageNaturalWidth() / getImageNaturalHeight() methods).

 - Support for measuring the text has been added to cTextFigure and cLabelFigure
   (getBounds() method). Note that getBounds() assumes zoom level 1.0.

 - Support for accessing the coordinates of auto-layouted submodules (cEnvir::
   getSubmoduleBounds()). This functionality is needed by some visualizers in
   INET, where nodes of a wired network are typically not explicitly placed.

 - In cObject and subclasses, info() has been renamed to str(). The old method
   still exists and delegates to the new one. The detailedInfo() method has been
   deprecated due to lack of usefulness.

 - In NED statistic declarations (@statistic), signal names in the "source"
   attribute can now be qualified with the name of a submodule. This will cause
   the signal listener to be added to the given submodule instead of the module
   containing the @statistic. Example: @statistic[foo](source=a.b.foo). Note that
   there is no syntax to specify modules above or outside the one containing the
   @statistic, as that would limit the module's reusability (encapsulation
   violation).

 - In cModule, the arrived() method has been made public API. arrived() is
   invoked as part of the send() protocol, and its default version inserts the
   message into the FES after some bookkeeping. Overriding arrived() allows one
   to perform custom processing at the destination module of a send() call
   immediately, still within the send() call.

 - cPacket's default getDisplayString() method now falls back to returning the
   encapsulated packet's display string, instead of just returning an empty string.

 - When formatting error messages, location/time information is now placed *after*
   the exception text, not before. The goal was to improve readability, as user
   now needs to go through less blabla before getting to the actual error message.
   Individual error messages have also been revised for brevity and consistency
   (capitalization, use of quotation marks, etc.)

 - Several things have been made inspectable at runtime (e.g. from Qtenv):
   simulation results being collected (i.e. result filter/recorder objects
   added via @statistic); per-signal listeners lists; values of XML module
   parameters and cXMLElement trees.

 - Unit conversion now knows about C (coulomb) and related units As, mAs, Ah, mAh.

 - Many other smaller-scale changes, fixes and refactoring, in part related to
   the ones above; see ChangeLogs under src/ for details.

Qtenv:

 - Qtenv has reached maturity and it is now the default GUI for simulations.

 - Qtenv now requires Qt5.4, and optionally OpenSceneGraph 3.2-3.5 and
   osgEarth 2.5-2.7.

 - You can use your own Qt bundle by setting the QT_PATH variable in
   configure.user before running ./configure. (This may be needed if your Linux
   distribution comes with an older version.)

 - Added support for smooth custom animations. This means that simulation time is
   interpolated between events, and the animation can be stopped between events.
   In the event number display, the event number is prefixed with either 'last:'
   or 'next:' to make it unambiguous. A new 'Animation Parameters' window has
   been added where one can view the current animation speed, framerate, and
   other metrics.

 - One-stepping now stops right before events so pressing F4 will execute the
   next event instantly. For consistency, after initialization, the simulation
   time will be set to that of the first event (not always to 0s).

 - The simulation time display now has digit grouping and units turned on by
   default for better readability. Settings can be changed in the context menu.

 - Added built-in support to record animation into a high quality video.
   (Press the record button on the toolbar for instructions.)

 - Improvements on built-in animations: Messages sent with a nonzero propagation
   delay are now animated properly (not instantaneously). Packets of nonzero
   length are now displayed as "strips" when transmitted on a link with a
   transmission rate and propagation delay. The animation of method call
   hierarchies now represents the call graph better.

 - Two-way connections are now drawn as two half-length lines so that they
   don't cover one another.

 - Module layouts are now shared among all graphical inspectors of the same
   module. Layout seeds are now persistent between runs.

 - The Configuration/Run selection dialog now accepts run filters from the
   command line and will display the matching runs on the top of the list.

 - Inspector windows made persistent between runs and will be re-opened on
   simulation restart.

 - Other improvements, including tweaks to the Preferences dialog, context
   menu usability in inspectors, updated application and toolbar icons, a new
   'Rebuild network' button on the toolbar, and many bug fixes.

 - Experimental support to run as a native Wayland client (start the simulation
   with the QT_QPA_PLATFORM=wayland environment variable set).

Tkenv:

 - While Qtenv is now the default runtime GUI, simulations can still be
   launched under Tkenv by adding "-u Tkenv" to the command line. Tkenv is
   being maintained, but it is not actively developed any more. This means
   that most new features, including the ones added in this OMNeT++ release
   (smooth custom animations, self-refreshing figures, etc) will not be
   available under Tkenv.

Envir:

 - Run filtering: The -r option of simulations now also accepts a run filter
   expression as an alternative to a list of run numbers and run number ranges.
   This makes it possible to use the values of iteration variables for filtering,
   instead of the artificial and more-or-less meaningless run number. The new
   -q option (see below) can be used to query the list of matching runs.
   Example: ./aloha -c PureAlohaExperiment -r '$numHosts>5 and $numHosts<10' -q runs

 - To query the list of matching runs, the new -q <what> option can be used
   together with -c <config> and -r <runfilter>. The argument to -q can be
   any of: "numruns", "runnumbers", "runs", "rundetails", "runconfig",
   "sectioninheritance".

 - The nesting order of iterations has been made configurable, and the default
   has changed: the repeat counter has been switched from being the innermost
   loop to being the outermost one. This is more practical, as it allows one
   to get early results for all data points, then refine the picture as more
   runs are being completed. The nesting order (also among iteration variables)
   can be specified using the new iteration-nesting-order configuration
   option.

 - Bugfix: the constraint option did not take effect when specified on the
   command line (--constraint=...)

 - The -s (silent, i.e. non-verbose) option has been added, partly to facilitate
   machine processing of -q output.

 - By default, error messages are written to stderr. A -m (merge output) option
   has been added that redirects errors to stdout; a practical benefit is that
   it preserves the relative order of the output.

 - Default result file naming scheme been changed to be more practical. The
   traditional naming scheme contained the run number, which has now been
   replaced by the values of the iteration variables and the repetition
   counter. Example: old: Aloha-16.sca, new: Aloha-numHosts=10,mean=0.9-#3.sca.
   Illegal and inconvenient characters are encoded in an urlencode-like manner.
   This naming scheme applies to cmdenv output files, eventlog files and
   snapshot files as well.

 - Experimental support for SQLite as result file format. SQLite result files
   can be browsed using existing GUI tools (SQLite Browser, SQLite Studio),
   can be queried using SQL, and can be accessed and manipulated from all
   major programming languages including Python and R. These benefits are
   in exchange for slight performance penalty. SQLite result files contain
   the same information as OMNeT++ native result files, they can co-exist,
   and OMNeT++ tools and the IDE understand both. To switch to SQLite as
   default result file format, compile OMNeT++ with PREFER_SQLITE_RESULT_FILES=yes
   set in configure.user. To use SQLite only for specific simulations,
   add the following lines to their omnetpp.ini files:

   outputvectormanager-class="omnetpp::envir::SqliteOutputVectorManager"
   outputscalarmanager-class="omnetpp::envir::SqliteOutputScalarManager"

 - In output scalar files, when run attributes (iteration variables, etc.)
   are saved as scalars, the module name they are saved with has been changed
   from "." to "_runattrs_".

 - The cpu-time-limit option has been fixed to work as expected; a new
   real-time-limit option also has been added.

Cmdenv:

 - All changes described in the Envir section above apply, plus:

 - When performing multiple runs, Cmdenv now stops after the first run that
   stops with an error. This behavior can be controlled with the new
   cmdenv-stop-batch-on-error=<bool> option.

 - When performing multiple runs, Cmdenv now prints run statistics at the end.
   Example output: "Run statistics: total 42, successful 30, errors 1, skipped 11"

 - The cmdenv-output-file option can now be specified per run, and now has a
   default file name that follows the naming scheme of result files (but with
   the .out extension). Since saving the output can no longer be
   disabled by omitting the cmdenv-output-file setting, new option
   cmdenv-redirect-output=<bool> has been added for that purpose.

 - The cmdenv-interactive option can now be specified on per-run basis.

Tools:

 - scavetool: The command-line interface (options and help) has been redesigned
   for usability.

 - scavetool: The tool now supports querying the contents of result files
   in a user-friendly way, via the new "query" subcommand. This subcommand
   has also been made the default operation mode. For example, a simple
   "scavetool *.vec *.sca" command reports the number of runs, vectors and
   scalars found in the specified files.

 - scavetool: CSV and other tabular export has been improved: run attributes
   (iteration variables, etc) are now added to the output as columns.
   Note that scavetool currently cannot export to SQLite.

 - opp_makemake: OMNeT++ and generated model makefiles now use compiler-
   generated dependencies (gcc/clang -MMD option) that are saved in the
   out/ directory in *.d files. "make depend" is no longer needed.

 - opp_makemake: Support for deep includes (automatically adding each
   subfolder to the include path) has been dropped, due to being error-prone
   and having limited usefulness. In projects that used this feature,
   #include directives need to be updated to include the directory as well.

 - opp_makemake: Removed support for generating nmake-compatible makefiles,
   as we now use GNU Make on all platforms.

 - opp_featuretool: Symbols for enabled features (e.g. WITH_IPv4 for the IPv4
   feature in INET) are now placed into a generated header file, instead of being
   passed to the compiler via -D options. The name of header file can be
   specified in the feature definition file (.oppfeatures).

 - opp_runall has been reimplemented in Python, and its command-line interface
   has been redesigned to not only allow using multiple CPUs but also several
   runs per Cmdenv instance. (This change allows one to execute a large number
   of short simulation efficiently by reducing process startup overhead.)
   Internally, opp_runall now uses the new "-q" option of simulations to
   expand a run filter expression to a list of runs.

 - opp_test: export "run" script and "retest" scripts under work/ for each test,
   to facilitate running tests manually. Minor bug fixes.

 - Removed unused utilities like opp_makedep, lcg32_seedtool, abspath, and
   some others.

IDE:

 - The IDE is now based on Eclipse 4.6 Neon and CDT 9.0 (Java 1.8 required).

IDE/C++ Build:

 - The "Collecting includes..." phase of project build (that could take quite
   a significant amount of time, and was often seen as a pain point) has been
   eliminated. The key was to switch from IDE-generated dependencies to
   compiler-generated dependencies (see corresponding opp_makemake change)
   that made include analysis in the IDE redundant.

 - Change in "Project Features" feature: Preprocessor symbols for enabled
   features (e.g. the WITH_IPv4 macro for the IPv4 feature) are now placed
   into a generated header file, and not added to the build configuration
   (Paths & Symbols page) as macros to be passed to the compiler via -D
   options. The name of header file is part of the feature definition file
   (.oppfeatures). Using a generated header file reduces the number of things
   that can go wrong during indexing and project build, and also has the
   advantage of being seen from derived projects.

 - The "Export build tester makefile" button has been removed from the
   Project Features property page. The INET Framework project now has an
   opp_featuretool-based shell script for the same purpose (tests/featuretest)
   that can be easily adapted to other projects as well.

 - Support for deep includes (automatically adding each subfolder to the
   include path) has been dropped from the IDE as well, due to being error-
   prone and having limited usefulness.

 - Improvements in the Makemake Options dialog that opens from the Makemake
   project property page. For example, an "Include directories" listbox has
   been added to the Compile tab page, and less frequently used options
   on the same page have been moved under the More>>> link.

 - CDT integration: renamed the default C/C++ project configuration names
   from "gcc-debug"/"gcc-release" to simply "debug" and "release".

IDE/Simulation Launching:

 - In the Run/Debug Configurations dialog, the "OMNeT++ Simulation" form page
   has been revised for usability and to better support simulation campaigns.
   The launcher (code that schedules and actually runs the simulations and
   arranges feedback in the Progress view and the Console) has also been
   improved. Details follow.

 - The "Runs" form field now accepts a run filter expression that can refer
   to iteration variables. (This form field corresponds to the -r option of
   simulations.)

 - Batch execution of simulations is now controlled with two new spinner
   widgets: "Number of CPUs to use", "Runs per process".

 - The form page now allows specifying time limits for the simulation
   ("Simulation time limit", "CPU time limit" fields)

 - Radio buttons have been replaced by tri-state checkboxes (with on/off/grayed
   states, where the grayed state means "no setting specified, let the inifile
   setting take effect".) The consequent space saving allowed other options
   to be added to the form page: "Verbose", "Stop batch on error", "Express
   mode", "Save stdout", "Record scalar results", "Record vector results",
   "Record eventlog".

 - User interface selection now also uses an editable combo instead of
   radio buttons.

 - Added content assist for Additional Arguments field.

 - Improvements in the launcher: Simulation batches are now easier to cancel;
   in case of a simulation error, the error dialog now correctly displays
   the error message, not just a "Finished with error" text.

IDE/Inifile Editor:

 - Updated to know about option changes and new options.

IDE/Analysis Tool:

 - In the Browse Data page, display Experiment/Measurement/Replication columns
   instead of Folder/Filename/RunId/Config/RunNumber. Note that this is just
   the default value for a preference, so the change will only take effect
   in new installations or new workspaces. The default columns widths have
   also been increased.

 - Initial support for SQLite result files. From the end user perspective,
   they should work exactly as OMNeT++ result files.

 - CSV and other tabular export has been improved in the same way as in
   scavetool (as they use the same export engine).

Build:

 - The Windows version now targets 64-bit Windows, using MinGW-w64. Both the
   GCC and Clang compilers are included, as well as all necessary libraries
   (Qt5, OSG, etc.) Support for 32-bit Windows has been dropped.

 - Compiling OMNeT++ now requires a C++11 compliant compiler.

Samples:

 - aloha: The updated example highlights the use of the new smooth animation
   API. The server and all hosts now have fixed positions (still random but
   deterministic, and not using auto-layouting), so that their individual
   propagation delays can be computed. Each transmitted packet is visualized
   with a ring and many concentric circles, illustrating the propagation of the
   electromagnetic wave. The visualization is faithful, e.g. multiple signals
   visually overlapping at a receiver actually means a collision. Animation
   speed is controlled by each node, taking three parameters for different
   states (idle, transmission edge, midtransmission) into account.

 - osg-earth: Made the mobile nodes in the 'Boston streets' configuration more
   easily noticeable by increasing their sizes, and adding a color parameter.
   Movement trails have been raised off the ground a bit to avoid Z-fighting
   glitches.

 - osg-satellites: Refactored mobility logic and replaced the discontinued
   MapQuest public tile source with a single offline image to avoid dependency
   on external sources.

 - queueinglib: Fixed a race condition by requiring the PassiveQueue to allocate
   the Server before sending a job to it.

 - resultfiles: Result files were renamed to reflect the new default naming
   scheme (i.e. configname-itervars-#repetition).

Till

unread,
Jan 11, 2017, 6:45:49 AM1/11/17
to OMNeT++ Users
Dear all,

I just tried to install on OS X Sierra with QT 5.7.1 but that failed. Is the requirement QT 5.4 or "at least" QT 5.4?

Best regards
Till

Attila Török

unread,
Jan 11, 2017, 8:02:15 AM1/11/17
to OMNeT++ Users
Hi!

The requirement is "at least" Qt 5.4. Qtenv is tested with all minor versions between 5.4 and 5.8, at least on GNU/Linux. Generally the newer the better.
The macOS variant of the downloadable OMNeT++ 5.1pre2 tarball comes with a prebuilt Qt 5.6.1 included, so you don't have to have your own.
To aid us in solving this problem, could you share some more details about the failure of installation you are experiencing? At which stage does it occur? During compilation? At startup? What are the symptoms, error messages? Did you change any configuration variables (in the configure.user file)?

Attila

Till

unread,
Jan 11, 2017, 8:23:40 AM1/11/17
to OMNeT++ Users
Dear Attila,


 - QT was installed with "brew install qt5"

The error was:

In file included from /usr/local/Cellar/qt5/5.7.1_1/include/QtGui/QOpenGLContext:1:

/usr/local/Cellar/qt5/5.7.1_1/include/QtGui/qopenglcontext.h:240:5: error: 

      unknown type name 'QOpenGLVersionFunctionsStorage'; did you mean

      'QOpenGLVersionFunctionsBackend'?

    QOpenGLVersionFunctionsStorage* functionsBackendStorage() const;

    ^

/Applications/omnetpp/omnetpp-5.1pre2/tools/macosx/include/QtGui/qopenglversionfunctions.h:109:7: note: 

      'QOpenGLVersionFunctionsBackend' declared here

class QOpenGLVersionFunctionsBackend


For the moment I uninstalled qt and use the binary that comes with the preview.

Attila Török

unread,
Jan 11, 2017, 8:42:40 AM1/11/17
to OMNeT++ Users
I'm glad it works for you that way.
It is caused by the compiler including some headers from one Qt installation, some from the other, and they are not compatible on this level.
However, uninstalling any other Qt beside the provided one obviously shouldn't be necessary, we just haven't tested this situation yet.

Thank you for reporting this problem, we'll be looking into it.
Don't hesitate to tell us about any further issues you encounter - possibly in a separate mail thread, or a bug report in our tracker!

Attila

Till

unread,
Jan 11, 2017, 9:00:07 AM1/11/17
to OMNeT++ Users

Am Mittwoch, 11. Januar 2017 14:42:40 UTC+1 schrieb Attila Török:

Don't hesitate to tell us about any further issues you encounter - possibly in a separate mail thread, or a bug report in our tracker!


Sure! Could you add a new product version for 5.1 in the Bug Tracker? 

Thanks!
Till

Attila Török

unread,
Jan 11, 2017, 9:26:12 AM1/11/17
to OMNeT++ Users
Done!

--
You received this message because you are subscribed to the Google Groups "OMNeT++ Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to omnetpp+unsubscribe@googlegroups.com.
Visit this group at https://groups.google.com/group/omnetpp.
For more options, visit https://groups.google.com/d/optout.

Till

unread,
Jan 11, 2017, 10:33:20 AM1/11/17
to OMNeT++ Users
Thank's! Unfortunately I have a lot of issues. (see Tracker)

Most severe is probably that the ini-editor is broken and now prevents me from opening my workspace: https://dev.omnetpp.org/bugs/view.php?id=981
If you could look in my bugs: 0000979 to 0000982 and give me some feedback that would help me a lot in continuing to make our simulation models ready for 5.1

best regards
Till


Am Mittwoch, 11. Januar 2017 15:26:12 UTC+1 schrieb Attila Török:
Done!

2017-01-11 15:00 GMT+01:00 Till <steinba...@gmx.de>:

Am Mittwoch, 11. Januar 2017 14:42:40 UTC+1 schrieb Attila Török:

Don't hesitate to tell us about any further issues you encounter - possibly in a separate mail thread, or a bug report in our tracker!


Sure! Could you add a new product version for 5.1 in the Bug Tracker? 

Thanks!
Till

--
You received this message because you are subscribed to the Google Groups "OMNeT++ Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to omnetpp+u...@googlegroups.com.

Till

unread,
Jan 18, 2017, 3:15:19 PM1/18/17
to OMNeT++ Users
Are there any news/updates to the more severe problems with the preview under macOS? Currently the IDE is only good for C++-Development. NED and ini editors are not working on my mac.

It is a bit strange that I'm the only one reporting this. Am I the only mac user who tried the preview so far?

Best Till

Rudolf Hornig

unread,
Jan 19, 2017, 4:41:06 AM1/19/17
to OMNeT++ Users
Actually I have tried it on our mac Mini (10.12) and it seems to work fine so that's probably specific to your install (or the actual workspace itself). I have started to create builds again for the next preview so I will visit those bug reports soon. For the moment I cannot reproduce them :(

Till

unread,
Jan 19, 2017, 11:29:12 AM1/19/17
to OMNeT++ Users
Hmmm,

that makes it much more difficult to find the problem. My guess is that it has something todo with paths after the folder structure changed and the plugin directory moved into the application container.
Message has been deleted

Sultan Mahmud Tusher

unread,
Feb 7, 2017, 7:19:52 PM2/7/17
to OMNeT++ Users
 I have couple of questions that I will be very grateful to you if you can help me with that. I want to plot a m/m/1/k performance measure graph. My graph would be rho against the E[W]. When I put the parameters and run the simulaition and analyse the results by the vector or scaler file, I am able to plot against the simulation time. But I realized in order to do xy plot, I have to do the scatter chart. But the problem I am facing is that in statistics inside the module, i see lot of statistics like [busy]. One example would be @statistic[queueLength](title="queue length";record=vector,timeavg,max;interpolationmode=sample-hold); So how do I make a relationship with the rho. I don't even know whether I have rho or not. Sometimes in one statistics says "mean". Does it mean it is the expected of that statistics? I would really appreciate your help. 
Reply all
Reply to author
Forward
0 new messages