【Rust日报】2024-02-06 Rust Web 框架的错误报告不达标

💡 原文中文,约1400字,阅读约需4分钟。
📝

内容提要

Rust Web框架的错误报告不达标,作者推荐了自己实现的框架Pavex,提供更全面和灵活的错误报告功能。Google向Rust基金会提供100万美元的资助,支持Rust代码与现有C++代码库的互操作性。Polars重写了字符串数据结构,提高了处理字符串数据的效率和性能。

🔎

延伸解读

错误报告:Rust Web 框架的短板

文章指出,主流 Rust Web 框架如 axum 和 Actix Web 在错误报告方面存在不足,具体表现为无法全面记录错误信息和难以追踪错误源。高效的错误报告对于快速响应和解决问题至关重要,而现有框架的缺陷可能影响开发效率。作者基于自身经验,认为这些框架的设计并非无法改进,这为后续优化提供了方向。

Pavex 的改进思路

作者推荐了自己实现的框架 Pavex,它通过新的错误处理设计,提供了更全面和灵活的错误报告功能,能更有效地捕捉和记录错误信息。Pavex 的出现证明了通过更好的设计可以提升错误报告效能,这对 Rust Web 框架的发展是一个积极信号,也为其他框架的改进提供了参考。

Google 资助的焦点:Rust 与 C++ 互操作

Google 向 Rust 基金会提供 100 万美元资助,专门用于提升 Rust 代码与现有遗留 C++ 代码库的互操作性。自 2021 年加入 Rust 基金会以来,Google 在 Android 等产品中广泛采用 Rust,并看到其使用显著增长。这笔资助旨在解决使用 C++ 的项目在采用 Rust 时面临的挑战,确保添加的互操作特性是适当的。

Polars 字符串重构的性能收益

Polars 从 Arrow2 分支出 polars-arrow 后,重写了字符串数据结构。原有 Apache Arrow 规范的字符串类型由三个缓冲区定义,在数据预分配和处理大字符串时效率低下。重构后采用 Hyper/Umbra 的设计,字符串以 16 字节形式存储在列中,支持内联存储、固定宽度访问和高效垃圾回收。基准测试显示,新字符串类型在几乎所有过滤操作中优于旧类型,尤其处理大字符串时提升明显。

❓

Q&A

Rust Web 框架在错误报告方面存在哪些问题?

根据文章,主流 Rust Web 框架(如 axum 和 Actix Web)在错误报告方面表现不佳,主要问题包括无法全面记录错误信息,以及难以追踪错误源。

Pavex 框架在错误报告方面有什么优势?

Pavex 通过新的错误处理设计,提供了更全面和灵活的错误报告功能,能够更有效地捕捉和记录错误信息。

Google 为什么向 Rust 基金会提供 100 万美元资助?

Google 提供资助是为了支持提升 Rust 代码与现有遗留 C++ 代码库的互操作性,确保任何添加都是适当的,并解决使用 C++ 的项目在采用 Rust 方面面临的挑战。

Polars 为什么要重写字符串数据结构?

Polars 最初采用 Arrow2 crate,限制了对字符串类型的修改。原有的 Apache Arrow 规范支持的字符串类型由三个缓冲区定义,在数据预分配和处理大字符串时效率低下,在 gather filter 等核心操作下效率不佳。因此,Polars 从 Arrow2 分支出 polars-arrow,获得了更多自主权,从而进行了重构。

Polars 重写后的字符串数据结构有什么优势?

重构后采用了 Hyper/Umbra 数据库系统设计的方法,字符串以16字节的形式存储在列中。这种方法对于小字符串和大字符串都有优势,如内联存储、固定宽度访问和高效的垃圾回收。基准测试显示,新字符串类型在几乎所有情况下都优于旧类型,特别是在处理大字符串时。

Google 在 Rust 基金会中的参与情况如何?

Google 自 2021 年加入 Rust 基金会以来,在 Android 及其他产品中广泛采用了 Rust,并通过汇总和发布其在开源项目中使用的 Rust crates 的审计结果,进一步支持开源 Rust 社区。Google 还通过 Rust 基金会的互操作性倡议以及与 Rust 项目的合作,支持这项工作。

🏷️

标签

➡️

继续阅读