#可视化编程 #分布式计算 #执行引擎 #nets-blox #native-tls #互联网 #扩展

无 std 程序+库 netsblox-vm

用于运行 NetsBlox 代码并可选使用本地扩展的软件包

36 个版本

0.4.5 2024 年 6 月 7 日
0.4.4 2024 年 3 月 19 日
0.4.3 2024 年 2 月 8 日
0.4.1 2023 年 12 月 21 日
0.1.0 2022 年 11 月 20 日

#26模拟器

Download history 2/week @ 2024-05-21 122/week @ 2024-06-04 13/week @ 2024-06-11 1/week @ 2024-06-18

每月下载量:2,209

MIT/Apache 许可

710KB
13K SLoC

codecov

NetsBlox 是一个基于浏览器的可视化编程环境(基于 Snap!),它通过 RPC(远程过程调用)等互联网和分布式计算工具扩展了典型的块状编程功能,这些工具可以访问网络资源(例如,数据库或 Web API),以及通过互联网在项目之间进行消息传递。

netsblox-vm 是 NetsBlox 代码执行引擎和运行时的本地 Rust 实现。这使得可以在任何 Rust 编译器针对的设备上以极快的速度执行 NetsBlox 程序代码。但更重要的是,netsblox-vm 有几个扩展 API,这使得可以通过新的硬件外设访问功能(例如,通过 GPIO 控制传感器和执行器)来扩展其功能,所有这些都使用安全的本地 Rust。

功能

netsblox-vm 包含以下功能标志。

名称 默认 描述
std 开启 启用 std 软件包依赖项并访问许多依赖于标准库的 辅助类型
std-system 开启 启用 std 功能标志,并也启用 StdSystem 实现 System
cli 开启 启用 std-system 功能标志,并额外提供对 cli 子模块的访问,该模块提供了对标准 CLI 的 API 访问,而不是从头开始编写 CLI
serde 开启 启用某些类型的序列化
native-tls 开启 启用 TLS 功能的依赖项的 native-tls 功能(仅在启用 std-system 时使用)
native-tls-vendored 关闭 启用 TLS 功能的依赖项的 native-tls-vendored 功能(仅在启用 std-system 时使用)
rustls-tls-native-roots 关闭 启用针对具有TLS功能的依赖项的 rustls-tls-native-roots 功能(仅在启用 std-system 的情况下使用)
rustls-tls-webpki-roots 关闭 启用针对具有TLS功能的依赖项的 rustls-tls-webpki-roots 功能(仅在启用 std-system 的情况下使用)

请注意,如果启用 std-system,则必须启用 TLS功能标志之一才能使用 StdSystem 连接到NetsBlox服务器。默认启用 native-tls 功能以支持常见的桌面和服务器环境;但是,您可能需要禁用默认功能并显式选择不同的TLS选项以针对其他目标(例如Android或iOS)。

无std

netsblox-vm 通过禁用默认的 std 功能标志来支持在 no-std 环境中构建。但是,在这种情况下仍然需要 alloc 包。

[dependencies]
netsblox_vm = { version = "...", default-features = false }

请注意,这阻止了访问 StdSystem,这意味着需要为目标平台实现新的 System 实现。如果您的目标平台支持标准库但不支持标准网络包(例如esp32),则可以在不使用 std-system 功能标志的情况下使用 std 功能标志,这将有助于创建 System 的自定义实现。

示例

使用此包实现一个功能齐全的、独立的系统需要一些样板代码。一个具有基本stdout打印功能的CLI程序示例可以在 这里 找到。请注意,您的依赖项应包括此包以及此包使用的 特定版本的 gc-arena(否则,任何派生的 Collect 实现都将不兼容)。

CLI安装

此包包括一个名为 nb 的二进制文件,该文件作为 cli API的浅层包装,并带有默认的syscall扩展套件。 注意:如果您需要创建自己的syscall扩展,则必须在单独的二进制文件中使用此包作为依赖项。

cargo install netsblox-vm

依赖项

~4–20MB
~323K SLoC