流写器- io- cli- hash- native
Rust-backed sha256 hashher for flowscripter-io-cli,通过 Bun FFI 曝光.
Bun 模块使用
添加模块 :
bun add @flowscripter/flowscripter-io-cli-hash-native
使用模块 :
import { initNativeLib, Sha256Hasher } from "@flowscripter/flowscripter-io-cli-hash-native";
await initNativeLib();
const hasher = new Sha256Hasher();
hasher.update(new TextEncoder().encode("hello"));
const digest = hasher.final();
发展
安装依赖性 :
bun install
构建(生产) dist/ 对于Node.js和TypeScript消费者; Bun 直接使用原始来源:
bun run build
测试 :
cargo test
cargo build --release && FLOWSCRIPTER_HASH_NATIVE_DEV_BUILD=1 bun test
默认情况下, 本地库是从 ~/.flowscripter/lib (如果缺少或与其校验和不符,则从释放中下载)。 设置 FLOWSCRIPTER_HASH_NATIVE_DEV_BUILD=1 让软件包更喜欢自己的 target/release 建起来.
格式 :
cargo fmt && bunx oxfmt
林特:
bunx oxlint index.ts src/ tests/
生成 HTML API 文档 :
bunx typedoc index.ts
文档
概览
Sha256Hasher 包装出土的 Rust sha2 三后执行 extern "C" 函数hasher_init, (中文(简体) ), hasher_update, (中文(简体) ), hasher_final通过 bun:ffi是因为 dlopen。 。 。 .
导入软件包没有副作用. initNativeLib() 必须在第一个 Sha256Hasher 创建:它解决、下载和验证本地库,然后装入一次.
每期发布一个 <library file>.shasum (SHA-256)每个本土图书馆的兄弟姐妹资产. 下载会写入一个临时文件, 对照该校验和进行核对, 然后再重新命名为 ~/.flowscripter/lib 联合国 .shasum。已安装的图书馆将对照其 .shasum 在它被装载之前 initNativeLib() 如果核查失败, 则拒绝 .
update() 接受JS拥有的 Uint8Array 然后通过一个原始指针 直接进入同步的Rust呼叫 bun:ffi是因为 ptr() - 一旦字节在JS记忆中,就不再复制.
updatePointer() 接受一对已绘制的指针/长相配对——例如,一个出自本地来源且从未拥有JS自有副本的块——并直接传递给Rust呼叫,完全没有副本.
由此产生的32字节文摘被复制回联署材料 final(),无论散列了多少数据,其大小可忽略不计.
API 密码
链接自动生成的 API 文件 :
许可证
麻省理工学院