Changelog History
Page 1
-
v1.2.0-alpha.0 Changes
December 05, 2025 -
v1.1.1 Changes
May 23, 2025๐ Hotfix for Node-API versions lower than 5 (#1106).
-
v1.1.0 Changes
May 23, 2025v1.1.0
-
v1.1.0-alpha.2 Changes
May 02, 2025 -
v1.0.0 Changes
February 23, 2024Commitment to Compatibility
โฌ๏ธ The release of Neon 1.0 marks our commitment to backwards-compatibility: starting with 1.0.0, Neon users can be confident that future upgrades to Neon 1.x versions should never require code changes (with the possible exception of safety bugfixes, which we expect to be rare). We also do not anticipate releasing new major versions often and do not have any plans to do so for now.
๐ฅ Breaking Changes
- โ Remove the generic parameter from
JsFunction(#989) JsArray::newtakes ausizeinstead of au32(#988)- Made
Context::globalread a key and addedContext::global_object(#987) - ๐ Deprecated feature flags were removed
๐ Bug fixes
- ๐ Fix
unhandledRejectionwithJsPromise::to_future(#1008) - Typo in
cargo-cp-artifacthelp (#998) - Typo in README (#1012)
Other
- ๐ Relaxed error behavior on missing Node-API symbols. Neon will panic on first use instead of aborting the process at module load time.
- โฌ๏ธ Bumped dependency versions
- ๐ Changed to edition 2021
- โก๏ธ Updated support matrix to Node 18, 20, and 21
- โ Remove the generic parameter from
-
v1.0.0-alpha.4 Changes
April 14, 2023๐ Patch to enable new feature flags in docs.rs.
-
v1.0.0-alpha.3 Changes
April 14, 2023๐ฅ Breaking Changes
- โ Removed
Managedtrait
๐ Improvements
- โ Added
JsBigInt(#963). - โ Added UTF-16 functions to
JsString(#944). - ๐ Relaxed
Sendconstraints (#979) - ๐ Lifecycle support for 32-bit (#977)
- โ Added
sysfeature (#970)
๐ Bug Fixes
- ๐ Fix a scope leak in release builds (#952).
๐ Docs
- Examples added for many types ((#942)).
cargo-cp-artifact๐
0.1.8fixes sending additional arguments on Windows (#972). - โ Removed
-
v1.0.0-alpha.2 Changes
November 11, 2022๐ฅ Breaking Changes
neon::object::This๐ Trait
neon::object::Thishas been removed.Thiswas primarily added for use with thedeclare_types!macro to generate classes. The macro was removed andThisis no longer needed. Additionally, theThisargument onJsFunctionwas found to be invalid because it asserted at compile time a type forthisthat could change at runtime. (Note that this was not unsound because the type would be checked by Node-API and result in apanic.)JsFunction::thisJsFunction::thiswas changed to perform a downcast and be fallible. This is in line with similar APIs (e.g.,Object::get). Additionally, an infallible version,JsValue::this_valuewas added that does not perform a downcast.โ Added Feature flag for external buffers
Electron began using pointer compression on JavaScript values that is incompatible with external buffers. As a preventative measure,
JsArrayBuffer::externalandJsBuffer::externalhave been placed behind a feature flag that warns of Electron incompatibility.๐ Improvements
- Lifetimes were relaxed on
execute_scopedto allow valid code to compile. (#919) - โ Added a
from_slicehelper onTypedArray(#925) JsTypedArrayconstruction and type aliases (#909)
๐ Bug Fixes
- ๐ Fixed a panic on VM shutdown when using
Channel(#934) - Type tags were added to
JsBoxto prevent undefined behavior when multiple native add-ons are used (#907)
๐ Docs
- ๐ Significantly improved documentation of
TypedArray(#909) - โ Removed unused values in
Channeldocs (#925)
cargo-cp-artifact๐
0.1.7includes a fix to unlink.nodefiles before copying to address common code signing errors on macOS (#921). - Lifetimes were relaxed on
-
v1.0.0-alpha.1 Changes
July 11, 2022๐ Pre-release of a major milestone for Neon. 1.0.
๐ฅ Breaking Changes
Major
- โ Removed the legacy backend; only Node-API is supported going forward (#881)
- โ Removed
neon::result::JsResultExtin favor of more generalneon::result::ResultExt(#904)
Minor
- Length APIs (
argument,argument_ops,len) useusizeinstead ofi32(#889) - ๐ Deprecate feature flags for accepted RFCs (#872)
neon::meta::versionreturnssemver@1version instead of0.9(#912)
๐ Features
- โ Add
Object.freezeandObject.seal(#891) Futures RFC (#872) Implementation (#874)
- Await
JoinHandlefrom sending an event on aChannel - Adapt
JsPromisetoJsFuture
- Await
API for thread-local data (i.e., instance data) (#902)
โ Add Object::call_with() convenience method to call a method on an object (#879)
๐ Bug Fixes
- ๐ Relax the lifetime constraints on
TypedArrayborrows (#877) - ๐ Allowing missing symbols at load time to support bun (#914)
- Prevent a panic when an async event is called after the JavaScript runtime has stopped (#913)
- ๐ Fix a soundness hole in
JsArrayBuffer::externalandJsBuffer::external(#897)
๐ Docs
Internal
-
v0.10.1 Changes
May 23, 2022๐ Fix a soundness hole in
JsArrayBuffer::external
andJsBuffer::external(#897).Thanks to @Cassy343 for finding the issue!
In previous versions of Neon, it was possible to create a
JsArrayBufferorJsBufferthat references data without the'staticlifetime.pubfnsoundness\_hole(mutcx:FunctionContext)->JsResult\<JsArrayBuffer\>{letmutdata =vec![0u8,1,2,3];// Creating an external from `&mut [u8]` instead of `Vec\<u8\>` since there is a blanket impl// of `AsMut\<T\> for &mut T`letbuf =JsArrayBuffer::external(&mutcx,data.as\_mut\_slice());// `buf` is still holding a reference to `data`!drop(data);Ok(buf)}