Skip to content

Commit

Permalink
docs: update release notes for 3.2.1
Browse files Browse the repository at this point in the history
  • Loading branch information
Spasi committed Dec 8, 2018
1 parent 58406c7 commit 11b7f41
Show file tree
Hide file tree
Showing 4 changed files with 182 additions and 83 deletions.
7 changes: 6 additions & 1 deletion doc/notes/3.2.1.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
### 3.2.1

_Not Released Yet_
_Released 2018 Dec 08_

This build includes the following changes:

Expand All @@ -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)
Expand Down Expand Up @@ -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

Expand Down
3 changes: 2 additions & 1 deletion doc/notes/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
96 changes: 96 additions & 0 deletions doc/notes/full.md
Original file line number Diff line number Diff line change
@@ -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_
Expand Down
159 changes: 78 additions & 81 deletions doc/notes/latest.md
Original file line number Diff line number Diff line change
@@ -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<t>` 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`.
- Core: `sun.misc.Unsafe` is now required, there is no JNI fallback.
- vma: The `VmaVulkanFunctions.set` helper method now returns `VmaVulkanFunctions`. **(B)**

0 comments on commit 11b7f41

Please sign in to comment.