|
| 1 | +### 3.3.0 |
| 2 | + |
| 3 | +_Released 2021 Nov 15_ |
| 4 | + |
| 5 | +This build includes the following changes: |
| 6 | + |
| 7 | +#### Bindings |
| 8 | + |
| 9 | +- Added [libffi](https://sourceware.org/libffi/) bindings. |
| 10 | + * Bundled with the LWJGL core, under the `org.lwjgl.system` package. |
| 11 | +- Added [meshoptimizer](https://github.com/zeux/meshoptimizer) bindings. |
| 12 | +- Added [SPIRV-Cross](https://github.com/KhronosGroup/SPIRV-Cross) bindings. |
| 13 | +- Assimp: Updated to 5.1.0 (up from 5.0.0.rc2) |
| 14 | +- bgfx: Updated to API version 115 (up from 100) |
| 15 | +- CUDA: Updated to 11.5.0 (up from 10.1.0) |
| 16 | + * Now includes full API documentation. |
| 17 | +- glfw: Updated to latest 3.3.4 (up from 3.3.1): |
| 18 | + * Added `GLFW_WIN32_KEYBOARD_MENU`. |
| 19 | + * Added `GLFW_CURSOR_UNAVAILABLE`. |
| 20 | + * Added `GLFW_FEATURE_UNAVAILABLE`. |
| 21 | + * Added `GLFW_FEATURE_UNIMPLEMENTED`. |
| 22 | + * Added `GLFW_MOUSE_PASSTHROUGH`. |
| 23 | + * Added `GLFW_ANGLE_PLATFORM_TYPE`. |
| 24 | + * Added `GLFW_CONTEXT_DEBUG`. |
| 25 | + * Added `GLFW_X11_XCB_VULKAN_SURFACE`. |
| 26 | + * Added `GLFW_PLATFORM`, `GLFW_PLATFORM_UNAVAILABLE`. |
| 27 | + * Added `GLFW_ANY_PLATFORM`, `GLFW_PLATFORM_WIN32`, `GLFW_PLATFORM_COCOA`, `GLFW_PLATFORM_WAYLAND`, `GLFW_PLATFORM_X11`, `GLFW_PLATFORM_NULL`. |
| 28 | + * Added `glfwInitAllocator`. |
| 29 | + * Added `glfwGetPlatform`. |
| 30 | + * Added `glfwPlatformSupported`. |
| 31 | + * Added `glfwInitVulkanLoader`. |
| 32 | + * Added standard cursors for diagonal and omnidirectional resize/move and operation-not-allowed. |
| 33 | + * Added OSMesa native access functions. |
| 34 | +- LibOVR: Updated to 1.64.0 (up from 1.39.0) |
| 35 | +- libdivide: Updated to 5.0 (up from 2.0) |
| 36 | + * Added support for 16-bit divisions. |
| 37 | +- LLVM/Clang: Updated to 13.0.1 (up from 8.0) |
| 38 | +- lmdb: Updated to 0.9.28 (up from 0.9.24) |
| 39 | +- lz4: Updated to 1.9.3 (up from 1.9.2) |
| 40 | +- NativeFileDialog: Updated to 1.2.0 (up from 1.1.6) |
| 41 | +- Nuklear: Updated to 4.09.0 (up from 4.01.0) |
| 42 | +- OpenAL Soft: Updated to 1.21.1 (up from 1.19.1) |
| 43 | + * Added `AL_SOFT_bformat_ex` extension. |
| 44 | + * Added `AL_SOFT_buffer_samples` extension. |
| 45 | + * Added `AL_SOFT_buffer_sub_data` extension. |
| 46 | + * Added `AL_SOFT_direct_channels_remix` extension. |
| 47 | +- OpenCL: Added support for OpenCL 3.0. |
| 48 | +- OpenVR: Updated to 1.16.8 (up from 1.6.10) |
| 49 | +- Opus: Added Opusfile & Libopusenc bindings (#634) |
| 50 | +- par: Added [par_octasphere](https://prideout.net/blog/octasphere/) bindings. |
| 51 | +- rpmalloc: Updated to 1.4.3 (up from 1.4.0) |
| 52 | +- Shaderc: Updated to 2021.3 (up from 2019.1) |
| 53 | +- stb |
| 54 | + * Updated `stb_dxt` to 1.12 (up from 1.08) |
| 55 | + * Updated `stb_easy_font` to 1.1 (up from 1.0) |
| 56 | + * Updated `stb_image` to 2.27 (up from 2.23) |
| 57 | + * Updated `stb_image_resize` to 0.97 (up from 0.96) |
| 58 | + * Updated `stb_image_write` to 1.16 (up from 1.13) |
| 59 | + * Updated `stb_perlin` to 0.5 (up from 0.4) |
| 60 | + * Updated `stb_rect_pack` to 1.01 (up from 1.00) |
| 61 | + * Updated `stb_truetype` to 1.26 (up from 1.22) |
| 62 | + * Updated `stb_vorbis` to 1.22 (up from 1.17) |
| 63 | +- tinyexr: Updated to 1.0.1 (up from 1.0.0 pre-release) |
| 64 | +- tinyfiledialogs: Updated to 3.8.8 (up from 3.3.9) |
| 65 | +- vma: Updated to 3.3.0-development (up from 2.2.0) |
| 66 | +- Vulkan: Updated to 1.2.198 (up from 1.1.121) |
| 67 | + * Includes Vulkan Video |
| 68 | + * Includes MoltenVK 1.1.5 (up from 1.0.36) |
| 69 | +- xxhash: Updated to 0.8.0 (up from 0.7.1) |
| 70 | +- Yoga: Updated to 1.19.0 (up from 1.14.0) |
| 71 | +- Zstd: Updated to 1.5.0 (up from 1.4.3) |
| 72 | + |
| 73 | +#### Improvements |
| 74 | + |
| 75 | +- macOS/Windows: Added support for ARM builds. (#601) |
| 76 | + * Maven classifier for macOS: `natives-macos-arm64` |
| 77 | + * Maven classifier for Windows: `natives-windows-arm64` |
| 78 | +- Linux: Shared libraries are now built with GCC 7.5 (up from GCC 4.8) |
| 79 | +- Generator: Struct member javadoc moved to the corresponding getter method. |
| 80 | + * There are links to the getter method in the class javadoc (`Layout` section) and in the javadoc of the corresponding setter and `.Buffer` accessors. |
| 81 | + * Makes it easier to navigate to the documentation of a particular member. |
| 82 | +- Generator: simplified stack allocation methods in `Struct` classes. |
| 83 | + * 4 new methods added, named `malloc` and `calloc`, without a "Stack" suffix. |
| 84 | + * 8 old methods with the "Stack" suffix are now deprecated, to be removed in LWJGL `3.4.0`. |
| 85 | +- Core: Replaced internal usages of dyncall with libffi. |
| 86 | + * This resolves a range of long-standing issues, mainly with upcalls (callbacks). |
| 87 | + * Single native callback handler used for all upcalls, regardless of signature. Arguments and return values handled Java-side (per callback type). |
| 88 | + * Improved upcall performance (before: JNI downcall per argument, after: simple memory accesses) |
| 89 | + * Support for structs returned by-value. (#283) |
| 90 | +- Core: Implemented overflow protection in text encoding methods. |
| 91 | +- 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) |
| 92 | +- Core: The `SharedLibraryLoader` now prefers to extract natives to the working directory, over the user's home directory. |
| 93 | +- Core: Added version information to module descriptors. (#685) |
| 94 | + * The LWJGL version/build used will now be included in stacktraces of modular applications. |
| 95 | +- docs: The javadoc of callback classes/interfaces now includes a link to the corresponding `invoke` method, for better IDE navigation. |
| 96 | +- macOS: Shared libraries are now built with Xcode 11.3 (up from 10.0) |
| 97 | +- GLFW: Added overrides for internally loaded shared libraries. |
| 98 | + * Useful when there's a mismatch with the library loaded by LWJGL. |
| 99 | + * `GLFWNativeEGL.setEGLPath` & `GLFWNativeEGL.setGLESPath` |
| 100 | + * `GLFWNativeGLX.setPath` |
| 101 | + * `GLFWNativeNSGL.setFramework` |
| 102 | + * `GLFWNativeWGL.setPath` |
| 103 | + * `GLFWVulkan.setPath` |
| 104 | +- GLFW: There is now a single Linux native that supports both X11 and Wayland. |
| 105 | + * Use `glfwPlatformSupported(GLFW_PLATFORM_WAYLAND)` to test if Wayland is available. |
| 106 | + * Use `glfwInitHint(GLFW_PLATFORM, GLFW_PLATFORM_WAYLAND)` to enable the Wayland backend. |
| 107 | +- GL: Added support for OSMesa contexts. (#595) |
| 108 | +- GL/GLES/AL: Added `createCapabilities` overloads that accept an `IntFunction<PointerBuffer>`. Enables explicit management of the off-heap memory used by the capabilities instances. |
| 109 | +- GL/GLES/AL: When capabilities creation fails, the current thread/process capabilities state is no longer reset to null. |
| 110 | +- GL/GLES/AL/CL/EGL: Added `Configuration` options to forcibly disable specific extensions for debugging purposes. (#683) |
| 111 | +- OpenAL: Introduced `ALC::setCapabilities`. Rarely useful when opening multiple devices with different ALC capabilities. (#582) |
| 112 | +- Vulkan: Struct classes now include an additional `sType` setter that writes the appropriate struct type value. (#537) |
| 113 | +- Vulkan: Struct classes now include type-safe `pNext` setters, one for each struct type that is known to extend them. |
| 114 | + * These setters **prepend** the struct to the `pNext` chain, enabling cleaner code when chaining multiple structs. |
| 115 | + * Order does not matter, but do note that structs will be chained in the reverse order of the `pNext` calls. |
| 116 | + * 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. |
| 117 | + |
| 118 | +#### Fixes |
| 119 | + |
| 120 | +- Generator: Native libraries are now initialized before constants. (#630) |
| 121 | +- Core: Fixed unsafe field reads in `MemoryUtil` setup code. (#632) |
| 122 | +- Core: The `SharedLibraryLoader` now prepends a `.` to `SHARED_LIBRARY_EXTRACT_DIRECTORY` when the target directory is not temporary. |
| 123 | +- 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) |
| 124 | +- Core: Changed the encoding of `dlopen` paths to UTF-8. (#691) |
| 125 | +- CUDA: Implemented missing `cuIpcOpenEventHandle`/`cuIpcOpenMemHandle` using libFFI. |
| 126 | +- EGL: Fixed nullability of `eglInitialize` arguments. |
| 127 | +- GLFW: Fixed main thread check. Setting `GLFW_CHECK_THREAD0` to `false` is now required for offscreen interop. (#538) |
| 128 | +- OpenCL: Added missing `errcode_ret` parameter to `clLinkProgram`. (#560) |
| 129 | +- OpenGL: Restored `GL_TEXTURE` in the core profile. (#573) |
| 130 | +- OpenGL: Added buffer object offset overloads to `GetQueryObject*` functions. |
| 131 | +- stb: Removed redundant `stb_image_resize` overloads. (#605) |
| 132 | +- Vulkan: Fixed GLFW configuration for MoltenVK. (#502) |
| 133 | +- Vulkan: Fixed `vkGetInstanceProcAddr` to work with `null` instance arguments. |
| 134 | +- Vulkan: Fixed unsigned arithmetic in `VK_VERSION_MAJOR` and `VK_VERSION_MINOR` macros. |
| 135 | + |
| 136 | +#### Breaking Changes |
| 137 | + |
| 138 | +``` |
| 139 | +(B): binary incompatible change |
| 140 | +(S): source incompatible change |
| 141 | +``` |
| 142 | + |
| 143 | +- Linux: Shared libraries are now built on Ubuntu 18.04 (up from Ubuntu 16.04) (B) |
| 144 | + * GLIBC versions older than 2.14 are no longer supported. Some, but not all, LWJGL natives may require up to GLIBC 2.27. |
| 145 | + * Applications deployed on older systems must now build & bundle custom LWJGL natives. Contact LWJGL developers if you need assistance. |
| 146 | +- Removed deprecated methods that were marked for removal in LWJGL 3.3. (S) |
| 147 | +- Core: Users of the dyncall bindings must migrate to libffi. (S) |
| 148 | +- CUDA: Merged versioned classes into a single class that contains the entire functionality. (S) |
| 149 | + * The bindings still require CUDA 3.2 as the minimum version. There are runtime checks for functions introduced after 3.2. |
| 150 | +- Shaderc: The shaderc_spvc library has been removed since Shaderc 2020.4. Users may migrate to the new SPIRV-Cross bindings. (S) |
| 151 | +- Vulkan: All header boilerplate constants have been moved to `VK10`. (S) |
| 152 | + |
1 | 153 | ### 3.2.3 |
2 | 154 |
|
3 | 155 | _Released 2019 Sep 01_ |
@@ -86,11 +238,6 @@ This build includes the following changes: |
86 | 238 |
|
87 | 239 | #### Breaking Changes |
88 | 240 |
|
89 | | -``` |
90 | | -(B): binary incompatible change |
91 | | -(S): source incompatible change |
92 | | -``` |
93 | | - |
94 | 241 | - Core: The `Library.loadSystem` & `Library.loadNative` methods now require a module name parameter. **(S)** |
95 | 242 | - Core: Removed `Consumer<T>` overloads from read-only structs with nested struct members. **(S)** |
96 | 243 | - Core: `MemoryUtil.memFree(PointerBuffer)` changed to `memFree(CustomBuffer)`. **(B)** |
|
0 commit comments