neon - 一个安全的 Rust 抽象层用于原生 Node.js 模块
一个安全的 Rust 抽象层用于原生 Node.js 模块。
neon 保护所有句柄的JavaScript堆,即使他们分配上Rust 栈,确保对象总是安全地跟踪被垃圾收集器。
Getting started
Install neon-cli as a global npm package:
npm install -g neon-cli
To create a new Neon project, use neon new
:
neon new my-project
This will ask you a few questions and then generate a project skeleton for you. Follow the instructions from there to build and run your project!
Requirements
You'll need the following on all OSes:
- Node v4 or later;
- Rust v1.5 or later;
- multirust (only required for Neon projects that override the system default Rust).
For Mac OS X, you'll need:
- OS X 10.7 or later;
- XCode.
A Taste...
A Neon function takes a Call
object and produces either a handle to a value or the Throw
constant (meaning a JS exception was thrown). The Call
object provides access to a memory management scope, which safely manages the rooting of handles to heap objects:
fn make_an_array(call: Call) -> JS<Array> { let scope = call.scope; // the current scope for rooting handles let array: Handle<Array> = Array::new(scope, 3); try!(array.set(0, Integer::new(scope, 9000))); try!(array.set(1, Object::new(scope))); try!(array.set(2, Number::new(scope, 3.14159))); Ok(array) }
For a more complete demonstration, try building a hello world with neon new
, or check out the slightly bigger word count demo.
Get Involved
The Neon community is just getting started and there's tons of fun to be had. Come play! :)
The Rust Bridge community Slack is open to all; use the Slackin app to receive an invitation.
There's also an IRC channel at #neon
on Mozilla IRC (irc.mozilla.org
).
License
MIT