15个不稳定版本 (7个破坏性更新)
0.8.1 | 2024年1月22日 |
---|---|
0.7.0 | 2024年1月17日 |
0.6.0 | 2023年3月10日 |
0.3.1 | 2021年8月18日 |
0.2.2 | 2020年10月22日 |
#1 in #序列化
每月4,896次下载
用于 spacetimedb-cli
115KB
2.5K SLoC
wasmbin
wasmbin是一个库,实现了WebAssembly二进制文件的低级解析和序列化。
公共API
入口点是Module
对象。
从那里,您可以简单地通过查找嵌套字段来探索模块内容。结构体基本上与原始WebAssembly二进制格式一一对应,因此您也可以将规范作为参考。
支持的功能扩展
除了核心规范外,还支持以下WebAssembly提议,并且可以通过相应的Cargo功能启用:
动机
原始博客文章解释动机和内部结构:wasmbin:另一个WebAssembly解析器 & 序列化器。
该软件包旨在提供一个由Rust类型系统完全描述的WebAssembly模块的低级表示。它还利用所述类型系统与自定义proc-macros结合,为任何复杂类型(结构体和枚举)自动生成解析/序列化/访问代码。
对于用户来说,这种方法允许任何类型都可以独立使用来表示/解析/序列化模块的一部分,而对于维护者来说,它使得添加和测试新的WebAssembly功能就像添加新类型、字段和变体一样快速简单,而无需编写任何手动代码。
另一个显著特点是Lazy<T>
包装器,在wasmbin中使用,当规范允许时可以有效地跳过一些内容(例如函数体)。它允许以最小侵入性和高效性、“零成本”地编辑WebAssembly模块:在解码过程中,任何可以跳过的内容都会被懒加载地跳过(Lazy<...>
容器仅存储原始字节),而在编码过程中,仅重新编码模块的修改部分,而任何未修改的部分则直接从源复制为原始字节。
依赖项
~1.2–1.7MB
~35K SLoC