统一 API
一次编写,到处运行。同一份 Rust 代码即可驱动 QuickJS、JavaScriptCore 和 ArkJS —— 引擎在构建时选定,代码中没有任何引擎相关的分支。
Rong(融)是一个面向 Rust 的 JavaScript 运行时,以统一的 API 覆盖 QuickJS、JavaScriptCore 和 ArkJS —— 专为嵌入式场景、Rust 驱动的 JS API 以及长生命周期的 worker 运行时而设计。
cargo add rong --features quickjs,tls-aws-lc 「融」意为交融与和谐。Rong 将 JavaScript 引擎与 Rust 原生代码融为一体,以单一而优雅的 API 统一各式运行时。
一次编写,到处运行。同一份 Rust 代码即可驱动 QuickJS、JavaScriptCore 和 ArkJS —— 引擎在构建时选定,代码中没有任何引擎相关的分支。
使用 #[js_class] 和 #[js_method] 将 Rust 结构体暴露给 JavaScript —— 构造函数、getter、setter 与静态方法,全部经过 Rust 类型检查。
一流的 Promise 与异步迭代器集成,让 JavaScript 与 Rust 的 Future 跨越引擎边界自然交织。
显式选择执行模型:shared() worker 处理无状态任务,pinned() worker 让按键关联的状态始终驻留在同一个长生命周期运行时上。
让任务截止时间覆盖排队与执行;在引擎支持时中断不让出执行权的 JavaScript,并在超时后安全复用 worker。
类型定义以 @rongjs/rong 发布到 npm;@rongjs/rong-skill 则打包了带生成式 API 参考的可安装智能体技能。
引擎彼此互斥,在构建时选定 —— 若同时启用多个引擎,构建会立即失败。库本身不预设默认引擎;由下游 crate 显式选择引擎与 TLS 后端。
轻量且快速。Rong CLI 在桌面主机上的默认引擎,搭配 aws-lc TLS 后端。
在 macOS 和 iOS 上链接系统 JavaScriptCore.framework,或在受支持目标上使用固定版本、源码构建的 WebKit/JSCOnly 产物。Windows 源码产物目前不可用。
HarmonyOS 的 JavaScript 引擎,面向 aarch64 OpenHarmony 目标,搭配 ring TLS 后端。
Rong 内核提供统一 API、类型系统、内存管理与异步层,引擎和内置模块在其下方接入。
添加依赖、选择引擎,即可在 Rust 中运行 JavaScript —— 或将 Rust 类暴露给 JavaScript。
use rong::*;
fn main() -> Result<(), Box<dyn std::error::Error>> {
// Create a JavaScript runtime and context
let rt = RongJS::runtime();
let ctx = rt.context();
// Execute JavaScript directly
let result: i32 = ctx.eval(Source::from_bytes(b"2 + 3"))?;
println!("Result: {}", result); // Result: 5
Ok(())
}use rong::{Rong, RongJS, Source};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// shared() for stateless work on any available worker;
// pinned::<K, S>() keeps keyed work on the same runtime.
let rong = Rong::<RongJS>::builder().shared().workers(2).build()?;
let value: i32 = rong.call(|runtime, _receiver| async move {
let ctx = runtime.context();
ctx.eval(Source::from_bytes(b"21 * 2"))
}).await?;
println!("JS result: {value}"); // JS result: 42
Ok(())
}use rong::*;
use rong::{js_class, js_method};
#[js_class]
struct Point { x: i32, y: i32 }
#[js_class(rename = "Point2D")]
impl Point {
#[js_method(constructor)]
fn new(x: i32, y: i32) -> Self { Self { x, y } }
#[js_method(getter, enumerable)]
fn x(&self) -> i32 { self.x }
#[js_method(rename = "moveBy")]
fn move_by(&mut self, dx: i32, dy: i32) {
self.x += dx;
self.y += dy;
}
// Static method: Point2D.origin()
#[js_method]
fn origin() -> Self { Self { x: 0, y: 0 } }
}
fn main() -> Result<(), Box<dyn std::error::Error>> {
let rt = RongJS::runtime();
let ctx = rt.context();
// Register once, then use from JavaScript:
// const p = new Point2D(1, 2); p.moveBy(3, 4);
ctx.register_class::<Point>()?;
Ok(())
}[dependencies]
# Engines are mutually exclusive — pick one, plus a TLS backend.
# Desktop: tls-aws-lc · HarmonyOS/OpenHarmony: tls-ring
rong = { version = "0.6", features = ["quickjs", "tls-aws-lc"] }# Run the Rong CLI / REPL — QuickJS + aws-lc by default on desktop
cargo run -p rong_cli
# Switch to JavaScriptCore explicitly
cargo run -p rong_cli --no-default-features --features jscore,tls-aws-lc
# Build for ArkJS on OpenHarmony targets
cargo build --no-default-features --features arkjs,tls-ring \
--target aarch64-unknown-linux-ohos常见的运行时任务尽在其中 —— 定时器、HTTP、文件系统、存储、worker、Redis、SQLite、S3 等。点击模块即可阅读其 API 参考。
rong_timer setTimeout、setInterval 与异步定时器 rong_http HTTP 客户端/服务端,fetch API rong_fs 文件系统操作 rong_console 控制台日志与调试 rong_url URL 解析与处理 rong_buffer 二进制数据处理 rong_event 事件派发与处理 rong_abort AbortController 与信号 rong_encoding 文本编码 / 解码 rong_assert 断言工具 rong_exception 异常处理 rong_storage 存储 API rong_stream 流 API rong_compression 压缩与解压 rong_command 子进程与 shell 执行 rong_worker JavaScript worker 线程 rong_cron Cron 解析与定时任务 rong_redis Redis 客户端 API rong_sqlite SQLite API rong_s3 S3 兼容对象存储 Rong 同时发布到 crates.io 和 npm,并为 TypeScript、JavaScript 测试与 AI 智能体提供专用软件包。
运行时本体,以及由单一发布工作流按依赖顺序发布的各模块 crate。
JS testing零依赖测试框架,在所有 Rong 引擎上提供顺序异步用例、嵌套 hooks、严格 matchers 与结构化报告。
npmRong 运行时的 TypeScript 类型定义,让面向 Rong 编写的 JS 获得完整的编辑器支持。
npm可安装的智能体技能,内含自洽的文档与生成式 API 参考,服务 AI 编码智能体。
CLI本地运行时执行与 REPL 工作流,通过 Cargo features 选择引擎。
@rongjs/rong-skill 打包了三个可安装的智能体技能 —— 自洽的 SKILL.md 文档与生成式 API 参考,适用于任何支持文件式技能的智能体运行时。
rong-runtime-embedder围绕 Rong runtime 构建 Rust host,选择模块能力,管理 worker 生命周期,并正确应用取消、截止时间与执行中断。
rong-runtime-developer编写 Rong JavaScript 脚本、选择正确的公共 API、改编示例、运行 rong_cli 并编译字节码。
rong-module-author编写或修改 Rust 模块,暴露 Rong API、类、函数、类型转换及 JavaScript 错误。
npx @rongjs/rong-skill install 使用 --project 进行项目级安装,或用 --skill <name> 只安装其中一个。这些技能与本站的模块 API 文档同源 —— 单一事实来源。