All notable changes to libcosim will be documented in this file. This includes new features, bug fixes and breaking changes. For a more detailed list of all changes, click the header links for each version.
This project adheres to Semantic Versioning
v0.11.2 - 2026-05-18
- Expose file observer functionality through logger config file #776
- PoC for DCP #192
- Implement additional logconfig xml functionality #794 (eidekrist)
- Conan-based CI builds are failing #800
- Conan warnings in CI build output #798
- libcosim crashes when FMUs log messages using a NULL category #796
- Windows 2019 Github Actions Runners have been deprecated #792
- Don't crash if FMUs log with category=NULL #797 (kyllingstad)
v0.11.0 - 2025-03-31
- The ECCO (Energy Conservation-based Co-simulation) algorithm has received a reference implementation that is now configurable through OspSystemStructure. See the tests prefixed with
ecco_algorithmfor details. - Libcosim now supports the state saving and serialization API from FMI2. Serialization to file is done with the CBOR (Concise Binary Object Representation) format. FMUs that support this feature should flag it by setting the
canGetAndSetFMUstateandcanSerializeFMUstatefields in their model description totrue. See the test prefixed withsave_statefor details.
- Some exceptions thrown when parsing configuration XMLs have been changed to
std::runtime_error, where less appropriate classes for runtime errors likestd::logic_errororstd::out_of_rangewere previously used.
v0.10.4 - 2024-12-12
- Real time factor calculation for small time steps has been improved by computing a rolling average rather than a fixed amount of 5 timesteps.
- Variables are now correctly transferred at the points in the FMU initialization sequence where they are permitted to change.
- FMU start values will now be correctly initialized before entering initialization mode.
- Various bug fixes and improvements.
- The fixed precision of the file observer can now be specified.
- File observer is now printing the correct FMU author.
v0.10.3 - 2024-02-19
- parseURI null check and error handling implemented.
- Upgraded Conan to v2
v0.10.2 - 2023-02-08
- Update to proxyfmu 0.3.1 due to a disconnection issue related to Thrift.
v0.10.1 - 2022-12-08
- Update to proxyfmu 0.3.0 due to downstream build issues related to Thrift.
v0.10.0 - 2022-12-02
- GCC7 and GCC8 artifact builds have been removed, and GCC9 artifact builds added. This is currently the only supported GCC version.
- The file observer is now programmatically configurable, and there is no longer a need for clients to create a separate
LogConfig.xmlfile upfront to specify it's configuration. - The file observer no longer outputs headers as
variable name [reference, type, causality].Instead only the variable name is output, and the extra data about each variable and the model itself is output in a separate metadata file, in YAML format. This will have the same filename as the CSV file with the simulation data, including the timestamp, with_metadataat the end. - Using
find_variableno longer throws an exception, but rather returns an optional value, which may be empty if the variable could not be found. - Update to proxyfmu 0.2.9.
- An asynchronous version of
simulate_untilis now available through theexecutioninterface. This accepts an optional end time parameter and launches the execution in a new thread. - Support has been added for optionally specifying simulation end time (where only start time was supported) in
OspSystemStructure.xml. If specified, end time will also be parsed and made available in the simulation configuration.
v0.9.0 – 2022-04-05
- Removed fibers to simplify code and increase simulation performance. Concurrency must now be implemented in the master
algorithm, and
fixed_step_algorithmhas been modified to use a thread pool. (PR#674, PR#692) - Performance improvements (PR#687)
- OspModelDescription.xml can be located in same folder as FMU when using proxyfmu (PR#688)
- Option to build with FMI logging removed (PR#679)
- Update to proxyfmu 0.2.7
v0.8.3 – 2021-11-26
- Update to proxyfmu 0.2.6 (PR#676)
- Adding builds for:
v0.8.2 – 2021-10-21
v0.8.1 – 2021-09-15
- Using proxyfmu v0.2.3 that fixes an assumtion that proxyfmu executable being located in working directory (PR#657, proxyfmu#40)
- Stopped-flag not reset when end-time exceeded (PR#656)
v0.8.0 – 2021-09-03
- Replacing JVM based fmu-proxy with proxy-fmu (PR#633)
- Replacing
boost::filesystemwithstd::filesystem(PR#637)
- Memory leaks in observers (PR#647)
v0.7.1 – 2021-06-03
- improving documentation (PR#617)
- Compile using VS2019(PR#638)
- Allow empty sequence of initial values in OspSystemStructure (PR#613)
- Model description only exposed through execution (PR#603)
- Validate initial variable values from OspSystemStructure (PR#604)
- Real time timer improvements (PR#605)
- Link dependencies dynamically (PR#596)
- updating dependencies and resolving conflicts (PR#610, PR#632, PR#641)
v0.7.0 – 2020-05-29
- Renamed library from csecore to libcosim (PR#571)
- C API moved to separate repository libcosimc (PR#571)
- Split
model.hppintomodel_description.hppandtime.hpp(PR#587)
- Provide library version in API (PR#586)
- Incorrect parsing of VectorSum function dimension (PR#580)
- Arbitrary order for child elements in OspSystemStructure.xml
<connections>(PR#575)
v0.6.0 – 2020-04-27
- MSMI configuration (OspSystemStructure.xml and OspModelDescription.xml) updated
- multi-variable connections replaced with functions (PR#518)
- algorithm configuration moved to DefaultExperiment in .ssd (PR#447)
- OspModelDescription file location at FMU path or configuration path (#462)
Functionsfor calculations between time steps (PR#517)- Support setting initial values through C API (#328)
- Increased SSP support:
- Support on/off toggling of file observer (#508)
- Add functionality for offline model building (#114)
- Support stateful and/or time-dependent manipulators (#203)
- Persistent FMU cache (PR#388)
- Update fmu-proxy client to match upstream v0.6.1 (#434)
- Scenarios can be written in YAML (#271)
- Allow CSV files produced by
file_observerto be generated without a timestamp (PR#555)
- First line in output files is just zeroes (#486)
ssp_parserdoes not handle connections correctly (#479)- Typo causes SSP parser to ignore "Connector" elements (#274)
v0.5.1 – 2019-11-01
- Move
visitorto utility header (PR#425)
- Warning about string truncation in newer GCCs (#418)
- Simulation errors are not propagated when using
cse_execution_start()(#415) - Sum connections not parsed properly from
OspSystemStructure.xml(#429) - True/false boolean initial values not supported in
OspSystemStructure.xml(#420) - Fails to load FMU with empty folders in the
resourcesdirectory (#440) - Conflicting Conan dependencies (#450)
- Scenario does not support string values (#354)
v0.5.0 – 2019-10-03
- Multi-variable connections (PR#295)
- Support for MSMI extension to FMUs
<FMU-name>_OspModelDescription.xml, that enables mapping of FMU variables into plugs, sockets and bonds (PR#333) - New CSE configuration format
OspSystemStructure.xml(PR#333), that enables configuration of:- Individual model step size
- Plug/socket and bond connections
- Multi-variable connections. Only sum connection included.
- Can advance an execution to a specific point in time with
cse_execution_simulate_untilin C-API (PR#325) - Can override configured step size and start time for fixed-step algorithm in
cse_ssp_fixed_step_execution_createandcse_ssp_execution_createin C-API (PR#373)
- Must provide instance name when creating local slaves with
cse_local_slave_create. (Fixing #381, PR#387) cse_variable_indexrenamed tocse_value_referencePR#339
cse_local_slave_createis broken when adding more than one instance of the same FMU (#381)- Memory error when moving a cosim::uri (#361)
- Cryptic error message with ill-defined or missing osp:FixedStepMaster in SSP (#338)
- Invalid connections in SSP are not properly handled (#336)
- Cannot use "." as file_observer output directory (#310)
v0.4.0 – 2019-08-19
- Initial variable values configurable from SSP (PR#291)
- Allow boolean to be set from scenario (PR#292)
- Providing overview of modified variables (PR#296)
- Give client code more control over logging (PR#314)
v0.3.0 – 2019-06-26
- fmu-proxy integration (PR#162, PR#239)
- introducing
orchestrationinterface for classes that resolve model URIs of one or more specific URI schemes (PR#233) - logging configuration (PR#247)
- observers can observe string and boolean variables (PR#257)
- can set arbitrary real time factor (PR#261)
- improved error reporting
- Prevent crash when FMU GUIDs include curly brackets (#244)
- Prevent crash when FMU includes enumerated variables (#246)
v0.2.0 – 2019-03-21
- Scenario: Automatically modify any variables (except with causality local) on specified simulation time using scenario files
- Multi threaded co-simulation
- Introducing
manipulatorinterface for manipulating variables fixed_step_algorithmsupports executing FMUs with different time steps
- Preventing observers from consuming increasing amount of memory
First OSP JIP partner release