Releases: Jumballaya/buffwrap
Release list
v1.0.1 - Expose types
v1.0.1 – April 12, 2024
Added
- Exposed
BaseStrategyin main exports to support custom strategy creation - Exposed types for BufferWrap users
| Type Name | Description |
|---|---|
ProxyShape |
TS-resolved shape of the struct (e.g. { a: number, b: [x, y] }) |
BufferType |
Union of valid memory types (ArrayBuffer, Buffer, etc.) |
BufferStrategy<T, B> |
Interface for memory strategies (read/write, capacity, slicing) |
ProxyAccessStrategy |
(Legacy) Interface for proxy access strategy (may be phased out) |
StrategyConfig<T, B> |
Config used to initialize a strategy (offsets, stride, buffer, etc.) |
WrapperConfig<T, B> |
Full user-facing config passed to new BufferWrap() |
WrapperStructConfig<T> |
Field definitions: type + length per key (like schema) |
BufferList<T> |
Struct-of-buffers format for importing/exporting |
CopyTarget<T, B> |
Valid input types for .from() or .copyInto() |
Notes
- No functional or runtime changes
- Fully backward compatible with v1.0.0
v1.0.0 - First Release
📦 Changelog
v1.0.0 — Stable Core Release
BufferWrap is now production-ready! 🎉
✨ Highlights
- Strategy architecture →
ArrayBuffer,NodeBuffersupport - ProxyManager → Less stale proxies, shared across slices
- Safe slicing → Zero-cost, deep slice support
- Logical indexing → No more byte offset math
- Insert / Move / Swap → Memory-safe, consistent proxies
- Typed struct config → Full type safety
🔧 Improvements
- Full test suite (unit, integration, slicing, strategy)
- Cleaner errors, runtime validation
- Better separation of strategy logic
💥 Breaking Changes
- Requires explicit
strategyin config - Proxy cache is now managed internally (no more manual
.at()refresh)
Next:
v1.1.0adds reactive proxy consistency and support forSharedMemoryStrategy.
v0.9.9 - ProxyManager Refactor
BufferWrap v0.9.9 – Area-Based Changelog
| Area | Improvements |
|---|---|
| Proxy System | Introduced ProxyManager to manage all proxy creation, reuse, movement, and indexing. Eliminates stale proxies after structural changes. |
| Memory Safety | Proxy lifecycle centralized — proxies now update consistently on .move(), .swap(), .insert(), .copyInto(), and .from(). |
| BufferWrap API | Removed proxyCache, removed remapProxy(), and added internal ProxyAccessStrategy<T> for clean separation of logic. |
| Developer UX | No more stale proxy bugs after structural changes. Safer, more ergonomic. .at() remains lazy but consistent. |
| Testing | Full unit test suite added for ProxyManager. Existing BufferWrap tests updated and all passing. |
| Internal Refactors | New generateOffsetsAndStride() function to compute layout + alignment. Cleans up constructor logic. |
| Foundation for v1.0 | Prepares BufferWrap for pluggable strategies: ArrayBuffer, GPUMemory, AudioBuffer, SharedMemory, etc. |
v0.9.0: Getting close to v1.0.0
A lot was added:
the following methods:
slice: creates a new BufferWrap that is a slice of the parent BufferWrap
move: moves a struct from one location into another
insert: insert a struct or an entire BufferWrap at an index
copyInto: copies the data from the BufferWrap to an ArrayBuffer or another BufferWrap
iterate: creates a generator that iterates through the structs
attributeStride: returns the byte size of a specific attribute
The following attributes:
byteLength: get the length of the underlying DataView
stride: get the stride of the struct
First Release
First Release, it is published on NPM. I will take some time and use it in a few projects to see what more I need to do with it