Skip to content

v3.0.0

Compare
Choose a tag to compare
@phlptp phlptp released this 15 Jul 20:25
c97d091

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 page includes some specific details on migrating from HELICS 2 to 3.

NOTE: The installers do not include the pre-built Java 1.8 interface; if you need the Java interface, please use swig to build it.

Changed

  • 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 string_view instead of const std::string &
  • The C shared library now comes with only a single header helics.h this should be included for all uses of the C shared library
  • The name of the C based shared library changed to libhelics.dll/so
  • The name of the C++ shared library changed to libhelicscpp.dll/so
  • The name of the apps library changed to libhelicscpp-apps.dll/so
  • The style of enumerations and structures was changed to match an updated style guide
  • All HELICS specific CMake variables start with HELICS_
  • The format for log messages now includes a simulation time stamp [t=xxxx]
  • 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

Fixed

  • All bug fixes included in HELICS 2.X are included in HELICS 3

Added

  • Command interface
  • Targeted Endpoints
  • Interface Tags
  • Federate and Core Tags

Removed

  • 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.