2024-02-28
本文由 ChatGPT(gpt-4-1106-preview) 翻译。
大家好,欢迎阅读Rust 本周的又一期内容! Rust 是一种编程语言,它让任何人都可以构建可靠且高效的软件。 这是对其进展和社区的每周总结。 想要在本周内被提及?在 Twitter 上通过 @ThisWeekInRust 标记我们,或者在 mastodon.social 上通过 @ThisWeekinRust 联系我们,或者发送一个拉取请求。 想要参与进来?我们热爱贡献。
Rust 本周是在 GitHub 上公开开发的,而存档可以在 this-week-in-rust.org 上查看。 如果您发现本周的问题中有任何错误,请提交一个PR。
[HEB][视频] Rust 课程
[音频] Sentry - Rust 生产环境播客
[视频] Rust 中生命周期初探
本周的 crate 是 web-audio-api-rs,这是一个用于浏览器外的 Web Audio API 的 Rust 实现。
感谢 Otto Rottier 自荐这个 crate!
对于RFC(Rust功能请求)实现来说,一个重要的步骤是人们尝试使用这些实现并提供反馈,尤其是在稳定化之前。以下RFC将受益于用户测试,以便在进一步推进之前:
如果你是一个功能实现者,并且希望你的RFC出现在上述列表中,请为你的RFC添加新的call-for-testing标签,并附上一条评论,提供测试指引或指示需要测试特性的哪个方面。
上周合并了 430 个拉取请求。
#[rustc_no_mir_inline]NamePrivacyVisitor 中缺失 adt_defonly_local 减少在 crate 元数据中编码的属性enum 变体中对匿名 struct 导致的内部编译错误Rocket 时的恐慌mir::ConstValuemin_exhaustive_patterns 为完成状态TestCase 枚举 替换对 PatKind 的大多数匹配assemble_alias_bound_candidates 中不需要 validate_alias_bound_self_from_param_envint::MIN / -1 提升#[attr] 表达式 上适当发出 expected ;rustc_confusables 注释提供建议core::convert::num 中重构特性实现<&T as Clone>::clone(x) 时因为 T: Clone,建议使用 #[derive(Clone)]MIRI_SEED_END 控制种子范围br 而不用条件句来根据常量布尔值进行转换cfg_target_abisimd_insert, simd_extract 指标是常量Barrier::new() 为 const 函数MappedMutexGuard, MappedRwLockReadGuard, 和 MappedRwLockWriteGuardBox 分配器上无用的 'static 约束waker_ref 上添加 'static 约束CARGO_TERM_COLORtarget.<triple>.rustdocflagsbox_default:保留必要的路径片段read_line_without_trim:检测字符串文字比较和 .ends_with() 调用unnecessary_clippy_cfg lintmultiple_bound_locations lintunnecessary_get_then_check lintunused_imports 和 unused_import_braces 在 useinfinite_loop 进行 lintredundant_guards 考虑到常量性unused_unit:注意带有属性的表达式empty docsunnecessary_to_owned 扩展到映射类型中处理 Borrow 特性cast_sign_loss 中修复符号处理错误和假阴性useless_vec 中的建议错误no_effect_underscore_binding 在 async fns 的忽略参数上触发implied_bounds_in_implsref_as_ptr 中考虑生命周期延长replace_filter_map_next_with_find_map 不应该用于动态特性recreate_crate_graph <-> file_line_index 中的死锁RUSTC_BOOTSTRAP 导致的重新编译BorrowKind::Unique 到 BorrowKind::Mut本周较为罕见,性能退步的情况超过了改进,导致在近100个基准测试中编译器平均速度慢了大约0.5%。一些退步已经有了修复的计划,但是还有些难以捉摸或是为了解决正确性问题而引入的。
评审由 @rylev 完成。 修订范围:5af21304..71ffdf7f
概要:
| (指令:u) | 平均值 | 范围 | 数量 |
|---|---|---|---|
| 性能退步 ❌ (主要) | 1.0% | [0.2%, 4.4%] | 69 |
| 性能退步 ❌ (次要) | 1.4% | [0.2%, 4.9%] | 66 |
| 性能提升 ✅ (主要) | -1.1% | [-3.3%, -0.2%] | 28 |
| 性能提升 ✅ (次要) | -0.6% | [-1.5%, -0.2%] | 33 |
| 总体 ❌✅ (主要) | 0.4% | [-3.3%, 4.4%] | 97 |
4个性能退步,6个性能提升,5个混合;其中2个在rollups中 总共进行了58次工件比较
Rust 的变更遵循 Rust RFC(征求意见稿)流程。以下是本周获批准实施的 RFCs:
每周,团队都会宣布即将作出决定的 RFC(Rust功能请求)和关键PR(Pull Requests,拉取请求)进入“最终评论期”。现在就表达你的观点吧。
NonZeroINVALID_DOC_ATTRIBUTES lint 默认拒绝confstr(_CS_DARWIN_USER_TEMP_DIR, ...) 作为 TMPDIR 的后备选项2024年2月28日至2024年3月27日之间的 Rust 活动 🦀
如果您正在举办 Rust 活动,请将其添加到日历中以在此处提及。请记得还要添加活动链接。 如需访问权限,请给Rust 社区团队发送电子邮件。
请查看 r/rust 上最新的招聘帖
那将需要1800万TB的RAM。你没有那么多内存。
– Alice Ryhl 在回答“Rust中数组的最大尺寸是多少”时
感谢 Zeroexcuses 的建议!
由 nellshamrell, llogiq, cdmistman, ericseppanen, extrawurst, andrewpollack, U007D, kolharsam, joelmarcey, mariannegoldin, bennyvasquez 编辑。
电子邮件列表赞助由 The Rust Foundation 提供。