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 在 模拟器
每月下载量:2,209
710KB
13K SLoC
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