< 返回版块

Yuan YQ 发表于 2025-03-14 10:44

rust-fontconfig 1.0.0 发布:一个纯 Rust 实现的字体配置管理库

rust-fontconfig 是一个纯 Rust 实现的仓库,旨在替代 Linux 上的 fontconfig 库,且没有系统依赖。以下是关于这个仓库的详细介绍:

主要特性

  • 跨平台支持:不仅能在 Linux 上使用,还支持 Windows、macOS 以及 WASM 平台,且无需外部依赖。
  • 安全性提升:相较于 C 语言实现的 fontconfig 库(依赖 expatfreetype,代码量约 190,000 行,较为臃肿),Rust 版本使用 allsorts 作为字体解析器,在访问内存前会检查边界,能减少因恶意字体文件引发的攻击风险。
  • 简化构建过程:消除了构建 azul 项目在 Linux 上对 cmakecc 的依赖,减少了非 Rust 依赖数量。
  • 易于重写fontconfig 库的主要功能是解析字体并按名称选择字体,用 Rust 重写相对容易。
  • 利用现有工具:Rust 有现成的 XML 解析器和字体解析器,可直接使用。
  • 支持静态链接:允许字体配置库进行纯静态链接。
  • 多线程支持:字体解析和加载可以轻松实现多线程操作(如并行解析字体文件),提升性能。
  • 内存缓存支持:解决了原 fontconfig (或其 Rust 绑定)仅支持磁盘缓存的问题,减少了每次查询时的磁盘访问,提高了查询速度。
  • no_std 支持:在 WASM 环境下支持 “自带字体文件” 的功能。

Github 仓库:https://github.com/fschutt/rust-fontconfig/tree/1.0.0

Zed 编辑器 v0.177 加入原生 git 支持

Zed 是一个使用 Rust 开发的跨平台的多功能编辑器。

Zed v0.177 版本开始提供原生 Git 支持功能。它的设计目标包括:确保在 Zed 中使用 Git 比命令行更快;保持 Git 原生特性,让用户能直接访问熟悉的 Git 功能;以键盘操作为主,提升操作效率。

Git 面板可展示工作树和暂存区状态,用户能通过键盘暂存或恢复文件;支持使用 cmd-enter 提交,还能借助 LLM 生成提交信息,协作时自动添加 Co-Authored-By;Diff 视图支持逐行审查提交,可像 git add -p 那样用键盘暂存或跳过代码块,且能随时修改文件;通过命令面板运行 git::Commit 可像 git commit -a 一样提交所有跟踪文件的更改;fetch、pull、push 操作可通过命令面板或 Git 面板快捷键执行。

官网:https://zed.dev/

Rust 在 2025 年发展展望

Niko Matsakis 发布了一篇博文,对 Rust 在 2025 年发展进行了一些思考和展望。主要是:

  1. Rust 愿景:基础软件领域
    • 使命阐述:Rust 旨在让编写和维护基础软件变得更容易。基础软件是支撑其他所有软件的底层软件,Rust 在 CLI 工具、开发工具、云平台、嵌入式设备以及内核等领域取得了显著成果。
    • 需求满足:基础软件对性能、可靠性要求极高,传统开发方式要么使用 C 或 C++ 追求极致性能但难度大,要么使用 Java 或 Go 时需避免触发垃圾回收以保证性能。Rust 结合了 C++ 零成本抽象和保证内存安全的类型系统,能够以高级代码实现低级性能,且无内存安全问题。
  2. Rust 优势:赋能开发者并降低门槛
    • 类型系统助力:类型系统和静态检查虽常被开发者视为 “菠菜”,但实际能提升开发效率。对于初学者,有助于学习软件构建;对于专家,能更快发现错误。
  3. Rust 在非基础软件领域的拓展
    • 应用探索:Dioxus、Tauri 和 Leptos 等项目将 Rust 应用于 GUI 和网页等高级应用领域,虽这并非 Rust 的优势领域,但这些拓展很有意义。
    • 相互促进:拓展能发现提升 Rust 编程便利性的机会,这些改进会惠及所有开发者,同时也能让开发者用一种技术构建整个软件栈,共享库和支持代码。
  4. 开发理念:“平滑、迭代深化”
    • 理念内涵:用户初次使用 Rust 时应能快速上手,随着项目深入,在遇到问题时可局部调整,而不影响整体。但实现这一理念颇具挑战,Rust 也在不断努力改进。

原文:https://smallcultfollowing.com/babysteps/blog/2025/03/10/rust-2025-intro/

--

From 日报小组 Yuan YQ

社区学习交流平台订阅:

评论区

写评论

还没有评论

1 共 0 条评论, 1 页