鞏固年來了 Rust的2018
我希望 2018 年是無聊的一年。我不希望它變得緩慢,我希望有很多事情要做,但我希望這些工作是“無聊”的。
我們在 2017 年獲得了許多新的東西,感覺像是令人興奮的一年(新的語言功能、新的工具、新的庫、全新的編程方式(!)、新書、新團隊等等)。這真的很棒,也真的把 Rust 推向前進,但我覺得我們一路上累積了大量的技術和社交債務。
希望 2018 年能夠成為對 2017 年的收獲的鞏固年,償還技術債務,并將新事物打磨到偉大層面。更普通的情況下,我們可以想象到 Rust 的演變 - 2015 年和 2017 年是有很多大的、新事物的年份,2016 年和 2018 年應該是用來鞏固的年份。
一些細節
以下內容不分先后順序。
完成設計并且實現 ‘in flight’ 語言特性:
- 常量表達式
- 模塊和箱子
- 宏
- 默認泛型
- 更符合人體工程學
- impl Trait
- 專業化
- 以及更多 ...
穩定債務(有很多特性其實已經完成了,但需要穩定。這是一個很大的工作量,因為這個階段的風險比語言設計過程中的任何節點都要高。所以雖然看起來像是只要在方框中打鉤,但實際要花很多時間和精力。
異步/等待 - 朝一個完全集成的語言特征和完整的庫支持的方向努力,讓 Rust 成為異步編程的***。
安全指南 - 我們需要以此作為可靠、安全和方便的編譯器的優化設計。現在有太多的不確定性。
支持 web assembly - 該工作已于 2017 年底開始,Rust 在該領域有很多機會。
編譯性能 - 我們在2017年做了一些大的步驟(增量編譯),但是在編寫 Rust 程序之前有很多“小”的工作要做。 這也是一個偉大的 IDE 體驗所需要的。
錯誤處理 - 錯誤庫是一個好的開始,我認為這對于可靠性是非常重要的。還有其他非常重要的事情,比如:在主函數中穩定的 catch 塊,還有很可能是更好的函數返回語法。
IDE 支持 - 我們正在前進,并在 2017 年取得了好的進展。我們需要發布 RLS,改進編譯器的集成,然后我們會有很多改進體驗的機會,例如:調試器集成和重構工具。
其他成熟的工具 (Rustfmt 和 Clippy 都應該有 1.0 版本,我們應該有一個強大的發布機制)。
Cargo
- 建立系統集成(我們計劃在2017年完成,但還沒有開始實施)
- 正在進行的 crates.io 改進(特別是我認為我們需要著手處理 crate squatting 問題 - 我們已經避開 curate crates.io(安全問題除外),我認為適度低調的調節和管理將大大改善生態系統)
- Xargo 集成
- rustup 集成 (請看下面)
Rustdoc - 在 2017 年,有一些令人興奮的工作,我認為我們可以做出一些大的改變,包括指導式的文本,智能源代碼的探索,以及更便于使用的導航。
調試
為中級程序員提供學習資源 - 對于初學者 Rust 程序員來說,2017 年是非常棒的,在 2018 年里,我希望看到更多提供給中級程序員的文檔、講座等,這樣,當你成長為 Rust 程序員時,不至于跌入無支持的深淵,特別是如果你不想積極參與 irc 或其他“直播”頻道時。
團隊結構 - 我們在 2017 年大大拓展了我們的團隊結構,增加了一些新的團隊和新的團隊成員。我認為這一切都有所改善,但感覺總是有未完成的工作 - 有些團隊仍然覺得他們正在起步,而另外一些則感覺過于寬泛。
潤色 RFC 流程--RFC 流程是 Rust 強大的優勢之一,在需要強大的提前設計的情況下確實有所幫助。然而,它也相當重量級,可能是一個巨大的時間陷阱,在某些場合下是壓力和負面能量的真正來源。我認為我們需要重新平衡一些事情,雖然我不太確定如何做。
交流渠道 - 我們有很多交流渠道,但沒有一個真的很棒 - 很多人不喜歡 irc ,這是一些人進入的障礙,很難調和。討論論壇相當不錯,但是不能很好地促進互動交流。GitHub(至少主 Rust 存儲庫)可能是非常龐大的,很容易錯過重要的信息。我們在 impl 期間嘗試了 Gitter ,我們用 Slack 來做一些小的事情。兩者似乎都不錯,有其自身的錯誤和問題,相比 irc 并沒有提供太多功能,再加上這意味著更多的渠道需要密切關注。 r/rust 處于一個奇怪的半官方狀態,有些人真的不喜歡 Reddit 。我不認為這里有一顆“銀彈”(指某種新科技),但我認為我們可以改進和完善。
一些新東西
好吧,還有一些急需完成的新東西。我想盡量保持這個清單的簡短:
- 新紀元 - 現在是時候做這些了。我們應該制定哪些東西不會再用了,并為新特性騰出時間來“適當”實現。
- 國際化(i18n) - 我認為盡可能多的人可以使用軟件是非常重要的,且當這些實現的工具是集中化和官方化的情況下,軟件的生態系統會做得更好。我們應該開發庫和語言特性來幫助實現國際化和本地化程序。
- 集成 cargo/rustup - 沒必要將這些作為單獨的程序,會增加了新程序員的上手難度。雖然這是一個相對較小的事情,但我覺得它有很大的影響力。
- 測試 - Rust 內置的單元測試非常簡潔,但我們也需要提供更強大的測試框架。
優先級
這許多很多的考量!而且我可能錯過了一些庫和社區的東西,因為我并不是真正了解那里正在發生的事情。我認為這差不多是一年的工作量了,但前提是我們能夠抵抗住那些在此基礎上更有魅力的、閃光的事情的誘惑。
我可能有些偏見,但工具(包括 Cargo )似乎是一個需要做很多工作的領域,并且這些工作是很重要的。這也是一個感覺“人手不足”的領域,所以我們要么鼓勵更多的人關注工具,要么削減我們想要實現的目標。
目標
在 2018 年年底之前,我希望 Rust 能夠成為一個真正堅實的、可靠的編程語言選擇。希望能形成擁有向后兼容性和穩定性的***秀的聲譽,而不是停滯不前。希望社區***感覺自己是一臺運轉良好的機器,讓越多的社區參與者信任領導班子。希望在進行中的項目數量要少得多,未答復的問題要少得多(而且有更多的項目正在完成或達到成熟階段)。希望“普通”用戶能夠感覺到我們在創新和穩定性之間所取得的平衡。
關于作者
Nick Cameron,是 Mozilla 的一名研究工程師,主要工作于 Rust 語言。