Skip to content

Releases: omnetpp/omnetpp

OMNeT++ 6.2.0

12 Jul 19:22
Compare
Choose a tag to compare

Highlights of this release are the use of the LLDB debugger inside the IDE, as well as numerous Qtenv improvements: display of documentation brief in module/submodule tooltips, log filtering, and the display of an identicon.

Simulation kernel:

  • Added the WATCH_EXPR() and WATCH_LAMBDA() macros, to allow watching the values of expressions during simulation runtime.
  • cTopology: Added an overload of extractFromNetwork() that takes an std::function, so that it can be used with lambda functions for more flexible network topology extraction.
  • cComponentType: Added getDocumentation() method to access component documentation programmatically, mainly for Qtenv.
  • cAbstractTextFigure: Added getTextExtent() and getFontAscent() methods to improve text measurement capabilities.
  • cEnum: Added resolveName() and getNameForValue() convenience functions to simplify working with enumeration types.
  • Added str() method to RNG classes (cLCG32, cMersenneTwister) to make seed/state information inspectable at runtime.
  • Fixed preDelete() being called multiple times during deletion of a network or compound module, which could lead to unexpected behavior.
  • Match expressions, e.g. cMatchExpression, now accept string literals delimited with single quotes, too. For reference, NED and ini also accept string literals with both single and double quotes.

MSG files, opp_msgtool:

  • Fixed issue #1351 regarding enum declarations not working. Example code that demonstrates the issue:

    enum Foo;  // declaration of an externally defined enum
    class A {
        Foo foo; //Error: unknown type 'Foo' for field 'foo' in 'A'
    }
    

    This fix allows corresponding workarounds to be removed from INET and other models.

Result Recording:

  • Added record-vector-results, record-scalar-results options that enable/disable writing a scalar/vector file. Previously it was not possible to prevent the creation of .sca / .vec files, because even after disabling the recording of scalar/statistic/vector items using per-object options, empty files (just with the run header and vector declarations) were still created.

Cmdenv:

  • Added -S option that suppresses all stdout output. The existing -s option just made the output less verbose (it is also clarified now in the help).
  • Improved "run info" line printed when running in non-verbose mode (-s option): added run ID, and "#" in front of run number.
  • Added boolean options for finer-grained control of when to log and when not: cmdenv-log-initialization, cmdenv-log-simulation, cmdenv-log-finalization, cmdenv-log-cleanup. Logging during cleanup (network deletion) is now disabled by default.
  • Added cmdenv-progress-updates option, which disables printing periodic progress updates in express mode. Previously, a similar effect could only be achieved by setting the update interval to a very high value.
  • Cmdenv now refuses running an abstract configuration (one marked with abstract=true in the ini file).

Qtenv:

  • Qtenv is now using Qt 6.x. Please note that because of this, the dependencies have changed so you have to run the install.sh script when upgrading to OMNeT++ 6.2.0.

  • Module and channel tooltips now include a brief documentation of that component, with the goal of facilitating understanding of the model's operation for new users. The first paragraph of the component's NED comment is shown. This feature can be turned off in the config dialog ("Show component documentation in tooltips").

  • Added "View NED Type's Source" item to component's context menu. The relevant portion of the NED file is shown in a (read-only) editor window. An important point is that the displayed source includes the component's full NED comment (i.e. its documentation), not just the first paragraph shown in the tooltip.

  • Added simulation identicon and "Show Simulation Info" functionality. The identicon is a programmatically generated geometric pattern that appears at the right side of the toolbar, and its purpose is to help the user tell apart Qtenv windows when several similar simulations open at the same time.

    The identicon is drawn using a "simulation hash" as seed, which includes the OMNeT++ version, the config name and run number, the inifile name, the working directory, the configuration contents, the RNGs, module names, their NED and C++ type names, their parameter names and values, etc.

    There is also a qtenv-identicon-seed config option, which is useful to force identical icons to be used for simulations that would otherwise have different hashes.

    The "Show Simulation Info" functionality displays a report of all values that affect the simulation hash, and more.

  • Added line filtering functionality to the Log inspector. One can specify a string or a regex, and the log window will only display lines that contain the filter string. This "live grep"-like feature vastly improves the usefulness of the log when the user is looking at a certain aspect of the model. An icon on the floating toolbar indicates when a filter is active.

  • Many smaller improvements and bug fixes.

