Skip to content

Releases: LWJGL/lwjgl3

LWJGL 3.4.3

Choose a tag to compare

@Spasi Spasi released this 23 Aug 21:31
3.4.3
30fac9b

Changes since 3.4.2:

Bindings

  • bgfx: Updated to API version 156 (up from 149)
    • Added support for Windows ARM64.
  • glfw: Updated to 3.5.1 (up from 3.4)
  • harfbuzz: Updated to 14.3.1 (up from 14.2.1)
  • KTX: Updated to 5.0.0-rc2 (up from 5.0.0-rc1)
  • libffi: Updated to 3.8.0 (up from 3.7.1)
  • lmdb: Updated to 1.0.1 (up from 0.9.35)
    • LMDB v1.0 is incompatible with earlier versions.
    • Use v0.9 mdb_dump with v1.0 mdb_load to migrate existing databases.
  • mimalloc: Updated to 3.5.0 (up from 3.3.2)
  • OpenXR: Updated to 1.1.62 (up from 1.1.61)
  • rpmalloc: Updated to 2.0.1 (up from 2.0.0)
  • SDL: Updated to 3.4.14 (up from 3.4.12)
  • Shaderc: Updated to 2026.3 (up from 2026.2)
    • glslang: Updated to 16.4.0 (up from 16.2.0)
    • SPIRV Tools: Updated to 2026.3.rc1 (up 2026.2.rc1)
  • Vulkan: Updated to 1.4.360 (up from 1.4.356)

