Added
- 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
Improved
- 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
Backwards Incompatible changes
- `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:
.. code-block:: text
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:
.. code-block:: fortran
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 a ``Data`` containing a list or dict.
The newly added ``DataConstRef::list`` and ``DataConstRef::dict`` should be used
instead.
Thanks
- 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!