Command-line Tools:

  • opp_featuretool: Improved the detection and handling of inconsistent feature enablements. This includes better validation of the .oppfeatures file, and reporting inconsistent enablements as hard errors (instead of correcting them automatically, which was misleading).

  • opp_charttool: Surrounded chart names with quotes in verbose printouts like "Exporting chart ...", for the reason that chart names may contain spaces and may be quite long, resulting in confusing output. The default resolution of raster output formats was increased from 96 DPI to 300 DPI.

  • opp_python_repl: This is a new tool which starts IPython and imports the omnetpp.repl package. This script is also used by the IDE Terminal View if the INET script is not available.

  • opp_test: Added the %equals, %not-equals, %equals-regex, and %not-equals-regex entry types to complement the %contains family of entry types, and also %no-default-inifile that disables adding _defaults.ini to the simulation command line. Also added the %stacksize directive (default stack size is still 1MB) to allow configuring the stack size for activity-based tests.

  • opp_test: The bulk of the code was factored out into a library under the python folder to allow using its functionality from Python code.

Simulation Launcher/debugging:

  • Switched to using LLDB, the debugger of the LLVM project, for debugging sessions. This change is expected to bring a major improvement in debugging experience, as GDB was increasingly falling behind in terms of performance and platform support. To support LLDB, we integrated the LSP4E project's DAP (Debug Adapter Protocol) component, a more modern and extensible debugging infrastructure. The LSP4E DAP debugger also replaces LLDBMI2, our earlier attempt to replace GDB with LLDB. The LLDB debugger is launched via the opp_dbgdap helper script.
  • The Simulation Launcher now converts library paths to absolute path when specifying the -l option to the simulation. Using absolute path prevents issues with LLDB not being able to set breakpoints in dynamically loaded shared libs. This issue is present in LLDB 19 on Linux. See: llvm/llvm-project#124761
  • In the Simulation Launcher, changed the variable substitution in the simulation launch command line arguments to allow missing variables. References to variables unknown to the IDE are now left unchanged. This allows arguments like --output-scalar-file=${resultdir}/foo.sca to be specified to the simulation program (${resultdir} is meant to be processed by the simulation program, not the IDE).
  • Enhanced OMNeT++-specific LLDB formatters (omnetpp.lldb.formatters.omnetpp)
  • Switch to the Debug perspective when the IDE attaches to a simulation process in response to the simulation process invoking the IDE with an omnetpp:// launcher URL.

Python REPL:

  • Added a Python REPL to the Terminal view. To open it, click the "Open Terminal" button in the view and select "OMNeT++ Python REPL". The REPL opens with the omnetpp libraries imported, and you can call read_result_files(), run_simulations(), etc. You can use opp_python_repl from the command line to start the Python REPL.

NED editor:

  • Ctrl+clicking NED type names within comments and string constants now work.
  • The editor now removes trailing spaces from NED files on Save.
  • Fixed wrong module class name resolution in NED editor (Ctrl+Tab did not always go to the C++ class that implements that type), and several other issues.
  • Significantly improved the usability of the "NED Inheritance" view:
    • only show full subtype hierarchy of selected type, not of its root type
    • show inheritance chain of selected element
    • reveal and select the input type (and try revealing the root too)
    • child nodes were not sorted, making it hard to locate items
    • it only showed content when the cursor was positioned inside the component definition in the NED file

Analysis Tool:

  • Added unit conversion support for various chart types, including vector, histogram, box-whiskers and bar charts. It is now possible to specify a measurement unit (e.g. kB, Mbps, us) for axes. (Until now, the base unit was used unless the user manually customized the chart.) If no unit is specified in the dialog, the most convenient unit is chosen automatically, based on the range of the actual values displayed.
  • Added support for measuring the horizontal and vertical distances between two points on a plot. The delta measurement feature is activated using keyboard shortcuts when the mouse cursor is over the plot area. The "A" key selects the start po...
