All notable changes to this project will be documented in this file. This project adheres to Semantic Versioning.
- Checkpointing is now supported in C++ and Fortran as well
- Added built-in profiling feature
- New object-oriented Fortran API (existing API also still available)
- New Instance.list_settings() function
- Build support for macOS with CLang and G++/GFortran
- Build support for Cray machines and compilers
- Compiling with MPI and linking without or vice versa is now impossible
- Fixed MessagePack build failure on old OSes
- Fixed resource allocation for instance sets
- Planner now detects F_INIT -> O_F loops and gives an error
- Manager correctly handles instances that never register
- Last lines of log now printer to screen on error for smoother problem solving
- Various small fixes and improvements
Instance.reuse_instance no longer accepts apply_overlay argument. Use InstanceFlags.DONT_APPLY_OVERLAY when creating the instance instead.
LIBMUSCLE_Instance_create signature has changed, this might lead to errors like:
30 | instance = LIBMUSCLE_Instance_create(ports, MPI_COMM_WORLD, root_rank) | 1 Error: Type mismatch in argument ‘flags’ at (1); passed INTEGER(4) to TYPE(libmuscle_instanceflags)
You may provide an explicit InstanceFlags() argument, or use named arguments:
instance = LIBMUSCLE_Instance_create(ports, LIBMUSCLE_InstanceFlags(), MPI_COMM_WORLD, root_rank) instance = LIBMUSCLE_Instance_create(ports, communicator=MPI_COMM_WORLD, root=root_rank)
DataConstRef
items can no longer be added to aData
containing a list or dict. The newly addedDataConstRef::list
andDataConstRef::dict
should be used instead.
- Maarten at Ignition Computing for implementing much of the above
- Peter for debugging the MessagePack build issue
- Peter, Jon and Gavin for ARCHER2 access and support
- Koen for testing macOS build support
- Everyone who reported issues and contributed feature ideas!
- Connecting multiple conduits to outgoing ports
- Checkpointing (preview, not fully reliable and open to change)
- Clang support
- Intel® compiler support
- Error in case different versions of MUSCLE3 are used
- TCP latency (performance)
- More helpful messages for configuration errors
- Small documentation improvements
- Python 3.6 support
- Maarten at Ignition Computing for implementing much of the above
- The ITER Organisation for funding much of this work
- MUSCLE3 now starts submodels and other components (using QCG-PilotJob)
- Automatic resource management for components on HPC
- Build and installation process now even easier
- Improved error messages and reliability
- Cleaner and more informative logging output
- TCP performance and scalability improvements
- Various issues when building and running on HPC clusters
- Many small fixes
- Python 3.5 support
- Removed gRPC for faster and more reliable builds
- Pipe-based networking, as it had no benefits and some issues
- Stefan, Merijn and Maarten for reporting issues
- Piotr and Bartek for creating and supporting QCG-PilotJob
- compute_elements are now called components in .ymmsl files
- Use latest OpenSSL library when installing it automatically
- Handling of non-contiguous and F-order numpy arrays
- C++ memory usage for large dicts/lists now more reasonable
- Improved shutdown when Python submodel crashes
- Logging warning message
- Accessing settings from C++ now more flexible
- Python produces more detailed logs to aid in debugging
- Improved pkg-config set-up
- Improved build system output to help find problems
- Documentation on logging in Python
- Protobuf dependency build now more compatible
- C++ list/dict building functions
- C++ use-after-free when receiving grids
- Pavel for testing and reporting issues
- Dongwei for testing and reporting issues
- Support for sending and receiving multidimensional grids/arrays
- Support for Python 3.8
- Python 3.5.1 support
- Build compatibility on more operating systems
- Olivier for testing, reporting and fixing build issues
- Pavel for testing and reporting build issues
- Hamid for testing and reporting build issues
- Ben for testing and reporting build issues
- Data::key() now returns std::string instead of DataConstRef.
- Data::value() now return Data rather than DataConstRef
- Support for Fortran, including MPI
- Fixes to examples
- Small documentation improvements
- Improved compatibility with other packages using gRPC
- Pavel for reporting documentation/examples issues
- Derek for testing on Eagle
- Dongwei for reporting the gRPC issue
- Support for C++
- Support for MPI in C++
- Cluster/HPC networking
- Fatal logic errors now throw instead of exiting, so that you have a chance to shut down the model cleanly before exiting.
- Instance.exit_error() was replaced by Instance.error_shutdown(), which no longer exits the process, it just shuts down the Instance.
- Central MUSCLE 3-managed settings are called settings everywhere now, not parameters. As a result, the API has changed in several places.
Initial release of MUSCLE 3.
- Coupling different submodel instances
- Spatial and temporal scale separation and overlap
- Settings management
- Combining features
- Python support
- Initial distributed execution capability