@orieg/expanse-wasm

中文文档
0.17.0发布于 2026/11/02MIT OR Apache-2.0TypeScriptES Module零依赖构建来源已验证

用于以太坊的WebAssembly绑定:用于浏览器和边缘运行时的纯rust Judy数组

中文使用文档
文档目录4 节
  1. 安装
  2. 快速入门
  3. WebAssembly内存 wasm64-unknown-unknown )支持
  4. 交互式浏览器速度竞技场

@orieg / expanse-wasm

的WebAssembly绑定 expanse-trie. 适用于Edge运行时(Cloudflare Workers, Fastly, Deno Deploy, Vercel)和现代浏览器。

安装

npm install @orieg/expanse-wasm

快速入门

import { WasmExpanseSet, init_panic_hook } from '@orieg/expanse-wasm';

// Initialize panic hook for better error messages
init_panic_hook();

const set = new WasmExpanseSet();
set.add(42n);
console.log(set.contains(42n)); // true

以数字树为后盾:

  • WasmExpanseSet32: 32位数字树集,具有批处理执行方法
  • WasmExpanseMap32:具有批处理执行方法的32位数字trie map
  • WasmExpanseSet, WasmExpanseMap: 64位引擎 wasm64;一个 BTreeMap / BTreeSet 回退上 wasm32,而64位引擎则没有 存在

不支持引擎- BTreeMap 占位符 (# 757):

  • WasmExpanseStrMap: String 来 u64 地图
  • WasmExpanseBytesMap: &[u8] 来 u64 地图
  • WasmExpanseBlobMap: u64 来 &[u8] 带有热元数据的映射

这三个进位 Expanse* 名字但是是 std::collections::BTreeMap。他们 没有那个人的记忆档案, mem_used 核算或节点结构, 和 通过它们测量的数字不能说明发动机的情况. 没有什么 所发布的内容依赖于它们:每一行WASM docs/BINDINGS_BENCHMARKS.md 每一只手臂 在 scripts/wasm_fuel.py 的范围为 WasmExpanseMap32 / WasmExpanseSet32.

它们是占位符而不是包装器,因为它们是引擎类型 以…命名 ExpanseStrMap, ExpanseBytesMap, ExpanseBlobMap ——是 #[cfg(target_pointer_width = "64")] 也没有32位的双胞胎,所以他们没有 存在于 wasm32. ExpanseBlobMap32 存在,但不需要块大小和 使用32位密钥,因此采用它将缩小该类发布的API的范围 赢得这个名字所暗示的竞技场。

WasmExpanseBlobMap的构造函数 拒绝 一个 chunk_size 参数,而 而不是接受和抛弃它:没有大小的竞技场。

WebAssembly内存wasm64-unknown-unknown)支持

以太坊支持64位WebAssembly线性内存(Memory64),允许完整的64位原始指针引擎(ExpanseMap, ExpanseSet, 16字节 Edge 描述符)直接在支持64位内存空间的WebAssembly运行时中运行(例如带有 --experimental-wasm-memory64 或现代V8 / Wasm运行时)。

为…建造 wasm64-unknown-unknown:

cargo +nightly build -p expanse-wasm --target wasm64-unknown-unknown -Z build-std=std,panic_abort

要运行Node.js Memory64运行时冒烟测试:

node crates/expanse-wasm/tests/test_wasm64_smoke.js

交互式浏览器速度竞技场

交互式客户端基准比较 WasmExpanseMap32 对生锈 BTreeMap 和原生JavaScript Map 包含在 examples/speed_arena.html.

本地运行:

wasm-pack build crates/expanse-wasm --target web --out-dir crates/expanse-wasm/examples/pkg
python3 -m http.server 8080 --directory crates/expanse-wasm/examples

开放 http://localhost:8080/speed_arena.html.

版本与发布记录

@orieg/expanse-wasm 共发布 24 个版本,首次发布于 2026/08/26;过去 12 个月发布了 24 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.17.0latest2026/11/021 天前
0.16.02026/10/268 天前
0.15.02026/10/2014 天前
0.14.02026/10/1816 天前
0.13.02026/10/1519 天前
0.12.02026/10/1321 天前

关于 @orieg/expanse-wasm 的常见问题

@orieg/expanse-wasm 是什么?

用于以太坊的WebAssembly绑定:用于浏览器和边缘运行时的纯rust Judy数组

如何安装 @orieg/expanse-wasm?

在项目目录运行 npm install @orieg/expanse-wasm,或使用 pnpm add / yarn add / bun add。

@orieg/expanse-wasm 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@orieg/expanse-wasm 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@orieg/expanse-wasm 可以商用吗?

@orieg/expanse-wasm 使用 MIT OR Apache-2.0 许可。可在 MIT、Apache-2.0 中任选其一遵守。选择 MIT 时,宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@orieg/expanse-wasm 还在维护吗?

最新版本 0.17.0 发布于 2026/11/02(1 天前);至今共发布 24 个版本,其中过去 12 个月发布了 24 个;首次发布于 2026/08/26。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。