Release Notes 2025-06-05:

  • The make system has received a major update.

    • cmake minimum version is now 3.16. This value should be updated in all existing mira projects' top CMakeLists.txt file,
      to ensure consistent make behaviour!

    • Support for mira on Windows is completely dropped, enabling a lot of code cleanup (it had been not really maintained for years).
      Use of AddressSanitizer (ASan) and Ccache compiler cache can be enabled by global options (see make/GlobalConfig.cmake).

    • In some cases, small changes are required to package make definitions, package maintainers should see MIRAenvironment.changelog.

  • The runtime version check applied during manifest and library loading is now able to detect more cases of inconsistent lib versions,
    (e.g. from incomplete rebuilds), and the framework will throw an exception (essentially abort the application) if this
    is encountered during startup.
    Errors from library loading AFTER startup (e.g. when a visualization plugin is loaded triggered by user interaction) do NOT
    abort the application, they are logged as errors and can also be observed in the Libraries View (for local or remote frameworks).

  • XMLDom (used most prominently for configuration of applications) now supports xml macros, providing a way to much better organize complex content. SeeĀ https://www.mira-project.org/MIRA-doc/XMLMacrosPage.html.

  • The behaviour of reading from channels has significantly changed: For small datatypes, the ChannelRead object
    will now just hold a copy of the read channel slot's content, instead of locking and referencing it. This will be more efficient
    and in particular resolves a nasty deadlock error when a subscriber tries to read from a channel twice, possibly
    hidden through some call hierarchy.
    Datatypes must be marked using the new IsCheapToCopy trait to make use of this. All C++ fundamental types and "small" MIRA
    datatypes are defined as 'cheap to copy'. For other types, the channel read behavious is unchanged.

  • Thread monitoring data is now serializable, the ThreadMonitor tool in miracenter allows to observe remote frameworks.

  • The Framework option "--save-processed-config" is now accompanied by "--save-processed-config-annotated",
    which will not only show the complete result of the XML preprocessor, but also add source info (file+line) to each
    line of the document. Helpful for debugging complex configs consisting of nested inclusions.

  • mirapackage supports clientID/clientSecret potentially required by (GitLab) repositories. Repos at gitlab.metralabs.com
    do not require this info (yet), though.