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,f64Vec<_>其中_是上述任何一种
- 除非 Rust 函数崩溃,否则将提供完全自动的内存管理和释放
- 配置以使用单个 DataView 或每个参数的 TypedArray 实例来访问数组
- 可配置的输出JS缩进
未实现
-
接下来要做的
- 添加支持将异步构造函数而不是同步构造函数
- 添加支持使用
impl块和self参数创建包装JS类型,这些类型可以合理地管理分配。
-
未来的进一步
- 进行实际测试并找出如何编写一个只在测试时运行的 build.rs 脚本
- 实现某些序列化特质的任意参数类型
- 宏用于将单个结构体包装在单独的JavaScript类中,这些类都引用相同的WebAssembly.Instance
链接
依赖项
~2MB
~48K SLoC