All Versions
36
Latest Version
Avg Release Cycle
58 days
Latest Release
172 days ago

Changelog History
Page 1

  • v3.2.1 Changes

    June 11, 2022

    ๐Ÿš€ 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.
  • v3.2.0 Changes

    May 03, 2022

    ๐Ÿš€ 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
  • v3.1.2 Changes

    January 25, 2022

    ๐Ÿš€ This patch release is primarily to address some build issues on MSYS2, MINGW, and CYGWIN platforms. It also includes some preliminary features for the 3.2 release that were already merged including time monitors, remote logging, and a log buffer.

    ๐Ÿ›  Fixed

    • ๐Ÿ›  Fixed issue building on CYGWIN with the latest FMT library.
    • โšก๏ธ Build issues related to MSYS2 and Mingw in the networking submodule (submodule updated).
    • ๐Ÿ›  Fixed argument processing issue in the comboFed Example.

    ๐Ÿ”„ Changed

    • โšก๏ธ Updates to FMT and SPDLOG
    • ๐Ÿ“š Several documentation updates and cleanup
    • Copyright date changed to 2022
    • Targeted endpoints now allow all method calls, with the restriction being that the destination must be in the target list otherwise an error is generated. An empty destination in methods that allow destinations will operate identically to calls which do not specify a destination.
    • 0๏ธโƒฃ Code cleanup for defining the default port numbers for network core types.

    โž• Added

    • A process comms method for federates to instruct HELICS to process messages for a specific amount of wall clock time without granting time or changing state.
    • โž• Added a threaded signal handler to deal with some particular issues with killing processes in python and potentially other language interfaces.
    • โž• Added a log buffer to brokers/cores/federates to store the latest N messages and retrieve it via a query. See [log buffer](./docs/user-guide/fundamental_topics/logging.md#log-buffer) for more details.
    • โž• Added a time monitor object to brokers to use a particular federate as the query time standard for brokers, this does not affect the cosimulation only the logging and queries. See [time monitor](./docs/user-guide/fundamental_topics/logging.md#time-monitor) for more details.
    • โž• Added a callback to be executed when the time is updated and before the value or message interface callbacks are executed.
    • โž• Added remote logging command to mirror logs from one HELICS object to another. See [remote logging](./docs/user-guide/fundamental_topics/logging.md#remote-logging) for more details.
  • v3.1.1 Changes

    December 14, 2021

    ๐Ÿš€ Primarily a bug fix release to fix a build issue resulting in internal logging messages being disabled for some of the release packages. Also includes a maxcosimduration argument for brokers to kill the co-sim after a certain amount of wall clock time.

    ๐Ÿ›  Fixed

    • ๐Ÿš€ CMake issue resulting in internal logging messages being disabled for some builds including some package releases.
    • ๐Ÿ›  Fixed a few deadlock pathways if the core was killed internally.
    • ๐Ÿ›  Fixed some timeout issues in the CI builds.
    • ๐Ÿ›  Fixed a potential race condition when setting the log file after execution has started on helics cores.

    ๐Ÿ”„ Changed

    • โœ… CMake version 3.22 tested and used if available.
    • ๐Ÿ‘€ The TCP networking components that were not core to HELICS have been moved to a separate repo and linked as a submodule. See [networking](www.github.com/GMLC-TDC/networking).
    • ๐Ÿ“š Several documentation fixes and updates.
    • ๐Ÿ”€ Moved to using the upstream toml11 repo instead of a custom modified version. Customized modifications have now been merged upstream.

    โž• Added

    • '--maxcosimduration' flag added in the broker to specify a max co-sim duration after which the cosimulation will be terminated.
    • helicsGetSystemInfo() function was added to the API to retrieve HELICS version and system info for debugging and diagnostic purposes.
    • โž• Added a threaded signal handler to execute close out operations in a new thread and return control back to the main thread to wait for error signals.
    • โž• Added helicsFederateInfoLoadFromString to better match C++ API available functions. This loads the federateInfo structure from command line arguments contained in a string.
  • v3.1.0 Changes

    November 25, 2021

    ๐Ÿš€ This release includes some bug fixes and enhancements to HELICS 3 which is now the default. 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.

    ๐Ÿ›  Fixed

    • ๐Ÿ›  Fixed an issue with null strings lacking a null termination when retrieved from the C API. This primarily affected the Python and other language API's.
    • CMake fix for some older linkers.
    • A fix for ASIO aligned_alloc when used with MinGW.
    • ๐Ÿ›  Fix to IPC core to support Boost 1.77.
    • โœ… A few issues around the JsonSerialization options for backwards compatibility with HELICS 2, and add some interoperability tests that can be used to check future versions.
    • ๐Ÿ›  Fix an issue with the timeCoordinator where a large time value was requested and with certain other configuration parameters the time could overflow and cause a deadlock.

    ๐Ÿ”„ Changed

    • โšก๏ธ precommit-ci now used in the CI chain, pre-commit checks were updated, and a check for python formatting inside the docs was added.
    • โšก๏ธ Update ThirdParty library versions including ASIO, CLI11, toml11, FMT, spdlog, jsoncpp, filesystem.
    • ๐Ÿ‘ Mac binaries are now universal binaries to support ARM based CPU types.
    • โšก๏ธ Update some of the TCP helper classes to better support future encrypted communication efforts.

    โž• Added

    • โž• Add the ability to add observer federates which can join a federation after it has started and subscribe to values, or make queries of the federation while in progress.
    • โž• Add a configurable grant timeout which will trigger diagnostic action if a federate has been waiting sufficiently long for a time grant.
    • โœ… A document on the [Type conversion](./docs\developer-guide/typeConversion.md) that HELICS can perform and a series of tests to verify the correct operation of the type conversions.
    • โž• Additional missing functions related to linking targeted endpoints from a core, so it can work similar to dataLink methods. These methods were added to Core and Broker applications.
    • ๐Ÿ†• New benchmark based on the Barabasi-Albert network.

    ๐Ÿ—„ Deprecated

  • v3.0.1 Changes

    August 26, 2021

    ๐Ÿš€ 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.

    ๐Ÿ›  Fixed

    • 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

    โž• Added

    • ๐Ÿ‘ 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)
  • v3.0.0 Changes

    July 15, 2021

    ๐Ÿš€ 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.

    ๐Ÿ”„ 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](./docs/developer-guide/style.md)
    • 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.

    ๐Ÿš€ [3.0.0]: https://github.com/GMLC-TDC/HELICS/releases/tag/v3.0.0 ๐Ÿš€ [3.0.1]: https://github.com/GMLC-TDC/HELICS/releases/tag/v3.0.1 ๐Ÿš€ [3.1.0]: https://github.com/GMLC-TDC/HELICS/releases/tag/v3.1.0 ๐Ÿš€ [3.1.1]: https://github.com/GMLC-TDC/HELICS/releases/tag/v3.1.1 ๐Ÿš€ [3.1.2]: https://github.com/GMLC-TDC/HELICS/releases/tag/v3.1.2 ๐Ÿš€ [3.2.0]: https://github.com/GMLC-TDC/HELICS/releases/tag/v3.2.0 ๐Ÿš€ [3.2.1]: https://github.com/GMLC-TDC/HELICS/releases/tag/v3.2.0

    ๐Ÿ“„ The changelog for HELICS 1.X and 2.X can be found [here](./docs/HELICS2_CHANGELOG.md)

  • v3.0.0-alpha.2 Changes

    November 09, 2020

    ๐Ÿš€ 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 full change log will be filled out as the release progresses from alpha to beta to final release. The migrating 2 to 3 page includes some specific details on migrating from HELICS 2 to 3.

    ๐Ÿš€ Changes expected for beta.1 which will be the next pre-release

    • โœ… matlab interface built and tested again (It is likely a new matlab API will be coming again)
    • โœ… more test cases for targetedEndpoints
    • ๐Ÿ— docker image build working

    ๐Ÿš€ This is an early alpha release it includes all the major new features and nearly complete API changes(baring bug reports) please use for testing and report any issues.

    ๐Ÿ”„ Changed

    • ๐Ÿšš Data serialization moved to a custom protocol specific to HELICS.
    • ๐Ÿ— Minimum build requirements to C++17
    • Many of the API functions now use string_view instead of const std::string &
    • โšก๏ธ Several API calls for messages have been updated for clarity and consistency.

    ๐Ÿ›  Fixed

    โž• Added

    • Command interface
    • Targeted Endpoints

    โœ‚ Removed

    • Message structure from C API
    • ๐Ÿ—„ Deprecated functions from HELICS 2
  • v3.0.0-alpha.1 Changes

    September 25, 2020

    ๐Ÿš€ 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 full change log will be filled out as the release progresses from alpha to beta to final release. The migrating 2 to 3 page includes some specific details on migrating from HELICS 2 to 3.

    ๐Ÿ”„ Changes expected for alpha.2

    • ๐Ÿ— travis-ci builds operational
    • โœ… more test cases for targetedEndpoints
    • ๐Ÿ— octave build working
    • ๐Ÿ— docker image build working

    ๐Ÿš€ This is an early alpha release it includes all the major new features and nearly complete API changes(baring bug reports) please use for testing and report any issues.

    ๐Ÿ”„ Changed

    • ๐Ÿšš Data serialization moved to a custom protocol specific to HELICS.
    • ๐Ÿ— Minimum build requirements to C++17
    • Many of the API functions now use string_view instead of const std::string &

    ๐Ÿ›  Fixed

    โž• Added

    • Command interface
    • Targeted Endpoints

    โœ‚ Removed

    • Message structure from C API
    • ๐Ÿ—„ Deprecated functions from HELICS 2
  • v2.7.1 Changes

    June 03, 2021

    ๐Ÿš€ There were several bug fixes in this patch release. Some of them related to changes in [2.7.0][] and some new ones that came up from bug reports. Some new enhancements are experimental signal handlers in the C-api, which will be used in the python interface to provide a little better user experience when trying to kill a co-simulation.

    ๐Ÿ”„ Changed

    • String output on recorders is now always JSON compatible and allows escaped characters. This allows some additional values to be displayed in ascii format vs base 64 encoding. #1910
    • ๐Ÿ“œ Players read the string fields through a JSON parser unless marked with b64[] to match the string output on recorders #1910
    • ๐Ÿ The default webserver port is now 8080 to allow user space execution on non-Windows platforms #1936

    ๐Ÿ›  Fixed

    • An issue with recorders writing text fields in the incorrect order which could result in incorrect playback #1910
    • ๐Ÿ›  Fix an issue with core naming that occasionally resulted in same broker name errors when using default names on federates #1919
    • ๐Ÿ›  Fix an issue where queries were not being resolved when a core disconnects which could result in deadlock. #1931
    • The wait_for_current_time flag was not working properly in some cases where time interruption was also taking place #1933
    • ๐Ÿ›  Fixed issue with the webserver not responding with the index page when requested or detecting the correct broker for certain trivial requests #1936

    โž• Added

    • ๐Ÿšฆ Signal handlers for catching SIGINT and optional user callback are available in the C shared API #1915
    • โž• Added support for environment variables for setting some network connection settings and other information #1921
    • Queries now have timeouts #1931
    • ๐Ÿ’ป Command line and environment variable options for setting the webserver port numbers #1936