diff --git a/doc/notes/3.2.1.md b/doc/notes/3.2.1.md index af0d501206..c9113a0db6 100644 --- a/doc/notes/3.2.1.md +++ b/doc/notes/3.2.1.md @@ -1,6 +1,6 @@ ### 3.2.1 -_Not Released Yet_ +_Released 2018 Dec 08_ This build includes the following changes: @@ -11,6 +11,7 @@ This build includes the following changes: * Bindings to more CUDA Toolkit libraries will be added in the future. - Added [libdivide](https://libdivide.com/) bindings. - Added [LLVM/Clang](https://llvm.org/) bindings. + * LLVM binaries are not included in this release. They must be separately downloaded or built for each platform. - Added [Meow hash](https://github.com/cmuratori/meow_hash/) bindings. - Added [Opus](http://opus-codec.org/) bindings. - bgfx: Updated to API version 90 (up from 76) @@ -59,6 +60,10 @@ This build includes the following changes: * Use the [file browser](https://www.lwjgl.org/browse) in the LWJGL website to download the executables. * For example, the latest Windows x64 build of `shaderc` can be found under `nightly/windows/x64/bgfx-tools/`. - vma: `VmaVulkanFunctions.set(VkInstance, VkDevice)` will now use Vulkan 1.1 functions instead of `KHR_get_memory_requirements2` functions, if available. +- Generator: The template DSL has been simplified considerably. +- Generator: Added the `LWJGL Template Extraction Tool`. It uses the new Clang bindings to parse native headers and extract LWJGL template declarations. + * Extracts both declarations and associated documentation. + * Written in Kotlin. The source can be found in the `extract` module. #### Fixes diff --git a/doc/notes/README.md b/doc/notes/README.md index e29af82e6b..ee95bed776 100644 --- a/doc/notes/README.md +++ b/doc/notes/README.md @@ -4,7 +4,8 @@ ### Version History -* 2018-07-30 [3.2.0](3.2.0.md) (latest) +* 2018-12-08 [3.2.1](3.2.1.md) (latest) +* 2018-07-30 [3.2.0](3.2.0.md) * 2018-02-04 [3.1.6](3.1.6.md) * 2017-11-22 [3.1.5](3.1.5.md) * 2017-11-19 [3.1.4](3.1.4.md) diff --git a/doc/notes/full.md b/doc/notes/full.md index abd5e2717d..6b6a528df6 100644 --- a/doc/notes/full.md +++ b/doc/notes/full.md @@ -1,3 +1,99 @@ +### 3.2.1 + +_Released 2018 Dec 08_ + +This build includes the following changes: + +#### Bindings + +- Added [CUDA](https://developer.nvidia.com/cuda-zone/) bindings. + * Only the Driver API & NVRTC are supported in this release. + * Bindings to more CUDA Toolkit libraries will be added in the future. +- Added [libdivide](https://libdivide.com/) bindings. +- Added [LLVM/Clang](https://llvm.org/) bindings. + * LLVM binaries are not included in this release. They must be separately downloaded or built for each platform. +- Added [Meow hash](https://github.com/cmuratori/meow_hash/) bindings. +- Added [Opus](http://opus-codec.org/) bindings. +- bgfx: Updated to API version 90 (up from 76) +- dyncall: Updated to 1.0 (up from 1.0-RC) +- glfw: Updated to pre-release 3.3.0 version (up from 3.3.0 pre-release): + * Added `GLFW_SCALE_TO_MONITOR`. + * Added `glfwAttachWin32Window`. (experimental) +- jemalloc: Updated to pre-release 5.2.0 (up from 5.1.0) + * When available, it is again the default memory allocator on Windows. +- LibOVR: Updated to 1.30.0 (up from 1.26.0) +- lz4: Updated to 1.8.3 (up from 1.8.2) +- Nuklear: Updated to 4.00.2 (up from 4.00.1) +- OpenAL Soft: Updated to 1.19.1 (up from 1.18.2) + * Added `ALC_SOFT_device_clock` extension. +- OpenGL(ES): Added latest extensions: + * `NV_memory_attachment` + * `NV_compute_shader_derivatives` + * `NV_fragment_shader_barycentric` + * `NV_mesh_shader` + * `NV_representative_fragment_test` + * `NV_scissor_exclusive` + * `NV_shader_texture_footprint` + * `NV_shading_rate_image` + * `QCOM_shader_framebuffer_fetch_rate` + * `QCOM_texture_foveated_subsampled_layout` +- OpenVR: Updated to 1.1.3b (up from 1.0.16) +- rpmalloc: Updated to 1.3.2 (up from 1.3.1) +- tinyfiledialogs: Updated to 3.3.8 (up from 3.3.6) +- vma: Updated to 2.1.0 (up from 2.0.0) +- Vulkan: Updated to 1.1.95 (up from 1.0.82) + * Includes MoltenVK 1.0.27 (up from 1.0.16) +- Yoga: Updated to 1.10.0 (up from 1.9.0) +- Zstd: Updated to 1.3.7 (up from 1.3.5) + +#### Improvements + +- perf(core): Refactored LWJGL internals to make call stacks shallower. + * Makes it harder to cross Hotspot's default `MaxInlineLevel` threshold, which can disable important optimizations. +- perf(core): Added `memDuplicate` and refactored `memSlice` with implementations that use `Unsafe` to construct buffer instances, similar to `mem-X-Buffer`. + * Compared to the default JDK implementations, these methods are faster and enable Scalar Replacement via EA on Hotspot. + * The `memSlice` with offset method is also thread-safe now. +- perf(core): Implemented workarounds to make struct buffer iteration garbage free on Hotspot. +- perf(core): Re-tuned string codecs and `memCopy`/`memSet` for Java versions 8 to 11. +- perf(core): Added thread-local array cache to minimize allocations while decoding text. +- bgfx: Builds of bgfx tools (`geometryc`, `shaderc`, `texturec`, `texturev`) are now available. + * Use the [file browser](https://www.lwjgl.org/browse) in the LWJGL website to download the executables. + * For example, the latest Windows x64 build of `shaderc` can be found under `nightly/windows/x64/bgfx-tools/`. +- vma: `VmaVulkanFunctions.set(VkInstance, VkDevice)` will now use Vulkan 1.1 functions instead of `KHR_get_memory_requirements2` functions, if available. +- Generator: The template DSL has been simplified considerably. +- Generator: Added the `LWJGL Template Extraction Tool`. It uses the new Clang bindings to parse native headers and extract LWJGL template declarations. + * Extracts both declarations and associated documentation. + * Written in Kotlin. The source can be found in the `extract` module. + +#### Fixes + +- Core: Fixed text decoding from buffer with `.position() > 0`. + * Affected all decoders on Java 9+, only UTF-16 on Java 8. +- Core: Fixed the bounds check in `memCopy`. (#414) +- OpenAL: Fixed signature of `alListener3i`. (#427) +- OpenVR: The `pGamePoseArray` parameter of `VRCompositor_WaitGetPoses` is now nullable. (#418) +- OpenVR: Fixed returned type of `VRRenderModels_GetComponentStateForDevicePath`. +- OpenVR: Renamed `VRInput_UncompressSkeletalActionData` to `VRInput_DecompressSkeletalBoneData`. +- OpenVR: Fixed wrong modifiers in `VRInput` functions: + - `VRInput_GetDigitalActionData` + - `VRInput_GetAnalogActionData` + - `VRInput_GetPoseActionData` + - `VRInput_GetSkeletalActionData` + - `VRInput_GetOriginTrackedDeviceInfo` +- vma: The native library is now initialized automatically. +- vma: Optional `KHR_get_memory_requirements2` addresses in `VmaVulkanFunctions` are now nullable. +- vma: Nullability of `VmaAllocationCreateInfo` & `VmaAllocationInfo` members. + +#### Breaking Changes + +``` +(B): binary incompatible change +(S): source incompatible change +``` + +- Core: `sun.misc.Unsafe` is now required, there is no JNI fallback. +- vma: The `VmaVulkanFunctions.set` helper method now returns `VmaVulkanFunctions`. **(B)** + ### 3.2.0 _Released 2018 Jul 30_ diff --git a/doc/notes/latest.md b/doc/notes/latest.md index 403cbfff83..c9113a0db6 100644 --- a/doc/notes/latest.md +++ b/doc/notes/latest.md @@ -1,98 +1,95 @@ -### 3.2.0 +### 3.2.1 -_Released 2018 Jul 30_ +_Released 2018 Dec 08_ This build includes the following changes: #### Bindings -- Added [Vulkan Memory Allocator](https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator) bindings. -- bgfx: Updated to API version 76 (up from 60) - * `bgfx_init` now accepts a parameter structure instead of arguments. +- Added [CUDA](https://developer.nvidia.com/cuda-zone/) bindings. + * Only the Driver API & NVRTC are supported in this release. + * Bindings to more CUDA Toolkit libraries will be added in the future. +- Added [libdivide](https://libdivide.com/) bindings. +- Added [LLVM/Clang](https://llvm.org/) bindings. + * LLVM binaries are not included in this release. They must be separately downloaded or built for each platform. +- Added [Meow hash](https://github.com/cmuratori/meow_hash/) bindings. +- Added [Opus](http://opus-codec.org/) bindings. +- bgfx: Updated to API version 90 (up from 76) +- dyncall: Updated to 1.0 (up from 1.0-RC) - glfw: Updated to pre-release 3.3.0 version (up from 3.3.0 pre-release): - * Added support for gamepad mapping input modifiers (SDL 2.0.6+ format) - * Added `GLFW_FOCUS_ON_SHOW`. -- dyncall: Updated to revision 275 (up from 241) -- jemalloc: Update to 5.1.0 (up from 5.0.1) -- lz4: Updated to 1.8.2 (up from 1.8.1) -- LibOVR: Updated to 1.26.0 (up from 1.20.0) -- Nuklear: Updated to 4.00.1 (up from 3.00.2) -- OpenGL: Introduced new `GL11C...GL46C` classes that include symbols of the Core Profile only. - * Read the `org.lwjgl.opengl` package javadoc for more information on this feature. -- OpenVR: Updated to 1.0.16 (up from 1.0.12) -- rpmalloc: Updated to 1.3.1 (up from 1.2.2) -- stb - * Updated `stb_image` to 2.19 (up from 2.18) - * Updated `stb_image_write` to 1.09 (up from 1.08) - * Updated `stb_truetype` to 1.19 (up from 1.18) - * Updated `stb_vorbis` to 1.14 (up from 1.13b) -- tinyfiledialogs: Updated to 3.3.6 (up from 3.2.9) -- Vulkan: Updated to 1.1.82 (up from 1.0.68) - * Includes MoltenVK 1.0.16 -- xxhash: Update to 0.6.5 (up from 0.6.4) -- Yoga: Updated to 1.9.0 (up from 1.7.1) -- Zstd: Updated to 1.3.5 (up from 1.3.4) + * Added `GLFW_SCALE_TO_MONITOR`. + * Added `glfwAttachWin32Window`. (experimental) +- jemalloc: Updated to pre-release 5.2.0 (up from 5.1.0) + * When available, it is again the default memory allocator on Windows. +- LibOVR: Updated to 1.30.0 (up from 1.26.0) +- lz4: Updated to 1.8.3 (up from 1.8.2) +- Nuklear: Updated to 4.00.2 (up from 4.00.1) +- OpenAL Soft: Updated to 1.19.1 (up from 1.18.2) + * Added `ALC_SOFT_device_clock` extension. +- OpenGL(ES): Added latest extensions: + * `NV_memory_attachment` + * `NV_compute_shader_derivatives` + * `NV_fragment_shader_barycentric` + * `NV_mesh_shader` + * `NV_representative_fragment_test` + * `NV_scissor_exclusive` + * `NV_shader_texture_footprint` + * `NV_shading_rate_image` + * `QCOM_shader_framebuffer_fetch_rate` + * `QCOM_texture_foveated_subsampled_layout` +- OpenVR: Updated to 1.1.3b (up from 1.0.16) +- rpmalloc: Updated to 1.3.2 (up from 1.3.1) +- tinyfiledialogs: Updated to 3.3.8 (up from 3.3.6) +- vma: Updated to 2.1.0 (up from 2.0.0) +- Vulkan: Updated to 1.1.95 (up from 1.0.82) + * Includes MoltenVK 1.0.27 (up from 1.0.16) +- Yoga: Updated to 1.10.0 (up from 1.9.0) +- Zstd: Updated to 1.3.7 (up from 1.3.5) #### Improvements -- Versioned classes in bindings now form inheritance hierarchies. - * Applicable to the following versioned classes: `AL`, `ALC`, `CL`, `EGL`, `GL`, `GLES`, `GLX`, `VK` - * For example, the `GL30` class now extends the `GL21` class, `GL21` extends `GL20` and so on. - * With this change, importing a versioned class allows all symbols up to that version to be resolved. Earlier versions do not need to be imported separately. -- perf(core): `memGetAddress`/`memPutAddress` are now an order of magnitude faster on 32-bit JVMs. -- perf(core): Optimized pointer arithmetic by helping the JVM identify unsigned integers. -- perf(core): The new `java.util.Objects` index check intrinsics are used on Java 9. -- perf(core): `MemoryUtil` string decoding methods are now faster on both Java 8 and 9+. - * The Java 9 implementations are tuned for compact strings ([JEP 254](http://openjdk.java.net/jeps/254)). -- perf(generator): Function pointers in capabilities classes are not sorted by name anymore. - * This makes it more likely that for functions that are commonly used together, their respective pointers - will be closer in memory, avoiding unnecessary cache misses. -- Generator: `org.lwjgl.system.JNI` now includes signatures for known callback functions. - * Can be used for callback function delegation. -- Generator: Added support for custom methods in struct classes. -- Generator: Added fluent setters for nested structs. -- Generator: Made StructBuffer subclass generation optional. -- Loader: Now prints the path of shared libraries loaded from system paths in debug mode, when possible. -- docs(core): Improved `PointerBuffer` javadoc. -- docs: The LWJGL javadoc is now generated with JDK 10. -- Core: `MemoryUtil` methods now replace requests for zero-size allocations with non-zero-size allocations. - * A zero-size allocation now always returns a non-`NULL` pointer or throws an `OOME`. This is consistent with `ByteBuffer.allocateDirect` and avoids the undefined behavior of native allocators. - * The returned buffer has a capacity of zero, regardless of the actual allocation size. -- Core `MemoryUtil.memRealloc` is not `@Nullable` anymore, will either succeed or throw an `OOME`, like `memAlloc/memCalloc`. -- Core: It is now possible to create a `MemoryStack` backed by externally managed memory. -- Core: The debug allocator now also tracks internal allocations of shared libraries that have been configured to use the LWJGL memory allocator. - * This enables monitoring/debugging allocations inside shared libraries. Internal resources that are never released are now reported on shutdown. - * Enabled by default when `Configuration.DEBUG_MEMORY_ALLOCATOR` is enabled. - * May be disabled with `Configuration.DEBUG_MEMORY_ALLOCATOR_INTERNAL.set(false)`. -- LMDB: The LWJGL memory allocator is now used for internal allocations. -- NanoVG/NanoSVG: The LWJGL memory allocator is now used for internal allocations. -- OpenGL/GLES: Calling an unavailable function triggers a JNI `FatalError` instead of an arbitrary segfault. - * Avoids the intimidating crash log and writes a clean stack trace to `stderr`. +- perf(core): Refactored LWJGL internals to make call stacks shallower. + * Makes it harder to cross Hotspot's default `MaxInlineLevel` threshold, which can disable important optimizations. +- perf(core): Added `memDuplicate` and refactored `memSlice` with implementations that use `Unsafe` to construct buffer instances, similar to `mem-X-Buffer`. + * Compared to the default JDK implementations, these methods are faster and enable Scalar Replacement via EA on Hotspot. + * The `memSlice` with offset method is also thread-safe now. +- perf(core): Implemented workarounds to make struct buffer iteration garbage free on Hotspot. +- perf(core): Re-tuned string codecs and `memCopy`/`memSet` for Java versions 8 to 11. +- perf(core): Added thread-local array cache to minimize allocations while decoding text. +- bgfx: Builds of bgfx tools (`geometryc`, `shaderc`, `texturec`, `texturev`) are now available. + * Use the [file browser](https://www.lwjgl.org/browse) in the LWJGL website to download the executables. + * For example, the latest Windows x64 build of `shaderc` can be found under `nightly/windows/x64/bgfx-tools/`. +- vma: `VmaVulkanFunctions.set(VkInstance, VkDevice)` will now use Vulkan 1.1 functions instead of `KHR_get_memory_requirements2` functions, if available. +- Generator: The template DSL has been simplified considerably. +- Generator: Added the `LWJGL Template Extraction Tool`. It uses the new Clang bindings to parse native headers and extract LWJGL template declarations. + * Extracts both declarations and associated documentation. + * Written in Kotlin. The source can be found in the `extract` module. #### Fixes -- Generator: Fixed nullability of macro bindings. -- Generator: Fixed location of generated static blocks -- Core: Struct buffer `malloc/calloc` methods now support zero capacity, instead of throwing a `NPE`. -- macOS: Fixed version number detection in `.dylib` name mapping -- Nullability fixes in: - * Assimp - * CGL - * Yoga - * Parameters of struct multi-setter methods -- OpenCL: Fixed `CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT` constant name. -- OpenCL: Dropped unnecessary `clSetKernalArg3` overloads. -- OpenGL/GLES: The thread-local-free function pointer lookups do not depend on JVMTI anymore. -- stb: Fixed type of `stbi_write_jpg` function's `data` parameter. +- Core: Fixed text decoding from buffer with `.position() > 0`. + * Affected all decoders on Java 9+, only UTF-16 on Java 8. +- Core: Fixed the bounds check in `memCopy`. (#414) +- OpenAL: Fixed signature of `alListener3i`. (#427) +- OpenVR: The `pGamePoseArray` parameter of `VRCompositor_WaitGetPoses` is now nullable. (#418) +- OpenVR: Fixed returned type of `VRRenderModels_GetComponentStateForDevicePath`. +- OpenVR: Renamed `VRInput_UncompressSkeletalActionData` to `VRInput_DecompressSkeletalBoneData`. +- OpenVR: Fixed wrong modifiers in `VRInput` functions: + - `VRInput_GetDigitalActionData` + - `VRInput_GetAnalogActionData` + - `VRInput_GetPoseActionData` + - `VRInput_GetSkeletalActionData` + - `VRInput_GetOriginTrackedDeviceInfo` +- vma: The native library is now initialized automatically. +- vma: Optional `KHR_get_memory_requirements2` addresses in `VmaVulkanFunctions` are now nullable. +- vma: Nullability of `VmaAllocationCreateInfo` & `VmaAllocationInfo` members. #### Breaking Changes -- Core: `MemoryUtil.MemoryAllocationReport` now also returns the address of the memory allocation. -- NanoVG: Parameters `windowWidth`/`windowHeight` of the `nvgBeginFrame` function changed to `float`. +``` +(B): binary incompatible change +(S): source incompatible change +``` -#### Known Issues - -- vma: The native library is not initialized automatically. - * Workaround: call `Class.forName("org.lwjgl.util.vma.LibVma")` before using the VMA bindings. -- vma: `KHR_get_memory_requirements2` function addresses in `VmaVulkanFunctions` are not optional. - * Workaround: Enable the `KHR_get_memory_requirements2` extension, or set the equivalent function addresses from Vulkan `1.1`. \ No newline at end of file +- Core: `sun.misc.Unsafe` is now required, there is no JNI fallback. +- vma: The `VmaVulkanFunctions.set` helper method now returns `VmaVulkanFunctions`. **(B)** \ No newline at end of file