Archived changelogs
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
- Support for plugin aliases in PluginManager library.
- Range-based-for support in Containers::
LinkedList. - Added convenience PluginManager::
Manager:: loadAndInstantiate() function. - Added Containers::
*Array:: slice() and friends. - Utility::
Debug is able to reuse existing operator<<
overloads for std::ostream (see mosra/ corrade#12) - Added Utility::
String:: beginsWith() and Utility:: String:: endsWith().
Changes
- TestSuite::
Compare:: Container is now able to compare non-copyable containers such as Containers:: Array (see mosra/ corrade#9). - Using
const char
instead ofconst unsigned char
for raw binary data. - Better algorithm for comparing floating-point values in TestSuite.
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. TheWITH_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.
- Removed deprecated ability to use relative includes (e.g.
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
- Initial Android support, see building documentation for more information.
- Utility::
AndroidLogStreamBuffer class for sending messages to Android system log - CORRADE_
TARGET_ ANDROID and CORRADE_ TARGET_ APPLE CMake and preprocessor variables
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
- Fixed corner case when Utility::
Resource:: getRaw() could unexpectedly return nullptr
.
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
- MSVC 2013 support in the
compatibility
branch - Ability to create Containers::
Array from initializer list - Containers::
Array:: release() function to release ownership of the data, similar to std:: unique_ptr:: release() - Containers::
Array[Reference]:: data() function for easier explicit data access and also disallowing pointer conversion of rvalue Array as it would result in access to deleted memory (GCC 4.8.1/Clang only). - Improved state change signals in Interconnect::
StateMachine - Support for multiple template arguments in CORRADE_
COMPARE_ AS() macro in TestSuite library. - Utility::
String:: join() and Utility:: String:: joinWithoutEmptyParts() functions. - Utility::
String:: fromArray() convenience functions to create std:: string from either character array or nullptr
- Ability to retrieve list of all compiled-in resources in given group using Utility::
Resource:: list() - Added
read()
,readString()
,write()
andwriteString()
functions to Utility::Directory - New CORRADE_
HAS_ TYPE() type traits macro, which now allows to use Utility:: Debug to print any container that is iterable with C++11 range-based for. - New CORRADE_
TARGET_ WINDOWS and CORRADE_ TARGET_ UNIX preprocessor definitions and CMake variables. - All classes in documentation are now shown with corresponding
#include
path
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
Utility::String::split(..., bool)
is deprecated, use separate functions split() and splitWithoutEmptyParts() instead.
Potential compatibility breakages, removed APIs
- Removed
Utility::log2()
andUtility::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 tosrc/Corrade
,examples/
directory was moved tosrc/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
- macOS port (thanks to David Lin, see mosra/
corrade#4) - Fixed and updated Emscripten (HTML5) port
- Interconnect library can now connect signals to non-member functions and C++11 lambdas. See Interconnect::
connect() for more information. - Added simple StateMachine implementation into Interconnect library.
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
- CORRADE_
VERIFY() macro in TestSuite can now be conveniently used also on classes with explicit operator bool()
- Fixed assertion failure on
-long-arguments
parsing in Utility::Arguments
Deprecated APIs
- Interconnect::
Emitter:: connect() is deprecated, use Interconnect:: connect() instead.
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.