Changelog

See also:

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 Crosscompiling for Android for more information.

New features

Math library

GL library

Platform libraries

Primitives library

Trade library

Changes and improvements

  • The CompressedPixelStorage class and related APIs are now available on all targets including OpenGL ES and WebGL, however at the moment, until a compatibility code path is implemented, the GL library expects that all parameters are at their defaults.

DebugTools library

GL library

Text library

Platform libraries

Plugins

Build system

Bug fixes

  • Engine startup info was not properly printed to Android log since introducing the --magnum-log option in version 2018.02
  • Dropped Google Closure Compiler from Emscripten toolchains, it was bringing more harm than good (see mosra/magnum#211)
  • Working around Emscripten issue where -s USE_PTHREADS=1 would cause all shader sources containing Unicode characters to be truncated to empty strings. See the "emscripten-pthreads-broken-unicode-shader-sources" workaround description and mosra/magnum#239 for details.
  • GL::Attribute::DataType::HalfFloat was not available on WebGL 2 by mistake
  • A wrong code path for GL::Framebuffer::checkStatus() was selected on WebGL 1 by mistake
  • Fixed MAGNUM_PLUGINS_DIR variables to contain proper absolute location by default again.

Deprecated APIs

Potential compatibility breakages, removed APIs

Documentation

  • A new Developers guide page containing step-by-step checklists for maintainers and core developers
  • A new set of platform-specific guides containing extended information that was previously scattered across Platform application class docs and elsewhere
  • Completely reworked Android building documentation, now using Gradle CMake integration instead of the outdated and no longer supported Apache Ant workflow.
  • The Primitives namespace now has contains images visualizing how each primitive looks
  • Compiling majority of code snippets to ensure they don't get out of sync with the code

2018.02

Released 2018-02-15, tagged as v2018.02. See the release announcement for a high-level overview.

Dependency changes

New features

Audio library

DebugTools library

Math library

Platform libraries

Primitives library

Shaders library

  • Ability to construct all Shaders classes without an OpenGL context present using NoCreate

Text library

Trade library

Changes and improvements

Math library

Platform library

Shaders library

Build system

  • Continuous testing for Linux, macOS, 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 (see mosra/magnum#99, mosra/magnum#120, mosra/magnum#142, mosra/magnum#203)
  • Support for CMake subprojects. You can now clone Magnum 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. See mosra/magnum#49. mosra/magnum#140.
  • Reworked CMake buildsystem to use the new imported target workflow, see Usage with CMake for more information (see mosra/magnum#103)
  • CMake targets are now organized in folders for better development experience in IDEs such as Visual Studio or Xcode
  • Added Homebrew package
  • Improvements and dependency updates to the Debian package (see mosra/magnum#119)
  • Ability to build OpenGL tests also on Windows and macOS (see BUILD_GL_TESTS CMake option)
  • Ability to override the implicit plugin directory using a MAGNUM_PLUGINS_DIR CMake cache variable
  • Ability to override deploy directory (used for example by Emscripten) using a MAGNUM_DEPLOY_PREFIX CMake cache variable
  • Better handling of compiled-in resources in static build. You don't need to manually register resources when using Shaders library in static builds (see mosra/magnum-examples#9)
  • MACOSX_RPATH is now enabled by default on CMake 3.0+ (see mosra/magnum#126
  • Enabling only C++ in CMake project() call, if possible, to speed up initial CMake run
  • Windowless application libraries now make use of the BUILD_STATIC_PIC CMake option
  • Fixed FindSDL2.cmake module to work out-of-the-box on Windows and macOS (see mosra/magnum#166)
  • Fixed FindSDL2.cmake to link to EGL when targeting GLES (see mosra/magnum-examples#9)
  • Bundling a patched version of FindOpenAL.cmake to make it working on Emscripten

Bug fixes

Deprecated APIs

Potential compatibility breakages, removed APIs

Performance improvements

  • Reduced size of and number of allocations in Mesh class.

Documentation

Changelogs for previous versions are available in Archived changelogs.