#fluence #sdk #marine #wasm #wasm-module #api-bindings

marine-call-parameters

包含用于 marine-rs-sdk 的 CallParameters 和 SecurityTetralets 结构

8 个版本 (4 个重大更新)

0.14.0 2024年2月21日
0.13.0 2024年2月20日
0.12.0 2024年2月8日
0.11.0 2024年2月6日
0.10.0 2023年9月13日

1925神奇豆子

Download history 1556/week @ 2024-03-13 1380/week @ 2024-03-20 1083/week @ 2024-03-27 1058/week @ 2024-04-03 997/week @ 2024-04-10 1022/week @ 2024-04-17 660/week @ 2024-04-24 588/week @ 2024-05-01 1183/week @ 2024-05-08 2240/week @ 2024-05-15 1890/week @ 2024-05-22 1602/week @ 2024-05-29 1332/week @ 2024-06-05 443/week @ 2024-06-12 956/week @ 2024-06-19 906/week @ 2024-06-26

4,128 每月下载量
用于 27 个crate(直接使用4个)

Apache-2.0

15KB
218

Marine Rust SDK

crates.io version

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

用法

SDK 的核心组件是 #[marine] 宏,该宏应与导出函数、外部块和结构一起使用。让我们考虑一个简单的场景,其中有一个具有一个导出函数的模块

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 模块,以及重新导出用户所需的所有内容

支持

如果您发现一个错误,请提交一个 issue。您也可以在 DiscordTelegram 上联系我们。我们将尽力尽快解决此问题。

贡献

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

许可证

所有软件代码均受 Fluence Labs, Inc. 的版权(c)保护,并遵循 Apache-2.0 许可。

依赖关系

~110–630KB
~14K SLoC