All Versions
31
Latest Version
Avg Release Cycle
63 days
Latest Release
53 days ago

Changelog History
Page 1

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

    🔄 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.
  • 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
  • v2.7.0 Changes

    April 28, 2021

    🚀 This release includes a major change internally for filters. Testing and usage revealed some scenarios which could cause deadlock or acausal message arrival. These scenarios were not common so the release was delayed until a fix was in place. As of the 2.7.0 release all the identified issues related to the initial bug have been resolved. There remains some outstanding cases that fail rarely in the CI systems specifically related to rerouting filters that are separate from both the location they are rerouting from and to. The resolution of these is uncertain but will be available in a patch release when resolved. Additional changes include major changes to the CI builds due to changing support of Travis CI and other CI services.

    🔄 Changed

    • 🚀 Update spdlog, fmtlib, filesystem, asio, and units libraries to latest releases (#1798, #1802, #1803)
    • 👉 Default HELICS_USE_ZMQ_STATIC_LIB to ON if only the static library is found in the search path #1845
    • 👷 Primary CI systems are now on azure instead of travis #1819
    • 👷 Only a very limited CI test set is run on formatting PR's #1761

    🛠 Fixed

    • ✅ Tests and fixes allowing multiple filters on the same endpoint #1852
    • 🛠 Fixed some failing broker server tests related to input arguments #1825
    • 🛠 Fixed an issue with barrier and maxTime requests #1788
    • 🛠 Fixed a timing bug when using offset and some specific time requests immediately after the enterExecutingMode #1759
    • 👷 Several fixes and changes to CI systems related to changes in CI infrastructure #1754, #1790, #1828, #1744, #1739
    • 🛠 Fixed deadlock caused when querying a disconnected HELICS object #1705
    • 🛠 Fixed major timing bug with the use of filters #1717
    • 🛠 Fixed issue when sending messages before execution time #1717

    ➕ Added

    • 👌 Support for ZMQ 4.3.4 (this will become default in the next version) #1841
    • ➕ Added a global_flush query to sweep the internal action message queues #1832
    • 👍 A vcpkg manifest file for some vcpkg support #1835
    • ➕ Added an event triggered flag to better handle timing on federates that are primarily or exclusively triggered by events like filters #1804
    • ➕ Added ordered queries which allow queries to run on the normal vs priority pathways for queries that are desired to be synchronous with the other helics messages #1793
    • ➕ Added github workflow to compress images #1626
    • ➕ Additional and clearer warning messages when a message is sent to an unknown destination #1702
  • v2.6.1 Changes

    October 16, 2020

    🛠 Several small bug fixes and minor enhancements to query operations

    🔄 Changed

    • In helics_enum.h flags were separated into separate enums with the same symbols splitting up flags specific to federates, cores, and those applicable to all entities
    • ✅ CMAKE 3.18 was tested and verified and used as the baseline version when available.
    • ⚡️ Default libzmq was updated to 4.3.3

    🛠 Fixed

    • A few flags were unable to be queried through getOptionFlag operations #1655
    • The index values for some flags were not able to be retrieved via getFlagIndex operations #1645
    • 0️⃣ In some cases specifying a custom port of a number less than the default ports led to federates being unable to bind the appropriate port #1648
    • ⚠ Duplicate target specification and warnings were improved #1639
    • Certain property strings did not generate the correct property index #1642
    • For large packets in the TCP core on particular operating systems partial buffers may be sent and this was not handled property in the tcp core #1600
    • 🚀 Boost 1.74 deprecated some interfaces used in the webserver. The code was updated to support the latest release of boost. #1629
    • The requested_time field in the current_time query for federates was missing #1619
    • Some broker queries did not reset properly when changes in the federation occurred #1617
    • 🖐 Handle cases of empty install prefix #1577

    ➕ Added

    • The C api now has a query callback method for responding to federate specific queries. #1634
    • Some tutorials for the hello_world example on visual studio #1621
    • A helicsMessageClear method was added to the C API for clearing the data from a message object #1622
    • A global_state query to actively query the current state of all objects in a federation. #1614
    • 🔧 A strict config checking flag to generate errors on potentially incorrect configuration files #1607
  • v2.6.0 Changes

    August 20, 2020

    🐛 Bug fixes and major logging update

    🔄 Changed

    • 🚀 The build flag function now returns correct debug or release flags depending on the build
    • The debug postfix d is no longer added to the interface libraries
    • 🚚 Spdlog is now being used for logging inside HELICS and the old logger has been removed this results in fewer thread being generated by HELICS.
    • 🏗 CMake will now error if the install directory is set to the build directory
    • Some argument names in the C API have been changed for consistency
    • Output a more descriptive error message for mismatched data sizes when converting types #1521
    • Some C++98 API functions were added and changed for consistency, specifically endpoint get type no returns a char * instead of std::string, and a getCurrentTime function was added to Federate
    • 🌲 logging level properties from a federateInfo structure will be inherited by a core for the first registered federate

    🛠 Fixed

    • String with negative numerical values were not acknowledging the negation Issue #1306
    • 📜 Config file parsing was not acknowledging "unit" string #1512
    • 🐎 A performance issue with the tcpss and tcp cores in some cases has been resolved by setting the no_delay option
    • Inconsistency in type returned by endpoint getType in C++98 API #1523
    • a potential segmentation fault when calling some methods in the C shared library after calling helicsCloseLibrary

    ➕ Added

    • 🌲 Flags for dumplog and force_logging_flush were added to the C API
    • ➕ Added missing C++98 call to getCurrentTime
    • ➕ Added closeLibrary function to the C++98 API
    • ➕ Added a Python benchmark file
    • An option to install the benchmark executables has been added
    • 🌲 Data logging output for both send and receive of messages
    • 🐧 A GitHub Actions workflow to build packages for Linux with the benchmark executables

    ✂ Removed

    • The previous logger including logger.h has been replaced with spdlog
  • v2.5.2 Changes

    June 15, 2020

    Bug fix release for some build issues and a fix to the wait_for_current_time flag

    🛠 Fixed

    • Bug in the timing subsystem that was preventing the wait_for_current_time flag from functioning properly
    • 🛠 Fixed some oddities in the java tests, that were doing confusing things and happened to work because of the bug in the timing subsystem
    • 🚀 A build system issue that caused the automated generation of python packages to fail on the 2.5.1 release. This was caused by overriding the output build location in all cases, when it should have been limited if the python interface is getting built separately.
    • A few cppcheck issue from the new check (#1414)

    ➕ Added

    • Add print_systeminfo flag to root helics_benchmark command (#1417)
    • ➕ Added cppcheck github action for PR's
  • v2.5.1 Changes

    June 05, 2020

    🔄 Changed

    • All ZeroMQ related files are now located in the network library and under a single namespace
    • 🚀 Use Python 3.8 instead of 3.6 for any release build installers that include a copy of the Python interface (pip or anaconda are the recommended ways to install the Python interface)
    • ⚡️ Update units library to include some typical natural gas units and conversions
    • 👉 Use a separate action for automated pr generation
    • ⚡️ Update the CLI11 library
    • The setOption/getOption functions now take an int32_t as a value instead of a boolean. This does not change the API since in the C library the helics_bool was already an int.
    • In the case of multiple sources, getInjectionType, and getInjectionUnits now will return a json string vector.
    • 🏗 The CMake build generation now uses a central location for all build artifacts instead of individual directories.
    • ⚡️ Updated the ASIO library to 1-16
    • ⚡️ Minor updates to the clang-format to allow better alignment and comment reflow
    • ♻️ Numerous code refactorings to simplify and clean up code
    • 🚚 Move all ZMQ related items to the network library
    • ⚡️ Updated Python packages DLL load failed error to suggest installing the latest Visual C++ Runtime

    🛠 Fixed

    • ✅ Sporadic failures in the Webserver and websocket tests
    • 🌐 A bug in the translation of vectors to complex vectors
    • A bug in the copying of vectors into the C shared library
    • Numerous clang-tidy identified issues mostly for code readability
    • Some issues with the exists query not working in certain circumstances and for cores and brokers
    • ✅ The nonlings test would fail if the branch name had error in it. A check was put into eliminate this false negative test failure.
    • ✅ A few sporadic failure cases in the http and websocket tests
    • 🏗 A build generation issue with disabling the ZMQ core
    • 🔧 An error from the config interpreter where some flags were not getting correctly propagated to the Federate configuration.

    ➕ Added

    • A helics::zmq target was added for linking with zeromq if using HELICS as a subproject
    • A HELICS_BENCHMARK_SHIFT_FACTOR CMake option was added to allow the benchmarks to scale depending on computational resources
    • "version" and "version_all" queries to get the local version string and the version strings of all the cores/brokers in the federation
    • ✅ A few missing operations to the C++98 interface for Message objects, add helicsMessageClone and helicsEndpointCreateMessage functions in the C interface. Add a test case for some of the C++98 message operations.
    • helicsQuerySetTarget and helicsQuerySetQueryString operations to modify an existing query in the C interface
    • A set of reduction operations for multi-input handling on inputs, options for setting input source priority and the number of expected connections
    • A Watts-Strogatz like benchmark
    • 👍 A few more parameters that can be handled in the Webserver and support for use of uuid instead of name
    • A few missing message operators to the C++98 API, such as data, append, setFlag, checkFlag, sendMessageZeroCopy
    • Made the Message class return a self Reference for the setters
    • 👷 A test to run the helics-broker executable as part of the CI tests
    • 0️⃣ A bug in the helics_broker that no longer ran correct defaults
    • A "version_all" query, to retrieve the version of HELICS in use for all cores/brokers, and a "version" query to retrieve the version of a specific target.
    • ⚡️ A series of checks for markdown, spelling, shellcheck, python formatting, cpplint, end-of-line and automated generation of PR scripts for the formatting updates.
    • Some level of automated scaling for benchmarks for small systems
    • 🏗 API functions for retrieving the build flags used to generate the library
    • Some additional message interpreters to aid in debugging
    • ✅ A test using the standalone helics_broker to run an example