15 KiB
Version 0.8.2
- More docs improvements
- Added a deprecation warning to
neon new(https://github.com/neon-bindings/neon/pull/722)
Version 0.8.1
- Fix
legacy-backendfor Node 16 (https://github.com/neon-bindings/neon/pull/715) - Various docs improvements
Version 0.8.0
Fixes
as_sliceandas_mut_sliceproperly handle anullpointer from an empty buffer (https://github.com/neon-bindings/neon/pull/681)- Global drop queue added to avoid panics on N-API 6+ when dropping a
Root(https://github.com/neon-bindings/neon/pull/700)
Features
- Added
neon::reflect::eval(https://github.com/neon-bindings/neon/pull/692) - Added
create-neonfor creating an N-API project (https://github.com/neon-bindings/neon/pull/690) - Added details to the
README.mdgenerated bycreate-neon(https://github.com/neon-bindings/neon/pull/697)
Improvements
- Switched N-API tests to
cargo-cp-artifact(https://github.com/neon-bindings/neon/pull/687) - Added
impl<T: Finalize> Finalize for Option<T>(https://github.com/neon-bindings/neon/pull/680) - Added a N-API migration guide (https://github.com/neon-bindings/neon/pull/685)
Housekeeping
- Lint fixes (https://github.com/neon-bindings/neon/pull/609)
- Lint CI enforcement and
cargo fmt(https://github.com/neon-bindings/neon/pull/698)
Version 0.7.1
Features
- Added
JsDateto N-API backend (https://github.com/neon-bindings/neon/pull/639) - Implement
JsBuffer::unitializedfor N-API backend (https://github.com/neon-bindings/neon/pull/664)
Fixes
- Do not panic if a
Rootis leaked after the event loop has stopped (https://github.com/neon-bindings/neon/pull/677) - Stubs for features that will not be implemented in the N-API backend are removed (https://github.com/neon-bindings/neon/pull/663)
- Fix doc URL link (https://github.com/neon-bindings/neon/pull/663)
Version 0.7.0
N-API
Version Selection
Neon supports a large number of different Node versions which may have different N-API requirements. Neon now supports selecting the minimum required N-API version required by a module. For example, for N-API Version 4:
neon = { version = "0.7", default-features = false, features = ["napi-4"] }
If the Neon module is loaded in an older version of Node that does not support that N-API version, a panic message will inform the user.
Threadsafe Functions
A prerelease version of EventQueue for calling into the main JavaScript thread from Rust threads can be enabled with the event-queue-api feature flag. The API is considered unstable and may change in the future until the RFC is merged.
Version 0.6.0
The cx.try_catch(..) API has been updated to return T: Sized instead of T: Value (https://github.com/neon-bindings/neon/pull/631). This API is strictly more powerful and allows users to return both JavaScript and Rust values from try_catch closures.
N-API
- N-API symbols are now loaded dynamically (https://github.com/neon-bindings/neon/pull/646)
- Build process for N-API is greatly simplified by leveraging dynamic loading (https://github.com/neon-bindings/neon/pull/647)
Version 0.5.3
Bug Fixes
Upgrade node-gyp (https://github.com/neon-bindings/neon/pull/623)
- Fix Windows Node 15
- Fix Apple M1
Features
Added neon::main macro as a replacement for register_module! (https://github.com/neon-bindings/neon/pull/636)
Known Issues
Builds occassionally fail with Windows, Node 15 and npm 7 (https://github.com/neon-bindings/neon/issues/642)
Version 0.5.2
CLI
Added support for additional arguments passed to cargo build. Resolves https://github.com/neon-bindings/neon/issues/471.
neon build --release -- --features awesome
N-API
- Improved arguments performance
- Add redirect and
NPM_CONFIG_DISTURLsupport
Version 0.5.1
Performance
smallvecis used for collecting arguments and yields a small performance gain when callingJsFunction
Broader Support
Thanks to @staltz, neon now builds for both iOS and Android with nodejs-mobile.
Version 0.5.0
Re-publish
Versions 0.4.1 and 0.4.2 included a breaking change in neon-runtime. At the time, this was considered acceptable because neon-runtime is considered an internal crate and not part of the public API. However, it was discovered, after publishing, that neon-serde, a commonly used crate in the neon ecosystem, contained a direct dependency on neon-runtime. In order to best support users, versions 0.4.1 and 0.4.2 were "yanked" and re-published as 0.5.0.
Additionally, the team is working with the authors of neon-serde to remove the dependency on neon-runtime to prevent future issues.
Bug Fixes
- Fix stack overflow in
DowncastErrorDisplayimpl (https://github.com/neon-bindings/neon/pull/606)
Version 0.4.2
Unpublished / Yanked
Bug Fixes
- Fix memory leak and race condition in
EventHandler
Version 0.4.1
Unpublished / Yanked
Features
Try Catch
Added the cx.try_catch API of RFC 29. This feature is behind the try-catch-api feature flag.
Bug Fixes
- Pass
async_contexttonode::MakeCallback(https://github.com/neon-bindings/neon/pull/498) - Cache bust neon if node version changes (https://github.com/neon-bindings/neon/pull/388)
- Fix debug builds in windows (https://github.com/neon-bindings/neon/pull/400)
- Fix cross compiling architectures (https://github.com/neon-bindings/neon/pull/491)
- Fix neon new hanging on Windows (https://github.com/neon-bindings/neon/pull/537)
CI Improvements
The Neon Project now uses Github Actions thanks to @lhr0909! As part of this change, CI now runs on all of our supported platforms (macOS, Windows, linux) and Node versions.
Version ✨0.4✨ 🎉
EventHandler API
The EventHandler API is a new feature for scheduling work on the javascript main thread from other threads. Big thanks to @geovie for the RFC and implementation.
This feature is currently unstable and gated by a event-handler-api feature flag.
Improvements
- New project template updated for Rust 2018
Bug Fixes
- Workaround for nodejs/node-gyp#1933
- Docs build fixed
- Temporarily disable static tests which keep breaking CI
N-API
- Context/Isolate threading
- Scopes
- Strings
- Primitive values (numbers, undefined, null, boolean)
Version 0.3.3
Hot fix for neon build in projects with many dependencies.
Version 0.3.2
Bug fixes and Small Features
- Disable node module registration on test build, allowing
cargo testto be used on neon modules - Added support for alternate
CARGO_TARGET_DIRlocations (e.g., workspaces) - Added macros to
neon::preludeto improve ergonomics in Rust 2018 - Link
win_delay_hookwhen building withelectron-build-env, fixing Windows Electron - Fixed missing
__cxa_pure_virtualon Linux - Copy native files into
OUT_DIRand build there to fixcargo publishand follow best practices - Eliminated
mem::uniitialized()usage, reducing warnings and fixing an instance of undefined behavior
Potentially Breaking
The macOS link arguments were moved from neon-cli to neon-build. This is more idiomatic, but makes neon-build required for macOS builds where it was unnecessary before.
Since neon-build has been included in the project template since 0.1 this change was not deemed significant enough to warrant a major revision.
N-API
Neon 0.3.2 lays the groundwork for the next major revision. Development of Neon against an ABI stable Node API (N-API) will occur on main.
- Added
legacy-runtimeandn-apifeature flags for toggling neon runtime - Moved the legacy runtime to
nodejs-syscrate - Stubbed required
n-apiimplementation - Added
featureflag toneon-clito help configuringn-apiprojects
Version 0.3.1
- Build v0.3 project templates by default in the CLI
Version 0.3
Breaking Changes
Bug Fixes
- Correctly fail the build if custom build command fails
- Fix breaking changes with v8
GetFunction - Moved
nanfromdevDependenciestodependenciesinneon-runtime - Changed neon crate type from
dylibtocdylib - Ensure that neon module loading is not optimized away
Improvements
- Added support for
CARGO_BUILD_TARGETenvironment variable
Version ✨0.2✨ 🎉
See the Neon 0.2 Migration Guide for documentation on migrating your projects from the Neon 0.1.x series to Neon 0.2, and please let us know if you need help!
- Release automation (#318)
- New
ArrayBufferviews API -- see RFC 5 (#306) - VM 2.0 -- see RFC 14 (#306)
- New
JsStringconstructor -- see RFC 21 (#322) - Eliminated
JsInteger,JsVariant,callee()-- see RFC 22 (#323) - Renamed
KeytoPropertyKeyand its method names -- see RFC 22 (#323) - Module reorganization -- see RFC 20 (#324)
- New
JsErrorAPI -- see RFC 23 (#325) - Eliminated
ToJsStringAPI -- see RFC 22 (#326) - Eliminated
NEON_NODE_ABIenv var -- see RFC 22 (#327) - Default to release builds -- see RFC 22 (#328)
- Made
Bufferconstruction safe by default (#329, #331) - Made
Thrownot implementstd::error::Errorto avoid accidental suppression, thanks to @kjvalencik (#334) - Fixed a bug causing unnecessary rebuilds, thanks to @kjvalencik (#343)
- Fixed a soundness bug in the
TaskAPI, thanks to @kjvalencik (#335)
Version 0.1.23
- Optimization in
Scopestructures, thanks to @maciejhirsz (#282) - Fixed a memory leak in the
TaskAPI, thanks to @kjvalencik (#291) - Add support for Node 10, thanks to @mhsjlw and @nomadtechie (#314)
Version 0.1.22
- Reinstate
JsInteger(although it's deprecated) for now, to be removed in 0.2. (#279)
Version 0.1.21
- Fix a bug that was causing annoying unnecessary rebuilds (#242).
- New API for getting the global object (#249).
Version 0.1.20
- Background task API (#214).
- Fixes to Windows builds (#221, #227), thanks to @hone's tenacious troubleshooting.
Version 0.1.19
- TypeScript upgrade fixes (neon-bindings/neon-cli#62, neon-bindings/neon-cli#65).
Version 0.1.18
- CLI bugfix (neon-bindings/neon-cli#59).
- JsArrayBuffer (#210).
Version 0.1.17
- CLI bugfix (neon-bindings/neon-cli#57).
Version 0.1.16
- CLI bugfix (neon-bindings/neon-cli#56).
Version 0.1.15 (2017-05-21)
- Better Electron support in CLI's build process.
- Better support for Electron via the artifacts file (neon-bindings/neon-cli#52).
Version 0.1.14 (2017-04-02)
- Ensure failing tests break the build (#191)
- Catch Rust panics and convert them to JS exceptions (#192)
- Implement
ErrorforThrow(#201) - Clean up the CLI and allow
neon buildto optionally take module names (neon-bindings/neon-cli#48).
Version 0.1.13 (2017-02-17)
- More robust build scripts for neon-runtime, fixing Homebrew node installations (see #189)
Version 0.1.12 (2017-02-16)
- Optimized rooting protocol
- Eliminate rustc warnings
- Lots of internal API docs
- Windows support! 🎉
- Renamed
neon-systoneon-runtime - Depend on
neon-buildas a build dependency (see neon-bindings/neon-cli#46).
Version 0.1.11 (2016-08-08)
- Exposed
Thistrait to allow user-level abstractions involvingFunctionCall - Bump version to match Neon so they can be kept in sync from now on.
- Generate a
build.rsto make Windows work (see neon-bindings/neon-cli#42 and neon-bindings/neon-cli#44).
Version 0.1.10 (2016-05-11)
- Added
JsErrorAPI with support for throwing all standard error types - Test harness and CI integration!! 🎉 🎉 🎉
- API to call JS functions from Rust
- API to new JS functions from Rust
- Added generalized
as_sliceandas_mut_slicemethods toCSliceAPI. - Fixed a soundness issue with Locks.
Incompatible Changes
- The
JsTypeErrortype is gone, and replaced by the more generalJsErrortype. neon::js::error::JsTypeError::throw(msg)is nowneon::js::error::JsError::throw(neon::js::error::kind::TypeError, msg)