Releases: LWJGL/lwjgl3
Releases · LWJGL/lwjgl3
Release list
LWJGL 3.4.3
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_dumpwith v1.0mdb_loadto 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
longarguments in runtime-generated downcalls that require wrapping. - Core: Fixed deadlock that can occur when calling
DetachCurrentThreadon 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::getAlignedAllocnow returns a compatible function. (#1135) - SDL: Fixed
SDL_GetDefaultLogOutputFunctionreturn type. - SDL: Fixed
SDL_SetCursorto accept aNULLcursor. (#1138)
LWJGL 3.4.2
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-vectorlibraries. - Added
harfbuzz-gpulibrary.
- Added experimental
- 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_resizeto 2.18 (up from 2.17)
- Updated
- 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:
MemoryUtilbackends are now configurable at runtime. (#1111)- See
Configuration::MEMORY_BACKENDfor details. - The new default on JDK 25+ is FFM-based downcalls/upcalls and Unsafe-based memory access.
- See
- 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
longtypes in downcalls/upcalls with the@FFMCLongannotation on Javalongcarriers. - Now supports nested anonymous structs and unions.
- Now supports C
- Core: The
SharedLibraryLoadernow prints exceptions when it is able to extract a library, but not load it. (#1120)- Requires
Configuration::DEBUG_LOADERto be enabled.
- Requires
- FreeBSD: LWJGL now requires FreeBSD 14.4 or later. (up from 13.5)
Breaking changes
- Core: The
MemorySegmentaccess methods have been moved fromMemoryUtiltoMemoryUtilFFM. - Unsafe accessor methods for private struct members are now package private.
LWJGL 3.4.1
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
LWJGL 3.4.0
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
advanceparameter tomsdf_ft_font_load_glyph*. - Replaced
msdf_shape_has_inverse_y_axiswithmsdf_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_hoaextension.
- Added
- OpenGL (ES): Added latest extensions.
EXT_fragment_shading_rateEXT_mesh_shaderEXT_shader_realtime_clockEXT_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_resizeto 2.17 (up from 2.12)
- Updated
- 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-infojavadoc 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-cudalwjgl-libdividelwjgl-meowlwjgl-nanovg: the Blendish and OUI bindings onlylwjgl-openvrlwjgl-ovrlwjgl-sselwjgl-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).
- A preview API, in
- 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
memCopysupport 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_messageBoxsignature to support theyesnocanceldialog type. - Vulkan: Fixed stack OOME on VkInstance creation with recent drivers.
- Vulkan: Fixed support for Vulkan 1.4.
Breaking Changes
- Generator: Removed deprecated
mallocStack/callocStackmethods from structs. - OpenCL: Fixed the carrier type of
cl_ulongconstants. (#1087)- Now mapped to
longto avoid unintentional sign extension for negative values.
- Now mapped to
- Vulkan: MoltenVK on x64 now requires macOS 11.0 or later. (up from 10.13)
LWJGL 3.3.6
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
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
MathUtilmulti-release support forLong.divideUnsigned/Long.remainderUnsignedandMath.unsignedMultiplyHigh.
- Added
- 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_eventsextension. - Added
AL_EXT_debugextension. - Added
AL_EXT_direct_contextextension. - macOS: 10.15+ is now required (up from 10.11).
- Added
- 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_resizeto 2.12 (up from 2.09)
- Updated
- 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:jspecifydependency remains optional.
- The
- 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_APIoption to control the default OpenGL context management API. - OpenGL: The
Configuration.OPENGL(ES)_CONTEXT_APIoptions now support"OSMesa"as a value.- Similar to
GLFW_OSMESA_CONTEXT_API, LWJGL will try to load libOSMesa when enabled, without having to changeConfiguration.OPENGL_LIBRARY_NAME.
- Similar to
- 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_listparameters.
Breaking Changes
- Core: Replaced thread-local storage of
errno/GetLastError()with virtual output parameters. (#1003)- The
LibCErrno.getErrno()andWinBase.getLastError()methods have been removed. - System calls in
org.lwjgl.system.linux.*,org.lwjgl.system.windows.*andorg.lwjgl.opengl.WGLnow take an optional output parameter for the error code. - This approach is similar to
Linker.Option.CaptureCallStatein Project Panama's FFM API.
- The
- Core: Dropped support for non-LTS JDK versions earlier than the latest LTS version.
- Supported JDK versions: 8, 11, 17, 21+
- The
module-infoclass and the first batch of multi-release overrides now live underMETA-INF/versions/11instead ofMETA-INF/versions/9.
LWJGL 3.3.4
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.
- Added
- glfw: Added experimental support for IME. (#946)
- Added
GLFW_SOFT_FULLSCREEN,GLFW_IME,GLFW_MANAGE_PREEDIT_CANDIDATEandGLFW_X11_ONTHESPOT. - Added
glfwGetPreeditCursorRectangle,glfwSetPreeditCursorRectangle,glfwResetPreeditText,glfwGetPreeditCandidate. - Added
glfwSetPreeditCallback,glfwSetIMEStatusCallback,glfwSetPreeditCandidateCallback.
- Added
- 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_imageto 2.30 (up from 2.28) - Updated
stb_image_resizeto 2.09 (up from 0.97)
- Updated
- 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
- Maven classifier:
- Linux: Added support for the PowerPC 64 LE architecture. (#495)
- Maven classifier:
linux-ppc64le
- Maven classifier:
- Linux: Added support for the RISC-V 64 architecture. (#890)
- Maven classifier:
linux-riscv64
- Maven classifier:
- 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
VkMemoryRequirementsmutable for thevmaAllocateMemory(Pages)functions. (#937)
Fixes
- Core: Fixed callback wrapper memory leak with the CHM closure registry. (#927)
- Core: The
SharedLibraryLoaderwill now always test ifSystem::loadworks before choosing the extract path. (#987) - bgfx: Fixed
bgfx_is_frame_buffer_validto acceptBGFXAttachment.Buffer. (#993) - JAWT: Fixed
JAWT_MACOSX_USE_CALAYERvalue. - LLVM: Fixed
LLVMGetBufferStartto returnByteBufferinstead ofString. (#934) - LLVM: Fixed
LookupIntrinsicIDto returnunsignedinstead ofvoid. (#950) - Nuklear: Fixed auto-sizing of
nk_stroke_polyline,nk_stroke_polygon,nk_fill_polygonbuffers. (#978) - tinyfd: The
aDefaultPathparameter oftinyfd_selectFolderDialogis 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.hreplacedstb_image_resize.hwith a new API.
LWJGL 3.3.3
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_PORTALwhich enables the XDG Desktop Portal backend on Linux. (#893)
- Added
- 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_queryextension. - Added
AL_SOFT_source_start_delayextension. - Added
AL_SOFT_UHJ_exextension.
- Added
- OpenCL: Added latest extensions.
cl_ext_image_from_buffercl_ext_image_requirements_infocl_intel_bfloat16_conversionscl_intel_split_work_group_barriercl_intel_subgroup_matrix_multiply_accumulatecl_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/memcpyimplementations 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.0beforelibGL.so.1on Linux, matching GLFW. - Use
Configuration.OPENGL_LIBRARY_NAMEandGLFWNativeGLX::setPathto override this behavior.
- LWJGL will now try to load
LWJGL 3.3.2
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)
- 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_LIBDECORandGLFW_WAYLAND_DISABLE_LIBDECOR. - Added
GLFW_CURSOR_CAPTURED. - Added
GLFW_WAYLAND_APP_ID. - Added
GLFW_POSITION_X,GLFW_POSITION_YandGLFW_ANY_POSITION.
- Added
- 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_bformatextension. - Added
ALC_SOFT_output_modeextension. - Added
ALC_SOFT_reopen_deviceextension. - Added
AL_SOFT_callback_bufferextension. - Added
AL_SOFT_effect_targetextension. - Added
AL_SOFT_eventsextension. (#854) - Added
AL_SOFT_UHJextension. - Added
AL_SOFTX_hold_on_disconnectextension. (#795)
- Added
- OpenGL(ES): Added latest extensions.
GL_EXT_framebuffer_blit_layersGL_EXT_fragment_shading_rateGL_EXT_fragment_shading_rate_attachmentGL_EXT_fragment_shading_rate_primitiveGL_EXT_separate_depth_stencilGL_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_imageto 2.28 (up from 2.27)
- Updated
- 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 aByteBufferview of a struct value. - Core: More
SharedLibraryLoaderimprovements. (#790)- The default
Configuration.SHARED_LIBRARY_EXTRACT_DIRECTORYis nowlwjgl_<trimmed_user_name>. - The default
Configuration.SHARED_LIBRARY_EXTRACT_PATHnow includes the CPU architecture. (<temp_root>/<extract_dir>/<version>/<arch>/) - Added
Configuration.SHARED_LIBRARY_EXTRACT_FORCE.
- The default
- Core: The string returned by
Version::getVersion()now follows the Java version format (M.m.r+BorM.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
.sha1and.gitfiles, used for validating LWJGL artifacts, are now stored under theMETA-INFfolder. - glfw: It will now always be patched with the latest SDL_GameControllerDB version.
- Reminder:
glfwUpdateGamepadMappingscan be used to update the mappings at runtime.
- Reminder:
- Nuklear:
NK_BUTTON_TRIGGER_ON_RELEASEis 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
Remoteryclass javadoc. - A script that quickly clones the Remotery repository at that commit is also included.
The viewer application atvis/index.htmlis guaranteed to be compatible with the LWJGL bindings. - Ported two simple Remotery samples (
modules/samples/src/test/java/org/lwjgl/demo/util/remotery/).
- Users can now identify the commit used to build the Remotery bindings in the
Fixes
- Core: Fixed Java/native library incompatibility detection. (#737)
- Core: Fixed
dlerrordecoding 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::ptsbuffer. - OpenCL: Fixed initialization on macOS 13. (#861)
- Opus: Fixed
pcmparameter type ofopus_decode_floatfunction. (#785) - Remotery: Fixed
rmtSettings::freecallback signature. - stb: Fixed
stb_image_resizeflag values. (#857) - Vulkan: Fixed definition of the
VK_API_VERSION_PATCHmacro. (#743) - Vulkan: Fixed
EXT_debug_utilsfunction dispatch. (#755)
Breaking Changes
- Core: Introduced additional mangling of
org.lwjgl.system.JNImethod names for 8/16-bit integer parameters. (#858) (S) - NanoVG: The
freeDataparameters ofnvgCreateFontMem*functions are now mapped to Javaboolean. (S) - NativeFileDialog: Now uses the btzy/nativefiledialog-extended API. (S)
- Nuklear: Renamed
NkConvertConfig::null_texturetotex_nullto match the change in the native API. (S)
(B): binary incompatible change
(S): source incompatible change
LWJGL 3.3.1
Changes since 3.3.0:
Bindings
- Added liburing bindings.
- Can be found in the LWJGL core module (package
org.lwjgl.system.linux.liburing).
- Can be found in the LWJGL core module (package
- 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.
- Added
- 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
glfwInitis called. - Enabled with
Configuration.GLFW_LIBRARY_NAME.set("glfw_async");.
- A different window toolkit (AWT, JavaFX, etc.) may now run at the same time as GLFW. It must be initialized before
Fixes
- Core: Fixed extra
NULin string returned fromSharedLibrary::getPath()on Linux & macOS. (#713) - Core: Fixed integer overflow when casting pointers on 32-bit architectures. (#720)
- Core: Fixed rare
NPEwithConfiguration.DEBUG_STACKenabled. (#721) - OpenCL: Fixed values of the
KERNEL_ARG_ADDRESS_*constants. (#733) - OpenCL: Fixed value of
KERNEL_ARG_TYPE_QUALIFIERconstant. (#735) - vma: Fixed nullability of
VmaVirtualAllocationCreateInfo::pUserDatamember. - Vulkan: All
noautovalidityparameters/members are now regarded as nullable. (#702)