Archived changelogs

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

  • Containers::ArrayView::data() on non-const data now properly returns non-const pointer
  • Worked around function template merging on MSVC, which caused different signals being merged into one in Interconnect library
  • Added a workaround to interface macro defined by windows.h that broke PluginManager headers
  • Calling CORRADE_EXPECT_FAIL() more than once in a single block caused multiple definition errors
  • Second row in Utility::Arguments help output was not properly indented for named arguments
  • Prefixed Utility::Arguments failed on encountering value starting with -
  • Utility::Directory::mkpath() now properly returns false if path creation fails
  • Fixed Utility::Directory::rm() for directories on Emscripten
  • Fixed unaligned reads and iterative digesting in Utility::Sha1
  • Properly re-running CMake and updating dependencies when resource configuration file added by corrade_add_resource() changes
  • Fixed Containers::LinkedList::move() called on an item itself

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)

2015.05

Released 2015-05-09, tagged as v2015.05. See the release announcement for a high-level overview.

Dependency changes

No dependency changes in this release.

New features

Changes

Build system

  • CMake now always installs FindCorrade.cmake to library-specific location, making it usable without providing own copy of the file in depending projects. The WITH_FIND_MODULE option is no longer needed. See mosra/corrade#17.
  • Displaying all header files, plugin metadata files and resource files in project view to make use of some IDEs less painful (such as QtCreator)
  • Properly checking for C++ standard compiler flags to avoid adding conflicting ones (see mosra/corrade#10)
  • Gentoo ebuild (see mosra/corrade#16)
  • Better handling of RPATH on macOS (see mosra/corrade#18)

Bug fixes

  • Removed static initializers to avoid memory corruption in static builds (see mosra/magnum#90).
  • Plugin manager now correctly folows dependency order when unloading plugins.
  • Fixed issues with plugin manager having multiple global instances in static builds (see mosra/corrade#15)
  • Fixed a crash in Clang caused by overly clever code (see mosra/magnum#84)

Deprecated APIs

No API was deprecated in this release.

Potential compatibility breakages, removed APIs

  • Removed unused plugin replacement feature, as it had questionable benefits and no real use.
  • All functionality deprecated in 2014.01 has been removed, namely:
    • Removed deprecated ability to use relative includes (e.g. #include <Utility/Debug.h>), use absolute paths (#include <Corrade/Utility/Debug.h>) instead.
    • Removed deprecated Utility::String::split() overload, use either split() or splitWithoutEmptyParts() instead.

2014.06

Released 2014-06-30, tagged as v2014.06. See the release announcement for a high-level overview.

Dependency changes

  • Minimal required GCC version is now 4.7. Support for GCC 4.6 has been moved to compatibility branch.

New features

Changes

  • Libraries and plugins in debug build configuration are installed to different locations, making it possible to have debug and release libraries installed alongside each other
  • Compiler compatibility mode is now automatically detected by CMake to make the building easier
  • It's no longer needed to explicitly test validity of pointer returned from PluginManager::Manager::instance()
  • Improved error reporting in PluginManager library
  • Thorough documentation review, fixes and improvements

Bug fixes

Deprecated APIs

No API was deprecated in this release.

Potential compatibility breakages, removed APIs

  • All functionality deprecated in 2013.10 has been removed. In particular the deprecated Interconnect::Emitter::connect() was removed, use Interconnect::connect() instead.

2014.01

Released 2014-01-21, tagged as v2014.01. See the release announcement for a high-level overview.

Dependency changes

No dependency changes in this release.

New features

Changes

  • TestSuite tests now display ?: <unknown>() in test output for test cases without any checks to make them more discoverable
  • Skipped test cases in TestSuite tests are displayed without useless file/line information (unlike failed test cases, where the information is needed)
  • All deprecated functions and types are now emitting compiler warnings to encourage updating the code
  • Various documentation and example updates and improvements

Bug fixes

  • TestSuite::Compare::*File* is comparing the files in binary mode to avoid platform-dependent EOL issues.
  • Utility::Resource now properly handles empty files when compiling resources.
  • Utility::Directory is now working properly under Windows.
  • Fixed compilation issues with Clang and libc++
  • Fixed various compilation issues under MSVC (and worked around a much larger amount of compiler bugs)
  • Adapted Utility::Configuration test to work under MinGW (see mosra/corrade#7)

Deprecated APIs

Potential compatibility breakages, removed APIs

  • Removed Utility::log2() and Utility::pow2() utility functions, as they weren't used anywhere anymore (and the latter one was a bad joke)
  • Removed useless metadata from PluginManager::PluginMetadata class (author name, version, description), as they don't fit current use case anymore (they were used back in 2007 when Corrade was part of Kompas). These metadata can be easily added back as custom configuration values.
  • Removed now useless Utility::Translator class, it was used only for plugin metadata and was prime example of bad design (exposing unguarded naked pointers)

Internal changes

  • Using Jenkins Continuous Integration to maintain compilable and bug-free state of the project more easily. Currently GCC 4.8, 4.7, 4.6, 4.5, 4.4, Clang 3.3, Clang 3.3 with libc++, Emscripten, x86-32/x86-64 Native Client and MinGW32 compilers are tested with both shared and static libraries. Separately testing builds with deprecated features enabled and disabled.
  • All files from src/ directory were moved to src/Corrade, examples/ directory was moved to src/examples (required to make inter-project includes absolute, as mentioned above)

2013.10

Released 2013-10-30, tagged as v2013.10. See the release annoucement for a high-level overview.

Dependency changes

No dependency changes in this release.

New features

Changes

  • Returning std::unique_ptr instead of naked pointer from PluginManager::Manager::instance() for better usability and to avoid accidental memory leaks
  • Documentation updates and improvements to make the library more accessible for newcomers
  • Various build system updates for better compile times and easier installation

Build system

  • Added a WITH_FIND_MODULE CMake option to install Find modules for Corrade into a system location (see mosra/corrade#2)
  • GCC*_COMPATIBILITY is sometimes needed to be set explicitly (see mosra/corrade#1)
  • Installing *.dll and *.lib files to pproper locations on Windows (see mosra/corrade#5)

Bug fixes

Deprecated APIs

Potential compatibility breakages, removed APIs

No deprecated API was removed in this release.

2013.08

Released 2013-08-30, tagged as v2013.08. See the Magnum project announcement for a high-level overview.

2012.02

Released 2012-02-08, tagged as v2012.02. See the project announcement for a high-level overview.