diff --git a/.gitignore b/.gitignore index 7852fcaf8d..7dc1329302 100644 --- a/.gitignore +++ b/.gitignore @@ -257,3 +257,6 @@ tags *.mex* .DS_Store HELICS_xcode + +### Backup files +*.bak diff --git a/CHANGELOG.md b/CHANGELOG.md index 1f2f6c6c94..4deb89127c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,7 +8,35 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm A note on future revisions. Everything within a major version number should be code compatible (with the exception of experimental interfaces). The most notable example of an experimental interface is the support for multiple source inputs. The APIs to deal with this will change in future minor releases. Everything within a single minor release should be network compatible with other federates on the same minor release number. Compatibility across minor release numbers may be possible in some situations but we are not going to guarantee this as those components are subject to performance improvements and may need to be modified at some point. Patch releases will be limited to bug fixes and other improvements not impacting the public API or network compatibility. Check the [Public API](./docs/Public_API.md) for details on what is included and excluded from the public API and version stability. -## [3.3.0][] ~ 2022-08-07 +## [3.3.1][] ~ 2022-10-21 + +Patch release to fix some issues with using HELICS as a subproject, and fix a few bugs related to time barriers, and a few other timing issues. + +### Fixed + +- Fixed an issue where broker based time barriers were not propagating to new federates. +- Fix the code coverage build system. +- Fixed a potential race condition with callback federates if the callback operations are modified during cosimulation. +- Fixed timing synchronization issue with global time coordinator. + +### Changed + +- Cleaned up usage of HELICS in external subprojects and adding some cleanup features, also cleanup the CMake usage to divide some operations into included files to simplify the main CMakeLists.txt +- Changed the default behavior for profiler output files to create a new file instead of appending. Use `--profiler_append=` to maintain the old behavior. + +### Added + +- Added single thread federate support which includes a federate optimized for use in a single thread.(Corresponding single thread core will come in next release). +- Added support for initialization iteration to allow federates to specify ready and then return to the created mode to do additional initialization potentially with information from other federates. +- Added flag to disable remote termination commands. +- Added C API function calls for alias operations. +- Added read only property HELICS_PROPERTY_INT_ITERATION_COUNT to get the current iteration count for a federate. + +### Removed + +- Removed an unused and unexposed method in the Core API to retrieve the current iteration count, use HELICS_PROPERTY_INT_ITERATION_COUNT with getProperty to retrieve the same data. + +## [3.3.0][] - 2022-09-15 Minimum build requirements updated to CMake 3.11, Visual Studio 2019, XCode 11.0, GCC 8.1, Clang 7.0. The major new features include a callback federate, and aliases to allow interfaces to have multiple string names. @@ -55,13 +83,11 @@ The release also includes several bug fixes related to timing and iteration. - Added a [callback Federate](https://docs.helics.org/en/latest/user-guide/advanced_topics/CallbackFederate.html) capability which allows a large number of callback based federates to execute on a single core without direct user calls - Added some additional [callbacks](https://docs.helics.org/en/latest/user-guide/advanced_topics/callbacks.html) for federates - Added flags on the webserver to allow much easier configuration to external network interfaces -- Added read only property HELICS_PROPERTY_INT_ITERATION_COUNT to get the current iteration count for a federate ### Removed - ghc::filesystem, since all minimum compilers have support for std::filesystem available. - Removed Travis CI related configuration and documentation -- Removed an unused and unexposed method in the Core API to retrieve the current iteration count, use HELICS_PROPERTY_INT_ITERATION_COUNT with getProperty to retrieve the same data. ## [3.2.1][] - 2022-06-17 @@ -292,6 +318,8 @@ HELICS 3.0 is a major update to HELICS. The major features that have been added [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 +[3.2.1]: https://github.com/GMLC-TDC/HELICS/releases/tag/v3.2.1 +[3.3.0]: https://github.com/GMLC-TDC/HELICS/releases/tag/v3.3.0 +[3.3.1]: https://github.com/GMLC-TDC/HELICS/releases/tag/v3.3.1 The changelog for HELICS 1.X and 2.X can be found [here](./docs/HELICS2_CHANGELOG.md) diff --git a/CMakeLists.txt b/CMakeLists.txt index ec82d80c57..29d2757f2d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -17,14 +17,14 @@ if(DEFINED ENV{VCPKG_ROOT} AND NOT DEFINED CMAKE_TOOLCHAIN_FILE AND NOT HELICS_D set(CMAKE_TOOLCHAIN_FILE "$ENV{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake" CACHE STRING "") endif() -project(HELICS VERSION 3.3.0) +project(HELICS VERSION 3.3.1) # ----------------------------------------------------------------------------- # HELICS Version number # ----------------------------------------------------------------------------- set(HELICS_VERSION_BUILD) # use ISO date YYYY-MM-DD -set(HELICS_DATE "2022-10-09") +set(HELICS_DATE "2022-10-21") set(HELICS_VERSION_UNDERSCORE "${HELICS_VERSION_MAJOR}_${HELICS_VERSION_MINOR}_${HELICS_VERSION_PATCH}" diff --git a/appveyor.yml b/appveyor.yml index c8aebf3952..94ae5d604f 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -5,7 +5,7 @@ branches: - main - develop -version: 3.3.0.{build} +version: 3.3.1.{build} image: Visual Studio 2019 diff --git a/config/cmake/commonBuildPaths.cmake b/config/cmake/commonBuildPaths.cmake index 011833aec2..e56137184b 100644 --- a/config/cmake/commonBuildPaths.cmake +++ b/config/cmake/commonBuildPaths.cmake @@ -86,6 +86,12 @@ endif() # Prohibit in-source build if(PROJECT_SOURCE_DIR STREQUAL PROJECT_BINARY_DIR) + if(EXISTS "${PROJECT_SOURCE_DIR}/CMakeCache.txt") + message( + WARNING + "The source directory ${PROJECT_SOURCE_DIR} contains CMakeCache.txt and possibly other cmake folders like CMakeFiles that might interfere with the current build" + ) + endif() message( FATAL_ERROR "In-source build is not supported. Please, use an empty directory for building the project." diff --git a/docs/ROADMAP.md b/docs/ROADMAP.md index 10eb3ea814..43e5108489 100644 --- a/docs/ROADMAP.md +++ b/docs/ROADMAP.md @@ -2,15 +2,11 @@ This document contains tentative plans for changes and improvements of note in upcoming versions of the HELICS library. All dates are approximate and subject to change, but this is a snapshot of the current planning thoughts. See the [projects](https://github.com/GMLC-TDC/HELICS/projects) for additional details -## \[3.4\] ~ Late October 2022 +## \[3.4\] ~ November 2022 - Full xSDK compatibility - Full Dynamic Federation support - Single thread cores -- Iteration for entering initializing mode -- Enable data aggregation -- Wildcard support for subscribing -- Catchall interface of some type - Separate Java Interface - Observer App @@ -20,3 +16,12 @@ This document contains tentative plans for changes and improvements of note in u - Enable mesh networking in HELICS - Separate octave interface - Tag based subscriptions +- Enable data aggregation +- Wildcard support for subscriptions +- Catchall interface of some type + +## Further in the future + +- Updated MPI core +- Some sort of rollback operations +- Remote procedure call type of federate diff --git a/vcpkg.json b/vcpkg.json index 7907147c7f..8663d45220 100644 --- a/vcpkg.json +++ b/vcpkg.json @@ -1,6 +1,6 @@ { "name": "helics", - "version-string": "3.3.0", + "version-string": "3.3.1", "description": "Hierarchical Engine for Large-scale Infrastructure Co-Simulation (HELICS)", "homepage": "https://helics.org/", "default-features": ["zeromq", "ipc", "webserver", "encryption"],