Changelog

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.