Read more

OMNeT++ 6.2.0 Preview 1

06 Jun 08:55
Compare
Choose a tag to compare
Pre-release

Highlights of this release are the use of the LLDB debugger inside the IDE, as well as numerous Qtenv improvements: display of documentation brief in module/submodule tooltips, log filtering, and the display of an identicon.

Simulation kernel:

  • Added the WATCH_EXPR() and WATCH_LAMBDA() macros, to allow watching the values of expressions during simulation runtime.

  • cTopology: Added an overload of extractFromNetwork() that takes an std::function, so that it can be used with lambda functions for more flexible network topology extraction.

  • cComponentType: Added getDocumentation() method to access component documentation programmatically, mainly for Qtenv.

  • cAbstractTextFigure: Added getTextExtent() and getFontAscent() methods to improve text measurement capabilities.

  • cEnum: Added resolveName() and getNameForValue() convenience functions to simplify working with enumeration types.

  • Added str() method to RNG classes (cLCG32, cMersenneTwister) to make seed/state information inspectable at runtime.

  • Fixed preDelete() being called multiple times during deletion of a network or compound module, which could lead to unexpected behavior.

  • Match expressions, e.g. cMatchExpression, now accept string literals delimited with single quotes, too. For reference, NED and ini also accept string literals with both single and double quotes.

MSG files, opp_msgtool:

  • Fixed issue #1351 regarding enum declarations not working. Example code that demonstrates the issue:

    enum Foo;  // declaration of an externally defined enum
    class A {
        Foo foo; //Error: unknown type 'Foo' for field 'foo' in 'A'
    }
    

    This fix allows corresponding workarounds to be removed from INET and other models.

Result Recording:

  • Added record-vector-results, record-scalar-results options that enable/disable writing a scalar/vector file. Previously it was not possible to prevent the creation of .sca / .vec files, because even after disabling the recording of scalar/statistic/vector items using per-object options, empty files (just with the run header and vector declarations) were still created.

Cmdenv:

  • Added -S option that suppresses all stdout output. The existing -s option just made the output less verbose (it is also clarified now in the help).

  • Improved "run info" line printed when running in non-verbose mode (-s option): added run ID, and "#" in front of run number.

  • Added boolean options for finer-grained control of when to log and when not: cmdenv-log-initialization, cmdenv-log-simulation, cmdenv-log-finalization, cmdenv-log-cleanup. Logging during cleanup (network deletion) is now disabled by default.

  • Added cmdenv-progress-updates option, which disables printing periodic progress updates in express mode. Previously, a similar effect could only be achieved by setting the update interval to a very high value.

Qtenv:

  • Module and channel tooltips now include a brief documentation of that component, with the goal of facilitating understanding of the model's operation for new users. The first paragraph of the component's NED comment is shown. This feature can be turned off in the config dialog ("Show component documentation in tooltips").

  • Added "View NED Type's Source" item to component's context menu. The relevant portion of the NED file is shown in a (read-only) editor window. An important point is that the displayed source includes the component's full NED comment (i.e. its documentation), not just the first paragraph shown in the tooltip.

  • Added simulation identicon and "Show Simulation Info" functionality. The identicon is a programmatically generated geometric pattern that appears at the right side of the toolbar, and its purpose is to help the user tell apart Qtenv windows when several similar simulations open at the same time.

    The identicon is drawn using a "simulation hash" as seed, which includes the OMNeT++ version, the config name and run number, the inifile name, the working directory, the configuration contents, the RNGs, module names, their NED and C++ type names, their parameter names and values, etc.

    There is also a qtenv-identicon-seed config option, which is useful to force identical icons to be used for simulations that would otherwise have different hashes.

    The "Show Simulation Info" functionality displays a report of all values that affect the simulation hash, and more.

  • Added line filtering functionality to the Log inspector. One can specify a string or a regex, and the log window will only display lines that contain the filter string. This "live grep"-like feature vastly improves the usefulness of the log when the user is looking at a certain aspect of the model. An icon on the floating toolbar indicates when a filter is active.

  • Many smaller improvements and bug fixes.

