Bronze垃圾收集器是否使 Rust 更易於使用?
Rust 是一種型別和記憶體安全的通用程式語言。Rust 不使用垃圾收集器,而是透過複雜但複雜的型別系統來實現這些屬性。這樣做使 Rust 非常高效,但使 Rust 相對難以學習和使用。
我們為 Rust 設計了 Bronze,這是一個可選的、基於庫的垃圾收集器。
為了瞭解 Bronze 是否能讓 Rust 更有用,我們對來自 633 人班級的志願者進行了一項隨機對照試驗,總共收集了 428 名學生的資料。我們發現,對於需要管理複雜別名的任務,Bronze使用者更有可能在可用時間內完成任務,而完成任務的使用者只需要大約三分之一的時間(4 小時與 12 小時)。
論文點選標題。
網友討論:
一個常見的謬誤是,Rust借用檢查器只是 GC 的替代品,其實這是謬誤,它不僅限於此:它可以為您提供 Java 或 Go 等無法提供的安全保證(沒有可變別名和資料競爭)。
至少對我來說,這些額外的保證並沒有防止很多錯誤。特別是,我的程式碼很少受到資料競爭的影響:通常任何共享狀態都是一個檔案或網路資源,可以被多個主機上的多個程式訪問,而 Rust 的借用檢查器在這些方面沒有幫助,但我仍然需要付出成本(我知道生產力會隨著經驗而提高,但回報會迅速減少,而且明顯的共識似乎是 GC 和 BC 之間仍然存在很大的生產力差距)。
Rust如何在允許多個可變引用的同時獲得安全性?是透過強制執行單執行緒程式碼嗎?
是的,他們不試圖保證執行緒安全:
Rust 一次只允許一個對一個值的可變引用。為了獲得更大的靈活性,(標準)Rust 透過對物件的不可變引用來支援物件的內部變異 。程式設計師可以借用一個允許變異的值的特殊引用,並且執行時確保一次只能存在一個這樣的引用,從而可以安全地放鬆編譯時檢查。使用 Bronze,可以透過對每個垃圾收集物件的所有引用進行更改,無需額外工作。一個關鍵的權衡是 Bronze 不保證執行緒安全;與其他垃圾收集語言一樣,確保安全是程式設計師的責任。
聽起來這篇論文更多地是關於 Rust 中當前內部可變性 API 的可用性,而不是關於 GC。我可以證明,在 Rust 中獲取和使用內部可變性 API 非常困難。我很想看到更多關於如何更改這些 API 以提高其可用性的工作。
相關文章
- 如何使Safari for Mac中的網頁更易於閱讀Mac網頁
- JVM垃圾收集器(八)JVM
- 垃圾收集器學習
- java8預設使用的垃圾收集器Java
- JVM垃圾收集器總結JVM
- JVM垃圾收集器專題JVM
- JVM 經典垃圾收集器JVM
- java幾種垃圾收集方法和垃圾收集器Java
- 垃圾收集器與記憶體分配策略_hotspot垃圾收集演算法實現和垃圾收集器記憶體HotSpot演算法
- GC 分代回收 - 垃圾收集器GC
- Java G1 垃圾收集器Java
- JVM(五)-垃圾收集器入門JVM
- JDK1.6中垃圾收集器JDK
- JVM G1垃圾收集器JVM
- Java虛擬機器學習 - 垃圾收集器Java虛擬機機器學習
- 深入理解 JVM 之 垃圾收集器JVM
- JVM調優:HotSpot JVM垃圾收集器JVMHotSpot
- 10. 系統分析垃圾收集器
- 垃圾收集器與Java程式設計Java程式設計
- NetApp使有狀態應用程式更易於在Kubernetes中完成APP
- 關於生產環境改用G1垃圾收集器的思考
- Python 發展趨勢:與 Rust 深度融合、更易於編寫 Web 應用PythonRustWeb
- JVM虛擬機器-垃圾回收機制與垃圾收集器概述JVM虛擬機
- 垃圾收集器與記憶體分配策略_垃圾收集演算法記憶體演算法
- 深入理解JVM,7種垃圾收集器JVM
- Java虛擬機器04——垃圾收集器Java虛擬機
- 垃圾收集器與記憶體分配策略記憶體
- JVM學習筆記(4)---垃圾收集器JVM筆記
- HotSpot的7種垃圾收集器組合HotSpot
- JVM——垃圾收集器與記憶體分配JVM記憶體
- java中各種垃圾收集器的原理Java
- 垃圾收集器:引用計數演算法演算法
- JVM垃圾收集器基準報告 – Ionuț BaloșinJVM
- jvm系列(三)GC演算法 垃圾收集器JVMGC演算法
- 【JVM進階之路】七:垃圾收集器盤點JVM
- Java新的Z垃圾收集器ZGC介紹JavaGC
- JVM 低延遲垃圾收集器 Shenandoah 和 ZGCJVMNaNGC
- JVM 垃圾收集器與記憶體分配策略JVM記憶體