V8 v8.3 is now officially available.
ArrayBuffertracking in the garbage collector
Backing stores of
ArrayBuffers are allocated outside V8’s heap using
ArrayBuffer::Allocatorprovided by the embedder. These backing stores need to be released when their
ArrayBufferobject is reclaimed by the garbage collector. V8 v8.3 has a new mechanism for tracking
ArrayBuffers and their backing stores that allows the garbage collector to iterate and free the backing store concurrently to the application. More details are available in this design document. This reduced total GC pause time in
ArrayBufferheavy workloads by 50%.
Bigger Wasm memories
In accordance with an update to the WebAssembly specification, V8 v8.3 now allows modules to request memories up to 4GB in size, allowing more memory-heavy use cases to be brought to platforms powered by V8. Please keep in mind that this much memory might not always be available on a user’s system; we recommend creating memories at smaller sizes, growing them as needed, and gracefully handling failures to grow.
Stores to objects with typed arrays on the prototype chain
However, we recently identified a particular scenario where V8 incorrectly installed this fast lookup handler, leading to incorrect behaviour. When
TypedArrays are on the prototype chain, all stores to keys which are OOB of the
TypedArrayshould be ignored. For example, in the case below
vshouldn’t add a property to
vand the subsequent reads should return undefined.
For full updates, please read the release notes here.