【Rust日报】2024-02-06 Polars 重写字符串数据结构

Rust Web 框架的错误报告不达标

作者已有6年使用 Rust 构建生产应用的经验,并对 Rust 中的 web 框架有深入了解。他认为,目前主流的 Rust Web 框架在错误报告方面表现不尽如人意,而高效的错误报告对于快速响应和解决问题极为关键。

作者以 axum 和 Actix Web 为例,探讨了它们在错误报告方面的现状,发现的问题如:

  1. 无法全面记录错误信息

  2. 难以追踪错误源。

作者同时推荐了自己实现的框架 Pavex ,其优势在于: Pavex 通过新的错误处理设计,提供了更全面和灵活的错误报告功能,能够更有效地捕捉和记录错误信息。

作者认为,虽然现有的 Rust Web 框架在错误报告方面有所不足,但他们的设计并非无法改进。Pavex 的出现证明了通过更好的设计,可以有效提升错误报告的效能,这对于 Rust Web 框架的发展是一个积极的信号。

原文链接 https://www.lpalmieri.com/posts/rust-web-frameworks-have-subpar-error-reporting/

Google 向 Rust 基金会提供 100 万美元的资助

Google 高兴地宣布,为了支持提升 Rust 代码与现有遗留 C++ 代码库的互操作性,向 Rust 基金会提供了 100 万美元的资助。自 2021 年加入 Rust 基金会以来,Google 在 Android 及其他产品中广泛采用了 Rust。此外,Google 还通过汇总和发布其在开源项目中使用的 Rust crates 的审计结果,进一步支持开源 Rust 社区。

Google 已经在 Android 中看到 Rust 使用的显著增长,我们继续将其使用范围扩展到更多应用程序,包括客户端和服务器硬件。

Google 通过 Rust 基金会的互操作性倡议以及与 Rust 项目的合作,支持这项工作,以确保任何添加都是适当的,并解决使用 C++ 的项目在采用 Rust 方面面临的挑战。

原文链接 https://security.googleblog.com/2024/02/improving-interoperability-between-rust-and-c.html

Polars 重写字符串数据结构

最初,Polars 采用了 Arrow2 crate(Rust 实现的 Arrow 规范),这限制了对字符串类型的修改。但随着 Polars 从 Arrow2 分支出 polars-arrow,他们获得了更多的自主权,从而进行了重构。

重构的主要动机是:原有的 Apache Arrow 规范支持的字符串类型由三个缓冲区定义,但这种方式在数据预分配和处理大字符串时效率低下,在 gather filter 等数据处理的核心操作下,效率不佳。

重构之后,采用了 Hyper/Umbra 数据库系统设计的方法,其中字符串以16字节的形式存储在列中。这种方法对于小字符串和大字符串都有优势,如内联存储、固定宽度访问和高效的垃圾回收。

Polars 团队对不同选择性的过滤操作进行了基准测试,结果显示新字符串类型在几乎所有情况下都优于旧类型,特别是在处理大字符串时。

总的来说,重写字符串数据类型是一个巨大的努力,但它显著提高了处理字符串数据的效率和性能。Polars 团队期待未来通过进一步优化内存缓冲区来获得更多性能提升。

原文链接 https://pola.rs/posts/polars-string-type/

-- From 日报小组 RustPlumber

社区学习交流平台订阅:

  • Rust.cc 论坛: 支持 rss

  • 微信公众号:Rust 语言中文社区

你可能感兴趣的:(rust,开发语言,后端)