Oct
30
2013

October updates to Magnum

IT

Summary of changes during the first two months after public release. Two new ports, usability improvements, OpenGL limit queries and introduction of API deprecation.

The October snapshot is available under snapshot-2013-10 tag in Corrade, Magnum, Magnum Plugins and Magnum Integration GitHub repositories. This article will describe the most important changes, for all the commits that went to master branches since first public release in August (tagged snapshot-2013-08) see logs in Corrade, Magnum, Magnum Plugins and Magnum Integration, respectively.

API deprecation and backwards compatibility

Because the library is constantly evolving, some APIs will be replaced with faster, safer or more intuitive versions from time to time. The old API is then marked as deprecated and scheduled for removal in some future release. The libraries are source compatible, but not binary compatible, as full binary compatibility might impose unwanted performance issues, which is usually not wanted for high-performance graphics frameworks.

Both Corrade and Magnum libraries are by default built with deprecated APIs included. However, to make your code future-proof and more robust, you should disable building of deprecated APIs by disabling BUILD_DEPRECATED CMake option. Information about whether given library is built with deprecated APIs or not is exposed via CORRADE_BUILD_DEPRECATED or MAGNUM_BUILD_DEPRECATED CMake variable and also preprocessor definition. Please note that the deprecated APIs will be periodically removed after some time (on which I have yet to decide, but the deprecation period will be not shorter than six months).

The documentation now also contains list of deprecated APIs in both Corrade and Magnum, information about whether CORRADE_BUILD_DEPRECATED and MAGNUM_BUILD_DEPRECATED is enabled or not is now also printed in magnum-info.

Corrade

Dependency changes

No dependency changes in this release.

New features

  • Mac OS X port (thanks to David Lin)
  • 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

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

Removed APIs

No deprecated API was removed in this release.

Magnum

Dependency changes

  • Removed GLEW dependency in favor of built-in glLoadGen, resulting in greatly reduced compilation time and less compatibility issues. The base library thus now depends only on Corrade and OpenGL libraries.

New features

Changes

  • Buffer::setData() and Buffer::setSubData() are now accepting Containers::ArrayReference for more convenient usage
  • Platform::*Application::viewportEvent() is not called at all if window size doesn't change, allowing for less cumbersome ofscreen rendering setups
  • Removed redundant operators from Math::*Matrix, use vectors for component-wise multiplication and division instead
  • Documentation updates and improvements to make the library more accessible for newcomers
  • Various build system updates for better compile times and easier installation

Bug fixes

  • Fixed compilation with Clang's libc++
  • Fixed compatibility of builtin shaders with GLSL 1.20 and GLSL ES 1.00, added shader compilation tests to prevent this issue from reappearing

Deprecated APIs

Removed APIs

No deprecated API was removed in this release.

Magnum Plugins

Dependency changes

No dependency changes in this release.

New features

Changes

  • Reworked ColladaImporter internals to avoid double deletions
  • Documentation updates and improvements to make the library more accessible for newcomers
  • Various build system updates for better compile times and easier installation

Bug fixes

  • Fixed compilation of plugins using std::u32string on MinGW
  • Fixed linker errors on MinGW

Magnum Integration

Dependency changes

No dependency changes in this release.

Changes

  • Documentation updates and improvements to make the library more accessible for newcomers
  • Various build system updates for better compile times and easier installation

Deprecated APIs

No API was deprecated in this release.

Removed APIs

No deprecated API was removed in this release.

» Add comment

Discussion: 0 comments

No comments yet.