Skip to content

Commit

Permalink
Merge pull request #1666 from GMLC-TDC/develop
Browse files Browse the repository at this point in the history
Develop 2.6.1 release
  • Loading branch information
nightlark authored Oct 15, 2020
2 parents 2ef4529 + de7bea1 commit f6d43da
Show file tree
Hide file tree
Showing 219 changed files with 2,503 additions and 640 deletions.
1 change: 1 addition & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
*.player text eol=lf

*.jpg binary
*.JPG binary
*.png binary
*.mat binary

Expand Down
41 changes: 37 additions & 4 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,39 @@ 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.

## [2.6.0][] ~ 2020-08-20
## [2.6.1][] - 2020-10-15

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

## [2.6.0][] - 2020-08-20

Bug fixes and major logging update

Expand Down Expand Up @@ -45,7 +77,7 @@ Bug fixes and major logging update

- The previous logger including logger.h has been replaced with spdlog

## [2.5.2][] ~ 2020-06-15
## [2.5.2][] - 2020-06-15

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

Expand All @@ -61,7 +93,7 @@ Bug fix release for some build issues and a fix to the `wait_for_current_time` f
- Add print_systeminfo flag to root helics_benchmark command (#1417)
- Added cppcheck github action for PR's

## [2.5.1][] ~ 2020-06-05
## [2.5.1][] - 2020-06-05

### Changed

Expand Down Expand Up @@ -771,4 +803,5 @@ This is a major revision so this changelog will not capture all the changes that
[2.5.0]: https://github.com/GMLC-TDC/HELICS/releases/tag/v2.5.0
[2.5.1]: https://github.com/GMLC-TDC/HELICS/releases/tag/v2.5.1
[2.5.2]: https://github.com/GMLC-TDC/HELICS/releases/tag/v2.5.2
[2.5.2]: https://github.com/GMLC-TDC/HELICS/releases/tag/v2.6.0
[2.6.0]: https://github.com/GMLC-TDC/HELICS/releases/tag/v2.6.0
[2.6.1]: https://github.com/GMLC-TDC/HELICS/releases/tag/v2.6.1
20 changes: 14 additions & 6 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -11,20 +11,20 @@ cmake_minimum_required(VERSION 3.4)
# Make sure users don't get warnings on a tested (3.4 to 3.17) version of CMake. For most of the
# policies, the new version is better (hence the change). We don't use the 3.0...3.16 syntax because
# of a bug in MSVC 15.7 built-in and modified CMake 3.11
if(CMAKE_VERSION VERSION_LESS 3.17)
if(CMAKE_VERSION VERSION_LESS 3.18)
cmake_policy(VERSION ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION})
else()
cmake_policy(VERSION 3.17)
cmake_policy(VERSION 3.18)
endif()

project(HELICS VERSION 2.6.0)
project(HELICS VERSION 2.6.1)

# -----------------------------------------------------------------------------
# HELICS Version number
# -----------------------------------------------------------------------------
set(HELICS_VERSION_BUILD)
# use ISO date YYYY-MM-DD
set(HELICS_DATE "2020-08-20")
set(HELICS_DATE "2020-10-15")

