神奇五人組: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文摘
- Rust Types 團隊在部落格中釋出了有關型別團隊更新和路線圖的內容。
- 使用 Rust 進行構建變得更加順暢,AWS CodeArtifact 現在支援 Rust 包管理器 Cargo 。
- Rust Ukraine 2024 CFP現已開啟,提交您的演講並加入史詩般的開發者聚會。申請截止日期為 7 月 6 日 ⏳
- Rust 能撐過下一個十年嗎?Tweede Golf 的 Hugo 提出了每個人都想知道的問題!
- Orhun Parmaksız 釋出了git-cliff 2.4.0 。
- 盧卡·帕爾米耶裡 (Luca Palmieri) 在與德魯的一次採訪中透露了有關 Pavex 和其他令人愉快的開發話題,這次採訪比周五晚上的部署更為精彩。
- Uuid 包現在正確支援版本 7 計數器。
- 誰知道學習 Rust 可以遊戲化?Jonathan Österberg 的Kartoffels讓您透過遊戲掌握 Rust 程式設計。
- Mahor Foruzesh 釋出了reddish-shift - jonls/redshift 到 Rust 的移植版。
- 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/<a>