#quick-js #wasm-build #bindings #serialization #high-level #api-bindings #javy

废弃 quickjs-wasm-rs

QuickJS 的 Wasm 构建的高级绑定和序列化器

10 个版本 (5 个稳定版本)

3.1.0 2024 年 5 月 7 日
3.0.0 2024 年 1 月 31 日
2.0.1 2023 年 9 月 11 日
1.0.0 2023 年 5 月 17 日
0.1.0 2022 年 3 月 14 日

#6 in #quick-js

Download history 120/week @ 2024-05-04 31/week @ 2024-05-11 43/week @ 2024-05-18 131/week @ 2024-05-25 110/week @ 2024-06-01 30/week @ 2024-06-08 8/week @ 2024-06-15 2/week @ 2024-06-29 21/week @ 2024-07-13 13/week @ 2024-07-20 68/week @ 2024-07-27 15/week @ 2024-08-03 7/week @ 2024-08-10 4/week @ 2024-08-17

每月 95 次下载

Apache-2.0 WITH LLVM-exception

3MB
90K SLoC

C 79K SLoC // 0.0% comments JavaScript 7.5K SLoC // 0.0% comments Rust 3.5K SLoC // 0.0% comments Bitbake 499 SLoC // 0.1% comments Shell 111 SLoC // 0.1% comments

此包已废弃。

crates.io

关于此更改的动机在 https://github.com/bytecodealliance/javy/pull/618 中有详细说明

我们建议使用 rquickjs 作为 QuickJS 的高级绑定。

quickjs-wasm-rs

QuickJS 的 Wasm 构建的高级绑定和序列化器。

绑定

JSContextRef 对应于 QuickJS 的 JSContext,而 JSValueRef 对应于 QuickJS 的 JSValue

use quickjs_wasm_rs::JSContextRef;

let mut context = JSContextRef::default();

将创建一个新的上下文。

序列化器

此包提供了可选的转码功能,用于在序列化格式之间以及与 JSValueRef 之间进行转换

  • messagepack 提供了使用 rmp_serdequickjs_wasm_rs::messagepack 用于 msgpack。
  • json 提供了使用 serde_jsonquickjs_wasm_rs::json 用于 JSON。

msgpack 示例

use quickjs_wasm_rs::{messagepack, JSContextRef, JSValueRef};

let context = JSContextRef::default();
let input_bytes: &[u8] = ...;
let input_value = messagepack::transcode_input(&context, input_bytes).unwrap();
let output_value: JSValueRef = ...;
let output = messagepack::transcode_output(output_value).unwrap();

发布到 crates.io

要发布此包到 crates.io,请运行 ./publish.sh

使用自定义 WASI SDK

此包可以使用自定义的 WASI SDK 编译。在构建此包时,请将环境变量 QUICKJS_WASM_SYS_WASI_SDK_PATH 设置为 SDK 安装路径的绝对路径。

依赖