🔒 内存安全

Rust 的所有权系统保证了编译时内存安全:

🛡️ 编译时保证

  • 无空指针:编译器防止空指针解引用
  • 无缓冲区溢出:边界检查
  • 无悬垂指针:所有权系统
  • 无数据竞争:借用检查器

如果 Neon 模块能编译通过,它就是内存安全的。

⚡ 极致性能

Rust 提供零成本抽象,性能接近 C/C++:

性能对比

操作JavaScriptRust (Neon)
JSON 解析基准快 2-5x
图像处理基准快 10-50x
加密计算基准快 5-20x
字符串处理基准快 3-10x

性能优势来源

  • 无垃圾回收暂停
  • 零成本抽象
  • 编译优化
  • 直接系统调用

🔧 简单工具链

Neon 提供极简的开发体验:

📦

npm init

一条命令创建项目

🔨

无构建脚本

自动处理编译

🔗

npm 集成

标准 npm 包发布

🎯

跨平台

一次编写多平台运行

🔀 并行计算

Rust 的并发模型保证线程安全:

rust
use neon::prelude::*;
use std::thread;

fn parallel_compute(mut cx: FunctionContext) -> JsResult {
    let data: Vec = cx.argument::(0)?
        .to_vec(&mut cx)?
        .iter()
        .map(|v| v.downcast::(&mut cx).unwrap().value(&mut cx) as i32)
        .collect();
    
    // 并行处理
    let result: Vec = data.into_par_iter()
        .map(|x| x * 2)
        .collect();
    
    // 返回结果
    let arr = cx.empty_array();
    for (i, val) in result.iter().enumerate() {
        let num = cx.number(*val as f64);
        arr.set(&mut cx, i as u32, num)?;
    }
    
    Ok(arr)
}

🎨 类型系统

Neon 提供完整的 JavaScript 类型映射:

JavaScriptNeon (Rust)
stringJsString
numberJsNumber
booleanJsBoolean
objectJsObject
arrayJsArray
functionJsFunction
PromiseJsPromise
null/undefinedJsNull / JsUndefined

🔌 N-API 支持

Neon 基于 Node.js N-API 构建:

  • 与 Node.js 版本解耦
  • 跨 Node 主版本兼容
  • 未来兼容性保证
  • 实验性支持 Bun