31 个版本 (15 个重大更改)

0.16.1 2024 年 2 月 29 日
0.15.0 2024 年 2 月 21 日
0.12.1 2023 年 12 月 20 日
0.11.1 2023 年 11 月 21 日
0.1.11 2021 年 6 月 17 日

#29#marine

Download history 78/week @ 2024-05-03 237/week @ 2024-05-10 228/week @ 2024-05-17 183/week @ 2024-05-24 169/week @ 2024-05-31 151/week @ 2024-06-07 54/week @ 2024-06-14 47/week @ 2024-06-21 52/week @ 2024-06-28 87/week @ 2024-07-05 84/week @ 2024-07-12 82/week @ 2024-07-19 291/week @ 2024-07-26 129/week @ 2024-08-02 169/week @ 2024-08-09 98/week @ 2024-08-16

每月 695 次下载
3 个crate(直接使用 2 个)中使用

Apache-2.0

240KB
1K SLoC

Marine Rust SDK

crates.io version

此 SDK 使开发者能够创建通用 Wasm 模块,并使用 interface-types 和一个 无共享链接 方案将它们组合到一个多模块设置中。SDK 提供所有必要的宏和其他功能,使 Wasm 开发过程尽可能接近“vanilla”Rust。编译的模块旨在使用 Marine 运行时运行。

用法

SDK 的核心组件是应该与导出函数、外部块和结构一起使用的 #[marine] 宏。每个以这种方式包装的函数都将从编译的 Wasm 模块中导出。让我们考虑一个包含一个导出函数的简单模块场景。

use marine_rs_sdk::marine;

#[marine]
pub fn greeting(name: String) -> String {
    format!("Hi, {}", name)
}

此代码导入 Marine SDK 并使用 #[marine] 宏包装问候函数。每个以这种方式包装的函数都将从编译的 Wasm 模块中导出。

要编译此代码到 Wasm,您需要 Marine CLI 工具。如果您尚未安装 CLI,请使用 cargo install marine

marine build --release

最后,您将获得一个嵌入到Wasm二进制文件中的构建清单,并可以与Marine REPL(mrepl)中的模块进行交互。如果您还没有,请使用以下命令安装:cargo install mrepl

> marine info ./target/wasm32-wasi/release/greeting.wasm
it version:  0.23.1
sdk version: 0.7.0
authors:     <user-name>
version:     0.1.0
description:
repository:
build time:  2023-02-15 18:52:37.865550 +00:00 UTC

> mrepl --quiet
1> load greeting ./target/wasm32-wasi/release/greeting.wasm
module successfully loaded into App service
elapsed time: 52.153308ms

2> interface
Application service interface:
greeting:
  fn greeting(name: String) -> String

3> call greeting greeting "user"
result: String("Hi, user")
 elapsed time: 132.021µs

关于开发此简单模块的完整指南可以在这里找到。

SDK组件

SDK导出以下主要组件

支持的Rust类型

目前,#[marine]宏允许以下Rust类型作为导出和导入函数的参数或结构体字段的类型

  • 以下Rust基本类型之一:boolu8u16u32u64i8i16i32i64f32f64
  • 字符串 String&str
  • 上述类型元素的向量
  • 由上述类型的向量组成的向量,其中递归是可接受的,例如,类型Vec<Vec<Vec<u8>>>是可接受的
  • 上述所有类型的引用
  • 所有字段都是基本Rust类型的结构体
  • 所有字段都是上述类型或其他以这种方式构建的结构体的结构体

文档

此外,请查看我们的YouTube频道

存储库结构

  • crates
  • src 包含 call_parameters 和 mounted_binary 模块,以及导出所有用户所需的内容

支持

如果您发现任何错误,请 提交问题。您也可以通过 DiscordTelegram 联系我们。我们将尽力尽快解决问题。

贡献

任何有兴趣的人都可以为项目做出贡献。请确保您阅读并遵循一些基本的 规则

许可证

所有软件代码均为 Fluence Labs, Inc. 版权所有,根据 Apache-2.0 许可证。

依赖

~49MB
~875K SLoC