Dear OMNeT++ users,
A new preview version of OMNeT++ 5.2 (pre3) is available for testing and download:
Core:
- Figure zIndex is now additive: the effective zIndex is now the sum of the
zIndex values of the figure and all its ancestors up to the root figure.
This provides more flexibility, as the stacking order of figures
is no longer constrained by their position in the figure tree.
- Added cPanelFigure, a new figure type that turns off zoom for its children.
cPanelFigure is handy when one needs to do relative positioning unaffected
by zoom, for example when adding decorations next to submodule icons.
- Added support for weighted statistics to histogram classes and to cStddev
(the cWeightedStddev class is no longer needed.) The primary motivation
for weighted statistics is variables where time average makes much more
sense than arithmetic mean, e.g. queue length.
- The OSG viewer was factored out from Qtenv into a separate support library
which is only loaded at runtime when actually needed. Core OMNeT++ no longer
has any dependence on OSG or OSGEarth. This change improves simulation
startup times and also debugging experience, as it eliminates the loading
of the huge number of shared libraries that OSG and OSGEarth depends on.
(The library loading overhead was also present in simulations that did not
even contain 3D visualization.) The only API change is that one must use
cOsgCanvas::EarthViewpoint instead of osgEarth::Viewpoint when using
the cOsgCanvas::setEarthViewpoint().
Build:
- opp_makemake: IMPORTANT CHANGES regarding debug/release-mode builds:
- Models are built in RELEASE mode by default. Until now, DEBUG was the
default, which resulted in casual users always running their simulations
in DEBUG mode, i.e. much slower than possible.
- RELEASE and DEBUG mode binaries can now co-exist, so users do not have
to recompile when they switch modes (e.g. when they want to debug a
simulation.) This is a significant gain especially for large models
like INET. The goal was achieved by adding the "_dbg" suffix to the
names of DEBUG-mode binaries so they don't collide with RELEASE-mode
ones.
- Binaries are now hard-linked from the build directory (out/) to the
target directory instead of being soft-linked. This leaves the copy
in the build directory intact when the one in the target directory
is deleted.
- Refinements on the build process of OMNeT++ itself: generated files are
created only once, even when using parallel build; do not copy build
artifacts if not actually changed; Makefiles in the samples/ folder
are re-created only if they are missing; etc.
- The samples/ folder is now optional: deleting it in an OMNeT++ installation
will no longer break the build.
IDE/Base:
- The Eclipse platform was updated to the latest Oxygen milestone build (4.6.2)
IDE/Build:
- Makefile generator: follow changes in the command-line opp_makemake tool
- Models are built in RELEASE mode by default. Until now, DEBUG was the
default, which resulted in casual users always running their simulations
in DEBUG mode, i.e. much slower than possible.
- RELEASE and DEBUG mode binaries can now co-exist, so users do not have
to recompile when they switch modes (e.g. when they want to debug a
simulation -- remember, they are built in RELEASE mode by default.)
This is a significant gain especially for large models like INET.
The goal was achieved by adding the "_dbg" suffix to the names of
DEBUG-mode binaries.
- Binaries are now hard-linked from the build directory (out/) to the
target directory instead of being soft-linked. This leaves the copy
in the build directory intact when the one in the target directory
is deleted.
IDE/Launching:
- The Run, Profile and Debug launch types now automatically trigger build.
- The launcher now switches the project (and optionally all projects it
depends on) to the appropriate build configuration if necessary: Run
and Profile will perform RELEASE build, Debug will perform DEBUG build.
- For Debug launch, the "_dbg" suffix is added implicitly to the target
name (both exe and shared lib). (The simulations will also load the
"_dbg" versions of libraries when compiled to DEBUG.)
- A new "Build before launch" section was added to the Launch config
dialog, which allows you to control whether to switch build configuration
automatically or to ask before the build. The scope of build can also
configured; options are: "None", "This project", or "Project + dependencies".
- If the launch is configured as "Ask before build" (default), a
confirmation dialog is shown on launch (and before the build), asking
whether to switch the active build configuration to the appropriate one.
The dialog allows you to set the decision as permanent and reconfigures
the launch config accordingly.
- Better progress reporting and cancellation for batch runs. Internally,
this is the result of switching to the new JobGroups API of Eclipse.
IDE/Analysis Tool:
- Added support for "statistic" items and for weighted statistics.
Background: Specifying "record=stats" in a @statistic NED property, or
or calling the record() method on a cStddDev object saves a "statistic"
object in the output scalar file. A "statistic" object includes fields
like the count of observations, mean, standard deviation, minimum
and maximum value. "statistic" objects so far have been blown up to
several unrelated scalars upon loading into the Analysis Tool. Now they
are loaded as objects, and appear in the Histograms and All tabs of the
Browse Data page. Statistics fields continue to be available as scalars
as well, so they can be used as chart input.
Also, weighted statistics (like those saved from cWeightedStddev) were
not properly displayed in the Analysis Tool. This has been rectified
as well.
Details:
- The Histograms tab on the Browse Data page now includes "statistics"-
type results as well.
- The Histograms tab now has new table columns: "Kind", "SumWeights",
"#Bins", "Hist.Range", all displayed by default. "Kind" indicates
whether a result item is a "statistic" or a "histogram", and whether
it is weighted or unweighted.
- Individual fields of "statistic" and "histogram" result items are
no longer displayed on the Scalars page.
- Properties for "statistic" and "histogram" result items now includes
"Kind" ("weighted"/"unweighted") and "Sum of weights".
- On the All tab of Browse Data page, result item fields are now in
natural order (i.e. no longer alphabetically sorted).
- Export dialog refined: Added "Open exported file afterwards" checkbox,
better filename generation and validation, etc.
- Changed the syntax for accessing iteration variables in filter
expressions. Before, they could be accessed like run attributes,
with the "attr:" prefix. Now, one needs to use the "itervar:" prefix,
which is more explicit.
- Properties view: properly display attributes, iteration variables and
parameter assignments for runs
- Better display of histogram bins in the Properties view.
The display format of bins was changed from "a..b" to "[a,b)", in order
to clearly indicate that "a" is inclusive and "b" is exclusive.
- The "Variance" line has been removed from Properties view because
it's not too useful and can be easily computed as the square of the
standard deviation.
- Missing or unavailable data in table cells is now displayed with a
hyphen instead of "n.a."
- New icon for scalar items on the All tab of Browse Data page
Qtenv:
- OSG Viewer is now a separate library, loaded at runtime.
- Improved the appearance and usability of the Animation Parameters dialog.
- Show (debug) or (release) in the window title based on NDEBUG.
- Completely overhauled figure rendering. This should improve performance
and fix many issues.
- The size of arrowheads on connections and line figures is now more
reasonable with many combinations of zoom level, line width, and the
"zoomLineWidth" property.
- Implemented cPanelFigure support and cumulative zIndex.
- Figures without a tooltip inherit it from their nearest ancestor
that has one. Empty strings break this inheritance, but are not shown.
The own tooltip of the figure now overrides that of its associated object.
- The special value "kind" is now also accepted as a color in the "i" tag
of display strings of messages as well.
- A large number of miscellaneous improvements, fixes and cleanups;
see src/qtenv/ChangeLog.
Envir:
- EnvirBase: changed the lifecycle of several plugin objects to per-run,
i.e. those objects are now deleted and re-created between runs. Affected
plugins: event log recorder, output vector file recorder, output scalar
file recorder, snapshot recorder, future event set (FES).
The corresponding configuration options have also become per-run options:
eventlogmanager-class=, outputvectormanager-class=, outputscalarmanager-class=,
snapshotmanager-class=, futureeventset-class=.
Side effect: in output vector files, vector IDs now start again from 0
at the start of each run when running multiple runs. Before, they continued
from where the previous run left off.
Scavetool:
- Added --list-itervars option
- Removed obsolete export commands 'vector' and 'scalar'
- Do not export itervars as scalars by default; added -y,
--add-itervars-as-scalars option to turn exporting itervars back on
- Sort runs by runId, for consistent query output
- JSON and CSV exporter changes (applies to IDE Analysis Tool as well):
- Python export changed to JSON export with optional Python flavour
- CSV export renamed to "CSV for spreadsheet" and significantly improved
(also saves iteration variables for better run identification, etc.)
- another CSV export added ("CSV Records"), provenly suitable as input
for the read_csv() of Python Pandas
Result recording and processing:
- Switch to new scalar/vector file recorders: The default values for
the outputscalarmanager-class= and outputvectormanager-class= config
options are now the new classes OmnetppOutputScalarManager and
OmnetppOutputVectorManager. These classes rely on the new result
file writer classes in common/.
The old classes cIndexedFileOutVectorManager and cFileOutScalarManager
still exist. They will be removed in a later version of OMNeT++.
- Save iteration variables separately from run attributes ("itervar"
lines). NOTE: This changes result file format!
- omnetpp recorders: ensure order of "param" lines in the file mirror the
order in the ini file
- Output scalar file recorders: sum and sqrSum are no longer saved for
weighted statistics. This is to follow recent cStddev/cWeightedStddev
change.
- Output scalar files: do not save numeric iteration variables (of
parameter studies) as scalars. Instead we'll add them (as scalars)
at load time, if needed.
- Proper loading and exporting of weighted statistics
- Added StatisticsResult (HistogramResult sans histogram). Until now,
statistic results in scalar files were loaded as several unrelated
scalars, and were not available as a single object.
- OmnetppResultFileLoader: fix: 'run' line is mandatory since version 4.0
- SqliteResultFileLoader: updated: histBin table was renamed to histogramBin
- SqliteResultFileLoader: loading of vector attrs and run params was missing
- SQLite recorder: slight changes in file format