本周 Rust 动态 532
2024-01-31
说明: 本周 Rust 动态 532 由 ChatGPT(gpt-4-1106-preview) 翻译。
您好,欢迎来到本周的 Rust 语言周报! Rust 是一种赋能大家构建可靠和高效软件的编程语言。 这是对其进展和社区动态的每周总结。 想要在周报中提及某些内容?在 Twitter 上向我们标记 @ThisWeekInRust 或在 mastodon.social 上的 @ThisWeekinRust,或者向我们发送请求。 想要参与进来?我们热爱贡献。
Rust 语言周报 是在 GitHub 上公开开发的,归档可以在 this-week-in-rust.org 查看。 如果您在本周的问题中发现任何错误,请提交一个 PR。
Rust 社区更新
项目/工具更新
- Rust 和 C 文件系统 API(Rust-for-Linux 项目)
- 向基于 GCC 的 Rust 编译器迈进
- Palette 0.7.4
- Fyrox 游戏引擎 0.33
- Servo 中的两个月:更好的内联布局、稳定的 Rust 等等!
- GPUI 中的归属权和数据流
- Kani 的函数契约
- Slint 1.4 发布,新增外观和改进 API
- 本周 Fluvio #58 - Fluvio 开源流处理系统可以作为单一二进制文件在本地部署
- Quickwit 0.7 发布:Elasticsearch API 兼容性和性能提升 30%
观察/思考
- 如何使用 Criterion 对 Rust 代码进行基准测试
- 试玩 Nom 和解析器组合器
- 时间都去哪了?Rust 编译缓慢的问题
- HAL 层级的 ESP32 嵌入式 Rust:I2C 扫描器
- 我们构建 X.509 链条,这样你就不需要了
- Rust 中的进程生成性能
- 介绍 Foundations - 我们的开源 Rust 服务基础库
- 高性能矢量图形视频游戏
- Rust 的一些近期和显著变化
- 使用 FireDBG 可视化动态规划
- [视频] Rust 数据结构的九条规则
Rust 教学
- Rust 内存泄漏诊断指南,使用 Flame Graphs
- WebSocket - 初学者指南
- 用 Rust 编写 Cron 作业
- Rust、猫和几个 Raspberry PI 的无畏并发
- Rust 宏,进一步处理 Lambda 模版
- 调试 Tokio Instrumentation
杂项
本周的 Crate
本周的 crate 是 Apache Iceberg Rust,这是一个用于巨大分析型数据集的表格格式的 Rust 实现。
感谢 Renjie Liu 自荐这个 crate!
参与邀请:项目和演讲者征集
项目征集 - CFP
一直想为开源项目做贡献,但不知道从哪里开始吗? 每周我们都会从 Rust 社区中挑选一些任务供你选择,开始你的开源之旅!
这些任务中的一些可能还有导师提供帮助,访问任务页面了解更多信息。
- GreptimeTeam - 修复
join_path
中的一个小错误,以实现更优雅的代码 - GreptimeTeam - 为
MetaPeerClientRef
添加测试,以增强GreptimeDB的稳定性 - Ockam - 在Linux中的命令帮助输出中为围栏代码块增加语法高亮显示功能
- Ockam - 改进
ockam project ticket
的输出,信息不再晦涩难懂 - Ockam - 同时改进
ockam project ticket
和ockam project enroll
的输出,并支持--output json
- Hyperswitch - 【修复】:为工作线程添加配置验证
- Hyperswitch - 【特性】:为配置表创建一个删除端点
- Hyperswitch - 【特性】:为本地测试和CI设置代码覆盖率
- Hyperswitch - 【特性】:让
get_required_value
使用OptionExt
中的ValidationError
如果你是 Rust 项目的所有者,并且正在寻找贡献者,请在这里提交任务。
演讲者征集 - CFP
你是一名新手或有经验的演讲者,正在寻找一个分享酷事物的地方吗?本节突出显示正在计划中的活动,这些活动正在接受投稿,加入他们的活动作为演讲者。
本周没有提交演讲征集通知。
如果你是一名活动组织者,希望扩大活动的影响力,请通过Rust 本周 PR(PR to TWiR)提交链接到提交网站。
Rust 项目更新
上周有 409个拉取请求被合并
pattern_analysis
:允许ctor_sub_tys
返回任何它们想要的迭代器pattern_analysis
:重用大部分的DeconstructedPat Debug
实现- 在由
#[test]
和#[bench]
引入的闭包中添加#[coverage(off)]
- 添加
min_exhaustive_patterns
功能门控 - 在动态库中添加不稳定选项以减少二进制大小...
- 在新解算器中总是规范化
LoweredTy
- 断言传递单一作用域给
for_scope
- 避免在没有
dyn
的trait提示中出现内部编译错误 - 借用检查内联常量模式
- 在论据错误中分类闭包参数可否论证模式
- 常量求值的内部化:摆脱基于类型的遍历
- 覆盖范围:拆卸
Instrumentor
并平整跨度细化 - 覆盖范围:不对
#[automatically_derived]
函数进行插桩 - 覆盖范围:永远不要发出顺序错误的覆盖区域
- 在构建
FnOnce
通道时,不要标准化闭包签名:不要在构建FnOnce
shim 时标准化闭包签名 - 如果存在相应的
visit_
方法,则不要直接调用walk_
函数:如果有相应的visit_
方法就不要直接调用walk_
函数 - 在使用自动分配内存的类型(AFIT)的有大小限制(Sized)返回类型时,不要触发
OPAQUE_HIDDEN_INFERRED_BOUND
:在自动分配内存的类型(AFIT)的有大小限制的返回上不触发OPAQUE_HIDDEN_INFERRED_BOUND
- 不要在
rustc_resolve
中手动解析异步闭包:不要在rustc_resolve
中手动解析异步闭包 - 当尝试将独占范围写为
..<
时,发出建议:当尝试将独占范围写成..<
时发出建议 - 在跳转线程中修复假设和断言问题:修复跳转线程中的 assume 和 assert
- 修复:为实现特质(trait)的建议参数给出正确的建议:修复:为实现 trait 给出正确的建议参数
- 改进模式中表达式的处理:改进模式中表达式的处理
- 改进
IntoDiagnosticArg
中数字的处理:改善IntoDiagnosticArg
中数字的处理 - 使
#![allow_internal_unstable(..)]
能够与stmt_expr_attributes
一起工作:使#![allow_internal_unstable(..)]
能够与stmt_expr_attributes
一起使用 - 手动实现派生的
NonZero
特征 - 修改
GenericArg
和Term
结构体以使用严格的来源规则 - 将启用过程的条件移至
is_enabled
- 在检查有效性之前规范字段类型
- 仅为严格的别名收集候选的别名绑定
- 在主体中遇到尾随属性时正确恢复
- 在递归
impl
评估溢出时提供更多上下文 - riscv32im-risc0-zkvm-elf: 添加目标
- scopeTree: 因为未使用而移除
destruction_scopes
- 拆分诊断异常编码点:添加列表显示涉及的字符
- 在关联项逻辑中拆分 tait 和 impl trait
- 在
rustc_pattern_analysis
中停止使用 derivative rustc_codegen_cranelift
的子树同步- 为数组初始化建议使用
array::from_fn
- 在标准库中使用
assert_unchecked
代替assume
内在函数 - interpret:
project_downcast
:对于无居民变体不要 ICE(内部编译器错误) - 在 Miri 中返回一个有限数量的 AllocIds 每个 ConstAllocation
- miri: 在 freebsd 上添加
__cxa_thread_atexit_impl
- miri: 将 portable-atomic-util 错误添加到“发现的错误”列表中
- miri: freebsd 添加 *stat 调用拦截支持
- 在数据流分析中只使用密集位集(dense bitsets)
- 移除所有 ConstPropNonsense
- 移除 StructuralEq 特征(trait)
- 提高迭代器
intersperse(_with)
的性能 - 稳定数组方法
- std:确保
HEAP
初始化器永不内联 - 添加
AsyncFn
系列特征(trait) - 添加
ErrCode
- 添加
NonZero*::count_ones
方法 - 添加
str::Lines::remainder
方法
-
稳定
slice_group_by
这些都是Rust语言的相关代码库最近的一些提交。下面是每个提交的简要中文描述: -
切换
NonZero
别名方向 - 修改了Rust语言标准库中的NonZero
类型别名的使用方式。 -
regex: 将附加的预过滤器元数据公开 - 在
regex
库中,将一些之前不公开的元数据公开出来,便于用户使用。 -
cargo:
docs(ref)
: 尝试改进注册认证文档 - 改进了Rust的包管理器cargo
的某部分文档,提高了注册认证部分的可理解性。 -
cargo:
fix(cli)
: 改善与cargo脚本相关的错误信息 - 改进了cargo
命令行工具中报告脚本错误的方式。 -
cargo:
fix(config)
: 弃用没有扩展名的文件 - 在配置处理中弃用了没有文件扩展名的行为。 -
cargo:
refactor(shell)
: 使用新的fancy anstyle API - 在cargo
的shell交互中使用了新的风格API。 -
cargo: 文档:将 jobserver 链接的版本替换为
latest
- 将cargo
文档中的jobserver链接指向“最新”版本,而不是固定版本。 -
cargo: 修复选项描述以大写字母开头的问题 - 修正
cargo
一些选项描述中的大小写问题。 -
cargo: 重构: 在
Freshness::Dirty
中移除不必要的 Option - 在cargo
的代码中清理不必要的Option
使用,优化了Freshness::Dirty
的实现。 -
cargo: 测试:为
x86_64-unknown-none-gnu
修复数据布局 - 为特定目标架构x86_64-unknown-none-gnu
修复了测试中的数据布局问题。 -
rust-analyzer: 在
mismatched_arg_count
中用adjusted_display_range_new
替换了adjusted_display_range
即将举行的活动
2024 年 1 月 31 日至 2024 年 2 月 28 日之间的 Rust 活动 🦀
虚拟会议
- 2024-01-31 | 虚拟 (卡迪夫, 英国) | 卡迪夫 Rust 和 C++
- 2024-02-01 | 虚拟 + 现场 (巴塞罗那, 西班牙) | BcnRust
- 2024-02-01 | 虚拟 (柏林, 德国) | OpenTechSchool 柏林 + 柏林 Rust
- 2024-02-03 | 虚拟 + 现场 (布鲁塞尔, 比利时) | FOSDEM 2024
- 2024-02-03 | 虚拟 (坎帕拉, 乌干达) | Rust Circle
- 2024-02-04 | 虚拟 | Rust Maven
- 2024-02-07 | 虚拟 (印第安纳波利斯, 印第安纳州, 美国) | Indy Rust
- 2024-02-08 | 虚拟 (夏洛茨维尔, 北卡罗来纳州, 美国) | 夏洛茨维尔 Rust 聚会
- 2024-02-08 | 虚拟 (纽伦堡, 德国) | Rust 纽伦堡
- 2024-02-10 | 虚拟 (克拉科夫, 波兰) | Stacja IT 克拉科夫
- 2024-02-10 | 虚拟 (弗罗茨瓦夫, 波兰) | Stacja IT 弗罗茨瓦夫
- 2024-02-13 | 虚拟 (达拉斯, 德克萨斯州, 美国) | 达拉斯 Rust
- 2024-02-15 | 虚拟 (柏林, 德国) | OpenTechSchool 柏林 + 柏林 Rust
- 2024-02-15 | 虚拟 + 现场 (布拉格, 捷克共和国) | 捷克 Rust
- 2024-02-21 | 虚拟 (温哥华, 不列颠哥伦比亚省, 加拿大) | 温哥华 Rust
- 2024-02-22 | 虚拟 (夏洛茨维尔, 北卡罗来纳州, 美国) | 夏洛茨维尔 Rust 聚会
亚洲
- 2024-02-10 | 印度海得拉巴 | Rust 语言海得拉巴
欧洲
- 2024-02-01 | 西班牙巴塞罗那 | 混合型会议(BcnRust)
- 2024-02-03 | 比利时布鲁塞尔 | FOSDEM '24
- 2024-02-03 | 德国纽伦堡,拜恩州 | Paessler Rust Camp 2024
- 2024-02-05 | 比利时布鲁塞尔 | 比利时Rust用户组
- 2024-02-06 | 德国不来梅 | Rust Meetup Bremen
- 2024-02-07 | 德国科隆 | Rust Cologne
- 2024-02-07 | 英国伦敦 | Rust London用户组
- 2024-02-08 | 瑞士伯尔尼 | Rust Bern
- 2024-02-15 | 捷克布拉格 - 虚拟及现场 | 捷克共和国Rust
- 2024-02-21 | 法国里昂 | Rust Lyon
- 2024-02-22 | 丹麦奥胡斯 | Rust Aarhus
北美地区
- 2024-02-07 | Brookline, MA, 美国 | 波士顿Rust聚会
- 2024-02-08 | Lehi, UT, 美国 | 犹他Rust
- 2024-02-12 | Minneapolis, MN, 美国 | 明尼阿波利斯Rust聚会
- 2024-02-13 | New York, NY, 美国 | 纽约Rust
- 2024-02-13 | Seattle, WA, 美国 | Cap Hill Rust 编码/黑客/学习
- 2024-02-15 | Boston, MA, 美国 | 波士顿Rust聚会
- 2024-02-15 | Seattle, WA, 美国 | 西雅图Rust用户组
- 2024-02-20 | San Francisco, CA, 美国 | 旧金山Rust学习小组
- 2024-02-28 | Austin, TX, 美国 | Rust ATX
大洋洲
- 2024-02-06 | 澳大利亚西澳洲珀斯 | 珀斯Rust聚会小组
- 2024-02-27 | 澳大利亚首都领地堪培拉 | 堪培拉Rust用户组
- 2024-02-27 | 澳大利亚新南威尔士州悉尼 | Rust悉尼
如果你正在组织一个Rust活动,请将其添加到日历中,以便在这里提及。请记得添加活动链接。发送电子邮件给[Rust社区团队][community]以获取访问权限。
工作机会
请查看最新的 Reddit r/rust 上的招聘帖
本周名言
正是这个程序的高稳定性让我决定今后一切都用 Rust。我们的社交服务已经实现了将近2.5年的100%正常运行时间。它已经处理了12.9TB的流量,如今的内存使用仍然像2.5年前启动时那样只有1.5MB。资源使用之低让我感动得热泪盈眶。作为一个从 Java 来的人,没有了 OOM 错误或 GC 问题,Rust 带来的好处是巨大的,我看不出自己还会使用其他的编程语言。我是“一次构建,但要正确构建”这种心态的忠实拥护者,这也是为什么 Rust 总是我的首选。
感谢 Brian Kung 的推荐!
本周在 Rust 是由以下编辑编辑:nellshamrell, llogiq, cdmistman, ericseppanen, extrawurst, andrewpollack, U007D, kolharsam, joelmarcey, mariannegoldin, bennyvasquez.
电子邮件列表的主办方是 The Rust Foundation