HELICS v3.2.1 Release Notes

Release Date: 2022-06-11 // 6 months ago
  • ๐Ÿš€ The Matlab interface to HELICS has been moved to matHELICS, the C++ interface now uses std::string_view in nearly all places, and the translator C API, and the dataBuffer API to the C interface were fleshed out a bit more and will be finalized in the 3.3 release. Subsequent releases will change the minimum compiler requirements to build HELICS to Visual Studio 2019, GCC 8.0, Clang 7, Xcode 11.0, and CMake 3.11.

    ๐Ÿ›  Fixed

    • A bug related to iterations and the wait_for_current_time flag in which a deadlock may occur if the flag were set and another federate was requesting iterations at time zero.
    • A bug which could cause a deadlock if a very large number of iterations occurred
    • A naming bug in the creation of globalInput objects through the C API.
    • ๐Ÿ›  Fixed some potential race conditions in the Webserver
    • ๐Ÿ›  Fixed some race conditions and potential segmentation faults when running the C shared library tests
    • ๐Ÿ›  Fix some tests that were failing when executed without ZMQ support.
    • ๐Ÿ›  Fix the symbol visibility on Linux systems to reduce the number of visible symbols in the C shared library
    • ๐Ÿ›  Fix an issue with very long file names when used for configuration
    • ๐Ÿ›  Fix a race condition and deadlock potential in the log buffer tests.
    • ๐Ÿ›  Fix a Typo in HELICS_DEPRECATED use.

    ๐Ÿ”„ Changed

    • โšก๏ธ Docker images were updated to be based on Ubuntu 22.04.
    • โšก๏ธ All string interfaces in the C++ interface were altered to use std::string_view instead of const std::string & this corresponds with updates in some third party libraries to better take advantage of the capabilities of std::string_view. The exception to this is strings which reference file names or file contents. These have been left as std::string to match up with iostreams and other file interfaces.
    • โšก๏ธ Updated the Google test version in use.
    • ๐Ÿ”„ Change the symbol visibility for mac systems to be explicitly limited to the HELICS related operations.
    • ๐Ÿ”„ Changed the signal abort code to match standard SIGINT codes
    • ๐Ÿ’… Some enumerations used inside the CoreLibrary were updated to better match the Style Guide
    • โšก๏ธ Updated the Circle-CI build tests to use more recent compilers and tweak the tests to be more appropriate to test being executed.
    • ๐Ÿš€ Update the Units, frozen, asio, filesystem, and spdlog libraries to recent releases.
    • โšก๏ธ Updated support CMake 3.23, Boost 1.79, and Visual Studio 2022.

    โž• Added

    • ๐Ÿ‘ Numerous functions in the C data API to support all HELICS supported types
    • helicsFederateProtect method to all federates to be recovered by name if all references to the C HelicsFederate object was freed.
    • โž• Added a callback method for translators in the C API.
    • โž• Added a "--force" option for ZMQ brokers to allow a broker to override an existing broker for the network connection and terminate the existing broker to be replaced by a new one.
    • โž• Added additional documentation and examples for using iterations

    โœ‚ Removed

    • ๐Ÿ— The HELICS_BUILD_MATLAB_INTERFACE has been removed and all HELICS support for Matlab in the future will be through the matHELICS repository.

Previous changes from v3.2.0

  • ๐Ÿš€ Major new features include beta release for Translators, global time coordinator and Data API and the addition of Support for encrypted communication through the TCP and TCP SS core types. ๐Ÿ›  Numerous bug fixes were included related to timing in unusual edge cases.

    ๐Ÿ›  Fixed

    • ๐Ÿ›  Fix some undefined behavior warnings with duplicate named federates.
    • ๐Ÿ›  Fix a discrepancy in the way subscriptions were processed for config files to better match how they are handled for inputs.
    • ๐Ÿ›  Fix some accidentally disabled test cases testing different network configurations.
    • ๐Ÿ›  Fix missing dependency generation when subscribing to publications from Endpoints.
    • ๐Ÿ›  Fixed a few sporadic failures in the test cases.
    • ๐Ÿ›  Fixed some issues with iterations particularly in initialization mode.
    • ๐Ÿ›  Fixed a series of edge cases in timing in unusual communication patterns and configurations mostly related to filters, and more complex iteration schemes.
    • ๐Ÿ›  Fixed an issue related to missing source code on the release source archive.

    ๐Ÿ”„ Changed

    • โšก๏ธ Docker images were updated to be based on Ubuntu 21.10.
    • ๐Ÿš€ Update asio, json_cpp, and units to recent releases.
    • ๐ŸŒฒ Errors in the networking layer are now propagated through the logging system in HELICS for better diagnostics of networking issues.
    • โœ… Benchmark tests are now built with Visual studio 2022.
    • โœ… Code coverage tests are now run nightly instead of on develop PR's.
    • ๐Ÿ”จ Refactored how Apps were handling arguments to the federate to resolve some oddities in argument processing.
    • ๐Ÿš€ Update CLI11 to use release 2.2.
    • The callback for a filter to can return a message Object.

    โž• Added

    • โž• Added support for openSSL based encryption on the tcp tcpss cores and some tests using that capability.
    • โž• Added a callback option which triggers when a federate changes mode.
    • โž• Added Translators as a beta API, this is not version locked and likely has a few bugs. The API is subject to minor revisions based on user feedback.
    • โž• Added Data API to the C interface as a beta. API is subject to further revisions based on user feedback in upcoming releases until 3.3.
    • โž• Added support for command operations through the REST API on the webserver.
    • โž• Added swagger documentation for the REST API and queries.
    • โž• Added a global time coordinator(in Beta) for handling some unusual cases.
    • โž• Added additional callbacks in the application API for entry and exit from a timeRequest call.
    • โž• Added support for using external FMT and SPDLOG libraries when linking HELICS.
    • โž• Added additional documentation for complex networking environments

    ๐Ÿ—„ Deprecated

    • ๐Ÿš€ CI tests for visual studio 2017 were deprecated. HELICS still compiles fine on Visual studio 2017. But this is the last release that is specified for. Future releases will not be tested on Visual Studio 2017. HELICS 3.3 will actively change the minimum required to Visual Studio 2019 along with other related minimum compiler updates and requirements