crates.io 开发更新
这篇文章是 Rust 官方博客对 crates.io 的最新开发更新。
自 2025 年 2 月以来,crates.io 做了多项改进,包括:
- 可信发布(Trusted Publishing):受 PyPI 启发,允许在 GitHub Actions 中安全发布 crate,无需管理 API 令牌。
- 动态 OpenGraph 图像:每个 crate 都有专属的 OpenGraph 图像,包含更多有用信息。
- docs.rs 重建:可以直接从 crates.io 触发 docs.rs 的文档重建。
- README 警告支持:支持在 README 中使用 GitHub 风格的警告框。
- 其他改进:包括邮件系统重构和 SemVer 排序优化。
这些改进提升了 crates.io 的用户体验和性能。
阅读:https://blog.rust-lang.org/2025/07/11/crates-io-development-update-2025-07/
Reddit:https://www.reddit.com/r/rust/comments/1lxux2p/cratesio_development_update_trusted_publishing/
文章《Programming Extensible Data Types in Rust with CGP - Part 3: Implementing Extensible Records》
这篇文章是关于 Rust 中可扩展数据类型编程的第三部分,主要探讨了如何实现可扩展记录(extensible records)。
文章首先回顾了 CGP(Context-Generic Programming)v0.4.2 版本的新特性,包括支持可扩展记录和变体(variants),允许开发者在不需要具体定义的情况下操作包含特定字段的结构体或特定变体的枚举。
文章详细介绍了如何通过类型和特征(traits)机制实现模块化构建器模式(modular builder pattern),并展示了如何使用 HasField
、BuildField
、TakeField
等特征来实现字段的访问、构建和提取。
此外,文章还介绍了如何通过 BuildFrom
特征实现结构体之间的字段合并,以及如何通过 BuildWithHandlers
和 BuildAndMergeOutputs
等构建器分发器实现复杂的数据构建流程。
最后,文章强调了 CGP 的模块化设计哲学,即通过 Rust 的类型系统和特征机制实现可组合性和抽象化,而不是依赖于宏或代码生成。
阅读:https://contextgeneric.dev/blog/extensible-datatypes-part-3/
Reddit:https://www.reddit.com/r/rust/comments/1lxv6zr/the_design_and_implementation_of_extensible/
文章《Polars:Rust 编写的高性能的 dataframe 库》
Polars 以其快速处理大数据集的能力而闻名,类似于 Python 中的 pandas,但速度更快且内存效率更高。
它利用 Rust 的内存安全性和并行计算能力,支持懒加载、自动优化查询计划和 Apache Arrow 列式存储格式。
文章通过代码示例展示了如何使用 Polars 进行数据过滤、分组、聚合、排序、重命名和删除列等操作。
Polars 还支持多种数据格式(如 CSV、Parquet 和 JSON),并提供了 Python、Node.js、R 和 SQL 的接口。
阅读:https://ryuru.com/polars-a-high-performance-dataframe-library-for-rust/
Rex:弥补 Rust 语言和 eBPF 验证器之间的差距
USENIX ATC'25《Rex: Closing the language-verifier gap with safe and usable kernel extensions》
- 论文:https://www.usenix.org/conference/atc25/presentation/jia
- 仓库:https://github.com/rex-rs/rex
现有的内核扩展机制(例如 eBPF)依赖于内核内验证器,通过使用符号执行进行静态验证来确保内核扩展的安全性。 我们发现了一些严重的可用性问题——安全扩展被验证器拒绝——这是由于语言与验证器之间存在差距,即开发人员对编程语言提供的程序安全性的期望与验证器的期望不匹配。
我们推出了 Rex,这是一个全新的内核扩展框架,它弥补了语言验证器之间的差距,并在编程体验和可维护性方面提升了内核扩展的可用性。 Rex 以基于语言的安全性为基础,提供内核扩展所需的安全属性,并为不适合静态分析的属性(包括安全异常处理、堆栈安全和终止)提供了一个轻量级的语言外运行时。
使用 Rex,内核扩展可以使用安全的 Rust 编写,并通过 Rex 内核 crate 提供的安全接口与内核交互。 无需单独的静态验证 (指 eBPF verification)。Rex 在不影响性能的情况下解决了 eBPF 内核扩展的可用性问题。
讨论:Varaince 违背了 Rust 的设计哲学吗?
Reddit:https://www.reddit.com/r/rust/comments/1lxe2wo/does_variance_violate_rusts_design_philosophy/
--
From 日报小组 苦瓜小仔
社区学习交流平台订阅:
评论区
写评论还没有评论