Command-line Tools:

  • opp_featuretool: Improved the detection and handling of inconsistent feature enablements. This includes better validation of the .oppfeatures file, and reporting inconsistent enablements as hard errors (instead of correcting them automatically, which was misleading).

  • opp_charttool: Surrounded chart names with quotes in verbose printouts like "Exporting chart ...", for the reason that chart names may contain spaces and may be quite long, resulting in confusing output. The default resolution of raster output formats was increased from 96 DPI to 300 DPI.

  • opp_python_repl: This is a new tool which starts IPython and imports the omnetpp.repl package. This script is also used by the IDE Terminal View if the INET script is not available.

  • opp_test: Added the %equals, %not-equals, %equals-regex, and %not-equals-regex entry types to complement the %contains family of entry types, and also %no-default-inifile that disables adding _defaults.ini to the simulation command line. Also, the bulk of the opp_test code was factored out into a library under the python folder to allow using its functionality from Python code.

Simulation Launcher/debugging:

  • Switched to using LLDB, the debugger of the LLVM project, for debugging sessions. This change is expected to bring a major improvement in debugging experience, as GDB was increasingly falling behind in terms of performance and platform support. To support LLDB, we integrated the LSP4E project's DAP (Debug Adapter Protocol) component, a more modern and extensible debugging infrastructure. The LSP4E DAP debugger also replaces LLDBMI2, our earlier attempt to replace GDB with LLDB. The LLDB debugger is launched via the opp_dbgdap helper script.

  • The Simulation Launcher now converts library paths to absolute path when specifying the -l option to the simulation. Using absolute path prevents issues with LLDB not being able to set breakpoints in dynamically loaded shared libs. This issue is present in LLDB 19 on Linux. See: llvm/llvm-project#124761

  • In the Simulation Launcher, changed the variable substitution in the simulation launch command line arguments to allow missing variables. References to variables unknown to the IDE are now left unchanged. This allows arguments like --output-scalar-file=${resultdir}/foo.sca to be specified to the simulation program (${resultdir} is meant to be processed by the simulation program, not the IDE).

  • Enhanced OMNeT++-specific LLDB formatters (omnetpp.lldb.formatters.omnetpp)

  • Switch to the Debug perspective when the IDE attaches to a simulation process in response to the simulation process invoking the IDE with an omnetpp:// launcher URL.

Python REPL:

  • Added a Python REPL to the Terminal view. To open it, click the "Open Terminal" button in the view and select "OMNeT++ Python REPL". The REPL opens with the omnetpp libraries imported, and you can call read_result_files(), run_simulations(), etc.

NED editor:

  • Ctrl+clicking NED type names within comments and string constants now work.

  • The editor now removes trailing spaces from NED files on Save.

  • Fixed wrong module class name resolution in NED editor (Ctrl+Tab did not always go to the C++ class that implements that type), and several other issues.

  • Significantly improved the usability of the "NED Inheritance" view:

    • only show full subtype hierarchy of selected type, not of its root type
    • show inheritance chain of selected element
    • reveal and select the input type (and try revealing the root too)
    • child nodes were not sorted, making it hard to locate items
    • it only showed content when the cursor was positioned inside the component definition in the NED file

