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 #序列化

Download history 1717/week @ 2024-04-23 1184/week @ 2024-04-30 980/week @ 2024-05-07 1497/week @ 2024-05-14 1407/week @ 2024-05-21 1946/week @ 2024-05-28 2115/week @ 2024-06-04 1811/week @ 2024-06-11 936/week @ 2024-06-18 1307/week @ 2024-06-25 1478/week @ 2024-07-02 1485/week @ 2024-07-09 1079/week @ 2024-07-16 1272/week @ 2024-07-23 858/week @ 2024-07-30 1412/week @ 2024-08-06

每月4,896次下载
用于 spacetimedb-cli

Apache-2.0

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