Changelog

Changes since 2019.01

New features

Containers library

Utility library

Changes and improvements

Containers library

TestSuite library

  • When a test executed through CTest fails on Android, the uploaded test executable is kept in /data/local/tmp so it's possible to debug it manually later. See the Android testing docs for more information.
  • Android tests ran through CTest have stderr redirected to stdout because otherwise the adb bridge causes them to be extremely out-of-sync

Build system

  • MSYS2 packages are now in official repositories, installable directly via pacman
  • The CORRADE_CXX_STANDARD preprocessor macro learned support for the upcoming C++2a standard. The equivalent CMake property can now be set to 20 to pass the -std=c++2a flag to GCC and Clang and /std:c++latest to MSVC.
  • It's now possible to use the TestSuite library via CMake subprojects also on Android, iOS and Emscripten
  • Explicitly disabling a MSVC linker optimization that causes seemingly similar signals to be conflated together, causing erratic behavior. This is done automatically for CMake-based projects, see the Interconnect::Emitter documentation for more information when using custom buildsystems, see also mosra/corrade#51.

Bug fixes

Deprecated APIs

  • Single-argument Utility::Arguments::setHelp() is now deprecated in favor of Utility::Arguments::setGlobalHelp() to avoid it being used for documenting named arguments by accident.
  • Utility::Directory::fileExists() is now deprecated in favor of Utility::Directory::exists(). It was named like this to prevent it from looking like it works on directories only, but such name then caused people to ask if it works on directories as well, not helping anything.

Potential compatibility breakages, removed APIs

Documentation

2019.01

Released 2019-02-04, tagged as v2019.01.

Dependency changes

  • Minimal supported GCC version is now 4.8.1, GCC 4.7 is not supported anymore. Minimal Clang version is now 3.3, since that's the first version with a complete C++11 support. See also mosra/magnum#274.
  • Minimal supported CMake version is now 3.1. Older versions are not supported anymore and all workarounds for them were removed. Download a prebuilt release of a newer version if you need to use Corrade on older systems (such as Ubuntu 14.04 or Debian 8). See also mosra/magnum#274.

New features

  • Various Corrade features are now being available also as single-header libraries for easier integration into your projects. See Single-header libraries for more information.

Containers library

Utility library

Changes and improvements

Containers library

PluginManager library

