HELICS v3.0.1 Release NotesRelease Date: 2021-08-26 // about 2 months ago
🚀 This release includes some bug fixes and refinements to the build process for HELICS3, as well as general bug fixes and the addition of a compatibility layer making it possible for HELICS 2 federates to interact with a HELICS 3 broker if absolutely required. The [migrating 2 to 3](./docs/developer-guide/porting-2-to-3.md) page includes some specific details on migrating from HELICS 2 to 3.
- Timing issues using UNINTERUPTIBLE_FLAG and iterations together resulted in incorrect timing
- Some issues with the automated generation of interface files for inclusion in the repository (Java, and Matlab)
- 🛠 Fixed several broken links in the documentation pages
- 👍 JSON serialization method for HELICS supported data types
- 👍 JSON serialization method for HELICS actionMessage to allow some level of backwards compatibility support. The intention is that using the --json flag on a federate will allow full forward compatibility in the future. It is slower but as it is a text stream and it includes a version code, future versions can adapt.
- 👀 Profiling capability, see [Profiling](./docs/user-guide/advanced_topics/profiling.md)
Previous changes from v3.0.0
🚀 HELICS 3.0 is a major update to HELICS. The major features that have been added are the command interface and targeted Endpoints. Internally major changes include updating the minimum compiler to C++17, and updates to internal libraries. The binary serialization protocol was shifted from Cereal to a custom format that embeds the data type so is more suitable to HELICS data types. The initial release is an alpha release for some initial testing. The [migrating 2 to 3](./docs/developer-guide/porting-2-to-3.md) page includes some specific details on migrating from HELICS 2 to 3.
- 🚚 Data serialization moved to a custom protocol specific to HELICS.
- 🏗 Minimum build requirements to C++17.
- Minimum boost library for use is 1.67.
- Many of the API functions now use
const std::string &
- The C shared library now comes with only a single header
helics.hthis should be included for all uses of the C shared library
- The name of the C based shared library changed to
- The name of the C++ shared library changed to
- The name of the apps library changed to
- 💅 The style of enumerations and structures was changed to match an updated [style guide](./docs/developer-guide/style.md)
- All HELICS specific CMake variables start with
- 🌲 The format for log messages now includes a simulation time stamp
- 🌲 Log level numerical values have been expanded (multiplied by 3) to allow more gradations in log levels than was previously allowed
- 🚚 The allowed set of string names has been reduced to avoid confusion and remove duplicate entries
- All queries (except
global_value) return a valid json string. Errors from queries return a structure with an HTTP error code and message
- 🛠 All bug fixes included in HELICS 2.X are included in HELICS 3
- Command interface
- Targeted Endpoints
- Interface Tags
- Federate and Core Tags
- Message structure from C API
- 🗄 Deprecated functions from HELICS 2
- The separate headers for the C shared library are no longer installed. Instead only a single header (
helics.h) is needed and includes all functions and operations.
- The cereal library is no longer installed or used with HELICS
- 👍 The C++ API no longer has generic type support through Cereal.