diff --git a/doc/notes/3.3.0.md b/doc/notes/3.3.0.md index b906bb6fe1..38aae39a32 100644 --- a/doc/notes/3.3.0.md +++ b/doc/notes/3.3.0.md @@ -1,6 +1,6 @@ ### 3.3.0 -_Not Released Yet_ +_Released 2021 Nov 15_ This build includes the following changes: @@ -135,6 +135,11 @@ This build includes the following changes: #### Breaking Changes +``` +(B): binary incompatible change +(S): source incompatible change +``` + - Linux: Shared libraries are now built on Ubuntu 18.04 (up from Ubuntu 16.04) (B) * GLIBC versions older than 2.14 are no longer supported. Some, but not all, LWJGL natives may require up to GLIBC 2.27. * Applications deployed on older systems must now build & bundle custom LWJGL natives. Contact LWJGL developers if you need assistance. @@ -144,8 +149,3 @@ This build includes the following changes: * The bindings still require CUDA 3.2 as the minimum version. There are runtime checks for functions introduced after 3.2. - Shaderc: The shaderc_spvc library has been removed since Shaderc 2020.4. Users may migrate to the new SPIRV-Cross bindings. (S) - Vulkan: All header boilerplate constants have been moved to `VK10`. (S) - -``` -(B): binary incompatible change -(S): source incompatible change -``` diff --git a/doc/notes/README.md b/doc/notes/README.md index b153c66a05..84530b0a7b 100644 --- a/doc/notes/README.md +++ b/doc/notes/README.md @@ -4,8 +4,8 @@ ### Version History -* YYYY-MM-DD [3.3.0](3.3.0.md) (work in progress) -* 2019-09-01 [3.2.3](3.2.3.md) (latest) +* 2021-11-15 [3.3.0](3.3.0.md) (latest) +* 2019-09-01 [3.2.3](3.2.3.md) * 2019-05-05 [3.2.2](3.2.2.md) * 2018-12-08 [3.2.1](3.2.1.md) * 2018-07-30 [3.2.0](3.2.0.md) diff --git a/doc/notes/full.md b/doc/notes/full.md index 00c7ff8003..12edee6445 100644 --- a/doc/notes/full.md +++ b/doc/notes/full.md @@ -1,3 +1,155 @@ +### 3.3.0 + +_Released 2021 Nov 15_ + +This build includes the following changes: + +#### Bindings + +- Added [libffi](https://sourceware.org/libffi/) bindings. + * Bundled with the LWJGL core, under the `org.lwjgl.system` package. +- Added [meshoptimizer](https://github.com/zeux/meshoptimizer) bindings. +- Added [SPIRV-Cross](https://github.com/KhronosGroup/SPIRV-Cross) bindings. +- Assimp: Updated to 5.1.0 (up from 5.0.0.rc2) +- bgfx: Updated to API version 115 (up from 100) +- CUDA: Updated to 11.5.0 (up from 10.1.0) + * Now includes full API documentation. +- glfw: Updated to latest 3.3.4 (up from 3.3.1): + * Added `GLFW_WIN32_KEYBOARD_MENU`. + * Added `GLFW_CURSOR_UNAVAILABLE`. + * Added `GLFW_FEATURE_UNAVAILABLE`. + * Added `GLFW_FEATURE_UNIMPLEMENTED`. + * Added `GLFW_MOUSE_PASSTHROUGH`. + * Added `GLFW_ANGLE_PLATFORM_TYPE`. + * Added `GLFW_CONTEXT_DEBUG`. + * Added `GLFW_X11_XCB_VULKAN_SURFACE`. + * Added `GLFW_PLATFORM`, `GLFW_PLATFORM_UNAVAILABLE`. + * Added `GLFW_ANY_PLATFORM`, `GLFW_PLATFORM_WIN32`, `GLFW_PLATFORM_COCOA`, `GLFW_PLATFORM_WAYLAND`, `GLFW_PLATFORM_X11`, `GLFW_PLATFORM_NULL`. + * Added `glfwInitAllocator`. + * Added `glfwGetPlatform`. + * Added `glfwPlatformSupported`. + * Added `glfwInitVulkanLoader`. + * Added standard cursors for diagonal and omnidirectional resize/move and operation-not-allowed. + * Added OSMesa native access functions. +- LibOVR: Updated to 1.64.0 (up from 1.39.0) +- libdivide: Updated to 5.0 (up from 2.0) + * Added support for 16-bit divisions. +- LLVM/Clang: Updated to 13.0.1 (up from 8.0) +- lmdb: Updated to 0.9.28 (up from 0.9.24) +- lz4: Updated to 1.9.3 (up from 1.9.2) +- NativeFileDialog: Updated to 1.2.0 (up from 1.1.6) +- Nuklear: Updated to 4.09.0 (up from 4.01.0) +- OpenAL Soft: Updated to 1.21.1 (up from 1.19.1) + * Added `AL_SOFT_bformat_ex` extension. + * Added `AL_SOFT_buffer_samples` extension. + * Added `AL_SOFT_buffer_sub_data` extension. + * Added `AL_SOFT_direct_channels_remix` extension. +- OpenCL: Added support for OpenCL 3.0. +- OpenVR: Updated to 1.16.8 (up from 1.6.10) +- Opus: Added Opusfile & Libopusenc bindings (#634) +- par: Added [par_octasphere](https://prideout.net/blog/octasphere/) bindings. +- rpmalloc: Updated to 1.4.3 (up from 1.4.0) +- Shaderc: Updated to 2021.3 (up from 2019.1) +- stb + * Updated `stb_dxt` to 1.12 (up from 1.08) + * Updated `stb_easy_font` to 1.1 (up from 1.0) + * Updated `stb_image` to 2.27 (up from 2.23) + * Updated `stb_image_resize` to 0.97 (up from 0.96) + * Updated `stb_image_write` to 1.16 (up from 1.13) + * Updated `stb_perlin` to 0.5 (up from 0.4) + * Updated `stb_rect_pack` to 1.01 (up from 1.00) + * Updated `stb_truetype` to 1.26 (up from 1.22) + * Updated `stb_vorbis` to 1.22 (up from 1.17) +- tinyexr: Updated to 1.0.1 (up from 1.0.0 pre-release) +- tinyfiledialogs: Updated to 3.8.8 (up from 3.3.9) +- vma: Updated to 3.3.0-development (up from 2.2.0) +- Vulkan: Updated to 1.2.198 (up from 1.1.121) + * Includes Vulkan Video + * Includes MoltenVK 1.1.5 (up from 1.0.36) +- xxhash: Updated to 0.8.0 (up from 0.7.1) +- Yoga: Updated to 1.19.0 (up from 1.14.0) +- Zstd: Updated to 1.5.0 (up from 1.4.3) + +#### Improvements + +- macOS/Windows: Added support for ARM builds. (#601) + * Maven classifier for macOS: `natives-macos-arm64` + * Maven classifier for Windows: `natives-windows-arm64` +- Linux: Shared libraries are now built with GCC 7.5 (up from GCC 4.8) +- Generator: Struct member javadoc moved to the corresponding getter method. + * There are links to the getter method in the class javadoc (`Layout` section) and in the javadoc of the corresponding setter and `.Buffer` accessors. + * Makes it easier to navigate to the documentation of a particular member. +- Generator: simplified stack allocation methods in `Struct` classes. + * 4 new methods added, named `malloc` and `calloc`, without a "Stack" suffix. + * 8 old methods with the "Stack" suffix are now deprecated, to be removed in LWJGL `3.4.0`. +- Core: Replaced internal usages of dyncall with libffi. + * This resolves a range of long-standing issues, mainly with upcalls (callbacks). + * Single native callback handler used for all upcalls, regardless of signature. Arguments and return values handled Java-side (per callback type). + * Improved upcall performance (before: JNI downcall per argument, after: simple memory accesses) + * Support for structs returned by-value. (#283) +- Core: Implemented overflow protection in text encoding methods. +- Core: When LWJGL fails to resolve native libraries, it will now attempt to report native JAR files in the classpath with mismatching platform/architecture. (#587) +- Core: The `SharedLibraryLoader` now prefers to extract natives to the working directory, over the user's home directory. +- Core: Added version information to module descriptors. (#685) + * The LWJGL version/build used will now be included in stacktraces of modular applications. +- docs: The javadoc of callback classes/interfaces now includes a link to the corresponding `invoke` method, for better IDE navigation. +- macOS: Shared libraries are now built with Xcode 11.3 (up from 10.0) +- GLFW: Added overrides for internally loaded shared libraries. + * Useful when there's a mismatch with the library loaded by LWJGL. + * `GLFWNativeEGL.setEGLPath` & `GLFWNativeEGL.setGLESPath` + * `GLFWNativeGLX.setPath` + * `GLFWNativeNSGL.setFramework` + * `GLFWNativeWGL.setPath` + * `GLFWVulkan.setPath` +- GLFW: There is now a single Linux native that supports both X11 and Wayland. + * Use `glfwPlatformSupported(GLFW_PLATFORM_WAYLAND)` to test if Wayland is available. + * Use `glfwInitHint(GLFW_PLATFORM, GLFW_PLATFORM_WAYLAND)` to enable the Wayland backend. +- GL: Added support for OSMesa contexts. (#595) +- GL/GLES/AL: Added `createCapabilities` overloads that accept an `IntFunction`. Enables explicit management of the off-heap memory used by the capabilities instances. +- GL/GLES/AL: When capabilities creation fails, the current thread/process capabilities state is no longer reset to null. +- GL/GLES/AL/CL/EGL: Added `Configuration` options to forcibly disable specific extensions for debugging purposes. (#683) +- OpenAL: Introduced `ALC::setCapabilities`. Rarely useful when opening multiple devices with different ALC capabilities. (#582) +- Vulkan: Struct classes now include an additional `sType` setter that writes the appropriate struct type value. (#537) +- Vulkan: Struct classes now include type-safe `pNext` setters, one for each struct type that is known to extend them. + * These setters **prepend** the struct to the `pNext` chain, enabling cleaner code when chaining multiple structs. + * Order does not matter, but do note that structs will be chained in the reverse order of the `pNext` calls. + * Also be careful when the base struct is `malloc`ed, make sure to call `.pNext(NULL)` first, otherwise the last struct in the chain will point to invalid memory. + +#### Fixes + +- Generator: Native libraries are now initialized before constants. (#630) +- Core: Fixed unsafe field reads in `MemoryUtil` setup code. (#632) +- Core: The `SharedLibraryLoader` now prepends a `.` to `SHARED_LIBRARY_EXTRACT_DIRECTORY` when the target directory is not temporary. +- Core: The `SharedLibraryLoader` will now load libraries in the correct `ClassLoader` when testing for [JDK-8195129](https://bugs.openjdk.java.net/browse/JDK-8195129). (#648) +- Core: Changed the encoding of `dlopen` paths to UTF-8. (#691) +- CUDA: Implemented missing `cuIpcOpenEventHandle`/`cuIpcOpenMemHandle` using libFFI. +- EGL: Fixed nullability of `eglInitialize` arguments. +- GLFW: Fixed main thread check. Setting `GLFW_CHECK_THREAD0` to `false` is now required for offscreen interop. (#538) +- OpenCL: Added missing `errcode_ret` parameter to `clLinkProgram`. (#560) +- OpenGL: Restored `GL_TEXTURE` in the core profile. (#573) +- OpenGL: Added buffer object offset overloads to `GetQueryObject*` functions. +- stb: Removed redundant `stb_image_resize` overloads. (#605) +- Vulkan: Fixed GLFW configuration for MoltenVK. (#502) +- Vulkan: Fixed `vkGetInstanceProcAddr` to work with `null` instance arguments. +- Vulkan: Fixed unsigned arithmetic in `VK_VERSION_MAJOR` and `VK_VERSION_MINOR` macros. + +#### Breaking Changes + +``` +(B): binary incompatible change +(S): source incompatible change +``` + +- Linux: Shared libraries are now built on Ubuntu 18.04 (up from Ubuntu 16.04) (B) + * GLIBC versions older than 2.14 are no longer supported. Some, but not all, LWJGL natives may require up to GLIBC 2.27. + * Applications deployed on older systems must now build & bundle custom LWJGL natives. Contact LWJGL developers if you need assistance. +- Removed deprecated methods that were marked for removal in LWJGL 3.3. (S) +- Core: Users of the dyncall bindings must migrate to libffi. (S) +- CUDA: Merged versioned classes into a single class that contains the entire functionality. (S) + * The bindings still require CUDA 3.2 as the minimum version. There are runtime checks for functions introduced after 3.2. +- Shaderc: The shaderc_spvc library has been removed since Shaderc 2020.4. Users may migrate to the new SPIRV-Cross bindings. (S) +- Vulkan: All header boilerplate constants have been moved to `VK10`. (S) + ### 3.2.3 _Released 2019 Sep 01_ @@ -86,11 +238,6 @@ This build includes the following changes: #### Breaking Changes -``` -(B): binary incompatible change -(S): source incompatible change -``` - - Core: The `Library.loadSystem` & `Library.loadNative` methods now require a module name parameter. **(S)** - Core: Removed `Consumer` overloads from read-only structs with nested struct members. **(S)** - Core: `MemoryUtil.memFree(PointerBuffer)` changed to `memFree(CustomBuffer)`. **(B)** diff --git a/doc/notes/latest.md b/doc/notes/latest.md index de41b75372..38aae39a32 100644 --- a/doc/notes/latest.md +++ b/doc/notes/latest.md @@ -1,89 +1,138 @@ -### 3.2.3 +### 3.3.0 -_Released 2019 Sep 01_ +_Released 2021 Nov 15_ This build includes the following changes: #### Bindings -- Added [Shaderc](https://github.com/google/shaderc) bindings. (#77) -- Added bindings to platform APIs that can be used to programmatically generate input events. -- Assimp: Updated to 5.0.0rc2 (up from 5.0.0rc1). -- bgfx: Updated to API version 100 (up from 99) -- glfw: Updated to 3.3.1 (up from 3.3.0) -- EGL: Added `EGL_NV_stream_dma`. -- jemalloc: Updated to 5.2.1 (up from 5.2.0) -- LibOVR: Updated to 1.39.0 (up from 1.35.0) -- libdivide: Updated to 2.0 (up from 1.0) -- lz4: Updated to 1.9.2 (up from 1.9.1) - * Also, the LWJGL memory allocator is now used for internal allocations. -- nuklear: Updated to 4.01.0 (up from 4.00.2) -- OpenGL(ES): Added latest extensions. - * `GL_EXT_multiview_tessellation_geometry_shader` - * `GL_EXT_multiview_texture_multisample` - * `GL_EXT_multiview_timer_query` - * `GL_EXT_texture_shadow_lod` - * `GL_EXT_texture_sRGB_R8` - * `GL_KHR_shader_subgroup` - * `GL_NV_shader_subgroup_partitioned` - * `GL_NVX_gpu_multicast2` - * `GL_NVX_progress_fence` -- OpenVR: Updated to 1.6.10 (up from 1.3.22) -- par: Updated `par_shapes` to latest version. - * Added `par_shapes_create_cone`. -- par: Added [par_streamlines](https://prideout.net/blog/par_streamlines) bindings. -- rpmalloc: Updated to 1.4.0 (up from 1.3.2) +- Added [libffi](https://sourceware.org/libffi/) bindings. + * Bundled with the LWJGL core, under the `org.lwjgl.system` package. +- Added [meshoptimizer](https://github.com/zeux/meshoptimizer) bindings. +- Added [SPIRV-Cross](https://github.com/KhronosGroup/SPIRV-Cross) bindings. +- Assimp: Updated to 5.1.0 (up from 5.0.0.rc2) +- bgfx: Updated to API version 115 (up from 100) +- CUDA: Updated to 11.5.0 (up from 10.1.0) + * Now includes full API documentation. +- glfw: Updated to latest 3.3.4 (up from 3.3.1): + * Added `GLFW_WIN32_KEYBOARD_MENU`. + * Added `GLFW_CURSOR_UNAVAILABLE`. + * Added `GLFW_FEATURE_UNAVAILABLE`. + * Added `GLFW_FEATURE_UNIMPLEMENTED`. + * Added `GLFW_MOUSE_PASSTHROUGH`. + * Added `GLFW_ANGLE_PLATFORM_TYPE`. + * Added `GLFW_CONTEXT_DEBUG`. + * Added `GLFW_X11_XCB_VULKAN_SURFACE`. + * Added `GLFW_PLATFORM`, `GLFW_PLATFORM_UNAVAILABLE`. + * Added `GLFW_ANY_PLATFORM`, `GLFW_PLATFORM_WIN32`, `GLFW_PLATFORM_COCOA`, `GLFW_PLATFORM_WAYLAND`, `GLFW_PLATFORM_X11`, `GLFW_PLATFORM_NULL`. + * Added `glfwInitAllocator`. + * Added `glfwGetPlatform`. + * Added `glfwPlatformSupported`. + * Added `glfwInitVulkanLoader`. + * Added standard cursors for diagonal and omnidirectional resize/move and operation-not-allowed. + * Added OSMesa native access functions. +- LibOVR: Updated to 1.64.0 (up from 1.39.0) +- libdivide: Updated to 5.0 (up from 2.0) + * Added support for 16-bit divisions. +- LLVM/Clang: Updated to 13.0.1 (up from 8.0) +- lmdb: Updated to 0.9.28 (up from 0.9.24) +- lz4: Updated to 1.9.3 (up from 1.9.2) +- NativeFileDialog: Updated to 1.2.0 (up from 1.1.6) +- Nuklear: Updated to 4.09.0 (up from 4.01.0) +- OpenAL Soft: Updated to 1.21.1 (up from 1.19.1) + * Added `AL_SOFT_bformat_ex` extension. + * Added `AL_SOFT_buffer_samples` extension. + * Added `AL_SOFT_buffer_sub_data` extension. + * Added `AL_SOFT_direct_channels_remix` extension. +- OpenCL: Added support for OpenCL 3.0. +- OpenVR: Updated to 1.16.8 (up from 1.6.10) +- Opus: Added Opusfile & Libopusenc bindings (#634) +- par: Added [par_octasphere](https://prideout.net/blog/octasphere/) bindings. +- rpmalloc: Updated to 1.4.3 (up from 1.4.0) +- Shaderc: Updated to 2021.3 (up from 2019.1) - stb - * Updated `stb_image` to 2.23 (up from 2.22) - * Updated `stb_truetype` to 1.22 (up from 1.21) - * Updated `stb_vorbis` to 1.17 (up from 1.16) -- Vulkan: Updated to 1.1.121 (up from 1.0.107) - * Includes MoltenVK 1.0.36 -- xxhash: Updated to 0.7.1 (up from 0.7.0) -- Zstd: Updated to 1.4.3 (up from 1.4.0) + * Updated `stb_dxt` to 1.12 (up from 1.08) + * Updated `stb_easy_font` to 1.1 (up from 1.0) + * Updated `stb_image` to 2.27 (up from 2.23) + * Updated `stb_image_resize` to 0.97 (up from 0.96) + * Updated `stb_image_write` to 1.16 (up from 1.13) + * Updated `stb_perlin` to 0.5 (up from 0.4) + * Updated `stb_rect_pack` to 1.01 (up from 1.00) + * Updated `stb_truetype` to 1.26 (up from 1.22) + * Updated `stb_vorbis` to 1.22 (up from 1.17) +- tinyexr: Updated to 1.0.1 (up from 1.0.0 pre-release) +- tinyfiledialogs: Updated to 3.8.8 (up from 3.3.9) +- vma: Updated to 3.3.0-development (up from 2.2.0) +- Vulkan: Updated to 1.2.198 (up from 1.1.121) + * Includes Vulkan Video + * Includes MoltenVK 1.1.5 (up from 1.0.36) +- xxhash: Updated to 0.8.0 (up from 0.7.1) +- Yoga: Updated to 1.19.0 (up from 1.14.0) +- Zstd: Updated to 1.5.0 (up from 1.4.3) #### Improvements -- Linux: Added support for ARM builds. - * 32-bit: ARMv7/armhf architecture. Maven classifier: `linux-arm32` - * 64-bit: ARMv8/AArch64 architecture. Maven classifier: `linux-arm64` -- Windows: There is now a separate native JAR file per architecture. - * The default contains x64 shared libraries only. Maven classifier: `windows` - * `lwjgl-natives-windows-x86.jar` contains x86 shared libraries only. Maven classifier: `windows-x86` - * The `32` suffix has been dropped from x86 shared library names. -- Windows: Shared libraries are now built with Visual Studio 2019 (up from 2017) -- Maven: LWJGL artifacts now include a Bill of Materials (`lwjgl-bom`). (#481) - * The [build customizer](https://www.lwjgl.org/customize) may be used to migrate Maven/Gradle scripts. -- Refactored the layout of native JAR files. - * Shared libraries have been moved from the root to a `///` subfolder. - * ``: one of `linux`, `macos`, `windows`. - * ``: one of `x64`, `x86`, `arm64`, `arm32`. - * ``: the corresponding Java module name as a package hierarchy. - * Example: `glfw.so` in `lwjgl-glfw-natives-linux.jar` is under the `linux/x64/org/lwjgl/glfw` folder. - * The new layout allows multiple native JAR files to be combined for custom deployment. - * Custom (or the old) layout may be used with newly exposed `Configuration` options. -- Core: Added `enum Platform.Architecture` and `Platform.getArchitecture()` API. -- Core: Added relative & absolute `apply(Consumer)` methods to `StructBuffer`. -- Core: Added `Consumer` setters to structs with nested arrays of structs. -- Core: Added `memByteBuffer` overloads that return `ByteBuffer` views of other buffer types. -- Core: Added `CLongBuffer`, a class similar to `PointerBuffer` but for C `long` values. +- macOS/Windows: Added support for ARM builds. (#601) + * Maven classifier for macOS: `natives-macos-arm64` + * Maven classifier for Windows: `natives-windows-arm64` +- Linux: Shared libraries are now built with GCC 7.5 (up from GCC 4.8) +- Generator: Struct member javadoc moved to the corresponding getter method. + * There are links to the getter method in the class javadoc (`Layout` section) and in the javadoc of the corresponding setter and `.Buffer` accessors. + * Makes it easier to navigate to the documentation of a particular member. +- Generator: simplified stack allocation methods in `Struct` classes. + * 4 new methods added, named `malloc` and `calloc`, without a "Stack" suffix. + * 8 old methods with the "Stack" suffix are now deprecated, to be removed in LWJGL `3.4.0`. +- Core: Replaced internal usages of dyncall with libffi. + * This resolves a range of long-standing issues, mainly with upcalls (callbacks). + * Single native callback handler used for all upcalls, regardless of signature. Arguments and return values handled Java-side (per callback type). + * Improved upcall performance (before: JNI downcall per argument, after: simple memory accesses) + * Support for structs returned by-value. (#283) +- Core: Implemented overflow protection in text encoding methods. +- Core: When LWJGL fails to resolve native libraries, it will now attempt to report native JAR files in the classpath with mismatching platform/architecture. (#587) +- Core: The `SharedLibraryLoader` now prefers to extract natives to the working directory, over the user's home directory. +- Core: Added version information to module descriptors. (#685) + * The LWJGL version/build used will now be included in stacktraces of modular applications. +- docs: The javadoc of callback classes/interfaces now includes a link to the corresponding `invoke` method, for better IDE navigation. +- macOS: Shared libraries are now built with Xcode 11.3 (up from 10.0) +- GLFW: Added overrides for internally loaded shared libraries. + * Useful when there's a mismatch with the library loaded by LWJGL. + * `GLFWNativeEGL.setEGLPath` & `GLFWNativeEGL.setGLESPath` + * `GLFWNativeGLX.setPath` + * `GLFWNativeNSGL.setFramework` + * `GLFWNativeWGL.setPath` + * `GLFWVulkan.setPath` +- GLFW: There is now a single Linux native that supports both X11 and Wayland. + * Use `glfwPlatformSupported(GLFW_PLATFORM_WAYLAND)` to test if Wayland is available. + * Use `glfwInitHint(GLFW_PLATFORM, GLFW_PLATFORM_WAYLAND)` to enable the Wayland backend. +- GL: Added support for OSMesa contexts. (#595) +- GL/GLES/AL: Added `createCapabilities` overloads that accept an `IntFunction`. Enables explicit management of the off-heap memory used by the capabilities instances. +- GL/GLES/AL: When capabilities creation fails, the current thread/process capabilities state is no longer reset to null. +- GL/GLES/AL/CL/EGL: Added `Configuration` options to forcibly disable specific extensions for debugging purposes. (#683) +- OpenAL: Introduced `ALC::setCapabilities`. Rarely useful when opening multiple devices with different ALC capabilities. (#582) +- Vulkan: Struct classes now include an additional `sType` setter that writes the appropriate struct type value. (#537) +- Vulkan: Struct classes now include type-safe `pNext` setters, one for each struct type that is known to extend them. + * These setters **prepend** the struct to the `pNext` chain, enabling cleaner code when chaining multiple structs. + * Order does not matter, but do note that structs will be chained in the reverse order of the `pNext` calls. + * Also be careful when the base struct is `malloc`ed, make sure to call `.pNext(NULL)` first, otherwise the last struct in the chain will point to invalid memory. #### Fixes -- Core: Removed support for Critical JNI Natives. (#490) - * Will be restored in LWJGL 3.3 (disabled by default, enabled with a `Configuration` option). -- Core: Fixed buffer attachment offset detection on JDK 12+. (#491) -- Core: Fixed `ByteBuffer` attachments in `memSlice` & `memDuplicate`. -- Generator: Fixed invalid generation of functions with struct parameters passed by value. (#496) - * Affected bindings: OpenVR and LLVM/Clang. -- Generator: Improved javadoc for array and nested struct members. -- EGL/GLES: Fixed bootstrapping code. - * Regression caused by `org.lwjgl.system.JNI` refactoring in `3.2.2`. -- LLVM: Fixed default library names. -- lmdb: Reverted to the official release. (#482) - * Windows: Performance issues are eliminated, but sparse database mappings & incremental file growth are not supported anymore. -- OpenGL: Fixed signatures of `glGetnUniformiv` and `glGetnUniformuiv`. - +- Generator: Native libraries are now initialized before constants. (#630) +- Core: Fixed unsafe field reads in `MemoryUtil` setup code. (#632) +- Core: The `SharedLibraryLoader` now prepends a `.` to `SHARED_LIBRARY_EXTRACT_DIRECTORY` when the target directory is not temporary. +- Core: The `SharedLibraryLoader` will now load libraries in the correct `ClassLoader` when testing for [JDK-8195129](https://bugs.openjdk.java.net/browse/JDK-8195129). (#648) +- Core: Changed the encoding of `dlopen` paths to UTF-8. (#691) +- CUDA: Implemented missing `cuIpcOpenEventHandle`/`cuIpcOpenMemHandle` using libFFI. +- EGL: Fixed nullability of `eglInitialize` arguments. +- GLFW: Fixed main thread check. Setting `GLFW_CHECK_THREAD0` to `false` is now required for offscreen interop. (#538) +- OpenCL: Added missing `errcode_ret` parameter to `clLinkProgram`. (#560) +- OpenGL: Restored `GL_TEXTURE` in the core profile. (#573) +- OpenGL: Added buffer object offset overloads to `GetQueryObject*` functions. +- stb: Removed redundant `stb_image_resize` overloads. (#605) +- Vulkan: Fixed GLFW configuration for MoltenVK. (#502) +- Vulkan: Fixed `vkGetInstanceProcAddr` to work with `null` instance arguments. +- Vulkan: Fixed unsigned arithmetic in `VK_VERSION_MAJOR` and `VK_VERSION_MINOR` macros. + #### Breaking Changes ``` @@ -91,14 +140,12 @@ This build includes the following changes: (S): source incompatible change ``` -- Core: The `Library.loadSystem` & `Library.loadNative` methods now require a module name parameter. **(S)** -- Core: Removed `Consumer` overloads from read-only structs with nested struct members. **(S)** -- Core: `MemoryUtil.memFree(PointerBuffer)` changed to `memFree(CustomBuffer)`. **(B)** -- LZ4: The `autoFlush` and `favorDecSpeed` members of `LZ4F_preferences_t` are now mapped to Java `boolean`. **(S)** -- Vulkan: The `descriptorCount` member of `VkWriteDescriptorSet` must now be set explicitly. **(S)** - * The semantics of `descriptorCount` may change via extensions, which invalidates auto-sizing. - -#### Known Issues - -- Vulkan: GLFW configuration for MoltenVK is broken in LWJGL 3.2.3. (#502) - * This issue is fixed in LWJGL 3.3.0. \ No newline at end of file +- Linux: Shared libraries are now built on Ubuntu 18.04 (up from Ubuntu 16.04) (B) + * GLIBC versions older than 2.14 are no longer supported. Some, but not all, LWJGL natives may require up to GLIBC 2.27. + * Applications deployed on older systems must now build & bundle custom LWJGL natives. Contact LWJGL developers if you need assistance. +- Removed deprecated methods that were marked for removal in LWJGL 3.3. (S) +- Core: Users of the dyncall bindings must migrate to libffi. (S) +- CUDA: Merged versioned classes into a single class that contains the entire functionality. (S) + * The bindings still require CUDA 3.2 as the minimum version. There are runtime checks for functions introduced after 3.2. +- Shaderc: The shaderc_spvc library has been removed since Shaderc 2020.4. Users may migrate to the new SPIRV-Cross bindings. (S) +- Vulkan: All header boilerplate constants have been moved to `VK10`. (S)