時間:2020-01-22 來源:互聯網 瀏覽量:
作者:一鳴、Jamin
近日,微軟研究院開源了一個名為 Verona 的項目。這是一個麵向研究的編程語言,旨在解決內存管理和計算機安全方麵的問題,並借鑒了 Rust 等的新特性。
計算機安全中很多問題都和內存管理相關,很多相關研究機構正在探究一些方法。近日,微軟研究院開源了一個研究型的編程語言項目——Verona。
Verona 語言是一個開源項目,微軟研究院希望通過這個項目幫助學界研究更好的內存管理方法。據悉,該項目吸收了 Rust、Cyclone 的一些特點。
開源地址:https://github.com/microsoft/verona
Verona 語言是什麼
Verona 是一個微軟研究院發起的項目,用於研究並發方麵的問題。研究者希望提供一種新的並發模型,能夠無縫地和所有權結合。
根據微軟給出的介紹,Verona 項目旨在探索有關語言和 runtime 方麵的研究,以實現安全的可擴展內存管理和分區工作。
主要的研究問題如下:
目前 Verona 仍然是一個處於很早期的研究類項目,部分類型檢查器還有待實現,同時實現的語言功能也較少。
社區評價
項目開源後引起了社區的討論。一些開發者認為,Verona 嚐試抽象所有者模型,更接近人們的使用習慣,能夠在不失安全性的情況下創建數據結構,但是是否能夠成功有待觀察。
還有開發者認為,從微軟本身(而不是微軟研究院)的角度來看,建立一個像 Go 語言那樣的原生語言也是應該的。
Verona 要解決的問題
「係統編程語言」是一個有著廣泛範圍的問題。從高級關鍵性能係統到低級的內存管理器,以及內核模塊都有所涉及。係統編程有兩個不同的方麵:
可預測性
原始訪問(Raw access)
並發突變和內存安全
在 Verona 項目中,研究者認為放棄並發型突變(concurrent mutation)是可擴展內存管理的必要一步。通過消除並發型突變,開發者就不能將並發實現成庫。通常情況下有兩種選擇,暴露「unsafe」以啟用不安全的庫去實現並發(如 Rust),或者為語言提供一個並發模型(如 Pony)。
前者意味著編程語言隻能依賴較少的不變量,因為它無法理解那些非安全模塊中的代碼是如何提供並發能力的。後者意味著需要一個驚人的 Concurrency Story,因為隻能有一個 Concurrency Story。
共享所有權
在 Verona 中,研究者引入一種新的並發型編程模型:並發所有者,簡稱 cowns。它封裝了一些資源集(如內存區域),同時確保了每次由一個執行線程訪問這些資源。
在 Verona 中,我們可以將一個對象包裝在 cown 中,使其並發。
據項目介紹稱,這一項目希望能夠通過開源和研究界展開更多的合作。目前項目仍在早期階段,對於微軟本身使用的工程項目不會有影響。