LWJGL v3.1.6 Release Notes

Release Date: 2018-02-04 // about 6 years ago
  • ๐Ÿ”„ Changes since 3.1.5:

    Bindings

    • โšก๏ธ bgfx: Updated to API version 60 (up from 55)
    • ๐Ÿš€ glfw: Updated to pre-release 3.3.0 version (up from 3.3.0 pre-release):
      • Support for lock key modifiers (GLFW_LOCK_KEY_MODS input mode, GLFW_MOD_CAPS_LOCK, GLFW_MOD_NUM_LOCK)
      • Support for string window hints (glfwWindowHintString, GLFW_COCOA_FRAME_NAME, GLFW_X11_CLASS_NAME, GLFW_X11_INSTANCE_NAME)
      • Support monitor & joystick user ponters (glfwSetMonitorUserPointer, glfwGetMonitorUserPointer, glfwSetJoystickUserPointer, glfwGetJoystickUserPointer)
      • Support for window content scale callbacks (glfwSetWindowContentScaleCallback)
      • Support for cursor hover tests (GLFW_HOVERED)
    • โšก๏ธ lz4: Update to 1.8.1 (up from 1.8.0)
    • โšก๏ธ Nuklear: Update to 3.00.2 (up from 2.00.4)
    • โšก๏ธ OpenVR: Updated to 1.0.12 (up from 1.0.10)
    • โšก๏ธ rpmalloc: Updated to 1.2.2 (up from 1.2.0)
    • stb
      • Updated stb_dxt to 1.08b (up from 1.0.7)
      • Updated stb_image to 2.18 (up from 2.16)
      • Updated stb_image_write to 1.08 (up from 1.07)
      • STBIW_ZLIB_COMPRESS can be overridden at runtime with stbi_zlib_compress.
      • Updated stb_truetype to 1.18 (up from 1.17)
      • Updated stb_vorbis to 1.13b (up from 1.11)
    • โšก๏ธ tinyfiledialogs: Updated to 3.2.9 (up from 3.2.4)
    • โšก๏ธ Vulkan: Updated to 1.0.68 (up from 1.0.65)
    • โšก๏ธ xxhash: Updated to 0.6.4 (up from 0.6.3)
    • โšก๏ธ Zstd: Updated to 1.3.4 (up from 1.3.2)
    • โšก๏ธ Yoga: Updated to 1.9.0 (up from 1.7.0)

    ๐Ÿ‘Œ Improvements

    • โž• Added JSR-305 nullability annotations to the core and all bindings. (#344)
      • Enables static analysis tools (FindBugs, IDEs) to detect accesses that could cause NullPointerException. Eliminating those improves the quality of LWJGL applications.
      • Enables better interopation with JVM-based languages that feature built-in null-safety. For example, see Kotlin's JSR-305 support.
    • โž• Added Configuration setting to disable function lookup checks.
    • lmdb: Databases are now binary compatible across 32 & 64-bit architectures. (#364)
      • MDB_VL32 is enabled on 32-bit builds.
    • ๐Ÿ‘ par_shapes: Patched to support 32-bit indices and extremely dense meshes.
    • stb_truetype: Exposed members of internal structures for advanced glyph packing customization. (#358)
    • ๐Ÿ‘ Tootle: Now supports the Direct3D rasterizer for overdraw optimization.

    ๐Ÿ›  Fixes

    • JPMS: A natives module now requires transitive the corresponding Java module, instead of the opposite. (#334)
      • Enables loading shared libraries from non-modular paths/JARs.
    • ๐Ÿšš JPMS: module-info files have been moved under META-INF/version/9/ (#334)
      • All LWJGL artifacts are now multi-release JAR files to avoid trouble with older tools that are not compatible with Java 9.
    • JPMS: Added appropriate requires static declarations to satisfy optional binding interop dependencies. (#369)
    • ๐Ÿ›  Fixed broken javadoc links in all bindings. Also updated URLs to avoid redirects.
    • โช bgfx: Restored default API thread encoder functions, that were erroneously removed in 3.1.4.
    • ๐Ÿ›  LibOVR: Fixed ovr_TraceMessage signature.
    • OpenAL: Fixed capability name of the AL_SOFT_source_resampler extension.
    • ๐Ÿ›  Tootle: Fixed pnClusterRemapOut parameter validation.

    ๐Ÿ’ฅ Breaking Changes

    • Several methods that previously accepted null/NULL and returned null, now require non-null input.
      • Applies to: struct & callback creation methods and memByteBuffer/memUTF8/stack.UTF8/etc.
      • Added corresponding methods with the Safe suffix that accept null/NULL, matching the old behavior.
      • With this change the common case (non-null input) requires no code changes and is warning/error-free. The uncommon case (null input) is recognizable (the suffix) and must be handled properly to eliminate warnings/errors.
    • Allocation methods that returned null/NULL on allocation failure, now throw OutOfMemoryError instead. This matches the behavior of ByteBuffer.allocateDirect.
      • Applies to: struct allocation methods and memAlloc/memCalloc/etc.
      • Does not apply to allocations via direct binding calls (e.g. LibCStdlib.malloc).
    • Getters of struct members that should never be NULL, throw NullPointerException instead of returning null when the struct instance is not initialized.
      • Use Struct::isNull to test pointer members of untrusted struct instances.
    • bgfx: Restored native mapping of bgfx_init(_vendorId) and bgfx_update_texture_cube(_side) parameters. (#368)
    • bgfx: uint16_t bitfield constants are now mapped to int. (#368)
    • glfw: glfwInitHintString has been renamed to glfwWindowHintString.
    • lmdb: Databases developed on 32-bit architectures must be recreated. (#364)
    • par_shapes: Changed par_shapes_mesh::triangles from uint16_t/ShortBuffer to uint32_t/IntBuffer.
    • stb_rect_pack: stbrp_rect::was_packed is now mapped to Java boolean.