【Rust日报】2026-04-24 Vizia 0.4 发布------纯 Rust 声明式响应式 GUI 框架
Vizia 0.4 发布------纯 Rust 声明式响应式 GUI 框架
Vizia 0.4 版本正式发布!这是一个用于创建桌面 GUI 应用程序的纯 Rust 框架,采用声明式编程方式(无需 DSL 或宏)。API 设计受 SwiftUI 启发,利用信号(signals)实现响应式特性。
主要更新内容
• 响应式系统重构 :用基于信号的新响应式系统替换了原有的 lenses
• CSS 变量支持 :新增 CSS 变量功能
• 本地化改进 :增强本地化支持,包括 RTL(从右到左)布局和 fluent 日期时间函数
• 内置视图优化 :改进内置视图的本地化、无障碍访问和主题功能
• 性能提升 :全面的性能改进,特别是布局方面的优化
相关资源
• GitHub 仓库:https://github.com/vizia/vizia
• 完整更新日志:https://github.com/vizia/vizia/releases/tag/0.4.0
• 使用指南:https://book.vizia.dev/(已更新至 0.4 版本)
原文链接:https://github.com/vizia/vizia
gin-tonic 0.8 发布
gin-tonic 是一个 Rust protobuf 库,允许直接在传输层使用自定义类型,无需手动转换样板代码。
核心功能
• 提供 Protobuf 序列化和反序列化(类似 prost)
• 代码生成器(替代 prost-build)
• tonic 编解码器实现
• tonic-build 的增强包装器
• Scalar trait,可将任意 Rust 类型直接映射到 protobuf 传输类型
解决的问题
传统方式的痛点: 使用 prost 时,protobuf 中的 string my_uuid 会生成 Rust 的 String 类型,但实际需要 uuid::Uuid,导致需要在各处编写转换代码并处理解析错误。
gin-tonic 的解决方案: 通过在 .proto 文件中添加注解指定 Rust 类型: 直接生成所需的 uuid::Uuid 类型,转换逻辑统一在 Scalar trait 实现中处理。
主要特性
• 内置 UUID 支持: 提供 uuid_string 和 uuid_bytes 两种特性标志
• 自定义类型支持: 通过实现 Scalar trait 可支持任意类型
原文链接:https://www.reddit.com/r/rust/comments/1stm5wc/gintonic_08/
Jujutsu------新一代版本控制系统
Jujutsu 是一个功能强大的软件项目版本控制系统,旨在为新手和经验丰富的开发者提供易用的体验,适用于个人项目和大型团队协作。
核心特点
架构创新 - 将用户界面和版本控制算法与存储系统分离,可支持多种物理后端(如 Mercurial、Breezy 等) - 目前使用 Git 仓库作为存储层,兼容现有 Git 工具生态 - 提交和文件存储在 Git 中,而分支和元数据存储在自定义存储中
设计灵感来源
Git - 注重性能和速度,优化算法和数据结构 - 使用 Git 作为默认物理存储后端,便于互操作
Mercurial & Sapling - 采用 revset 语言选择提交 - 无需暂存区(staging area) - 匿名分支设计,无需为小改动命名 - 强大的历史重写功能 - 可配置的模板语言
原文链接:https://github.com/jj-vcs/jj
jed - 用于 JSON 的 sed 工具
jed 是一个命令行工具,将 sed 的强大功能引入 JSON 数据处理。它使用熟悉的 sed 语法,而不是发明新的查询语言。
核心理念
• 复用已有知识 :如果你会用 sed,就已经会用 jed
• 更高的学习投资回报率 :利用 sed、awk、vim 等经典工具的语法经验
• 避免重复学习 :不像 jq 等工具需要学习全新语言
工作原理
• 递归遍历 :从上到下递归遍历 JSON 文档
• 基于 JSON 值类型 :针对不同类型(Null、Bool、Number、String、Array、Object)应用不同操作
• 分类操作 :
• 值替换:适用于 String、Number、Bool、Null
• 键替换:仅适用于 Object
• 数组过滤:仅适用于 Array
主要功能
-
打印匹配部分 (p)
-
删除匹配部分 (d)
-
替换值 (s)