< 返回版块

苦瓜小仔 发表于 2025-08-15 14:33

Tags:日报

Tsuki:纯 Rust 版、单线程、API 重新设计的 Lua 5.4 实现

  1. 本质
    用 Rust重写(而非绑定)Lua 5.4,源码 100% Rust,不再需要 C 编译器;基于 C2Rust 起步。

  2. 当前状态
    • 功能基本可用,官方 Lua 测试集通过,但标准库仍未补全。
    • 单线程,无计划支持多线程

  3. 特色
    • 同时暴露同步 / 异步两套 API。
    • 错误全部通过 Result 返回,不再使用长跳转。
    • 仍需 libc,后续目标将其移除;未来计划引入 Cranelift JIT。

  4. 与官方 Lua 的主要差异
    • 禁用了二进制 chunk、debug 库、原生模块、部分标准函数(collectgarbagedofile …)。
    • 字符串强制 UTF-8;内存分配失败直接 panic。
    • 环境变量、C locale 等均被忽略。

  5. 非目标
    不做 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 对桌面足够好,文档够用,但得自己拼积木;小而快的目标达成了。”

  1. 需求

    • 现有番茄钟缺功能 / 需学 C++/Swift。
    • 想要跨平台、低资源、易打包,于是选 Rust + Slint。
  2. Slint 体验

    • 语言像现代化 QML;一次编写,自动适配 macOS / KDE / Material / COSMIC 原生外观。
    • 缺 flex、缺现成组件,得自己造按钮、链接等。
    • 文档 4 个入口分散,导航略乱,但都能查到。
    • 与 Rust 交互直观,示例项目可借鉴。
  3. 成果

    • 二进制 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 日报小组 苦瓜小仔

社区学习交流平台订阅:

评论区

写评论

还没有评论

1 共 0 条评论, 1 页