Skip to content

Latest commit

 

History

History
336 lines (207 loc) · 15.3 KB

RELEASES.md

File metadata and controls

336 lines (207 loc) · 15.3 KB

Version 0.8.2

Version 0.8.1

Version 0.8.0

Fixes

  • as_slice and as_mut_slice properly handle a null pointer from an empty buffer (neon-bindings#681)
  • Global drop queue added to avoid panics on N-API 6+ when dropping a Root (neon-bindings#700)

Features

Improvements

Housekeeping

Version 0.7.1

Features

Fixes

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 (neon-bindings#631). This API is strictly more powerful and allows users to return both JavaScript and Rust values from try_catch closures.

N-API

Version 0.5.3

Bug Fixes

Upgrade node-gyp (neon-bindings#623)

  • Fix Windows Node 15
  • Fix Apple M1

Features

Added neon::main macro as a replacement for register_module! (neon-bindings#636)

Known Issues

Builds occassionally fail with Windows, Node 15 and npm 7 (neon-bindings#642)

Version 0.5.2

CLI

Added support for additional arguments passed to cargo build. Resolves neon-bindings#471.

neon build --release -- --features awesome

N-API

Version 0.5.1

Performance

  • smallvec is used for collecting arguments and yields a small performance gain when calling JsFunction

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

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

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 test to be used on neon modules
  • Added support for alternate CARGO_TARGET_DIR locations (e.g., workspaces)
  • Added macros to neon::prelude to improve ergonomics in Rust 2018
  • Link win_delay_hook when building with electron-build-env, fixing Windows Electron
  • Fixed missing __cxa_pure_virtual on Linux
  • Copy native files into OUT_DIR and build there to fix cargo publish and 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-runtime and n-api feature flags for toggling neon runtime
  • Moved the legacy runtime to nodejs-sys crate
  • Stubbed required n-api implementation
  • Added feature flag to neon-cli to help configuring n-api projects

Version 0.3.1

  • Build v0.3 project templates by default in the CLI

Version 0.3

Breaking Changes

Bug Fixes

Improvements

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 ArrayBuffer views API -- see RFC 5 (#306)
  • VM 2.0 -- see RFC 14 (#306)
  • New JsString constructor -- see RFC 21 (#322)
  • Eliminated JsInteger, JsVariant, callee() -- see RFC 22 (#323)
  • Renamed Key to PropertyKey and its method names -- see RFC 22 (#323)
  • Module reorganization -- see RFC 20 (#324)
  • New JsError API -- see RFC 23 (#325)
  • Eliminated ToJsString API -- see RFC 22 (#326)
  • Eliminated NEON_NODE_ABI env var -- see RFC 22 (#327)
  • Default to release builds -- see RFC 22 (#328)
  • Made Buffer construction safe by default (#329, #331)
  • Made Throw not implement std::error::Error to avoid accidental suppression, thanks to @kjvalencik (#334)
  • Fixed a bug causing unnecessary rebuilds, thanks to @kjvalencik (#343)
  • Fixed a soundness bug in the Task API, thanks to @kjvalencik (#335)

Version 0.1.23

Version 0.1.22

  • Reinstate JsInteger (although it's deprecated) for now, to be removed in 0.2. (#279)

Version 0.1.21

Version 0.1.20

  • Background task API (#214).
  • Fixes to Windows builds (#221, #227), thanks to @hone's tenacious troubleshooting.

Version 0.1.19

Version 0.1.18

Version 0.1.17

Version 0.1.16

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 Error for Throw (#201)
  • Clean up the CLI and allow neon build to 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)

Version 0.1.11 (2016-08-08)

Version 0.1.10 (2016-05-11)

Incompatible Changes

  • The JsTypeError type is gone, and replaced by the more general JsError type.
  • neon::js::error::JsTypeError::throw(msg) is now neon::js::error::JsError::throw(neon::js::error::kind::TypeError, msg)