Rust 1.6為OS和嵌入式開發帶來穩定支持

jopen 8年前發布 | 6K 次閱讀 Rust 操作系統 嵌入式

與他們的 發布模型 一致,Rust開發團隊已于2016年1月6日 宣布 了第一個Rust版本。Rust 1.6的最大特點是實現了 libcore 的穩定,其目標是讓使用穩定的Rust進行OS和嵌入式開發成為可能。

libcore 提供了一個底層的、平臺無關的基礎,Rust標準庫 libstd 就是基于它構建像內存管理、I/O和并發等高級功能。因此, libcore 是最底層,OS和嵌入式軟件開發人員常常更喜歡以它為基礎構建應用程序。這樣說來, libcore 的穩定為各種底層軟件提供了穩固的基礎。

Rust核心團隊成員Steve Klabnik告訴InfoQ,其重要性不可低估:

為了可以基于穩定的Rust進行OS/嵌入式開發,這是重要的一步。因此,這很重要,但那仍然只是第一步。我確實認為,表明Rust是最底層軟件開發的一個可行選項,對于Rust未來的發展而言很重要。

然而,需要特別注意, libcore 目前僅支持庫的開發,而尚不完全支持應用程序的開發。Klabnik向InfoQ解釋說, libcore 之所以不完全支持應用程序是因為還有一些它所需要的“lang items”未定義。在Rust中,“lang items”可以理解為鏈接器符號,可以用作鉤入語言本身的“鉤子”。這會使比如說在庫中實現部分Rust功能成為可能,而不是在語言本身。按照Klabnik的說法,對于想要構建一個庫,但不使用 libstdno_std )的開發人員來說,這問題不大。實際上,他表示:

我們可能不會將這兩個[lang items]加入 libcore 本身。它們是專為用戶以適合自己的方式進行實現而設計的。如果你試圖構建一個用到了 no_std 的可執行程序,那么你必須自己定義這兩個lang items。

此外,Klabnik還提供了 一個源文件的鏈接 ,他在其中展示了如何定義那些缺失的符號:

#[lang = "eh_personality"]
extern "C" fn eh_personality() {
}
#[lang = "panic_fmt"]
fn panic_fmt() -> ! {
    loop {}
}

#[lang = "begin_unwind"]
pub extern "C" fn begin_unwind() {
}

除實現了 libcore 的穩定外,Rust 1.6還對庫函數和語言特性進行了許多小的優化,最顯著的是 drain 函數族(用于移除集合中的元素,同時保留它們的后備內存)和新的 From 類型轉換。要了解完整的變更列表,可以查看 發布說明

查看英文原文: Rust 1.6 Brings Stable Support for OS and Embedded Development

來自: http://www.infoq.com/cn/news/2016/01/rust-16-released

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!