2018-06-25 ------ omnetpp-5.4.1 released ------ 2018-06-14 Rudolf Hornig * Envirbase: fix unbalanced #endif 2018-06-11 ------ omnetpp-5.4 released ------ 2018-06-08 Attila Torok * EnvirBase: implemented ensureDebugger() which replaces attachDebugger(). The method of attaching a debugger has been enhanced. I.e. it can detect when the process is already being debugged, and does not launch another debugger in that case. Also, when launching a debugger is needed, it checks beforehand that external debuggers are permitted to debug this process. * attach-on-startup now detects the debugger before launching one * debug command (debugger-attach-command config option) can now be overridden by the OMNETPP_DEBUGGER_COMMAND env. var. * Use lldb as default debugger on macOS - gdb is not codesigned. * Adjust description of debugging-related config options. 2018-04-11 ------ omnetpp-5.3 released ------ 2018-03-01 Andras Varga * Follow histogram API changes. 2018-01-26 Andras Varga * Follow histogram API changes. 2017-01-16 Andras Varga * Replace gettimeofday() occurrences with opp_get_monotonic_clock_usecs(), and struct timeval with plain int64_t. 2017-11-26 Andras Varga * Follow NED->Ned and MSG->Msg naming change in class/function names 2017-12-08 ------ omnetpp-5.2.1 released ------ 2017-09-18 ------ omnetpp-5.2 released ------ 2017-08-14 Andras Varga * loadExtensionLibrary(): add "_dbg" suffix when in debug mode (Debug executables prefer loading debug libraries.) 2017-04-06 Andras Varga * Modernizing: use C++11's range-based for loops where applicable, using clang-tidy's modernize-loop-convert. * Modernizing: replace INT64_PRINTF_FORMAT and LL with C++11's PRId64. Note: PRId64 includes the "d" that was not part of INT64_PRINTF_FORMAT alias LL. 2017-07-12 Andras Varga * Output scalar file recorders: sum and sqrSum are no longer saved for weighted statistics. This is to follow recent cStddev/cWeightedStddev change. 2017-07-13 Andras Varga * 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. 2017-06-21 Andras Varga * Cleanup: remove the leading "c" from the names of remaining classes, namely cXMLDocCache, cFileSnapshotManager, cAkOutputVectorManager 2017-06-22 Andras Varga * 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++. 2017-06-22 Andras Varga * Fix: force SQLite result file recorder classes to be included into simulation executables by the linker. 2017-04-04 Andras Varga * Old result file recorders: save iteration variables separately from run attrs, into 'itervar' lines. 2017-03-30 Andras Varga * Refactoring: RunData class converted a collection of utility functions (ResultFileUtils). Results in less state and more flexibility. 2017-07-12 Andras Varga * 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. 2017-03-24 Andras Varga * EnvirBase: refactoring: replaced CREATE_BY_CLASSNAME() macro by createByClassName() template function 2017-05-25 Rudolf Hornig * Updated makefiles for speeding up the build: - generated files are created only once, even when using parallel build - binaries are copied to their final destination using proper makefile targets 2017-06-08 TÖRÖK Attila * EnvirBase: follow cEnvir changes (addition of refOsgNode()/unrefOsgNode()) 2017-03-30 Andras Varga * Result file recorders: space changes in result files for consistency and to minimize space differences with new recorders. Affected classes: cFileOutputScalarManager, cFileOutputVectorManager, and cIndexedFileOutputVectorManager 2017-05-08 ------ omnetpp-5.1.1 released ------ 2017-03-31 ------ omnetpp-5.1 released ------ 2017-03-16 Andras Varga * Added new classes OmnetppOutputScalarManager, OmnetppOutputVectorManager which rely on result file writer classes in envir. These classes are not activated yet (the old classes cIndexedFileOutVectorManager and cFileOutScalarManager are still the default result recorder classes.) * Added the cFileOutputVectorManager_merged class, which is an intermediate state (cIndexedFileOutVectorManager and its base class merged.) 2017-03-16 Andras Varga * SQLite result file managers changed to use corresponding result file writer classes in the common library. 2017-03-17 Rudolf Hornig * build: removed obsolete targets in envir's Makefile 2017-03-16 Rudolf Hornig * Fix: Detection of release vs. debug mode collision is now safer on Windows 7 (GetProcAddress was not reliable). 2017-03-10 Andras Varga * SQLite result file recording: 'histattr' table renamed to 'statisticattr'. 2017-03-02 Andras Varga * SectionBasedConfig: fix bug in unrollConfig(). When doing "-q runs", seed-set=${10,20,30} caused assertion failure near sectionbasedconfig.cc:650. 2017-02-23 Andras Varga * Fix #995: Assert condition fails for ini files with CRLF line terminators in inifilereader. Cause: right-trimming of the line was lost when converting from FILE* I/O to iostream in late last year for 5.1pre2. 2017-03-16 Rudolf Hornig * Detecting whether the loaded model is using release or debug mode libraries is now safer as we are not just testing for the presence of a symbol that is available only in the release mode, but also checking for the actual value of that variable. This was necessary because on Windows 7 the GetProcAddress() function sometimes returned a non-null pointer for a symbol even if the symbol was not present in the process. This bug made the opp_run executable think that both release and debug versions of the omnetpp kernel was loaded. 2017-03-02 Andras Varga * envir: SectionBasedConfig: fix bug in unrollConfig() When doing "-q runs", seed-set=${10,20,30} causes assertion failure near sectionbasedconfig.cc:650 2017-02-23 Andras Varga * envir: fix #995: Assert condition fails for ini files with CRLF line terminators in inifilereader 2017-02-06 ------ omnetpp-5.1pre3 released ------ 2017-01-06 Andras Varga * Command line: '-h' to respect 'verbose' flag; added '-h configvars' 2017-01-02 Andras Varga * Command line: fix "-h figures" (take the list from the place Register_Figure() stores it) 2016-12-23 ------ omnetpp-5.1pre2 released ------ 2016-12-19 Andras Varga * cpu-time-limit option: do not truncate to whole seconds; measure really CPU usage and not elapsed time (use clock() instead of gettimeofday()) * Added real-time-limit option that measures elapsed time (gettimeofday) * Time limit checking frequency changed from every 256 events to every 1024 events. * Factored out time limit handling into a Stopwatch class. 2016-12-16 Andras Varga * scalar file recording: change "." to "_runattrs_" as the module name used for run attributes saved as scalars 2016-11-30 Rudolf Hornig * build: Makefile refactored. Added clang-c2 support and optimized the build process. * build: removed Makefile.vc, as Visual C++ builds are now handled by the standard Makefiles. 2016-12-06 Andras Varga * build: Added support for the PREFER_SQLITE_RESULT_FILES macro 2016-11-24 Andras Varga * OMNeT++ result file recorders: refactoring, small improvements 2016-11-25 Andras Varga * Revised SQLite-related code: configuration options, error handling, internal logic, refactoring, etc. To switch to SQLite-based result files, add the following to your omnetpp.ini: outputscalarmanager-class = "omnetpp::envir::SqliteOutputScalarManager" outputvectormanager-class = "omnetpp::envir::SqliteOutputVectorManager" The file names will not change (new files will still get the .sca and .vec extensions), only the file format. Use the SQLite console (sqlite3) or a GUI program like SQLiteBrowser to view the contents of the resulting SQLite result files. Further options that affect the recording of SQLite result files are: Scalars: output-scalar-file, output-scalar-file-append, output-scalar- db-commit-freq (NEW), **.scalar-recording, **.bin-recording. Vectors: output-vector-file, output-vector-file-append (NEW), output-vector-db-indexing (NEW), **.vector-recording, **.vector- record-eventnumbers, **.vector-recording-intervals, output-vectors- memory-limit, **.vector-buffer 2016-11-23 Andras Varga * Added initial support for SQLite-based result files [Zoltan Bojthe]. 2016-12-06 Andras Varga * EnvirBase: notifyLifecycleListeners() to let exceptions through 2016-11-21 Andras Varga * EnvirBase: sim-time-limit=0s and cpu-time-limit=0s to take effect 2016-10-28 Andras Varga * Error messages refined (start with capital letter, use apostrophes for quoting, etc.) 2016-10-27 Andras Varga * EnvirBase: added -m option ("merge stderr into stdout") This option is useful because when launching simulations from the IDE, stdout and stderr get interleaved in quite a random manner in the Console, and it's very confusing. 2016-10-25 Andras Varga * InifileReader: use C++ I/O instead of FILE* 2016-10-21 Andras Varga * SectionBasedConfig: internal refactoring 2016-10-19 Andras Varga * Follow cEnvir API change regarding askyesno(), putsmsg(), alert(), etc. * EnvirBase: unified way of printing error/warning messages (err()/warn()) 2016-10-19 Andras Varga * FileOutputScalarManager: fix: disabling scalar recording still created a small sca file that contained a header only 2016-10-05 Andras Varga * EnvirBase: use C++-style I/O for all logging 2016-10-03 Andras Varga * EnvirBase: Added the -s (silent, i.e. non-verbose) command-line option. 2016-09-27 Andras Varga * Fix: command-line "--constraint=" setting did not take effect (see test/envir/cmdline_options_runinfo_5.test) 2016-09-25 Andras Varga * Scenario class: Implemented the iteration-nesting-order config option. * Also: Scenario class refactored, using stlutil.h and C++11 features 2016-09-23 Andras Varga * Scenario class: removed unused VariableReference inner class 2016-09-26 Andras Varga * SectionBasedConfiguration: substituteVariables() change: do not substitute inside substituted content. (see paramstudy_iter_16.test) 2016-09-25 Andras Varga * Run filtering: The -r option now also accepts a run filter expression as an altenative to a list of run numbers and run number ranges. Use the new -q option to query the list of matching runs. Example: -c Aloha -r '$numHosts=>20 && $numHosts<=100' -q runconfig 2016-09-22 Andras Varga * SectionBasedConfiguration: added getKeyValuePairs(), refactored getParameterKeyValuePairs(). 2016-09-25 Andras Varga * Changed default result file naming scheme: Instead of using the run number as part of the file name which has little attached meaning, the values of the iteration variables plus the repetition counter. For example, "PureAlohaExperiment-4.sca" becomes "PureAlohaExperiment- numHosts=10,mean=2-#0.sca". Technically, the default has changed from "${resultdir}/${configname}-${runnumber}." to "${resultdir}/${configname}-${iterationvarsf}#${repetition}.". This affects the following configuration options: eventlog-file, output-scalar-file, output-vector-file, snapshot-file. To that end, the "iterationvarsf" inifile variable has been introduced, which is the same as "iterationvars" but characters that are invalid or inconvenient in file names are quoted/encoded in it. At the same time, "iterationvars2" was removed due to lack of usefulness. 2016-08-23 Andras Varga * EventlogFileManager: fix: filename was always "General-0.elog", literally 2016-08-23 Andras Varga * Follow sim.kernel change: renamed info() to str() 2016-07-25 Andras Varga * EnvirBase: follow sim. kernel change: messageSendHop() gained a "discard" parameter 2016-04-19 Andras Varga * EnvirBase: removed messageSent_OBSOLETE(), a relic from OMNeT++ 3.x 2016-07-11 Andras Varga * EnvirBase: Factored out a StatisticBuilder class, and moved it into the simulation kernel (src/sim) * Further improvements in @statistic configuration, see sim/ChangeLog. 2016-06-23 Rudolf Hornig * The makefile now uses compiler-generated dependency files. 2016-04-13 Andras Varga * Speedometer: added getNumEventsSinceIntervalStart(); camelize variable names 2016-04-13 ------ omnetpp-5.0 released ------ 2016-03-31 Levente Meszaros * Edited markup in config option descriptions. * Refined "opp_run -h latexconfig" operation to add line break opportunities (\allowbreak). This change allows better LaTeX word wrapping and hyphenation in the appendix. 2016-03-23 Zoltan Bojthe * Added markup to config option descriptions. * Added markup support to config option descriptions. Two notations are supported: `backticks` means monospace, "\n" means linebreak (and "\n\n" should mean paragraph separator). "opp_run -h latexconfig" was updated accordingly. 2016-03-21 Andras Varga * cEnvir::recordEventlog was not in use by simkernel, moved into EnvirBase 2016-03-10 ------ omnetpp-5.0rc released ------ 2016-03-10 Levente Meszaros, Andras Varga * fingerprint-class option renamed to fingerprintcalculator-class. 2016-02-26 Levente Meszaros * Changed EventlogFileManager to implement the new cIEventlogManager plugin interface. Added startRecording() and stopRecording() as required by the plugin interface. Removed all other unclear function calls from cEnvir to EventlogFileManager such as configure(), hasRecordingIntervals(), and clearRecordingIntervals(). 2016-02-26 Andras Varga * Fixed bug #950: inifile parameter assignments were not saved into .sca file. 2016-02-24 Andras Varga * Factored out "-h xxx" functionality into envirutils.cc. 2016-02-24 Andras Varga * Refined per-object config option kinds (added COMPONENT and CHANNEL). 2016-02-23 Andras Varga * Fixed double call to dumpResultRecorders(). 2016-02-22 Rudolf Hornig * Updated version number and copyright headers. 2016-02-22 Andras Varga * Introduced **.statistic-recording and **.bin-recording options. Background is the following. In 4.x, **.scalar-recording= was used as an enable/disable switch for three different things: 1. recording of individual scalars and statistic objects (cStatistic), including scalar recording modes of a @statistic (foo:mean, foo:stddev, etc.) 2. main switch for @statistic (when set to false, no result recorders were added at all) 3. recording of histogram bins (cells) of a statistic object (when key contained the ":histogram" suffix) Using 1) and 3) together sometimes resulted in weird keys like **.foo:histogram:histogram.scalar-recording, and poor usability: after adding a **.scalar-recording=false line, one needed 3 lines to re-enable a histogram: **.foo.scalar-recording=true, **.foo:histogram.scalar-recording=true, **.foo:histogram:histogram.scalar-recording=true). Now, 2) is now controlled with **.statistic-recording, and 3) with **.bin-recording. * Improved the descriptions of several per-object config options 2016-02-08 Levente Meszaros * Removed cEnvir::isDisabled() and added cEnvir::isLoggingEnabled(). Renamed cEnvir::disableTracing member variable to cEnvir::loggingEnabled. Cleaned up cEnvir::isLoggingEnabled() and cEnvir::isExpressMode() usages. 2016-02-05 Andras Varga * Renamed getRNGMappingFor(component) to preconfigure(component) 2016-01-29 Rudolf Hornig * Show WITH_OSG flag in opp_run -v if OSG was detected. 2016-01-26 Andras Varga * Switched from cEnvir::getClassNameForRenderer() to cEnvir::getRendererClassName(). 2015-12-07 ------ omnetpp-5.0b3 released ------ 2015-12-02 Andras Varga * EnvirBase: implemented cEnvir::resolveResourcePath() * Added the "image-path" config option that replaces tkenv-image-path. 2015-11-23 Levente Meszaros, Andras Varga * Fingerprint computation made more powerful/flexible; see sim/ChangeLog for more details. The envir library contributes to this feature by providing the fingerprinter-class configuration option, and support for the USE_OMNETPP4x_FINGERPRINT compatibility compile-time option. 2015-11-19 Andras Varga * Made RNG-to-module mapping more flexible: the *.rng- config option now allows expressions as well. Limitation: only parameters of modules that have been already created may be referenced (i.e. parent, and generally, ancestor modules, and preceding sibling modules). Parameters of the same module cannot be accessed (i.e. this. is not allowed), because they not yet exist when the RNG mapping is set up. Hint: index, parentIndex, and ancestorIndex(level) may also be used in the expression. This allows things like assigning a separate RNG to each element of a module vector. 2015-11-17 Andras Varga * Added the simtime-resolution config option, more user-friendly replacement for the now-deprecated simtime-scale. simtime-resolution accepts time units (s, ms, us, ns, ps, fs, as), power-of-ten multiples of such a unit (e.g. 100ms), and also base-10 scale exponents in the -18..0 range (mostly for backward compatiblity with simtime-scale). Examples: simtime-resolution = ms simtime-resolution = 10ns simtime-resolution = -6 (==microseconds) 2015-11-09 Andras Varga * Eventlog recording: when recording method calls where the caller or callee is a channel, record the channelId. Until now only IDs of modules have been recorded. 2015-10-16 Andras Varga * omnetpp namespace made permanent (cannot be turned off): - removed configure option and preprocessor symbol USE_NAMESPACE - removed related macros: NAMESPACE_BEGIN, NAMESPACE_END, USING_NAMESPACE, OPP, OPP_STR, OPP_PREFIX etc. 2015-07-20 ------ omnetpp-5.0b2 released ------ 2015-06-16 Andras Varga * Cleanup: prefer ++it to it++ (less copying) 2015-06-12 Andras Varga * Adapted to simkernel iterator API changes (added operator* and operator->, deprecated operator()) 2015-06-11 Andras Varga * if(dynamic_cast) refactoring: change code like if (dynamic_cast(object) != nullptr) { cComponent *component = (cComponent *)object; ... } To: if (cComponent *component = dynamic_cast(object)) { ... } 2015-06-16 Andras Varga * FES made replaceable: - introduced futureeventset-class= config option - adapted to simkernel API change 2015-06-08 Andras Varga * Cleanup: longer header guards 2015-06-08 Andras Varga * Cleanup: code formatting 2015-05-15 Andras Varga * Cleanup: use per-folder nested namespaces: omnetpp::envir, omnetpp::tkenv, omnetpp::layout, omnetpp::common, omnetpp::eventlog, etc. 2015-05-22 Andras Varga * Modernizing: added the 'override' keyword (C++11) to overridden methods; it becomes blank when using with an older compiler. 2015-05-21 Rudolf Hornig * Modernizing: replaced NULLs by 'nullptr' (C++11); it is defined as 0 when using an older compiler. 2015-05-13 Andras Varga * Added getUniqueNumber() overflow check 2015-05-12 Andras Varga * Cleanup: several data members, function arguments and local variables changed to camelCase; removed "s" prefix from names of inner structs 2015-04-20 Andras Varga * Cleanup: use C++ names of C headers (e.g. instead of ) 2015-04-14 Andras Varga * Occurrences of the "simulation" macro replaced by getSimulation() calls, and "ev" by getEnvir() calls. 2015-04-12 Andras Varga * Cleanup: copyright years updated 2015-04-08 Andras Varga * Modernizing: - Use a fixed include path (-Iinclude -Isrc) for all source folders under src/, and qualify cross-folder #includes with the folder name (e.g. change #include "stringutil.h" to #include "common/stringutil.h"). This increases readbility and reduces the chance of including a wrong header. - In source files, sort #include statements by folder. 2015-03-04 ------ omnetpp-5.0b1 released ------ 2014-01-28 Andras Varga * Removed eventlog support for module reparenting (i.e. logging of cModule::changeParentTo()), because tools cannot easily support it 2013-09-26 Andras Varga, Levente Meszaros * Adapted to logging API changes (see include/ChangeLog): - Log lines can now be prefixed with information such as the module path; simulation time; event's class and object name; file/line of the log statement; class, name and pointer of the object containing the log statement; etc. The format of this prefix can be changed from ini files. - Implementation-wise, EnvirBase's printf() and sputn() methods were removed, and replaced by log(cLogEntry*). The LogFormatter class was added. 2013-01-28 Andras Varga * Follow through with the introduction of cEvent; see related ChangeLog entry in include/. 2014-11-27 ------ omnetpp-4.6 released ------ 2014-11-28 Andras Varga * Fix #788: seed-set=${1,2,3} syntax results in error * Fix #789: inifilereader.cc: memory corruption 2014-06-30 ------ omnetpp-4.5 released ------ 2014-02-14 Andras Varga * EnvirBase: opt_xxx members factored out to a separate class EnvirOptions; Cmdenv and Tkenv were changed accordingly, too. 2014-02-13 ------ omnetpp-4.4.1 released ------ 2013-01-28 Andras Varga * cSimulation: startRun() renamed to callInitialize(), endRun() removed 2013-01-28 Andras Varga * Make use of simulation lifecycle listeners; see related ChangeLog entry in include/. 2013-01-28 Andras Varga * Followed cOutputVectorManager/cOutputScalarManager/cSnapshotManager renaming in sim/ (they became cIOutputVectorManager, etc.) 2014-02-13 ------ omnetpp-4.4.1 released ------ 2013-12-20 ------ omnetpp-4.4 released ------ 2014-01-07 Andras Varga * startup.cc: use CodeFragments::executeAll(CodeFragments::STARTUP) and CodeFragments::executeAll(CodeFragments::SHUTDOWN) to run startup/cleanup code fragments. 2013-12-20 Andras Varga * Feature: added Just-in-Time debugging. Adds the following config options: - debugger-attach-on-startup= - debugger-attach-on-error= - debugger-attach-command= - debugger-attach-wait-time=