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