​​本周精彩:Rust​​​​​何时能实现零成本并行?

神奇五人组:Javad Abdi、Gilead Posluns、张国政、王博轩和Mark C. Jeffrey 发表了一篇研究论文,成为本周热议的话题。
他们的研究论文题为“ Rust 何时能实现无所畏惧且零成本的并行?”,探究 Rust 是否实现了其宣称的为并行编程实现“无所畏惧且零成本的并发” 。

该研究涉及对从 C++ 移植到 Rust 的 14 个基准的分析,涵盖常规和不规则并行性。研究人员使用 Rayon 库进行并行构造,并评估了在 Rust 中表达并行性的简易性和安全性。

这篇经过深入研究的论文发现,尽管 Rust 在处理常规并行性方面表现出色,但在处理非常规并行性方面却举步维艰,这使得 rustacean 面临着与其他语言相同的挑战。

以下是该研究的一些主要发现:

  • 常规并行性:Rust的类型系统擅长在编译时捕获具有常规数据访问模式(例如并行前缀和)的程序的并发错误。这使得并行编程在这些情况下“无所畏惧” 。
  • 常规并行:当任务对共享数据的访问模式非常规时(例如,同时修改哈希表中的元素),Rust 需要unsafe不安全的代码(有风险)或同步原始类型(开销和错误的可能性)。这让并行编程再次变得“可怕” 。
  • 同步:虽然 Rust 通过要求同步来强制执行数据竞争,但它并不能消除其他同步错误,如死锁或活锁。程序员仍然需要谨慎对待此类情况。
  • 性能。Rust的基准测试通常比 C++ 慢,但差距并不大。
论文还引入了“恐惧级别”,对与 Rust 并行编程相关的恐惧程度进行分类。
  • 无所畏惧:错误在编译时就被捕获。
  • 舒适:运行时可捕获错误,并提供清晰的诊断。
  • 害怕:错误可能无法被检测到,从而导致不确定的行为。(大多数语言包括Java等都存在)
研究发现,Rust 虽然在常规并行方面具有显著优势,但在非常规情况下却存在不足。Rustaceans 在使用 Rust 进行并行编程任务时需要仔细考虑安全性和性能之间的权衡。

小结
Rust特点是小而快,非常规并发是服务器后端常见的方式,Java等语言中对于“同时修改哈希表中的元素”提供ConcurrentMap等SDK内部处理,Java还有更多并发支持,因此非常适合后端服务多个大并发量的Web互联网场合,而Rust在后端可能有类似NodeJS那样,通过异步模式实现相对要求不严格并发处理,对于“同时修改哈希表中的元素”可委托给数据库#ACID锁 实现。

本周其他精彩Rust文摘

  1. Rust Types 团队在博客中发布了有关类型团队更新和路线图的内容
  2. 使用 Rust 进行构建变得更加顺畅,AWS CodeArtifact 现在支持 Rust 包管理器 Cargo 
  3. Rust Ukraine 2024 CFP现已开启,提交您的演讲并加入史诗般的开发者聚会。申请截止日期为 7 月 6 日 ⏳
  4. Rust 能撑过下一个十年吗?Tweede Golf 的 Hugo 提出了每个人都想知道的问题!
  5. Orhun Parmaksız 发布了git-cliff 2.4.0 
  6. 卢卡·帕尔米耶里 (Luca Palmieri) 在与德鲁的一次采访中透露了有关 Pavex 和其他令人愉快的开发话题,这次采访比周五晚上​​的部署更为精彩。
  7. Uuid 包现在正确支持版本 7 计数器
  8. 谁知道学习 Rust 可以游戏化?Jonathan Österberg 的Kartoffels让您通过游戏掌握 Rust 编程。
  9. Mahor Foruzesh 发布了reddish-shift - jonls/redshift 到 Rust 的移植版。
  10. David 撰写了一篇关于在 Rust 中实现 JSON 解析的教程。我们保证它一定非常好。

本周项目Rust推荐:
C2Rust 可帮助您将符合 C99 的代码迁移到 Rust。转换器(或转译器)c2rust transpile会生成与输入的 C 代码非常相似的不安全 Rust 代码。转换器的主要目标是保留功能;测试套件在转换后应继续通过。

C2Rust 提供的功能:

  • C2Rust 将您的 C 代码转换为 Rust 代码,旨在保留功能。
  • 翻译后的 Rust 代码设计为内存安全的,有助于防止崩溃和安全漏洞。
  • C2Rust 分析您的 C 代码以了解其结构和功能。
  • 虽然目前还没有完全实现,但 C2Rust 的目标是最终支持为不同平台翻译代码。目前,不支持翻译代码的交叉编译。
C2Rust 在Github上。

Reddish Shift 
Redshift的移植版。借助C2Rust逐行翻译。将 jonls/redshift 移植到 Rust

Reddish Shift 会根据周围环境调整屏幕的色温。如果您晚上在屏幕前工作,这可能会减轻您的眼睛疼痛。

另外工具,适用于逆向工程师、程序员和凌晨 3 点工作时重视视网膜的人员的十六进制编辑器:
https://github.com/WerWolv/ImHex/