Analysis Tool:

  • Added support for measuring the horizontal and vertical distances between two points on a plot. The delta measurement feature is activated using keyboard shortcuts when the mouse cursor is over the plot area. The "A" key selects the start point, the "D" selects the end point and shows the distances; the "S" key shows the horizontal and vertical deltas for a line segment; "X" clears the markers.

  • Added "Zoom to Fit Data" action to native line plots, without also including the origin. "Zoom to Fit" was renamed to "Restore Original View".

  • Recognizing that plot navigation gestures (e.g. keyboard and mouse bindings for zooming in and out) are not so easy to remember, we added a navigation help button to plot toolbars. This opens the relevant section of the User Guide in the Help view.

  • Significantly improved "Export Charts" dialog:

    • Clarify that charts must be designated for export by ticking their checkboxes, not by making a list selection
    • Improved hint about emulating native widgets with Matplotlib (e.g. replaced "" mark with "emulated" in the tree)
      ...
Read more

OMNeT++ 6.1.0

08 Oct 17:29
Compare
Choose a tag to compare

This update marks a significant refinement of OMNeT++ since version 6.0, impacting virtually every aspect of the simulation framework, including the IDE and simulation library. Among the various enhancements, the Analysis Tool stands out with major improvements to both its user interface and its underlying chart templates and Python library. For example, the new, highly customizable number and quantity formatting options facilitate the interpretation of raw simulation results displayed in the user interface; chart legends became much more customizable; and the enhanced plotting of enum-valued vectors allows much more appropriate visualization.

Additional notable updates include the ability to denote ini file sections as "abstract" (meaning they merely serve as base for further configurations); the validation of parameter values according to the @enum property; a new bookmarking feature and other enhancements in the Qtenv log window; a more streamlined operation of Project Features in the IDE; the possibility to have simulation programs dump the stack trace in the case of crashes; a new Python library for reading and querying NED files; and much more. Here is a detailed summary of these key enhancements and other important changes in this release.

Important

Please read the installation instructions even if you are familiar with OMNeT++, as there are new dependencies and the recommended way of installing Python packages has also changed. There is a new install.sh script in the root of the source distribution that will help you install OMNeT++ on your machine.

OMNeT++ 6.0.3

23 Feb 22:01
Compare
Choose a tag to compare

This is a maintenance release, with several performance improvements in the simulation kernel and further adjustments.

Documentation:

  • Updated install instructions for macOS to support installing on aarch64 based computers using Homebrew.

IDE:

  • Updated to Eclipse 4.30, CDT 11.4, Pydev 11.0
  • IDE is now fully supported on macOS/aarch64
  • Model installation dialogs: If the IDE was installed using opp_env, tell the user to install the model with opp_env, too.

Some reported issues were also fixed.

OMNeT++ 6.0.2

10 Oct 10:49
Compare
Choose a tag to compare

This is a maintenance release of omnetpp-6.0. This release contains updated JRE and Eclipse dependencies for the IDE to fix several crashes with recent Gtk library versions on Linux. It also contains numerous fixes and enhancements to the simulation kernel, IDE, Qtenv and the python analysis packages. (Note that the aarch64 versions are experimental. You have to provide all the necessary dependencies by hand.)

Read the What's New page for more details.

OMNeT++ 5.7.1

18 Sep 17:14
Compare
Choose a tag to compare

This is a modernized maintenance release of omnetpp-5.7. 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++.

This release contains updated JRE and Eclipse dependencies for the IDE to fix several crashes with recent Gtk library versions on Linux.

Read the What's New page for more details.

OMNeT++ 5.6.3

10 Aug 09:56
Compare
Choose a tag to compare

This is a modernized maintenance release of omnetpp-5.6. 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++.

This release does not provide a download for Windows.

Read the What's New page for more details.

OMNeT++ 5.5.2

10 Aug 06:54
Compare
Choose a tag to compare

This is a modernized maintenance release of omnetpp-5.5.2. 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++.

This release does not provide a download for Windows.

Read the What's New page for more details.

OMNeT++ 5.4.2

10 Aug 06:37
Compare
Choose a tag to compare

This is a modernized maintenance release of omnetpp-5.4. 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++.

This release does not provide a download for Windows.

Read the What's New page for more details.

OMNeT++ 5.3.1

09 Aug 20:16
Compare
Choose a tag to compare

This is a modernized maintenance release of omnetpp-5.3. 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++.

This release does not provide a download for Windows.

Read the What's New page for more details.