3 个版本
使用旧的 Rust 2015
0.0.3 | 2017 年 12 月 6 日 |
---|---|
0.0.2 | 2017 年 11 月 28 日 |
0.0.1 | 2017 年 11 月 27 日 |
#246 in FFI
6KB
53 行
wasm-wrapper-gen
为针对 wasm32-unknown-unknown 的 Rust 代码生成 JavaScript 包装器。
此存储库目前处于非常早期的开发阶段,但有一个完整的可工作示例 Cargo 项目在 examples/simple_summation/
目录中。
概述
wasm-wrapper-gen
由两个相互关联的部分组成
wasm-wrapper-gen
提供了js_fn!()
宏,该宏生成extern "C"
函数wasm-wrapper-gen-build
是一个构建脚本工具,它从源代码中提取对js_fn!()
的使用情况,并生成一个 JavaScript 文件,该文件将这些导出的函数绑定起来。
注意:此假设为小端硬件(现代硬件的大多数)。
当前支持
- 参数类型
bool
,u8
,u16
,u32
,usize
,i8
,i16
,i32
,isize
,f32
,f64
&[_]
,&mut [_]
,Vec<_>
其中_
是上述任何一种
- 返回类型
bool
,u8
,u16
,u32
,usize
,i8
,i16
,i32
,isize
,f32
,f64
Vec<_>
其中_
是上述任何一种
- 除非 Rust 函数崩溃,否则将提供完全自动的内存管理和释放
- 配置以使用单个 DataView 或每个参数的 TypedArray 实例来访问数组
- 可配置的输出JS缩进
未实现
-
接下来要做的
- 添加支持将异步构造函数而不是同步构造函数
- 添加支持使用
impl
块和self
参数创建包装JS类型,这些类型可以合理地管理分配。
-
未来的进一步
- 进行实际测试并找出如何编写一个只在测试时运行的 build.rs 脚本
- 实现某些序列化特质的任意参数类型
- 宏用于将单个结构体包装在单独的JavaScript类中,这些类都引用相同的WebAssembly.Instance
链接
依赖项
~2MB
~48K SLoC