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

marine-rs-sdk-main

包含日志记录器、分配器以及 marine-rs-sdk 的几个其他模块

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

0.14.0 2024 年 2 月 21 日
0.12.0 2024 年 2 月 8 日
0.10.3 2023 年 12 月 28 日
0.10.1 2023 年 10 月 24 日
0.6.10 2021 年 6 月 15 日

#154 in 魔法豆

Download history 1102/week @ 2024-04-02 1090/week @ 2024-04-09 906/week @ 2024-04-16 697/week @ 2024-04-23 472/week @ 2024-04-30 700/week @ 2024-05-07 2049/week @ 2024-05-14 1456/week @ 2024-05-21 1226/week @ 2024-05-28 1314/week @ 2024-06-04 601/week @ 2024-06-11 636/week @ 2024-06-18 934/week @ 2024-06-25 291/week @ 2024-07-02 617/week @ 2024-07-09 1389/week @ 2024-07-16

3,348 次每月下载
33 个软件包中(7 个直接使用)

Apache-2.0

26KB
416

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 模块,以及所有必要的用户内容

支持

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

贡献

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

许可

所有软件代码版权所有(c)Fluence Labs,Inc.,根据 Apache-2.0 许可协议。


lib.rs:

Fluence后端SDK的主要部分。包含 export_allocatorloggerresult 模块。

依赖关系

~155–435KB