Fixes

  • Core: Fixed handling of long arguments in runtime-generated downcalls that require wrapping.
  • Core: Fixed deadlock that can occur when calling DetachCurrentThread on JVM exit. (#1140)
  • harfbuzz: Loading an experimental library now also automatically loads the core harfbuzz library. (#1144)
  • liburing: Fixed io_uring_mlock_size(_params) return type. (#1142)
  • mimalloc: MemoryAllocator::getAlignedAlloc now returns a compatible function. (#1135)
  • SDL: Fixed SDL_GetDefaultLogOutputFunction return type.
  • SDL: Fixed SDL_SetCursor to accept a NULL cursor. (#1138)

LWJGL 3.4.2

Choose a tag to compare

@Spasi Spasi released this 13 Jul 19:19
3.4.2
32593af

Changes since 3.4.1:

Bindings

  • Added mimalloc bindings.
  • Assimp: Updated to 6.0.5 (up from 6.0.3)
  • bgfx: Updated to API version 149 (up from 136)
  • freetype: Updated to 2.14.3 (up from 2.14.1)
  • harfbuzz: Updated to 14.2.1 (up from 12.3.2)
    • Added experimental harfbuzz-raster & harfbuzz-vector libraries.
    • Added harfbuzz-gpu library.
  • hwloc: Updated to 2.14.0 (up from 2.12.2)
  • jemalloc: Updated to 5.3.1 (up from 5.3.0)
  • KTX: Updated to 5.0.0-rc1 (up from 4.4.2)
  • libffi: Updated to 3.7.1 (up from 3.5.2)
  • LLVM/Clang: Updated to 22.1.5 (up from 21.1.2)
  • lmdb: Updated to 0.9.35 (up from 0.9.33)
  • liburing: Updated to 2.15 (up from 2.13)
  • meshoptimizer: Updated to 1.2.0 (up from 1.0.0)
  • Nuklear: Updated to 4.13.3 (up from 4.13.0)
  • OpenAL Soft: Updated to 1.25.2 (up from 1.25.1)
  • OpenCL: Added support for OpenCL 3.1.
  • OpenGL: Added missing APPLE extensions. (#1105)
  • OpenXR: Updated to 1.1.61 (up from 1.1.54)
  • RenderDoc: Updated to 1.7.0 (up from 1.6.0)
  • rpmalloc: Updated to 2.0.0 (up from 1.4.5)
  • SDL: Updated to 3.4.12 (up from pre-release 3.4.1)
  • Shaderc: Updated to 2026.2 (up from 2026.2)
    • Updated SPIRV Tools to 2026.2.rc1 (up from 2026.1)
  • stb
    • Updated stb_image_resize to 2.18 (up from 2.17)
  • vma: Updated to 3.4.0 (up from 3.3.0)
  • Vulkan: Updated to 1.4.356 (up from 1.4.342)

Fixes

  • Core: Struct parameters passed by value to LWJGL 3 callbacks are now supported with the FFM backend. (#1107)
  • Core: Upcall allocations with the FFM backend are now tracked when the debug allocator is enabled.
  • Freetype: Fixed FT_LOAD_TARGET_* constant names. (#1119)
  • HarfBuzz: Fixed AAT constant and function names. (#1123)
  • SDL: Hid SDL_DisplayMode::internal. (#1110)

Improvements

  • Core: MemoryUtil backends are now configurable at runtime. (#1111)
    • See Configuration::MEMORY_BACKEND for details.
    • The new default on JDK 25+ is FFM-based downcalls/upcalls and Unsafe-based memory access.
  • Core: The default memory allocator is now mimalloc.
    • If available on the class/module-path.
    • Fallbacks: rpmalloc -> jemalloc -> system allocator
  • Core: New features in the runtime bindings generator.
    • Now supports C long types in downcalls/upcalls with the @FFMCLong annotation on Java long carriers.
    • Now supports nested anonymous structs and unions.
  • Core: The SharedLibraryLoader now prints exceptions when it is able to extract a library, but not load it. (#1120)
    • Requires Configuration::DEBUG_LOADER to be enabled.
  • FreeBSD: LWJGL now requires FreeBSD 14.4 or later. (up from 13.5)

Breaking changes

  • Core: The MemorySegment access methods have been moved from MemoryUtil to MemoryUtilFFM.
  • Unsafe accessor methods for private struct members are now package private.

LWJGL 3.4.1

Choose a tag to compare

@Spasi Spasi released this 03 Feb 23:53
3.4.1
b800ccf

Changes since 3.4.0:

Bindings

  • Assimp: Updated to 6.0.3 (up from 6.0.2)
  • harfbuzz: Updated to 12.3.2 (up from 12.3.0)
  • OpenAL Soft: Updated to 1.25.1 (up from 1.25.0)
  • SDL: Updated to pre-release 3.4.1 (up from 3.4.0)
  • Shaderc: Updated to 2026.1 (up from 2025.5)
    • Updated glslang to 16.2.0 (up from 16.1.0)
    • Updated SPIRV Tools to 2026.1 (up from 2025.5)
  • Vulkan: Updated to 1.4.342 (up from 1.4.338)

Fixes

  • Windows: Reverted to building with Visual Studio 2022 to fix another case of #1005.

Breaking Changes

  • Shaderc/glslang: Extracted the resource limits interface (resource_limits_c.h) to a separate class. (#1101)
    • Added Configuration.GLSLANG_RESOURCE_LIBRARY_NAME
  • Shaderc/SPIRV Tools: Extracted the optimizer interface to a separate class. (#1101)
    • Added Configuration.SPIRV_TOOLS_OPTIMIZER_LIBRARY_NAME

LWJGL 3.4.0

Choose a tag to compare

@Spasi Spasi released this 18 Jan 14:31
3.4.0
2edd24d

Changes since 3.3.6:

Bindings

  • Added RenderDoc bindings.
  • Added SDL 3 bindings.
  • Added libspng bindings.
  • Assimp: Updated to 6.0.2 (up from 5.4.3)
  • bgfx: Updated to API version 136 (up from 129)
  • FMOD: Updated to 2.03.11 (up from 2.03.04)
  • freetype: Updated to 2.14.1 (up from 2.13.3)
  • harfbuzz: Updated to 12.3.0 (up from 10.1.0)
  • hwloc: Updated to 2.12.2 (up from 2.11.2)
  • KTX: Updated to 4.4.2 (up from 4.3.2)
  • libffi: Updated to 3.5.2 (up from 3.4.6)
  • liburing: Updated to 2.13 (up from 2.8)
  • LLVM/Clang: Updated to 21.1.2 (up from 19.1.0)
  • meshoptimizer: Updated to 1.0.0 (up from 0.22)
  • msdfgen: Updated to 1.13.0 (up from 1.11.0)
    • Added error correction functions.
    • Added optional advance parameter to msdf_ft_font_load_glyph*.
    • Replaced msdf_shape_has_inverse_y_axis with msdf_shape_set/get_y_axis_orientation.
  • NativeFileDialog: Update to 1.3.0 (up from 1.2.1)
  • Nuklear: Updated to 4.13.0 (up from 4.12.3)
  • OpenAL Soft: Updated to 1.25.0 (up from 1.24.1)
    • Added AL_SOFT_bformat_hoa extension.
  • OpenGL (ES): Added latest extensions.
    • EXT_fragment_shading_rate
    • EXT_mesh_shader
    • EXT_shader_realtime_clock
    • EXT_shader_texture_samples
  • OpenXR: Updated to 1.1.54 (up from 1.1.43)
  • Opus: Updated to 1.6.0 (up from 1.5.2)
  • Shaderc: Updated to 2025.5 (up from 2024.4)
    • Added bindings to glslang.
    • Added bindings to SPIRV Tools.
  • SPIRV-Cross: Updated to 0.68.0 (up from 0.64.0)
  • stb
    • Updated stb_image_resize to 2.17 (up from 2.12)
  • tinyexr: Updated to 1.0.12 (up from 1.0.8)
  • tinyfiledialogs: Updated to 3.19.1 (up from 3.18.1)
  • vma: Updated to 3.3.0 (up from 3.2.0)
  • Vulkan: Updated to 1.4.338 (up from 1.4.304)
    • Includes MoltenVK 1.4.1 (up from 1.2.11)
  • Zstd: Updated to 1.5.7 (up from 1.5.6)

LWJGL bindings no longer include API documentation in javadoc form. What remains:

  • Native struct definitions.
  • Native function signatures for downcalls (new in 3.4.0) and upcalls.
  • The package-info javadoc in each module now also includes links to useful resources, such as:
    • The official API documentation.
    • The official source repository.
    • Guides, tutorials, SDKs, etc.

LWJGL no longer includes the following bindings:

  • lwjgl-cuda
  • lwjgl-libdivide
  • lwjgl-meow
  • lwjgl-nanovg: the Blendish and OUI bindings only
  • lwjgl-openvr
  • lwjgl-ovr
  • lwjgl-sse
  • lwjgl-tootle

Improvements

  • Core: Added the Runtime Bindings Generator.
    • A preview API, in org.lwjgl.system.ffm, that allows users to define and use custom bindings.
    • Based on the Foreign Function & Memory (FFM) and ClassFile APIs (requires JDK 25 or later).
  • Core: Added a new backend for downcalls, upcalls and off-heap memory access based on FFM.
    • Enabled by default on JDK 25 or later.
    • LWJGL is now fully functional with --sun-misc-unsafe-memory-access=deny.
    • See the FFM Guide for details.
  • Core: Added memCopy support for Java arrays. (#972)
    • Array to buffer
    • Buffer to array
    • Corresponding unsafe overloads
  • FreeBSD: LWJGL now requires FreeBSD 13.5 or later. (up from 13.3)
  • Linux: x86_64 shared libraries are now built with GCC 15.1 (up from GCC 11.2)
    • The minimum GLIBC version is now 2.28. (up from 2.17)
  • Linux: non-x86_64 shared libraries are now built with GCC 12.3 (up from GCC 11.4)
    • No change to minimum GLIBC version (2.35).
  • Windows: Shared libraries are now built with Visual Studio 2026 (up from 2022)

Fixes

  • Opus: Fixed missing function exports in Windows binaries.
  • tinyfiledialogs: Fixed tinyfd_messageBox signature to support the yesnocancel dialog type.
  • Vulkan: Fixed stack OOME on VkInstance creation with recent drivers.
  • Vulkan: Fixed support for Vulkan 1.4.

Breaking Changes

  • Generator: Removed deprecated mallocStack/callocStack methods from structs.
  • OpenCL: Fixed the carrier type of cl_ulong constants. (#1087)
    • Now mapped to long to avoid unintentional sign extension for negative values.
  • Vulkan: MoltenVK on x64 now requires macOS 11.0 or later. (up from 10.13)

LWJGL 3.3.6

Choose a tag to compare

@Spasi Spasi released this 04 Jan 23:16
3.3.6
96114bc

Changes since 3.3.5:

Bindings

  • vma: Updated to 3.2.0 (up from 3.1.0)
  • Vulkan: Updated to 1.4.304 (up from 1.4.303)
  • xxhash: Updated to 0.8.3 (up from 0.8.2)

Fixes

  • GLFW: Library override paths with Unicode characters are now supported on Windows.
  • Windows: Reverted to MSVC in an attempt to fix #1005.

LWJGL 3.3.5

Choose a tag to compare

@Spasi Spasi released this 15 Dec 22:23
3.3.5
ce7f7c1

Changes since 3.3.4:

Bindings

  • Assimp: Updated to 5.4.3 (up from 5.4.2)
  • bgfx: Updated to API version 129 (up from 128)
  • FMOD: Updated to 2.03.04 (up from 2.02.21)
  • freetype: Updated to 2.13.3 (up from 2.13.2)
  • harfbuzz: Updated to 10.1.0 (up from 9.0.0)
  • hwloc: Updated to 2.11.2 (up from 2.11.1)
  • libdivide: Updated to 5.1 (up from 5.0)
    • Added MathUtil multi-release support for Long.divideUnsigned/Long.remainderUnsigned and Math.unsignedMultiplyHigh.
  • liburing: Updated to 2.8 (up from 2.6)
  • LLVM/Clang: Updated to 19.1.0 (up from 18.1.7)
  • lmdb: Updated to 0.9.33 (up from 0.9.32)
  • lz4: Updated to 1.10.0 (up from 1.9.4)
  • meshoptimizer: Updated to 0.22 (up from 0.21)
  • NativeFileDialog: Update to 1.2.1 (up from 1.2.0)
  • Nuklear: Updated to 4.12.3 (up from 4.12.1)
  • OpenAL Soft: Updated to 1.24.1 (up from 1.23.1)
    • Added ALC_SOFT_system_events extension.
    • Added AL_EXT_debug extension.
    • Added AL_EXT_direct_context extension.
    • macOS: 10.15+ is now required (up from 10.11).
  • OpenXR: Updated to 1.1.43 (up from 1.1.38)
  • Shaderc: Updated to 2024.4 (up from 2024.2)
  • SPIRV-Cross: Updated to 0.64.0 (up from 0.61.0)
  • stb
    • Updated stb_image_resize to 2.12 (up from 2.09)
  • Vulkan: Updated to 1.4.303 (up from 1.3.289)
    • Includes MoltenVK 1.2.11 (up from 1.2.10)
  • Yoga: Updated to 3.2.0 (up from 3.1.0)

Improvements

  • Core: Migrated jsr305 nullability annotations to JSpecify (https://jspecify.dev). (#1008)
    • The org.jspecify:jspecify dependency remains optional.
  • Core: Added Configuration.DISABLE_HASH_CHECKS, a dynamic option that disables shared library hash checks. (#1007)
  • FreeBSD: LWJGL now requires FreeBSD 13.3 or later. (up from 13.2)
  • OpenGL: Added Configuration.OPENGL_CONTEXT_API option to control the default OpenGL context management API.
  • OpenGL: The Configuration.OPENGL(ES)_CONTEXT_API options now support "OSMesa" as a value.
    • Similar to GLFW_OSMESA_CONTEXT_API, LWJGL will try to load libOSMesa when enabled, without having to change Configuration.OPENGL_LIBRARY_NAME.
  • OpenGL: The default context management API is now EGL when Wayland is detected.
  • msdfgen: Added support for glyph index based msdfgen-ext APIs. (#1002)

Fixes

  • Core: Fixed support for va_list parameters.

Breaking Changes

  • Core: Replaced thread-local storage of errno/GetLastError() with virtual output parameters. (#1003)
    • The LibCErrno.getErrno() and WinBase.getLastError() methods have been removed.
    • System calls in org.lwjgl.system.linux.*, org.lwjgl.system.windows.* and org.lwjgl.opengl.WGL now take an optional output parameter for the error code.
    • This approach is similar to Linker.Option.CaptureCallState in Project Panama's FFM API.
  • Core: Dropped support for non-LTS JDK versions earlier than the latest LTS version.
    • Supported JDK versions: 8, 11, 17, 21+
    • The module-info class and the first batch of multi-release overrides now live under META-INF/versions/11 instead of META-INF/versions/9.

LWJGL 3.3.4

Choose a tag to compare

@Spasi Spasi released this 17 Jul 22:54
3.3.4
813400f

Changes since 3.3.3:

Bindings

  • Added msdfgen bindings.
  • Assimp: Updated to 5.4.2 (up from 5.2.5)
  • bgfx: Updated to API version 128 (up from 122)
    • Windows: support for the Direct3D 9 backend has been dropped.
  • CUDA: Updated to 12.5.1 (up from 12.1.0)
  • FMOD: Updated to 2.02.21 (up from 2.02.16)
  • glfw: Updated to 3.4 (up from 3.3.8)
    • Added GLFW_UNLIMITED_MOUSE_BUTTONS, GLFW_SCALE_FRAMEBUFFER, GLFW_WIN32_SHOWDEFAULT.
    • Added glfwGetWindowTitle, glfwGetCocoaView.
  • glfw: Added experimental support for IME. (#946)
    • Added GLFW_SOFT_FULLSCREEN, GLFW_IME, GLFW_MANAGE_PREEDIT_CANDIDATE and GLFW_X11_ONTHESPOT.
    • Added glfwGetPreeditCursorRectangle, glfwSetPreeditCursorRectangle, glfwResetPreeditText, glfwGetPreeditCandidate.
    • Added glfwSetPreeditCallback, glfwSetIMEStatusCallback, glfwSetPreeditCandidateCallback.
  • harfbuzz: Updated to 9.0.0 (up from 8.2.0)
  • hwloc: Updated to 2.11.1 (up from 2.9.3)
  • KTX: Updated to 4.3.2 (up from 4.3.0-alpha3)
  • libffi: Updated to 3.4.6 (up from 3.4.4)
  • liburing: Updated to 2.6 (up from 2.4)
  • lmdb: Updated to 0.9.32 (up from 0.9.31)
  • LLVM/Clang: Updated to 18.1.7 (up from 16.0.0)
  • meshoptimizer: Updated to 0.21 (up from 0.19)
  • NativeFileDialog: Update to 1.2.0 (up from 1.1.0)
  • Nuklear: Updated to 4.12.1 (up from 4.10.6)
  • OpenVR: Updated to 2.5.1 (up from 1.26.7)
    • Added support for Linux ARM64
  • OpenXR: Updated to 1.1.38 (up from 1.0.29)
  • Opus: Updated to 1.5.2 (up from 1.4.0)
  • rpmalloc: Updated to 1.4.5 (up from 1.4.4)
  • Shaderc: Updated to 2024.2 (up from 2023.6)
  • SPIRV-Cross: Updated to 0.61.0 (up from 0.57.0)
  • stb
    • Updated stb_image to 2.30 (up from 2.28)
    • Updated stb_image_resize to 2.09 (up from 0.97)
  • tinyexr: Updated to 1.0.8 (up from 1.0.7)
  • tinyfiledialogs: Updated to 3.18.1 (up from 3.13.3)
  • vma: Updated to 3.1.0 (up from 3.0.1)
  • Vulkan: Updated to 1.3.289 (up from 1.3.264)
    • Includes MoltenVK 1.2.10 (up from 1.2.5)
  • Yoga: Updated to 3.1.0 (up from 2.0.0)
  • Zstd: Updated to 1.5.6 (up from 1.5.5)

Improvements

  • FreeBSD: Added support for the FreeBSD operating system, x64 architecture. (#421)
    • Maven classifier: freebsd
  • Linux: Added support for the PowerPC 64 LE architecture. (#495)
    • Maven classifier: linux-ppc64le
  • Linux: Added support for the RISC-V 64 architecture. (#890)
    • Maven classifier: linux-riscv64
  • Linux: ARM/PowerPC/RISC-V shared libraries are now built with GCC 11 (up from GCC 7).
  • Windows: Shared libraries are now built with Clang/LLVM (clang-cl toolset) when possible.
  • Vulkan: Made VkMemoryRequirements mutable for the vmaAllocateMemory(Pages) functions. (#937)

Fixes

  • Core: Fixed callback wrapper memory leak with the CHM closure registry. (#927)
  • Core: The SharedLibraryLoader will now always test if System::load works before choosing the extract path. (#987)
  • bgfx: Fixed bgfx_is_frame_buffer_valid to accept BGFXAttachment.Buffer. (#993)
  • JAWT: Fixed JAWT_MACOSX_USE_CALAYER value.
  • LLVM: Fixed LLVMGetBufferStart to return ByteBuffer instead of String. (#934)
  • LLVM: Fixed LookupIntrinsicID to return unsigned instead of void. (#950)
  • Nuklear: Fixed auto-sizing of nk_stroke_polyline, nk_stroke_polygon, nk_fill_polygon buffers. (#978)
  • tinyfd: The aDefaultPath parameter of tinyfd_selectFolderDialog is now nullable. (#922)

Breaking Changes

  • Linux: ARM/PowerPC/RISC-V shared libraries now require GLIBC version 2.35 (up from 2.27)
  • macOS: LWJGL now requires macOS 10.11/El Capitan or later (up from 10.9/Mavericks)
  • meshoptimizer: Fixed autosizing issues. (#981)
    • For consistency across the API, auto-sizing of some parameters was removed and the corresponding count parameters were made explicit.
    • Auto-sizing is now always based on input parameters, the destination buffers are only checked for enough capacity.
  • stb: stb_image_resize2.h replaced stb_image_resize.h with a new API.

LWJGL 3.3.3

Choose a tag to compare

@Spasi Spasi released this 16 Sep 15:57
3.3.3
f0ec143

Changes since 3.3.2:

Bindings

  • bgfx: Updated to API version 122 (up from 118)
    • macOS: support for the OpenGL backend has been dropped.
  • EGL: Added latest extensions.
    • EGL_EXT_gl_colorspace_bt2020_hlg
  • FMOD: Updated to 2.02.16 (up from 2.02.13)
  • freetype: Updated to 2.13.2 (up from 2.13.0)
  • harfbuzz: Updated to 8.2.0 (up from 7.1.0)
  • hwloc: Updated to 2.9.3 (up from 2.9.0)
  • KTX: Updated to 4.3.0-alpha3 (up from 4.1.0-rc3)
  • liburing: Updated to 2.4 (up from 2.4-dev)
  • lmdb: Updated to 0.9.31 (up from 0.9.30)
  • meshoptimizer: Updated to 0.19 (up from 0.18)
  • NativeFileDialog: Update to 1.1.0 (up from 1.0.2)
    • Added Configuration.NFD_LINUX_PORTAL which enables the XDG Desktop Portal backend on Linux. (#893)
  • Nuklear: Updated to 4.10.6 (up from 4.10.5)
  • OpenAL Soft: Updated to 1.23.1 (up from 1.23.0)
    • Added AL_SOFT_buffer_length_query extension.
    • Added AL_SOFT_source_start_delay extension.
    • Added AL_SOFT_UHJ_ex extension.
  • OpenCL: Added latest extensions.
    • cl_ext_image_from_buffer
    • cl_ext_image_requirements_info
    • cl_intel_bfloat16_conversions
    • cl_intel_split_work_group_barrier
    • cl_intel_subgroup_matrix_multiply_accumulate
    • cl_intel_subgroup_split_matrix_multiply_accumulate
  • OpenGL: Added latest extensions.
    • GL_NV_uniform_buffer_std430_layout
  • OpenVR: Updated to 1.26.7 (up from 1.23.7)
  • OpenXR: Updated to 1.0.29 (up from 1.0.27)
  • Opus: Updated to 1.4.0 (up from 1.3.1)
  • Shaderc: Updated to 2023.6 (up from 2023.3)
  • SPIRV-Cross: Updated to 0.57.0 (up from 0.51.0)
  • tinyexr: Updated to 1.0.7 (up from 1.0.2)
  • tinyfiledialogs: Updated to 3.13.3 (up from 3.9.0)
  • Vulkan: Updated to 1.3.264 (up from 1.3.246)
    • Includes MoltenVK 1.2.5 (up from 1.2.3)
  • xxhash: Updated to 0.8.2 (up from 0.8.1)
  • Yoga: Updated to 2.0.0 (up from 1.19.0)
  • Zstd: Updated to 1.5.5 (up from 1.5.4)

Improvements

  • Core: LWJGL is now compatible with GraalVM Native Image. (#875)

Fixes

  • Core: Java memset/memcpy implementations no longer touch memory outside the target range. (#892)
  • CUDA: Fixed library name on Linux. (#884)
  • Nuklear: Fixed the result auto-sizing of nk_font_atlas_bake. (#903)
  • OpenGL: Added support for libglvnd. (#880)
    • LWJGL will now try to load libGLX.so.0 before libGL.so.1 on Linux, matching GLFW.
    • Use Configuration.OPENGL_LIBRARY_NAME and GLFWNativeGLX::setPath to override this behavior.

LWJGL 3.3.2

Choose a tag to compare

@Spasi Spasi released this 01 Apr 16:24
3.3.2
4f9767c

Changes since 3.3.1:

Bindings

  • Added FMOD bindings. (#295)
    • Native binaries are not included, because the license does not permit redistribution. They must be downloaded and deployed separately from LWJGL.
  • Added FreeType bindings. (#611)
    • The default build includes HarfBuzz and exports its full API.
  • Added HarfBuzz bindings. (#611)
    • The default build works standalone.
    • FreeType interop can be enabled by making HarfBuzz use FreeType's shared library (see Configuration.HARFBUZZ_LIBRARY_NAME).
  • Added hwloc bindings. (#98)
  • Added KTX (Khronos Texture) bindings. (#660)
  • Windows: Added bindings to dpapi.h. (#851)
  • Assimp: Updated to 5.2.5 (up from 5.2.2)
    • KHR_draco_mesh_compression is now supported via the bundled Draco library. (#773)
  • bgfx: Updated to API version 118 (up from 115)
  • CUDA: Updated to 12.1.0 (up from 11.5.0)
  • glfw: Updated to latest 3.3.8 (up from 3.3.6)
    • Added GLFW_WAYLAND_LIBDECOR, GLFW_WAYLAND_PREFER_LIBDECOR and GLFW_WAYLAND_DISABLE_LIBDECOR.
    • Added GLFW_CURSOR_CAPTURED.
    • Added GLFW_WAYLAND_APP_ID.
    • Added GLFW_POSITION_X, GLFW_POSITION_Y and GLFW_ANY_POSITION.
  • jemalloc: Updated to 5.3.0 (up from 5.2.1)
  • libffi: Updated to 3.4.4 (up from 3.4.2)
  • liburing: Updated to 2.4-dev (up from 2.1)
  • lmdb: Updated to 0.9.30 (up from 0.9.28)
  • lz4: Updated to 1.9.4 (up from 1.9.3)
  • LLVM/Clang: Updated to 16.0.0 (up from 13.0.1)
  • meshoptimizer: Updated to 0.18 (up from 0.17)
  • NativeFileDialog: Switched to Native File Dialog Extended (#823)
    • This is a fork of the original library with new features and breaking API changes.
  • Nuklear: Updated to 4.10.5 (up from 4.9.6)
    • Added the font baking API.
  • OpenAL Soft: Updated to 1.23.0 (up from 1.21.1)
    • Added ALC_SOFT_loopback_bformat extension.
    • Added ALC_SOFT_output_mode extension.
    • Added ALC_SOFT_reopen_device extension.
    • Added AL_SOFT_callback_buffer extension.
    • Added AL_SOFT_effect_target extension.
    • Added AL_SOFT_events extension. (#854)
    • Added AL_SOFT_UHJ extension.
    • Added AL_SOFTX_hold_on_disconnect extension. (#795)
  • OpenGL(ES): Added latest extensions.
    • GL_EXT_framebuffer_blit_layers
    • GL_EXT_fragment_shading_rate
    • GL_EXT_fragment_shading_rate_attachment
    • GL_EXT_fragment_shading_rate_primitive
    • GL_EXT_separate_depth_stencil
    • GL_EXT_shader_samples_identical
  • OpenVR: Updated to 1.23.7 (up from 1.16.8)
  • OpenXR: Updated to 1.0.27 (up from 1.0.22)
  • Remotery: Updated to 1.2.1 (up from 1.0.0)
  • rpmalloc: Updated to 1.4.4 (up from 1.4.3)
  • Shaderc: Updated to 2023.3 (up from 2022.1)
  • SPIRV-Cross: Updated to 0.51.0 (up from 0.48.0)
  • stb
    • Updated stb_image to 2.28 (up from 2.27)
  • tinyexr: Updated to 1.0.2 (up from 1.0.1)
  • tinyfiledialogs: Updated to 3.9.0 (up from 3.8.8)
  • vma: Updated to 3.0.1 (up from 3.0.0-development)
  • Vulkan: Updated to 1.3.246 (up from 1.3.206)
    • Includes MoltenVK 1.2.3 (up from 1.1.7)
  • Zstd: Updated to 1.5.4 (up from 1.5.2)

Improvements

  • Linux: x64 shared libraries are now built with GCC 11.2 (up from GCC 7.5)
    • The minimum GLIBC version is now 2.17. (down from 2.27) (#842)
  • Windows: Shared libraries are now built with Visual Studio 2022 (up from 2019)
  • Core: Added support for JDK 19 (#799)
  • Core: Added MemoryUtil::memByteBuffer(Struct). It creates a ByteBuffer view of a struct value.
  • Core: More SharedLibraryLoader improvements. (#790)
    • The default Configuration.SHARED_LIBRARY_EXTRACT_DIRECTORY is now lwjgl_<trimmed_user_name>.
    • The default Configuration.SHARED_LIBRARY_EXTRACT_PATH now includes the CPU architecture. (<temp_root>/<extract_dir>/<version>/<arch>/)
    • Added Configuration.SHARED_LIBRARY_EXTRACT_FORCE.
  • Core: The string returned by Version::getVersion() now follows the Java version format (M.m.r+B or M.m.r-snapshot+B).
  • Core: Added Configuration.DEBUG_MEMORY_ALLOCATOR_FAST, a dynamic option that dramatically reduces the performance overhead of memory leak detection.
  • Core: Reduced the performance overhead of Configuration.DEBUG_STACK.
  • docs: The LWJGL javadoc is now generated with JDK 19 (up from JDK 10) for improved search functionality.
  • The .sha1 and .git files, used for validating LWJGL artifacts, are now stored under the META-INF folder.
  • glfw: It will now always be patched with the latest SDL_GameControllerDB version.
    • Reminder: glfwUpdateGamepadMappings can be used to update the mappings at runtime.
  • Nuklear: NK_BUTTON_TRIGGER_ON_RELEASE is now also defined on Linux & macOS, not only Windows, for consistency.
  • OpenXR: Added extension class javadoc.
    • Currently, only the overview section is included.
    • Also added a link that opens the OpenXR specification at the corresponding section for the extension.
  • Remotery: Made it easier to get started with Remotery profiling: (#784)
    • Users can now identify the commit used to build the Remotery bindings in the Remotery class javadoc.
    • A script that quickly clones the Remotery repository at that commit is also included.
      The viewer application at vis/index.html is guaranteed to be compatible with the LWJGL bindings.
    • Ported two simple Remotery samples (modules/samples/src/test/java/org/lwjgl/demo/util/remotery/).

Fixes

  • Core: Fixed Java/native library incompatibility detection. (#737)
  • Core: Fixed dlerror decoding to use UTF-8. (#738)
  • Core: Fixed Version::getVersion() when LWJGL is in the module path. (#770)
  • Core: Fixed handling of unsigned 8/16-bit integer parameters in JNI code. (#858)
  • Core: Many debug messages can no longer tear under concurrency. (#825)
  • Build: Fixed offline mode with multiple local architectures. (#740)
  • NanoSVG: Fixed auto-sizing of NSVGPath::pts buffer.
  • OpenCL: Fixed initialization on macOS 13. (#861)
  • Opus: Fixed pcm parameter type of opus_decode_float function. (#785)
  • Remotery: Fixed rmtSettings::free callback signature.
  • stb: Fixed stb_image_resize flag values. (#857)
  • Vulkan: Fixed definition of the VK_API_VERSION_PATCH macro. (#743)
  • Vulkan: Fixed EXT_debug_utils function dispatch. (#755)

Breaking Changes

  • Core: Introduced additional mangling of org.lwjgl.system.JNI method names for 8/16-bit integer parameters. (#858) (S)
  • NanoVG: The freeData parameters of nvgCreateFontMem* functions are now mapped to Java boolean. (S)
  • NativeFileDialog: Now uses the btzy/nativefiledialog-extended API. (S)
  • Nuklear: Renamed NkConvertConfig::null_texture to tex_null to match the change in the native API. (S)
(B): binary incompatible change
(S): source incompatible change

LWJGL 3.3.1

Choose a tag to compare

@Spasi Spasi released this 21 Feb 18:52
3.3.1
ad60275

Changes since 3.3.0:

Bindings

  • Added liburing bindings.
    • Can be found in the LWJGL core module (package org.lwjgl.system.linux.liburing).
  • Added OpenXR bindings. (#569)
  • Assimp: Updated to 5.2.2 (up from 5.1.0)
  • glfw: Updated to latest 3.3.6 (up from 3.3.5)
    • Added glfwGetGLXFBConfig.
    • Added glfwGetEGLConfig.
  • meshoptimizer: Updated to 0.17 (up from 0.16)
  • Nuklear: Updated to 4.9.6 (up from 4.09.0)
  • Shaderc: Updated to 2022.1 (up from 2021.3)
  • vma: Updated to latest 3.3.0-development
    • Added virtual allocator API.
    • Added VMA_MEMORY_USAGE_AUTO.
  • Vulkan: Updated to 1.3.206 (up from 1.2.198)
    • Includes MoltenVK 1.1.7 (up from 1.1.5)
  • xxhash: Updated to 0.8.1 (up from 0.8.0)
  • Zstd: Updated to 1.5.2 (up from 1.5.0)
    • Also, the LWJGL memory allocator is now used for internal allocations.

Improvements

  • GLFW: An alternative macOS build now supports Cocoa calls on any thread.
    • A different window toolkit (AWT, JavaFX, etc.) may now run at the same time as GLFW. It must be initialized before glfwInit is called.
    • Enabled with Configuration.GLFW_LIBRARY_NAME.set("glfw_async");.

Fixes

  • Core: Fixed extra NUL in string returned from SharedLibrary::getPath() on Linux & macOS. (#713)
  • Core: Fixed integer overflow when casting pointers on 32-bit architectures. (#720)
  • Core: Fixed rare NPE with Configuration.DEBUG_STACK enabled. (#721)
  • OpenCL: Fixed values of the KERNEL_ARG_ADDRESS_* constants. (#733)
  • OpenCL: Fixed value of KERNEL_ARG_TYPE_QUALIFIER constant. (#735)
  • vma: Fixed nullability of VmaVirtualAllocationCreateInfo::pUserData member.
  • Vulkan: All noautovalidity parameters/members are now regarded as nullable. (#702)