Utility library

  • Prefixed or prefix-ignoring Utility::Arguments now work better with 3rd party argument parsers which may be less restrictive about argument name format; arguments that are ignored are not checked for key validity anymore (see mosra/magnum#305)

Build system

Bug fixes

Deprecated APIs

Potential compatibility breakages, removed APIs

Documentation

2018.10

Released 2018-10-23, tagged as v2018.10.

New features

Containers library

PluginManager library

Utility library

Changes and improvements

Containers library

PluginManager library

  • Plugins are now loaded from the filesystem in an alphabetical order for predictable behavior across different systems

TestSuite library

  • Adapted Emscripten test runner markup for consistency with the m.css theme used in Magnum
  • It's now possible to have non-copyable and non-moveable TestSuite::Comparator specializations

Utility library

Build system

  • There's now a PPA for Ubuntu packages. See Packages for Debian, Ubuntu and derivatives for more information.
  • The Resource compiler utility is now fully standalone even with shared builds to minimize annoying first-time-use issues. It's also possible to build just this utility without anything else for example for crosscompiling, by enabling only WITH_RC and disabling all other CMake options.
  • Due to changes in Xcode 10, CMake before 3.12 would fail during the build of Corrade. To prevent that, when Xcode 10 is detected, the build aborts with a clear message upfront, telling the user to upgrade to CMake 3.12. See mosra/corrade#52 and cmake/cmake#18099.

Bug fixes

Documentation

  • All code snippets are now compiled, ensuring no deprecated APIs are used and no accidental compile errors are present
  • TestSuite::Comparator documentation mistakenly stated that it's possible to have multiple operator()() overloads for a single pseudo-type. Due to implementation limitations it's not.

2018.04

Released 2018-05-01, tagged as v2018.04.

Dependency changes

  • Building for Android now requires CMake 3.7 with builtin Android crosscompilation support, the old toolchains were removed. Only the Clang and libc++ toolchain is now supported, support for GCC and libstdc++ was dropped, as it was still missing some important C++11 functionality. See Cross-compiling for Android for more information.

New features

PluginManager library

TestSuite library

Utility library

Build system

  • Stable version of Corrade is now available as a binary package in the ArchLinux [community] repo
  • Homebrew macOS packages were updated to install the stable version by default
  • Fixed the Debian package to not include a revision. While just a warning on Ubuntu, it's a hard error on Debian. (See mosra/corrade#44.)

Bug fixes

  • The Android ADB test runner was not correctly propagating TestSuite CORRADE_TEST_* environment variables to the executable
  • Wrong destruction order of PluginManager::Manager instances could lead to an infinite loop if cross-manager plugin dependencies were involved. Now an assertion fires instead.
  • Fixed usage of Utility::ConfigurationValue specializations to support types without default constructors and be able to return non-default-constructed instances for empty values.

Deprecated APIs

Potential compatibility breakages, removed APIs

Documentation

  • A new Developers guide page containing step-by-step checklists for maintainers and core developers
  • Updating the docs with compiled code snippets to ensure they don't get out of sync with the code
  • Various documentation updates, clarifications and fixes

2018.02

Released 2018-02-15, tagged as v2018.02. See the release announcement for a high-level overview.

Dependency changes

New features

  • MSVC 2015 and 2017 support in master branch. It needs some workarounds, thus the compatibility is controlled using MSVC2015_COMPATIBILITY / MSVC2017_COMPATIBILITY CMake option, which is then exposed as CORRADE_MSVC2015_COMPATIBILITY / CORRADE_MSVC2017_COMPATIBILITY CMake variable and preprocessor macro. See mosra/corrade#34.
  • Windows RT (Store/Phone) support. Builds for that platform have CORRADE_TARGET_WINDOWS_RT CMake variable and preprocessor macro defined.
  • iOS support, integration of TestSuite with Xcode XCTest
  • WebAssembly support when building for Emscripten

Containers library

PluginManager library

  • Name passed to plugin constructors is now the aliased name instead of the actual name, allowing the plugins to have different functionality based on name with which they are loaded (for example an image converter plugin can export different file format if it's loaded as JpegImageConverter or PngImageConverter). New PluginManager::AbstractPlugin::plugin() function returns the aliased name.

TestSuite library

Utility library

Changes and improvements

Containers library

PluginManager library

TestSuite library

Utility library

Build system

  • Continuous testing for Linux, OSX, Windows MSVC, Windows MinGW, Windows RT, iOS, Android and Emscripten on Travis CI and AppVeyor CI, with code coverage on codecov.io; replacing the unmaintained and outdated Jenkins configuration
  • Support for CMake subprojects. You can now clone Corrade into a subdirectory in your project and add it using add_subdirectory(). The find_package() command will then use the CMake subproject instead of looking for it in system-wide locations.
  • Reworked CMake buildsystem to use the new imported target workflow, see Using Corrade with CMake for more information
  • CMake targets are now organized in folders for better development experience in IDEs such as Visual Studio or Xcode
  • Enabling -Wmissing-prototypes warning on Clang when CORRADE_USE_PEDANTIC_FLAGS property is enabled
  • It's now possible to build only parts of the library using WITH_* CMake options and find_package() needs to request particular parts of the library that are used; see Downloading and building Corrade and Using Corrade with CMake for more information
  • corrade_add_plugin() now properly installs plugin *.dll to bin/ and *.lib to lib/ on Windows
  • Added Homebrew package (see mosra/corrade#22)
  • Added corrade_find_dlls_for_libs() CMake macro
  • MACOSX_RPATH is now enabled by default on CMake 3.0+
  • Enabling only C++ in CMake project() call, if possible, to speed up initial CMake run
  • Fixed building on TDM-GCC (see mosra/corrade#35)
  • Fixed various MSVC compilation issues (see mosra/corrade#28)
  • Various fixes for builds without deprecated features enabled (see mosra/corrade#24, mosra/corrade#32)
  • Properly passing /std:c++14 or /std:c++14 when CORRADE_CXX_STANDARD is set to 14 or 17

Bug fixes

Deprecated APIs

Potential compatibility breakages, removed APIs

Documentation

  • New documentation theme powered by m.css and related massive updates of everything
  • Various updates and clarifications to the Coding style page
  • All example code is put into public domain (or UNLICENSE) to free you from any legal obstacles when reusing the code in your apps.
  • The Downloading and building Corrade documentation now prefers package installation instead of manual build
  • Documented how to use Vcpkg packages
  • Various other updates (see mosra/corrade#26, mosra/corrade#30)

Changelogs for previous versions are available in Archived changelogs.