Tsuki:纯 Rust 版、单线程、API 重新设计的 Lua 5.4 实现
-
本质
用 Rust重写(而非绑定)Lua 5.4,源码 100% Rust,不再需要 C 编译器;基于 C2Rust 起步。 -
当前状态
• 功能基本可用,官方 Lua 测试集通过,但标准库仍未补全。
• 单线程,无计划支持多线程。 -
特色
• 同时暴露同步 / 异步两套 API。
• 错误全部通过Result
返回,不再使用长跳转。
• 仍需 libc,后续目标将其移除;未来计划引入 Cranelift JIT。 -
与官方 Lua 的主要差异
• 禁用了二进制 chunk、debug 库、原生模块、部分标准函数(collectgarbage
、dofile
…)。
• 字符串强制 UTF-8;内存分配失败直接 panic。
• 环境变量、C locale 等均被忽略。 -
非目标
不做 Luau 超集、不兼容 C API、不支持独立解释器、不支持 16 位系统。
仓库:https://github.com/ultimaweapon/tsuki
Reddit:https://www.reddit.com/r/rust/comments/1mo3hba/tsuki_lua_54_ported_not_binding_to_rust/
Cornerstone:全栈、可用于生产的 Rust 模板,带有 Axum、SQLx 和可交换的 Svelte/Slint 前端
具有许多现代 Web 开发中常见的工具和模式:
- 后端 :基于 axum 构建符合人体工程学的 Web API,并使用 sqlx 进行编译时检查 SQL 查询。
- 数据库灵活性 :开箱即用,支持 PostgreSQL 和 SQLite 。您可以使用简单的功能标志在它们之间切换。
- 可交换前端 :它配置为与两种不同的 UI 范例一起使用:
- SvelteKit :用于构建现代、快速的 Web 应用程序。它甚至包含一个脚本,可以从 Rust 结构体 ( ts-rs ) 自动生成 TypeScript 类型。
- Slint :用于构建原生桌面或 WebAssembly 应用程序,全部在 Rust 生态系统内。
- 安全身份验证 :配备完整的 JWT 身份验证系统,包括安全访问和刷新令牌轮换。
- 自动 API 文档 :API 端点使用 utoipa 自动记录,并在调试模式下在 /docs 端点提供交互式 Swagger UI。
开发人员工具 :
- justfile 提供易于使用的命令( just run-web 、 just test 等)。
- 多阶段 Dockerfile 和 docker-compose.yml 用于优化、可用于生产的容器构建。
- GitHub Actions CI 可自动针对 PostgreSQL 和 SQLite 测试您的代码。
仓库:https://github.com/gramistella/cornerstone
MeiliBridge:实时 PostgreSQL → Meilisearch CDC 同步,零停机时间,精确一次交付 - 比 Meilisync 快 10 倍
MeiliBridge 是一种高性能、异步优先的数据同步服务,它使用变更数据捕获 (CDC) 将更改从 PostgreSQL 实时传输到 Meilisearch 。
它基于 Rust 构建,每秒可处理数百万个事件,并具有 Exactly-Once 交付保证、自动故障转移和并行全表同步功能。其功能包括自适应批处理、断路器、使用 Prometheus 进行全面监控,以及用于管理同步任务的 REST API。
仓库:https://github.com/binary-touch/meilibridge
lio:异步跨平台低级系统调用
lio(liten io,“liten”在瑞典语中意指“小”)是一个“像系统调用一样”使用的库,但其操作完全是异步的,并为 io-uring 做了优化。lio 会根据所在平台自动选择最合适的非阻塞方式。
lio 的当前实现:
- Linux:完整且安全地支持 io-uring
- macOS 与 *BSD:使用 kqueue
- Windows:使用 IOCP
- 其余平台:回退到 polling crate
我之所以编写这个库,是因为我认为 polling 和 mio 暴露了错误的 API。在我看来,这类底层 I/O 库应当提供跨平台的“类系统调用”接口,而不是像 mio / polling 那样只提供一个事件通知包装器。
目前 lio 仅在 Unix 系统上可用(因为这些系统调用是 Unix 专有的)。事件轮询接口本身是跨平台的,但我不太熟悉非 Unix 的系统调用。
在 Unix 上它已经运行得相当不错!不过我还没完成全部优化,而且 accept 系统调用在 WSL 下无法工作,因为 WSL 的内核版本太旧。
文档:https://docs.rs/lio/0.1.1/lio/
Reddit:https://www.reddit.com/r/rust/comments/1mnbv3i/lio_async_crossplatform_lowlevel_syscalls/
讨论:我使用 rust + slint-ui 构建桌面应用程序的经验
作者用 Rust + Slint 写了个 GPL-3 的番茄钟 Temporis,经验总结一句话:
“Slint 对桌面足够好,文档够用,但得自己拼积木;小而快的目标达成了。”
-
需求
- 现有番茄钟缺功能 / 需学 C++/Swift。
- 想要跨平台、低资源、易打包,于是选 Rust + Slint。
-
Slint 体验
- 语言像现代化 QML;一次编写,自动适配 macOS / KDE / Material / COSMIC 原生外观。
- 缺 flex、缺现成组件,得自己造按钮、链接等。
- 文档 4 个入口分散,导航略乱,但都能查到。
- 与 Rust 交互直观,示例项目可借鉴。
-
成果
- 二进制 Linux 21 MB,AppImage 8 MB,DMG 4.5 MB;启动瞬时。
- KDE 下常驻 110 MB RAM,CPU 几乎 0 %。
Reddit:https://www.reddit.com/r/rust/comments/1mo35tp/my_experience_building_a_desktop_app_with_rust/
--
From 日报小组 苦瓜小仔
社区学习交流平台订阅:
评论区
写评论还没有评论