本月简报 | 推荐项目

  • 来源:Rust日报
  • 作者:Rust日报小组
  • 后期编辑:杨楚天(yct21)

Rust-SQLite

Rust-SQLite (SQLRite) 是一个 SQLite clone。SQLRite 有很完善的文档,代码质量非常高,而且有非常丰富的单元测试用例。

Tauri

Tauri 是一个桌面应用开发框架,包含了 JavaScript API,可以结合各种主流前端框架进行开发。

有 Twitter 网友分享, 他把自己的 Electron 写的应用迁移至 Rust 的 Tauri, 内存使用从 300M 降低至 6M,二进制大小从 195M 降至 7M。

RustPython

RustPython 是用 Rust 实现的 Python 3(CPython >= 3.8.0) 解释器。 RustPython 可以将 Python 嵌入到 Rust 程序中;也可以将 RustPython 编译为 WebAssembly,这样开发者可以在浏览器中运行其 Python 代码。此外,RustPython 也包含一个实验性的 JIT 编译器。

Thirtyfour

Thirtyfour 是一个 Selenium WebDriver 客户端,可以用于自动化 UI 测试。Thirtyfour 完全支持 W2C WebDriver spec,可以搭配 tokio 或者 async-std 使用。

Lunatic

Lunatic 是一个服务端的 WebAssembly 运行时,有以下特点:

  • 受到 Erlang 的启发,有一个抢占式调度的运行时, 生成占用资源极少的用户态线程。
  • 借助 wasm 虚拟机,保证隔离和安全性。
  • 会在未来完全兼容 WASI

Postage

Postage 是一个异步通道库,提供了丰富的通道集,并在 Sink/Stream 上有很多实用的组合子,方便了异步程序的开发。

作者同时也是 tab 的作者。

RustSBI

RustSBI 是洛佳老师开发的一个 RISC-V SBI 实现,支持常见的硬件核心和模拟器,能够引导启动符合 RISC-V SBI 标准的操作系统,包括 Linux、rCore 等。

Similar

similar 是一个现代化的 diff 库,借鉴了 pijul 实现的耐心排序算法,并结合了 Myer 的 diff 算法。

tantivy

tantivy 是一个全文搜索引擎库, 类似于 Apache Lucene。

xh

xh 是一个 Httpie clone。

ht

meio

meio 是一个异步 actor 框架,其设计受 Erlang/OTP 启发,并可以很好地结合 rust 中的异步生态系统使用。作者正在尝试使其能 WebAssembly 兼容。

message-io

message-io 是一个是事件驱动的消息库,可轻松快速地构建网络应用程序。message-io 可以管理和处理套接字数据流,以便向用户提供简单的事件消息 API。作为通用网络管理器,它允许你遵循一些规则来实现自己的协议,而繁琐的异步和线程管理则由 message-io 帮你管理。

Cranelift

Cranelift 是用 Rust 编程语言实现的代码生成器,旨在成为快速的代码生成器,其输出以合理速度运行的机器代码。 如今,它被用于包括 Wasmtime 和 Wasmer 在内的几种不同的 WebAssembly 运行时中,并且还可以作为 Rust 调试编译的替代后端。

Voyager

voyager 是一个用 Rust 实现的爬虫库。

Starlight

Starlight 是一个 JavaScript 的运行时,其设计重点放在运行速度上,已经通过了 2k+test262 测试。Starlight 比 Boa(另一个Rust写的JS引擎)更快,其目标是和V8一样快。

Lettre

Lettre 是一个可以用于发送 email 的库。

Optic:使用实际流量来记录和测试您的API

说明:

  • Optic观察开发流量并了解您的API行为
  • Optic通过将流量与当前规范相区别来检测API更改
  • Optic为每个拉取请求添加准确的API更改日志

Rust Web 模板项目

前些日子 Rust 不适合 Web 一文引起了热议,今天就有热心群友推荐了一个 Rust Web 模板项目:

  • 使用 .env 文件管理环境变量
  • 使用 diesel 来处理数据库迁移
  • 配合 cargo-watch 监控开发时程序修改,方便调试
  • 支持 cargo-tarpaulin 做测试覆盖率

termchat:一个终端聊天软件

最近Clubhouse因为Elon Musk突然大火,使用termchat可以在终端进行聊天。

Yatta: 用于 Windows10 的 BSP 平铺窗口管理器

作者最近因为从之前的mac环境由于一些原因需要切换到windows环境下工作,但是没有找到之前使用mac时的桌面分割工具(窗口排放管理工具),于是自己花了几天,研究了不少其它类似的工具,捣鼓出了这个。

nlprule,Rust 实现的 NLP 库

nlprule 使用 LanguageTool 中的资源为NLP实现了基于规则和查找的方法。

firestorm: 代码分析器

作者扎克·伯恩斯发布了这款侵入式代码分析器。“火旋风”分析器能帮助代码作者测试Rust代码的性能;它能分析项目中的时间敏感部分,输出到时间轴图、合并的火焰图或其它的表现形式。这是一款侵入式分析器,也就意味着在代码编写的过程中,用户就需要使用分析器提供的宏,帮助分析器的记录过程。项目文档指出,这款分析器能通过编译特性来启用或禁用;未被启用时,所有的记录操作都被编译为空操作,这将不会影响生产程序的运行性能。

我们常用的性能分析器,常常基于系统提供的“perf”指令,它就像是一个调试器,在合适的时候暂停进程,读取此时所有的线程和有关信息,从间隔的采样过程记录,从而得到运行性能输出。这种采样不需要重新添加和编译代码,但较可能漏掉时间短的函数。合理使用侵入式代码分析器,可以精细记录运行性能的细节,也能更少地影响待测程序的运行性能。

friestorm 分析器已经在GitHub上开源,并配有丰富的使用文档。

rkyv 0.4:共享指针和自定义序列化程序

大家好,大约又工作了一个月,RKYV0.4终于推出了新特性和重大变化。

如果你还没听说过的话,rkyv是一个针对Rust的零拷贝反序列化框架,类似于Cap'n Proto和FlatBuffers。它主要是为游戏开发而构建的,但也适用于广泛的其他应用程序。

文章链接,https://www.reddit.com/r/rust/comments/lniraj/rkyv_04_shared_pointers_and_custom_serializers/

rg3d 游戏引擎

在过去的三个月中,rg3d 和 rusty-editor取得了很多重要的功能和改进。并开始使用引擎制作了新游戏,Station lapetus,一款 Sci-Fi 3D射击游戏。

近3个月的进展报告: https://rg3d.rs/general/2021/02/26/progress.html

LAM: Actor模式的VM

LAM,针对 WebAssembly和 Native 的 Actor VM。

访谈链接: https://notamonadtutorial.com/lam-an-actor-model-vm-for-webassembly-and-native-d7939362e1b8

项目链接: https://abstractmachines.dev/