set(HELICS_VERSION_UNDERSCORE
"${HELICS_VERSION_MAJOR}_${HELICS_VERSION_MINOR}_${HELICS_VERSION_PATCH}"
Expand Down Expand Up @@ -100,9 +100,17 @@ if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT AND CMAKE_PROJECT_NAME STREQUAL P
endif(WIN32)
endif()

# Warning if CMAKE_INSTALL_PREFIX is empty. Likely set by using the wrong environment variable.
if(NOT CMAKE_INSTALL_PREFIX)
message(
WARNING
"CMAKE_INSTALL_PREFIX is set to nothing. If you are using an environment variable for handling prefix paths, that variable might not have been set before using it with CMake to set the CMAKE_INSTALL_PREFIX option."
)
endif()

# Check to make sure the install prefix isn't the build folder, if it is, build errors will happen
get_filename_component(tmp_install_prefix ${CMAKE_INSTALL_PREFIX} REALPATH)
get_filename_component(tmp_proj_bindir ${PROJECT_BINARY_DIR} REALPATH)
get_filename_component(tmp_install_prefix "${CMAKE_INSTALL_PREFIX}" REALPATH)
get_filename_component(tmp_proj_bindir "${PROJECT_BINARY_DIR}" REALPATH)
# Windows paths are case insensitive
if(WIN32)
string(TOLOWER "${tmp_install_prefix}" tmp_install_prefix)
Expand Down
2 changes: 1 addition & 1 deletion appveyor.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
clone_depth: 1

version: 2.6.0.{build}
version: 2.6.1.{build}

image: Visual Studio 2015

Expand Down
4 changes: 2 additions & 2 deletions benchmarks/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,10 @@ if(hasParent)
add_subdirectory(helics)
else()
cmake_minimum_required(VERSION 3.5.1)
if(CMAKE_VERSION VERSION_LESS 3.17)
if(CMAKE_VERSION VERSION_LESS 3.18)
cmake_policy(VERSION ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION})
else()
cmake_policy(VERSION 3.17)
cmake_policy(VERSION 3.18)
endif()
set(HELICS_BUILD_TESTS OFF CACHE INTERNAL "")
set(BUILD_PYTHON_INTERFACE OFF CACHE INTERNAL "")
Expand Down
1 change: 1 addition & 0 deletions config/cmake/addBoost.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ if(WIN32 AND NOT UNIX_LIKE)

