Changelog

Changes since 2018.10

New features

Containers library

  • New Corrade::Containers::NoCreate tag for constructing instances equivalent to a moved-from state. This tag was used in Magnum already, moving it here to make it available to a wider set of APIs.

Utility library

Changes and improvements

PluginManager library

  • Plugin interfaces now have the pluginInterface() function optional to make implementing hot-reload interfaces less verbose

Build system

Bug fixes

  • It was not possible to use TestSuite::Compare::File with CORRADE_COMPARE_WITH() because its symbols were not exported by mistake
  • The FILES section in corrade_add_test() was mistakenly ignored everywhere except Android and Emscripten, making cross-platform testing more prone to errors. Now ctest properly fails when the FILES section contains a file that doesn't exist.

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.