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

Changelog History
Page 2

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

    April 26, 2020

    โšก๏ธ Some library reorganization, additional static analysis(CppLint and clang-tidy), multiBroker, updates to the webserver including some new capabilities for creating and destroying brokers.

    Note: the helics_broker has a bug when using the implicit default core type; as a temporary workaround either run it with the --coretype argument or use the helics_app broker subcommand.

    ๐Ÿ”„ Changed

    • Split the HELICS core library into a separate core and network library
    • โšก๏ธ Update FMT library to version 6.2.0
    • ๐Ÿ›  The core and broker Factories use a map instead of a fixed list which is a step toward allowing user defined cores
    • โšก๏ธ Updated CLI11 included code to customized version to allow configuration of cores and brokers through Json files
    • The ordering of the helics_error_types enum is in ascending order
    • ๐Ÿ”จ Refactored the Matlab and Java swig interface builds to enable standalone builds

    ๐Ÿ›  Fixed

    • โž• Added CPPlint and fixed a number of issues that check identified.

    โž• Added

    • helicsEndpointSendMessageObjectZeroCopy to allow transferring messages with minimal copying.
    • helics<Interface>IsValid functions to the C API
    • helicscpp::cleanHelicsLibrary to the C++98 API.
    • A Comm factory to the Core to enable constructing Comm interfaces directly from the type.
    • โšก๏ธ The REST API in the webserver was updated to include ability to create and destroy brokers.
    • A websocket server similar to the REST API but will respond to JSON queries.
    • โœ… A test suite for the HTTP and websocket servers.
    • A Multibroker that can allow multiple communication types to interact together.
    • ๐Ÿ— Support for HELICS_BUILD_CONFIGURATION cmake variable for building on unique platforms. The only supported one right now is "PI" for building on raspberry pi platforms.

    ๐Ÿ—„ Deprecated

    • ๐Ÿšš in the C shared library helicsFederateGetMessage, helicsEndpointGetMessage, and helicsEndpointSendMessage are deprecated in favor of the object version These will be removed in HELICS 3.0
    • ๐Ÿ—„ deprecated helicsEndpointClearMessage this function does nothing right now, all messages are on a federate level.
    • ๐Ÿ—„ Deprecated error functions in the C++ Federate API in favor of localError and globalError.
  • v2.4.2 Changes

    March 27, 2020

    ๐Ÿ›  Increased code coverage and additional bug fixes.

    ๐Ÿ‘ On March 31, 2020 support for installing HELICS using the Spack develop branch was added

    ๐Ÿ”„ Changed

    • โšก๏ธ Update toml11 library to 3.3.1 with some warning fixes for C++17
    • The query handling in the core library was cleaned up to be more extensible and uniform

    ๐Ÿ›  Fixed

    • ๐ŸŽ MacOS build with python 2.7 failure
    • Fixed some issues with the build/test process if the ENABLE_ZMQ_CORE=OFF
    • ๐Ÿ›  Fixed a potential issue with queries if they are triggered before the connection ack
    • An issue with host name resolution on some systems with restricted DNS lookup
    • ๐Ÿ‘ Allow camelCase in file parameters from JSON
    • ๐Ÿ›  Fixed linking error with default OpenMPI Spack package
    • ๐Ÿ›  Fixed timing benchmark federate name

    โž• Added

    • โœ… A series of tests for MessageFederate.cpp to increase coverage on that file to 100%
    • Callbacks for custom filters in the C shared library
    • โœ… A series of tests for CoreApp, BrokerApp, and FederateInfo and a few fixes for them
    • โœ… A few additional tests of helics supports types and conversions
    • CoreApp has a connect() and reset() method and constructor from a Core shared pointer
    • BrokerApp has a connect() method and constructor from a Broker shared pointer
    • Added a data_flow_graph query which gets all the connections in a federation
  • v2.4.1 Changes

    March 06, 2020

    ๐Ÿ›  Increased code coverage and additional bug fixes. The error propagation in HELICS was improved such that local errors can be escalated to global errors, and a federate can define errors coming from the federate that are handled appropriately and can halt a co-simulation.

    Note for macOS users there is a bug that will be fixed in the next release that prevents building the Python interface with SWIG -- this mostly impacts the small number of users on Python 2.7.

    ๐Ÿ”„ Changed

    • ๐Ÿ— The helics webserver will build by default if the conditions are met
    • ๐Ÿš€ Update filesystem library to v1.3.0
    • The behavior of the Federate*Complete operations is slightly modified to be uniform and consistent, no API changes
    • ๐Ÿ”ง Configuration of flags and targets for interfaces in JSON and TOML files can be done in multiple sections
    • The benchmark federates have been changed to use a common base benchmark federate class for more consistent behavior
    • Switched to including netif as a git submodule
    • ๐Ÿš€ the error Function in the C++ API is now the same as localError previously it was primary useful for logging and didn't do much, and will be deprecated in the next minor release.
    • ๐Ÿš€ Updated the GitHub actions (clang-format, swig interface updates, and release builds) to use actions/checkout@v2
    • ๐Ÿ Cleaned up the Windows installer (better component names/descriptions and groups, link to Gitter, and require installing Headers to install SWIG)
    • โšก๏ธ Updated the HELICS apps manpages with new options

    ๐Ÿ›  Fixed

    • Issue with iterative requests that were not being honored if the federate was acting in isolation
    • A few pathways which would allow segmentation faults if a federate was disconnected and particular functions were called
    • โœ… ValueFederate addIndexedTargets, the function template would not work as was written and was unusable, it is now tested and operational.

    โž• Added

    • HELICS_DISABLE_WEBSERVER option to turn off building of the webserver. It will build by default if Boost is enabled and is version 1.70 or higher; otherwise it is disabled.
    • โœ… A series of tests for Federate.cpp to increase coverage on that file to 100%
    • โœ… A series of tests for ValueFederate.*pp to increase coverage on that file to 100%
    • ๐Ÿ— Docker image for a helics builder which includes build tools and the helics installation
    • ๐Ÿ helics can be installed on MSYS2 using pacman.
    • Standalone benchmark federates for use in multinode benchmark runs
    • ๐Ÿ— A FreeBSD 12.1 CI build using Cirrus CI
    • ๐Ÿš€ Sending an event from GitHub Actions release builds to trigger updating additional HELICS packages when a new release is made
    • localError, and GlobalError function calls the Federate API and in the C++ and sharedLibrary.
    • helics_terminate_on_error flag to escalate what would be a local error into a global one that will halt the co-simulation. This flag can be specified through the flag to federates or to brokers and cores through a command line option --terminate_on_error
    • addDependency function was added to the C++ Federate API and shared library API, it can add a direct dependency between federates manually.
    • ๐Ÿš€ A 32-bit Windows zip install archive for releases
    • "global_time", "current_time", and "state" queries for brokers and cores, and "current_time" query for federates.
    • ๐Ÿ‘Œ Support for a 'helics-release-build' event trigger to the release build GitHub Actions workflow

    ๐Ÿ—„ Deprecated

    โœ‚ Removed

    • HELICS_ENABLE_WEBSERVER option to enable the webserver. This option was added as experimental in 2.4.0
    • ๐Ÿ VS2015 Windows Server 2012 CI build is removed. Azure Pipelines is removing the image because it is outdated and sees little use. VS2015 is still tested through Appveyor for the time being.
  • v2.4.0 Changes

    February 04, 2020

    Important note for macOS 10.15 Catalina users : Apple made running unsigned apps more strict, downloading and running the helics binaries in the macOS package will get blocked. A workaround is to download the package using curl in Terminal instead. e.g. curl -LO https://github.com/GMLC-TDC/HELICS/releases/download/v2.4.0/Helics-2.4.0-macOS-x86_64.zip.

    ๐Ÿš€ A few bug fixes, code coverage on the shared library increased to 100%, library updates, Broker server enhancements including an http REST API, and a lot of work on the build systems to enable easier releases and packaging.

    ๐Ÿ”„ Changed

    • โšก๏ธ filesystem include updated to 1.2.10
    • โšก๏ธ CLI11 updated to 1.9
    • โšก๏ธ fmt updated to 6.1.2
    • ๐Ÿš€ variant header updated to latest release
    • โšก๏ธ Update the units library (v0.3.0)
    • The TOML interpreter used in HELICS was changed to toml11
    • ๐Ÿ“ฆ Some unnecessary files were removed from the all source package
    • some internal CMake options and messages were not using new format for message
    • โšก๏ธ Major updates to the python modules build system including merging the python3 and python 2 builds into the same CMake generator
    • CMake cleanup and formatting
    • ๐ŸŽ A series of changes to the build for more widely supported installations on Linux and MacOS
    • The .clang-format file was modified slightly and the entire code base reformatted to the new specification
    • ๐Ÿ“‡ the metadata information for the benchmarks was updated
    • The FilterOperator class was altered to include a vector output for use with cloning
    • TCP and UDP core types are not by default backwards compatible with <2.4 brokers. The flag "--noack_connect" will need to be passed as part of the coreinitialization string to allow this to work if need be. ZMQ_SS cores are not considered interoperable with <2.4 brokers due to a number of bugs. In a few select cases it might still work.

    ๐Ÿ›  Fixed

    • ๐ŸŽ macOS rpath information on the built binaries
    • Some issues with swig include directories to allow it to work in other circumstances
    • ๐Ÿ— an issue with building the java interface in MSYS2
    • ๐Ÿ‘‰ an issue with the HELICS_USE_NEW_PYTHON_FIND CMake option
    • Some thread sanitizer identified issues
    • A series of issues from static analyzers
    • ๐Ÿ‘ป an issue in the shared library create core that could emit an exception
    • A series of issues related to remote cloning filters not being inline
    • Several issues with the zmqss core type it is not backwards compatible with <2.4 brokers
    • ๐Ÿ›  The code coverage on the C shared library was increased to 100% and a number of small bugs fixed as a result. The overall coverage increased to 71.5%

    โž• Added

    • ๐Ÿง Several installers for Linux and Mac and builds for pip install
    • ๐Ÿ‘ Allow standalone builds for the python interface
    • โž• Added a Ring Message benchmark, like the ring Benchmark except using messages as the token
    • โž• Added a Multinode phold benchmark
    • โž• Added a c shared library echo benchmark
    • git logic to check if the submodules are at the correct version
    • an option for a githook to check the formatting
    • โš  git warning if the submodule versions are not at the correct version
    • a timing benchmark similar to the echo benchmark
    • โœ… a number of tests for the C shared library including evil tests for testing bad input
    • ๐Ÿ— Hooks to test the coverage builds
    • a feature to mark a broker or federate as slow responding so it doesn't time out automatically
    • ๐Ÿ”ง EditorConfig and .gitattributes for cleaner diff and automatic editor configuration
    • ๐Ÿ›  An incorrect call in the Matlab swig code was fixed
    • Automatic generation of pull requests for source code formatting
    • โž• Add metadata information to the benchmarks for automatic processing
    • Broker server functionality for tcp core, zmqss core, and udp core
    • ๐Ÿ— An experimental web server that can be used with the broker server or the broker executables. (requires boost 1.70+ to build)
    • man pages for the helics applications

    ๐Ÿ—„ Deprecated

    • ๐Ÿš€ The ZMQ_SS core type is not generally compatible between 2.3 and 2.4 Minor releases due to bug fixes.
  • v2.3.1 Changes

    November 22, 2019

    ๐Ÿ› Bug Fixes and some code refactoring, pkg-config files have been added to the installs

    ๐Ÿ”„ Changed

    • ๐Ÿ”ง Default installation path for MSYS2 is now configured to be part of the system path, typically /mingw64/ or /mingw32/
    • HELICS_ENABLE_SLOW_PACKAGING_TESTS renamed to HELICS_ENABLE_SUBPROJECT_TESTS to better reflect usage
    • โšก๏ธ filesystem library updated to clear up some warnings
    • ๐Ÿš€ The CI system now runs Xcode9 as the oldest release
    • ๐Ÿš€ Automatic releases build system was changed to use scripts

    ๐Ÿ›  Fixed

    • ๐Ÿ“š Some documentation links in the docs
    • ๐Ÿ— Missing helics-enums.h header from the install if HELICS_BUILD_CXX_SHARED_LIB was not enabled
    • ๐Ÿ‘‰ ZMQ install locations on Linux and macOS if ZMQ is used as a subproject without the HELICS_USE_ZMQ_STATIC_LIB option enabled
    • ๐Ÿš€ The linux shared library release build so it is compatible with a larger number of systems including older ones back to glibc 2.12.
    • Fix some documentation and issues with using the STATIC_STANDARD_LIB CMake option

    โž• Added

    • CMake option for HELICS_DISABLE_ASIO to completely remove the use the ASIO library, turns off the UDP, and TCP core types, all real-time capabilities, and timeout and heartbeat detection for cores and brokers. ASIO doesn't support all version of cygwin.
    • pkg-config files for the shared libraries are now installed to <prefix>/lib/pkg-config on unix like systems
    • ๐Ÿ— Tests and CI builds for installed CMake package files and pkg-config files

    ๐Ÿ—„ Deprecated

    • ๐ŸŽ Trying to install on linux/macos systems with cmake older than 3.13 and ZMQ used as a subproject with the shared library is no longer supported. It is likely this use scenario was broken before, now it produces a warning.

    โœ‚ Removed

    • ๐Ÿ— If HELICS_BUILD_BENCHMARKS is enabled, the option for ENABLE_INPROC_CORE will not show in the cmake-gui.
    • ๐Ÿ— If HELICS_BUILD_TESTS is enabled, the option for ENABLE_TEST_CORE will not show in the cmake-gui.