set(
boost_versions
boost_1_74_0
boost_1_73_0
boost_1_72_0
boost_1_71_0
Expand Down
41 changes: 14 additions & 27 deletions config/cmake/addlibzmq.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,7 @@ else()
set(zmq_shared_build ON)
endif()

if(MINGW)
set(${PROJECT_NAME}_LIBZMQ_VERSION v4.3.1)
else()
set(${PROJECT_NAME}_LIBZMQ_VERSION v4.3.2)
endif()
set(${PROJECT_NAME}_LIBZMQ_VERSION v4.3.3)

string(TOLOWER "libzmq" lcName)

Expand All @@ -47,17 +43,6 @@ if(NOT CMAKE_VERSION VERSION_LESS 3.11)
# Fetch the content using previously declared details
fetchcontent_populate(libzmq)

# this section to be removed at the next release of ZMQ for now we need to
# download the file in master as the one in the release doesn't work
file(RENAME ${${lcName}_SOURCE_DIR}/builds/cmake/ZeroMQConfig.cmake.in
${${lcName}_SOURCE_DIR}/builds/cmake/ZeroMQConfig.cmake.in.old
)
file(
DOWNLOAD
https://raw.githubusercontent.com/zeromq/libzmq/master/builds/cmake/ZeroMQConfig.cmake.in
${${lcName}_SOURCE_DIR}/builds/cmake/ZeroMQConfig.cmake.in
)

endif()

hide_variable(FETCHCONTENT_SOURCE_DIR_LIBZMQ)
Expand All @@ -81,17 +66,6 @@ else() # CMake <3.11

set(${lcName}_BINARY_DIR ${PROJECT_BINARY_DIR}/_deps/${lcName}-build)

if(NOT EXISTS ${${lcName}_SOURCE_DIR}/builds/cmake/ZeroMQConfig.cmake.in.old)
file(RENAME ${${lcName}_SOURCE_DIR}/builds/cmake/ZeroMQConfig.cmake.in
${${lcName}_SOURCE_DIR}/builds/cmake/ZeroMQConfig.cmake.in.old
)
file(
DOWNLOAD
https://raw.githubusercontent.com/zeromq/libzmq/master/builds/cmake/ZeroMQConfig.cmake.in
${${lcName}_SOURCE_DIR}/builds/cmake/ZeroMQConfig.cmake.in
)
endif()

endif()

# Set custom variables, policies, etc. ...
Expand Down Expand Up @@ -124,6 +98,17 @@ set(WITH_PERF_TOOL
OFF
CACHE INTERNAL ""
)

set(WITH_LIBSODIUM_STATIC
OFF
CACHE INTERNAL ""
)

set(WITH_NORM
OFF
CACHE INTERNAL ""
)

set(ENABLE_CPACK
OFF
CACHE INTERNAL ""
Expand Down Expand Up @@ -180,6 +165,8 @@ hide_variable(ENABLE_EVENTFD)
hide_variable(ZMQ_CV_IMPL)
hide_variable(BUILD_TESTS)
hide_variable(ENABLE_INTRINSICS)
hide_variable(ENABLE_INTRINSICS)
hide_variable(ZMQ_OUTPUT_BASENAME)

hide_variable(ZMQ_WIN32_WINNT)

Expand Down
4 changes: 2 additions & 2 deletions docs/ROADMAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,14 @@

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

## \[2.7\] ~ 2020-09-24
## \[2.7\] ~ 2020-11-15

This will be the last of the 2.X series releases, there will likely be at least one patch release after this before fully moving to 3.0

- Internal text based (probably JSON) message format option for general backwards compatibility
- Function deprecations to prepare people to move to 3.0

## \[3.0\] ~ 2020-08-30 Beta, Final release in September
## \[3.0\] ~ 2020-11-6 Beta, Final release Mid November

Upgrade minimum compilers and build systems. Currently planned minimum targets are gcc 7.0, clang 5.0, MSVC 2017 15.7, XCode 10.1, and CMake 3.10. This is a setup which should be supported on Ubuntu 18.04 repositories. Minimum Boost version will also be updated though Boost is becoming less critical for the HELICS core so may not be that important. The likely minimum tested target will likely be 1.65.1 though the core might work with older versions and its use can be disabled completely. Certain features may require a newer boost version(1.70) than what would be available on Ubuntu 18.04. General target requirements will allow HELICS to build on the most recent 2 LTS versions of Ubuntu using readily available repo packages. Minimum required compilers for building on macOS and systems using ICC will include Xcode 10 and ICC 19. The minimum ZMQ version will also be bumped up to 4.2. General policy for Mac builds will be supporting Xcode compilers on versions of MacOS that receive security upgrades which is generally the last 3 versions, though 10.1+ and 11 will likely be the only 2 supported at HELICS 3.0 release, and support minor releases for at least 2 years. MSVC compilers will be supported for at least 2 years from release date, an appropriate CMake (meaning slightly newer than the compiler) will also be required for Visual Studio builds.

Expand Down
4 changes: 4 additions & 0 deletions docs/configuration/FederateFlags.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,10 @@ This applies to Input interface. If enabled this flag tells the inputs to check
If specified on a federate it indicates the federate may be slow in responding, and to not disconnect the federate if things are slow.
If applied to a core or broker, it is indicative that the broker doesn't respond to internal pings quickly so they cannot be used as a mechanism for timeout. For federates this option doesn't do much but its role will likely be expanded as more robust timeout and coordination mechanics are developed.

## debugging

If a program is being debugged and may halt execution the `--debugging` flag may be used to turn off some timeouts and keep everything working a little more smoothly. This flag is the equivalent of "--slow_responding" for a federate and "--slow_responding --disable_timer` for a broker/core.

## terminate on error

If the `terminate_on_error` flag is set then a federate encountering an internal error will trigger a global error and cause the entire federation to abort. If the flag is not set then errors will only be local. Errors of this nature are typically the result of configuration errors. For example having a required publication that is not used or incompatible units or types on publications and subscriptions.
Loading

0 comments on commit f6d43da

Please sign in to comment.