<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          2021 年 Rust 生態(tài)版圖調(diào)研報告 | 星辰大海(下篇)

          共 34665字,需瀏覽 70分鐘

           ·

          2022-01-20 14:12

           

          文前


          半年前,我寫了一篇《三萬言| 2021 年 Rust 行業(yè)調(diào)研報告》[1] ,內(nèi)容主要圍繞 Rust 語言介紹 和 行業(yè)領(lǐng)域開源應(yīng)用盤點(diǎn) 兩大部分內(nèi)容。時隔半年,我覺得有必要再寫一篇年終的 Rust 生態(tài)調(diào)研報告。因?yàn)槲蚁虢o大家提供一個比較全面的視角,通過挖掘互聯(lián)網(wǎng)上的各種散落且隱藏的信息,最終繪制出一張 Rust 的“生態(tài)地圖”,讓大家盡量客觀公正地去認(rèn)識 Rust 語言。


          在完成本篇報告之后,我得出一個觀點(diǎn):Rust 的出現(xiàn)并不是要你去用它重寫一切,而是希望你可以用它創(chuàng)造新的未來。當(dāng)然這只是我個人觀點(diǎn),不代表任何人任何機(jī)構(gòu)和公司。如果您有不同觀點(diǎn),歡迎探討。


          * 本次報告的所有內(nèi)容都來自于互聯(lián)網(wǎng)公開信息,如有錯誤或不宜在本報告中提及的內(nèi)容,請及時告知。

           

          大綱


          本次報告包含以下內(nèi)容:


          • Rust Project 自身狀態(tài)

          • Rust 在各個領(lǐng)域中的應(yīng)用狀態(tài)和趨勢

          • Rust 職業(yè)崗位分布

          • Rust 語言在教育的普及狀態(tài)


          上篇回顧


          《【上篇】2021 年 Rust 生態(tài)調(diào)研報告 | 星辰大?!?/strong>中,我們盤點(diǎn)了 Rust Project 自身的狀態(tài) 以及 Rust 在操作系統(tǒng)、云原生、物聯(lián)網(wǎng)、游戲和數(shù)據(jù)處理領(lǐng)域中 2021 年值得關(guān)注的項(xiàng)目動態(tài)。


          這篇內(nèi)容會緊接上篇內(nèi)容,繼續(xù)探討 Rust 在其余領(lǐng)域中的應(yīng)用狀態(tài)、Rust 職業(yè)崗位分布 和 Rust 語言在教育方面的普及狀態(tài)。


          Rust 在各個領(lǐng)域中的應(yīng)用狀態(tài)和趨勢【續(xù)】


          機(jī)器學(xué)習(xí)與科學(xué)計(jì)算


          2021 年 NLP 領(lǐng)域明星項(xiàng)目 Transformers


          Hugging Face 是一家總部位于美國紐約的聊天機(jī)器人初創(chuàng)服務(wù)商。該公司在 NLP 界鼎鼎大名,2021 年 3 月份剛剛完成 4000 萬美元 B 輪融資。在 GitHub 上發(fā)布了開源 NLP 庫 Transformers[2] ,而 Transformers 庫集成了 tokenizers。


          tokenizers[3] 是 Hugging Face 公司開源的一款 Rust 實(shí)現(xiàn)的分詞庫,只需不到 20 秒即可用服務(wù)器 CPU 進(jìn)行 1GB 文本處理?;谏疃葘W(xué)習(xí)的現(xiàn)代 NLP 管道中的瓶頸之一就是 tokenization,尤其是通用性強(qiáng)且獨(dú)立于框架的實(shí)現(xiàn)。所以,該分詞器的核心是用 Rust 編寫的,并且存在 Node 和 Python 的綁定。提供當(dāng)今最常用的分詞器的實(shí)現(xiàn),重點(diǎn)是性能和通用性。


          目前 Transformer 模型預(yù)測已經(jīng)遍布特斯拉、谷歌、微軟、Facebook 等科技巨頭。Transformer 在特斯拉 AutoPilot 自動駕駛系統(tǒng)中驅(qū)動汽車、在 Gmail 中補(bǔ)全句子、在 Facebook 上及時翻譯用戶的帖子以及在 Bing 中回答用戶的自然語言查詢等。


          可以說,Hugging Face 這家創(chuàng)業(yè)公司 使用 Rust 來構(gòu)建分詞器,對于機(jī)器學(xué)習(xí)模型的準(zhǔn)確率和性能方面的巨大提升應(yīng)該是有積極作用等。


          linfa


          Linfa[4] 是一個 Rust 實(shí)現(xiàn)的 類似于 python scikit-learn 的庫,旨在提供一個全面的工具包,可以使用 Rust 構(gòu)建機(jī)器學(xué)習(xí)應(yīng)用程序。該團(tuán)隊(duì)還創(chuàng)建了 Rust-ML 組織。


          scikit-learn,又寫作 sklearn,是一個開源的基于 python 語言的機(jī)器學(xué)習(xí)工具包。它通過 NumPy, SciPy 和 Matplotlib 等 python 數(shù)值計(jì)算的庫實(shí)現(xiàn)高效的算法應(yīng)用,并且涵蓋了幾乎所有主流機(jī)器學(xué)習(xí)算法。


          更多資料:Rust 機(jī)器學(xué)習(xí)之書[5]


          2021 年該庫已經(jīng)發(fā)布了 0.5 版本,其 Roadmap[6] 中 24 個任務(wù),截止目前已經(jīng)完成了 20 個。該 Roadmap 的目標(biāo)就是在功能方面要和 Python 的`scikit-learn`[7] (基于 SciPy 針對機(jī)器學(xué)習(xí)領(lǐng)域發(fā)展出的一個分支版本)提供的算法完全一致。目前僅剩下 高斯過程、隨機(jī)森林、集成學(xué)習(xí)和 最小角度回歸沒有完成。這個 Roadmap 進(jìn)行了大概兩年開發(fā),預(yù)計(jì) 2022 年應(yīng)該會完成。


          也就是說,在 2022 年,Rust 生態(tài)中會出現(xiàn)一個功能和 python sklearn 完全一致,但性能比 sklearn 更好的庫。


          Polars


          在數(shù)據(jù)操作層面,每個人都喜歡 Pandas 的 API。它快速、簡單且有據(jù)可查。但在生產(chǎn)方面,Pandas 有點(diǎn)棘手。Pandas 不能很好地?cái)U(kuò)展……沒有多線程……它不是線程安全的……它不是內(nèi)存效率。這一切都是 Rust 存在的理由。


          **Polars**[8] 用 Rust 實(shí)現(xiàn)的新 Dataframe 庫,具有方便的 Python 綁定。它試圖做到以線程安全的方式進(jìn)行讀取、寫入、過濾、應(yīng)用函數(shù)、分組和合并。它使用**Apache Arrow**[9],這是一個專門為跨語言進(jìn)行高效數(shù)據(jù)處理和數(shù)據(jù)共享而構(gòu)建的數(shù)據(jù)框架。


          Polars 有兩個優(yōu)勢:


          1. 它是性能殺手,參考 db-benchmark[10] 。

          2. 它的 API 非常簡單。哪怕不懂 Rust 語法也能看懂該接口要做什么。


          也有三個缺點(diǎn):


          1. 構(gòu)建 Dataframe API 很困難,Pandas 花了 12 年才達(dá)到 1.0.0,而 Polars 很年輕,所以目前還不夠成熟。

          2. 使用它的時候,不僅僅要熟悉 Polars API,還需要熟悉 Arrow API,因?yàn)楹芏喾敝毓ぷ魇?arrow 來完成的。

          3. 編譯時間太慢,可能需要 6 分鐘左右。


          Polars 現(xiàn)在由 Xomnia[11] 公司贊助。Xomnia 是荷蘭一家人工智能公司,在研究自動駕駛船只,被人稱為水上特斯拉。


          oxide-enzyme


          oxide-enzyme [12] 也是 linfa 團(tuán)隊(duì)在 2021 年底新創(chuàng)建的另一個項(xiàng)目。oxide-enzyme 是 Enzyme 的 Rust 前端庫,該庫目前是實(shí)驗(yàn)性的,但在積極開發(fā)中。


          Enzyme[13] 是 MIT 提出的自動微分框架,它能夠合成以 LLVM 中間表示(IR)表示的靜態(tài)可分析程序的梯度。Enzyme 能夠合成任何以面向 LLVM IR 編譯器為語言編寫的程序的梯度,包括 C、C ++、Fortran、Julia、Rust、Swift、MLIR 等,從而提供這些語言的本機(jī) AD 功能。


          Enzyme 出現(xiàn)的背景


          當(dāng)前,PyTorch、TensorFlow 等機(jī)器學(xué)習(xí)框架已經(jīng)成為了人們開發(fā)的重要工具。計(jì)算反向傳播、貝葉斯推理、不確定性量化和概率編程等算法的梯度時,我們需要把所有的代碼以微分型寫入框架內(nèi)。這對于將機(jī)器學(xué)習(xí)引入新領(lǐng)域帶來了問題:在物理模擬、游戲引擎、氣候模型中,原領(lǐng)域組件不是由機(jī)器學(xué)習(xí)框架的特定領(lǐng)域語言(DSL)編寫的。因此在將機(jī)器學(xué)習(xí)引入科學(xué)計(jì)算時,重寫需求成為了一個挑戰(zhàn)。


          為了解決這一問題,現(xiàn)在的發(fā)展趨勢包含構(gòu)建新的 DSL,讓重寫過程變得簡單,或者在編程時直接進(jìn)行構(gòu)建。這些方法可以讓我們獲得有效的梯度,但是仍然需要使用 DSL 或可微分的編程語言進(jìn)行重寫。為了方便開發(fā)者,來自 MIT 的研究者開源了 Enzyme。


          MegFlow


          MegFlow[14] 是曠視天元在 2021 年 9 月份開源的面向計(jì)算機(jī)視覺應(yīng)用的流式計(jì)算框架,提供了一套可快速完成 AI 應(yīng)用部署的視覺解析服務(wù)方案。AI 應(yīng)用開發(fā)者可以基于 MegFlow 提供的圖像和視頻解析服務(wù),最快 15 分鐘即可完成客制化所需功能,例如發(fā)票掃描、明火檢測等。


          常規(guī)的 AI 算法交付流程一般分為模型訓(xùn)練、SDK 封裝、業(yè)務(wù)集成和交付驗(yàn)收四個步驟,冗長繁雜。MegFlow 總結(jié)了曠視內(nèi)部多年的 AI 應(yīng)用工程落地經(jīng)驗(yàn),將資源、消息、任務(wù)等概念進(jìn)行了清晰一致的抽象化,將冗長的算法交付流程簡化為模型訓(xùn)練、業(yè)務(wù)集成及交付驗(yàn)收三步。通過 MegFlow ,AI 算法研究人員可以快速將訓(xùn)練好的模型集成部署成簡單易用的 AI 服務(wù)并完成交付。


          MegFlow 的研發(fā)團(tuán)隊(duì)調(diào)研了多種技術(shù)方案,最終選擇了安全且零額外開銷的 Rust 異步生態(tài),從基礎(chǔ)上保證了 MegFlow 的安全性與性能。


          MegFlow 開源的這四個月里,增加了一些特性,并且還增加了一個使用案例:貓貓圍欄[15] ,相關(guān)視頻:懶出新境界!程序員竟然造出一臺人工智能貓糧機(jī)![16] ,實(shí)驗(yàn)效果還不錯。并且開發(fā)者還可以從曠視天元申請免費(fèi)的算力。


          qdrant :神經(jīng)網(wǎng)絡(luò)搜索引擎


          qdrant[17] 是一個向量相似性搜索引擎。它提供了一個生產(chǎn)就緒的服務(wù),有一個方便的 API 來存儲、搜索和管理點(diǎn)(帶有額外有效 payload 的向量)。Qdrant 是為擴(kuò)展過濾支持而定制的。這使得它對各種神經(jīng)網(wǎng)絡(luò)或基于語義的匹配、分面搜索和其他應(yīng)用都很有用。基于 Rust 實(shí)現(xiàn),性能也有保證。嵌入神經(jīng)網(wǎng)絡(luò)編碼器可以變成成熟的應(yīng)用程序,用于匹配、搜索、推薦等。


          目前


          其他


          還有一些在 2021 年 6 月份統(tǒng)計(jì)過的依然活躍維護(hù)狀態(tài)的機(jī)器學(xué)習(xí)框架:


          • tch-rs[18] 是 Pytorch 的 Cpp API 的 Rust 綁定,目前正在活躍維護(hù)中。

          • ndarray[19] 是一個由 Rust 官方團(tuán)隊(duì)中資深科學(xué)計(jì)算專家 bluss 開發(fā)的開源項(xiàng)目,實(shí)現(xiàn)了基于 rust 的矩陣和線性運(yùn)算。目標(biāo)是在 Rust 中建立類似于 numpy 和 openblas 的科學(xué)計(jì)算社區(qū)。它是機(jī)器視覺、數(shù)據(jù)挖掘、生物信息等多類科學(xué)計(jì)算庫的基礎(chǔ),社區(qū)中的主要用戶為一些相關(guān)技術(shù)的高?;蛘哐芯克?。華為也在深度參與該庫的開發(fā)。

          • nalgebra[20],是 Rust 的通用線性代數(shù)庫,和 Rapier 一起都是 ,Dimforge 開源組織[21] 開發(fā)的。

          • tvm-rs[22] 是 TVM 的 Rust 綁定,TVM 是由華盛頓大學(xué)在讀博士陳天奇等人提出的深度學(xué)習(xí)自動代碼生成方法,去年 8 月機(jī)器之心曾對其進(jìn)行過簡要介紹。

          • Neuronika[23] 是一個用 Rust 編寫的機(jī)器學(xué)習(xí)框架,與 PyTorch 類似,現(xiàn)已實(shí)現(xiàn)最常見的層組件(dense 層、dropout 層等),速度堪比 PyTorch。

          • Whatlang[24],基于 Rust 實(shí)現(xiàn)的 自然語言 識別項(xiàng)目。


          GUI


          2021 值得關(guān)注的 GUI 項(xiàng)目 :SixtyFPS


          SixtyFPS 是一個工具包,可以有效地為任何顯示器開發(fā)流暢的圖形用戶界面:嵌入式設(shè)備、桌面應(yīng)用程序、移動端和 Web (目前可編譯到 wasm,但僅作為演示,SixtyFPS 無意將 Web 作為主要競爭平臺)。它支持多種編程語言,目前是 Rust、C++ 或 JavaScript。核心庫是 Rust 實(shí)現(xiàn),其他語言的支持通過 C-ABI 來完成。


          從 2021 年開始,就看到一些基于 Rust 和開源來創(chuàng)業(yè)的公司慢慢增加,這個專注于 GUI 的 SixtyFPS 也是其中一個,這個開源 GUI 工具庫面向全平臺,目標(biāo)之一是取代 Qt,換句話說,SixtyFPS 基本上是大多數(shù) Qt 開發(fā)人員都在等待的下一代 QML。


          SixtyFPS 兩位創(chuàng)始人都對 Qt 開發(fā)有深入的經(jīng)驗(yàn)。其中一位是 曾經(jīng)在 Qt 公司擔(dān)任 QtQml 引擎的主要開發(fā)人員和維護(hù)人員??此麄兊?2021 總結(jié)報告,發(fā)現(xiàn)他們在 2021 才注冊了公司,和 tQCS 這樣的咨詢公司建立了合作關(guān)系,找到了第一個客戶,招募了新成員。(感覺國外技術(shù)流創(chuàng)業(yè)跟國內(nèi)還是有點(diǎn)區(qū)別)。tQCS 提供世界 No.1 的 Qt 咨詢和 UI/UX 設(shè)計(jì)服務(wù),選擇和 SixtyFPS 合作,這意味著什么呢?見仁見智吧。


          2022 年他們可能要長足支持嵌入式,要有新品牌名字了。


          Tauri


          Tauri[25] 被看作是 Electron 的替代者,它們都是使用 Web 技術(shù)創(chuàng)建桌面應(yīng)用程序以開發(fā)應(yīng)用程序用戶界面的框架。雖然表面看這兩者好像都一樣,但其實(shí)存在很大差別。


          下面有一個比較:


          Bundle 大小 :tauri 比 electron 小大約 19 倍



          內(nèi)存消耗 :electron 比 tauri 高 9 倍



          性能 :tauri 更勝一籌



          但使用 tauri 的要求更高,tauri API 遠(yuǎn)不如 Node.JS 完整和充實(shí),所以你在使用 tauri 的時候,有些 API 可能需要自己使用 Rust 去實(shí)現(xiàn)它們。


          上面的比較來自于: https://githubhelp.com/Fournux/tauri-vs-electron[26] 。


          另外, Tauri 在 2021 年還孵化出另外兩個 crate :


          • wry[27],一個跨平臺的 WebView 庫。

          • tao[28],一個跨平臺的 Window 庫。


          Tauri 目前發(fā)布了 1.0 beta 版,距離正式穩(wěn)定版已經(jīng)不遠(yuǎn)。Tauri 選擇 Rust 的原因就是為了安全和性能。Tauri 承諾不管你是在 App 中內(nèi)置 localhost 服務(wù)器,還是做其他事情,Tauri 都會為你提供一個安全的底線。將來 Go、Nim、Python、Csharp 等其他后端語言也會被支持,這些都會通過當(dāng)前這個 Rust 內(nèi)核提供 C-API 來實(shí)現(xiàn)。


          Egui


          egui[29] 是一款純 Rust 實(shí)現(xiàn)的使用立即模式(immediate mode)的 GUI 框架(在屏幕上實(shí)時繪制需要的 ui)。在 egui 的 README[30] 中說明了這種立即模式的優(yōu)缺點(diǎn),如果你要做選型的話,應(yīng)該去了解一下。簡而言之,立即模式是與保留模式做對比的。立即模式主要優(yōu)點(diǎn)是應(yīng)用程序代碼變得非常簡單,缺點(diǎn)是讓布局更加困難,GUI 也不能太復(fù)雜,否則會給 CPU 帶來負(fù)擔(dān)。


          Reddit 一位網(wǎng)友[31] 說他們正在使用 Bevy 和 Egui 來構(gòu)建商業(yè) CAD 軟件。


          截止目前,egui 發(fā)布了 0.16 版本。


          其他


          • gtk4-rs[32],另一個比較活躍的 GUI 庫是 GTK 的 Rust 綁定,2021 年發(fā)布了 GTK4 的 Rust 綁定 gtk4-rs[33] 0.3.1 版本,目前還在活躍維護(hù)中。

          • iced[34],一個被 Elm 架構(gòu)影響的 GUI 框架,它基于 wgpu。也是跨平臺的,包括 Web UI。2021 年一直在活躍開發(fā)中,但是距離 2021 年 4 月份發(fā)版的這八個月時間還沒有發(fā)出新的版本。但它也是被人看好的一個框架。

          • druid[35],是一個實(shí)驗(yàn)性的 Rust 原生 UI 工具包,值得關(guān)注。Druid 目前的發(fā)展很大程度上是由它在 Runebender[36] 中的使用而推動的,這是一種新的字體編輯器(處于很早期的階段)。

          • azul[37],是一款跨平臺桌面 GUI 框架。它將函數(shù)式、反應(yīng)式和面向數(shù)據(jù)的編程范式與適用于開發(fā)跨平臺桌面應(yīng)用程序的 API 混合在一起。Azul 的兩個核心原則是不渲染不可見的對象,并使用 DOM 樹的組合而不是繼承。目前發(fā)布了 1.0-alpha 版本,距離正式發(fā)布 1.0 也不遠(yuǎn)了。

          • lvgl-rs[38] ,是 LittlevGL 的 Rust 綁定。Littlevgl 是一種純 C 語言編寫的 GUI,控件多且美,移植簡單,只要對接一個顯示接口,需要觸摸的再加一個觸摸控制接口。


          網(wǎng)絡(luò)與 Web 開發(fā)


          網(wǎng)絡(luò)服務(wù)


          隨著世界變得越來越緊密,網(wǎng)絡(luò)基礎(chǔ)設(shè)施軟件的規(guī)模和復(fù)雜性正在急劇增加。然而,對該軟件的要求與以往一樣嚴(yán)格:它不僅必須快速,而且必須“安全”,即能夠處理不受信任的數(shù)據(jù)而不會崩潰或容易受到安全漏洞的攻擊。傳統(tǒng)上,這兩個要求是不一致的:網(wǎng)絡(luò)程序員必須選擇一種既能提供速度又能提供安全性的語言。所以,Rust 是下一代網(wǎng)絡(luò)基礎(chǔ)設(shè)施的必須語言。


          Tokio


          Tokio[39] 是當(dāng)前 Rust 生態(tài)中構(gòu)建網(wǎng)絡(luò)服務(wù)的中流砥柱,它是一個 Rust 異步運(yùn)行時和網(wǎng)絡(luò)應(yīng)用框架。雖然目前 Rust 生態(tài)中也有其他異步運(yùn)行時,比如 async-std[40],但 tokio 無疑是生態(tài)最成熟的一個。


          Tokio 在安全性、性能和異步任務(wù)調(diào)度方面都做了很多工作,支持 epoll 和 io_uring (tokio_uring[41] 剛發(fā)布 0.2 版本)。除此之外,還提供 tracing (鏈路追蹤)[42]、console (異步調(diào)試,剛發(fā)布 0.1 版本)[43]和 loom(并發(fā)測試)[44] 工具。


          雖然 Rust 異步特性還需要很大的改進(jìn),但是目前因?yàn)橛?Tokio 的存在,完全可以在生產(chǎn)環(huán)境中應(yīng)用 Rust 異步。


          Lunatic

          lunatic[45],是受 Erlang 影響的一個 WebAssembly 運(yùn)行時。你可以使用它快速健壯可擴(kuò)展的服務(wù)器端應(yīng)用程序,但是你可以通過任意可以編譯為 WebAssembly 的語言來使用它。


          Lunatic 的并發(fā)是基于超輕量級進(jìn)程,類似于綠色線程或 go-routines[46]。Lunatic 的進(jìn)程創(chuàng)建速度快,內(nèi)存占用小,調(diào)度開銷低。它們專為大規(guī)模并發(fā)而設(shè)計(jì)。在一般的應(yīng)用程序中同時運(yùn)行數(shù)十萬個這樣的進(jìn)程并不少見。Lunatic 進(jìn)程彼此完全隔離,它們有自己的棧、堆甚至系統(tǒng)調(diào)用。如果一個進(jìn)程失敗,它不會影響系統(tǒng)的其余部分。這允許開發(fā)者創(chuàng)建強(qiáng)大且容錯的抽象。


          在 Lunatic 上運(yùn)行的所有進(jìn)程都被搶占式異步執(zhí)行 (基于 smol 實(shí)現(xiàn))[47]器調(diào)度和執(zhí)行。這使開發(fā)者可以自由編寫簡單的阻塞代碼,但運(yùn)行時將確保它在等待 I/O 時實(shí)際上不會阻塞線程。


          即使在代碼中某處存在無限循環(huán),調(diào)度也將始終是公平的,不會永久阻塞執(zhí)行線程。最好的部分是開發(fā)者不需要做任何特別的事情來實(shí)現(xiàn)這一點(diǎn),無論你使用哪種編程語言,運(yùn)行時都會處理它。


          這一切都是基于 Rust 和 WebAssembly ( wasmtime 和 wasmtime-wasi) 來實(shí)現(xiàn)的,目前只發(fā)布了 0.7.0 版本,還在不斷高速迭代。


          embassy,嵌入式異步運(yùn)行時


          在嵌入式中,通常使用中斷、DMA 并利用多核來處理并發(fā)事件而不阻塞主循環(huán)。這些傳統(tǒng)上是通過有意的寄存器寫入來處理的。例如,向外圍設(shè)備發(fā)送命令以啟動任務(wù),繼續(xù)運(yùn)行程序,當(dāng)任務(wù)完成時,會觸發(fā)一個中斷,并立即運(yùn)行處理完成的代碼。Rust 中可以使用基于 Future 的 Async/Await 功能來抽象這些過程。


          embassy[48] 是一個旨在讓 async/await 成為嵌入式開發(fā)的第一選擇的項(xiàng)目。異步可以產(chǎn)生更好的性能和更低的功耗,因?yàn)閳?zhí)行器不必猜測未來何時準(zhǔn)備好執(zhí)行。但是,程序大小可能比其他替代方案大,這對于內(nèi)存非常低的某些空間受限設(shè)備來說可能是個問題。在 Embassy 支持的設(shè)備上,例如 stm32 和 nrf,內(nèi)存通常足夠大,可以容納適度增加的程序大小。


          Embassy 是一個執(zhí)行器和一個硬件訪問層 (HAL)。executor 是一個調(diào)度程序,通常執(zhí)行固定數(shù)量的任務(wù),在啟動時分配,但以后可以添加更多。HAL 是一種 API,可用于訪問外圍設(shè)備,例如 USART、UART、I2C、SPI、CAN 和 USB。Embassy 在有意義的地方提供異步和阻塞 API 的實(shí)現(xiàn)。DMA(直接內(nèi)存訪問)是一個非常適合異步的示例,而 GPIO 狀態(tài)更適合阻塞 API。


          Embassy 還可以提供一個系統(tǒng)計(jì)時器,可以將其用于異步和阻塞延遲。在不到一微秒的時間內(nèi),應(yīng)該使用阻塞延遲,因?yàn)樯舷挛那袚Q的成本太高,執(zhí)行器將無法提供準(zhǔn)確的定時。


          Embassy 目前為多個微控制器系列提供 HAL:


          • embassy-nrf 適用于 Nordic Semiconductor 的 nRF 微控制器

          • embassy-stm32 適用于 ST Microelectronics 的 STM32 微控制器

          • embassy-rp 適用于 Raspberry Pi RP2040 微控制器


          Embassy 中的 異步 trait 支持,是未來官方要支持的 Rust async trait 的 MVP [49]實(shí)現(xiàn)案例:


          pub trait I2c<A: AddressMode = SevenBitAddress> {
              /// Error type
              type Error;
            // 基于 GAT (nightly Rust)
              type ReadFuture<'a>: Future<Output = Result<(), Self::Error>> + 'a
              where
                  Self: 'a;

              fn read<'
          a>(&'a mut self, addr: A, bs: &'a mut [u8]) -> Self::ReadFuture<'a>;
          }

          impl<A: AddressMode = SevenBitAddress> I2c<A> for u8{
                fn read<'
          a>(&'a mut self, addr: u8, bs: &'a mut [u8]) -> Self::ReadFuture<'a> {
                    // 使用 async move
                   async move {
                        // implementation
                    }
                }
          }


          當(dāng) GAT 穩(wěn)定之時(預(yù)計(jì) 2022 年 Q1),Rust Embedded 異步生態(tài)系統(tǒng)就會馬上豐富起來。


          eBPF 穩(wěn)定支持


          eBPF[50] 是一套通用執(zhí)行引擎,可以在 Linux 內(nèi)核執(zhí)行沙箱程序,提供了可基于系統(tǒng)或程序事件高效安全執(zhí)行特定代碼的通用能力,通用能力的使用者不再局限于內(nèi)核開發(fā)者。


          eBPF 也逐漸在觀測(跟蹤、性能調(diào)優(yōu)等)、安全和網(wǎng)絡(luò)等領(lǐng)域發(fā)揮重要的角色。Facebook、NetFlix 、CloudFlare 等知名互聯(lián)網(wǎng)公司內(nèi)部廣泛采用基于 eBPF 技術(shù)的各種程序用于性能分析、排查問題、負(fù)載均衡、防范 DDoS 攻擊,據(jù)相關(guān)信息顯示在 Facebook 的機(jī)器上內(nèi)置一系列 eBPF 的相關(guān)工具。


          eBPF 技術(shù)在網(wǎng)絡(luò)技術(shù)中的表現(xiàn),更是讓人眼前一亮,BPF 技術(shù)與 XDP(eXpress Data Path) 和 TC(Traffic Control) 組合可以實(shí)現(xiàn)功能更加強(qiáng)大的網(wǎng)絡(luò)功能。


          redbpf[51] 是 Rust 實(shí)現(xiàn)的用于構(gòu)建和運(yùn)行 BPF/eBPF 模塊的工具庫集合,它內(nèi)含很多組件可以讓你更方便地使用 eBPF 功能。目前版本更新也非?;钴S,一周前剛發(fā)布 2.3.0 版本。infinyon 用它路由流量[52]


          其他活躍維護(hù)的庫和框架


          • 上篇介紹過 monoio[53],是字節(jié)跳動開源的一個基于 io-uring 的 Thread-per-core 模型的異步 Runtime,詳細(xì)介紹參見:《Rust 異步運(yùn)行時的設(shè)計(jì)與實(shí)現(xiàn)》[54] 。

          • Glommio[55],是 DataDog 開源的另一款 基于 io-uring 的 Thread-per-core 模型的異步 Runtime ,目前該作者已經(jīng)自己創(chuàng)業(yè)。

          • h3[56],http3 協(xié)議的 Rust 實(shí)現(xiàn)。

          • quinn[57], 異步友好的 QUIC 實(shí)現(xiàn)。

          • tonic[58],是 gRPC 客戶端和服務(wù)器的異步實(shí)現(xiàn)。

          • quilkin[59],前面介紹過,是 Google Cloud 與 Embark 工作室[60] 合作開發(fā)的一個 UDP 代理,為高性能的實(shí)時多人游戲量身定做。

          • RedisJSON[61],RedisJSON 是一種高性能 JSON 文檔存儲,允許開發(fā)人員構(gòu)建現(xiàn)代應(yīng)用程序。它在內(nèi)存中存儲和處理 JSON,以亞毫秒級支持每秒數(shù)百萬次操作響應(yīng)時間。JSON 文檔的原生索引、查詢和全文搜索允許開發(fā)人員創(chuàng)建二級索引,快速查詢數(shù)據(jù)。

          • rust-rdkafka[62],一個全異步 Kafka 客戶端實(shí)現(xiàn)。

          • smoltcp[63],一個獨(dú)立的、事件驅(qū)動的 TCP/IP 堆棧,專為裸機(jī)實(shí)時系統(tǒng)而設(shè)計(jì)。

          • rust-libp2p[64],libp2p 網(wǎng)絡(luò)棧。


          Eclipse zenoh


          隨著連網(wǎng)設(shè)備的數(shù)量穩(wěn)定增加,業(yè)界在計(jì)算、儲存和通信能力方面遇到前所未有的異質(zhì)性,并且在產(chǎn)生數(shù)據(jù)以及必須交付和使用數(shù)據(jù)的規(guī)模方面面臨新的挑戰(zhàn)。


          此外,基于性能、效率和隱私考慮,人們越來越希望使數(shù)據(jù)處理盡可能靠近來源,同時方便存取遠(yuǎn)距離的應(yīng)用程序。換句話說,我們正經(jīng)歷主流架構(gòu)轉(zhuǎn)換[65],從以云端為中心的模式(從云端到霧端儲存、處理和采集數(shù)據(jù))變成以邊緣為中心[66]的模式(在對性能、能源效率和安全性最有意義的位置儲存和處理數(shù)據(jù))。


          zenoh[67],提供了零開銷的 Pub/Sub、Store/Query 和 計(jì)算。將動態(tài)數(shù)據(jù)、使用中數(shù)據(jù)、靜態(tài)數(shù)據(jù)與計(jì)算整合。它巧妙地將傳統(tǒng)的發(fā)布/訂閱與地理上分散的儲存、查詢和計(jì)算融合,同時保有遠(yuǎn)勝任何主流堆棧的時間和空間效率。


          zenoh 的目的在于滿足必須以可擴(kuò)展、高效率且位置透明化的數(shù)據(jù)方式處理動態(tài)數(shù)據(jù)、靜態(tài)數(shù)據(jù)和計(jì)算的應(yīng)用程序的需求。


          目前,Zenon 發(fā)布了 代號為 Aithusa 的版本,提供了 DDS Plugin[68] ROS2[69] 的集成,可用于 IoT、機(jī)器人和自動駕駛領(lǐng)域。


          Web 后端


          有些人說用 Rust 進(jìn)行 Web 開發(fā) 是殺雞用牛刀,這種觀點(diǎn)其實(shí)是對「系統(tǒng)級語言」的刻板印象造成的。無論從性能、工程架構(gòu)還是開發(fā)效率,Rust 其實(shí)都很出色,目前就是需要一套比較成熟的框架。無論如何,Rust 在 Web 開發(fā)領(lǐng)域的生態(tài)在逐步成型。


          Poem : 將 Rust 帶入 Web 生態(tài)


          Poem 是 一款由國人開發(fā)的 Rust 異步 Web 框架,其中最令人興奮的功能是:


          • 功能豐富,全面。

          • 使用起來非常簡單,文檔也很棒。在此處查看一些示例[70]

          • 開箱即用的 OpenAPI 規(guī)范生成支持[71]。這是一個非常重要的問題,因?yàn)?Rust 中沒有一個流行的 Web 框架原生支持 OpenAPI 規(guī)范生成。OpenAPI 的支持把 Rust 帶入了 Web 生態(tài)中。

          • 支持中間件功能(類似于 Express.js)。這里的例子[72]

          • 開箱即[73]用地與 AWS Lambda 配合使用。

          • 兼容 Tower ServiceLayer. 這讓你可以在這里做一些有趣的事情,比如這個例子[74]。


          已知使用 Poem 的開源項(xiàng)目:


          • delicate[75],分布式任務(wù)調(diào)度平臺。

          • databend[76],Rust 實(shí)現(xiàn)的數(shù)據(jù)云服務(wù)。


          使用 poem 的閉源項(xiàng)目


          • muse[77],網(wǎng)易的雷火內(nèi)部藝術(shù)資源共享平臺,后臺為 Rust。

          • ??低暤?Hik-ProConnect 項(xiàng)目[78], 一個基于 aws 持續(xù)集成的前端自動化部署平臺。


          SeaORM


          SeaORM[79] 是一款異步動態(tài) ORM,要做 Rust 版本的 Active Record,它基于 `sqlx`[80] 和 SeaQuery 構(gòu)建。

          SeaQuery[81] 是一個查詢生成器,是 SeaORM 的基礎(chǔ),用來在 Rust 中構(gòu)建動態(tài) SQL 查詢,使用一個符合人體工程學(xué)的 API 將表達(dá)式、查詢和模式構(gòu)建為抽象語法樹(AST)。在同一個 接口 后面,統(tǒng)一支持 MySQL、Postgres 和 SQLite。它類似于 Rails 的 ActiveRecord ORM 框架的 Arel[82] 組件。

          目前 SeaORM 正在高速開發(fā),已經(jīng)發(fā)布 0.5 版本。SeaORM 的開發(fā)體驗(yàn)看上去不錯,具體對 SeaORM 的介紹可以參考 Rust 生態(tài)觀察| SeaORM: 要做 Rust 版本的 ActiveRecord[83] 這篇文章。

          其他有意思的框架


          • axum[84],是 tokio 官方新發(fā)布的 Web 框架,它的特色是無宏(macro-free),并且基于 Tower 中間件抽象,充分利用 Tower 生態(tài)。缺點(diǎn)就是泛型用的太多。

          • perseus[85], 比如增加了 plugin 系統(tǒng),支持 i18n,i18n 是基于 fluent 來做的。fluent 之前幫 rust 官網(wǎng)翻譯時候用過,非常方便。


          大前端


          前端基礎(chǔ)設(shè)施


          Deno


          Deno[86] 是一個現(xiàn)代且安全的 TypeScritp 和 JavaScript 運(yùn)行時,基于 V8 和 Rust 實(shí)現(xiàn)。Promises、async/await、ES模塊異步迭代器等在 Deno 中都是一等公民。

          為了確保 JavaScript 的未來發(fā)展將繼續(xù)適用于 Deno 和服務(wù)器端 JavaScript 運(yùn)行時,Deno 公司已加入負(fù)責(zé) JavaScript 標(biāo)準(zhǔn)(ECMA-262)的 ECMA 國際標(biāo)準(zhǔn)組織,并參與到TC39工作組的工作中,Luca Casonato(盧卡·卡索納托)將是 Deno 在 TC39 的主要代表。

          Deno 也與 gfx-rs 合作[87] ,支持了 wgpu,用于提供開箱即用的 GPU 加速機(jī)器學(xué)習(xí)功能。由于 Deno 的模塊化架構(gòu),WebGPU 實(shí)現(xiàn)是可插拔組件之一。

          Deno 目前在高速開發(fā)中,截止目前已經(jīng)發(fā)布 1.17.3 版本。目前有 13 家公司在其技術(shù)堆棧中使用 Deno ,包括 Cloudless 、Appwrite 和 The Lonero Foundation。

          parcel && swc


          parcel[88] ,是一個 Rust 實(shí)現(xiàn)的 Web 應(yīng)用打包工具,適用于經(jīng)驗(yàn)不同的開發(fā)者。它利用多核處理提供了極快的速度,并且不需要任何配置。它基于 swc 實(shí)現(xiàn)。最近 parcel 還開源了一個新的 CSS 解析、轉(zhuǎn)換和壓縮工具 parcel-css[89] 。

          swc[90],是 Speedy Web Compiler 縮寫,是一款用 Rust 編寫的超快 TypeScript / JavaScript 編譯器。版本更新非?;钴S,三天前剛發(fā)布 1.2.179 版本。

          項(xiàng)目狀態(tài):parcel[91] / swc[92] (Rust)vs esbuild[93] (Go)

          1. swc 作者 和 parcel 核心貢獻(xiàn)者現(xiàn)在已經(jīng)被 Next.js 雇傭;esbuild 是作者自己的業(yè)余項(xiàng)目;

          2. swc 目前至少有四個全職開發(fā)了。

          3. swc 的開源活躍度要高于 esbuild:swc 的 總 PR 數(shù)達(dá)到 1600 多,而 esbuild 只有 200 多個。

          4. swc 的 issues 和 esbuild 的 issues 數(shù)相仿,但是 swc 的 issues 明顯分類管理更加明確和細(xì)致,并且都和版本發(fā)布的里程碑進(jìn)行了掛鉤。

          5. swc 和 esbuild issues 頻率非常高,響應(yīng)都比較及時。

          6. parcel 項(xiàng)目 PR 總數(shù)超過 2000, issues 超過 4000,非常活躍。


          抖音公司


          目前抖音小程序業(yè)務(wù)端也在招幕 Rust 開發(fā)者,在一些前端基礎(chǔ)設(shè)施(比如編譯器)上考慮使用 Rust/C++ 來進(jìn)行實(shí)踐。

          WebAssembly 前端框架


          Yew


          Yew[94] 是一個設(shè)計(jì)先進(jìn)的 Rust[95] 框架,目的是使用 WebAssembly[96] 來創(chuàng)建多線程的前端 web 應(yīng)用。它基于組件,靈感來自于 React 和 Elm,高性能,且支持與 JavaScript 交互。目前還在活躍開發(fā)中。

          Sycamore


          sycamore[97] 是一個響應(yīng)式的無虛擬 dom 的 前端庫,同樣是基于 Rust 和 WebAssembly 。它的特點(diǎn)是,不支持 JavaScript ,因?yàn)椴恍枰?/span>

          其他框架


          • percy[98], 實(shí)驗(yàn)性的 Rust + wasm 前端框架。

          • seed[99] ,基于 Elm 架構(gòu)的 Rust 前端框架。

          • sauron[100], 一個多功能的 Web 框架和庫,用于構(gòu)建客戶端和/或服務(wù)器端 Web 應(yīng)用程序,非常注重簡單性。它適用于開發(fā)使用漸進(jìn)式渲染的 Web 應(yīng)用程序。

          • MoonZoon[101],正在開發(fā)的一款全棧 Rust 框架,號稱沒有 JS/CSS/HTML 等,開發(fā)進(jìn)度較慢。


          其他領(lǐng)域


          Rust 與 區(qū)塊鏈


          Rust 與 智能合約


          許多區(qū)塊鏈要么運(yùn)行用 Rust 編寫的智能合約,要么用 Rust 實(shí)現(xiàn)它們的智能合約運(yùn)行時或語言。它們分為幾類:

          1. 基于 WebAssembly 的智能合約,Rust 可以編譯為 WASM ,如 Elrond[102]、Holochain[103]、NEAR[104]、 Secret Network[105]、Substrate[106]。這些基本都有 Rust SDK。
          2. 支持將 Rust 編譯到其他 VM 的工具,例如Nervos[107] (RISC-V) 和Solana[108] (eBPF)。
            1. Nervos 合約是用 Rust 和他們的Capsule[109]庫編寫的。除了作為唯一一個運(yùn)行 RISC-V 的區(qū)塊鏈之外,Nervos 還是一個罕見的智能合約區(qū)塊鏈,它使用 UTXO 模型而不是賬戶模型。
            2. Solana 運(yùn)行一個特別古怪的 VM:一個基于 eBPF[110] 的用戶空間 VM rbpf[111]。Solana 已經(jīng)將一個有效的 Rust->eBPF 工具鏈組合在一起,其中包括一個支持 eBPF 的 Rust 編譯器的分支[112]。當(dāng)然,由于 eBPF 不支持循環(huán),這里的 Rust 一定很有趣。
          3. Rust 實(shí)現(xiàn)智能合約語言的人,例如Solang[113](一種 Solidity 到 WASM 編譯器)、Leo[114](一種零知識語言)和Move[115] (Diem 的語言)。盡管許多鏈正在轉(zhuǎn)向通用 VM,特別是轉(zhuǎn)向 WASM,但不這樣做的理由主要有兩個:希望與以太坊 EVM 兼容,以及基于零知識證明。Move 是一個相對罕見的案例,因?yàn)樗仁撬约旱恼Z言,又是它自己的 VM,但沒有像零知識語言那樣擁有自定義 VM 的明顯原因。

          一些值得關(guān)注的項(xiàng)目


          • solang[116],是一個用 Rust 實(shí)現(xiàn)的 Solidity 編譯器,但它不針對以太坊 EVM。相反,它使用 LLVM 作為后端,這意味著它可以潛在地針對大多數(shù)不運(yùn)行 EVM 的區(qū)塊鏈。目前包括 Substrate、Solana、ewasm[117]Sawtooth[118]。

          • rust-umbral[119],是一種代理重新加密[120]方案,通過該方案,密文的所有者 Alice 可以指定第三方(代理)重新加密要由 Bob 解碼的密文,而無需向代理透露明文。它是由NuCypher[121]項(xiàng)目開發(fā)的。

          • noir[122],是一種用于構(gòu)建零知識證明的語言和編譯器。它旨在與多個生成證明的后端一起使用,其中第一個用于barretenberg[123],正如Aztec Network[124]所使用的那樣。

          • MASQ[125],是一個網(wǎng)狀覆蓋網(wǎng)絡(luò),有點(diǎn)像 TOR,但具有參與的加密經(jīng)濟(jì)激勵措施。

          • TDN[126],可信分布式網(wǎng)絡(luò)是構(gòu)建分布式應(yīng)用程序的框架,支持 p2p 通信、多個交叉通信區(qū)塊鏈、多層區(qū)塊鏈和多個帳戶模型。它建立在一個新的 p2p 庫 Chamomile 之上。

          • bip32[127],這是 BIP32[128]分層確定性錢包和 BIP39 助記符的純 Rust、通用、no_std友好的實(shí)現(xiàn) 。

          • jsonrpsee[129],來自 Parity 的JSON-RPC[130]的異步實(shí)現(xiàn),它還創(chuàng)建了 jsonrpc[131] crate。

          • stateright[132],是用于在 Rust 中實(shí)現(xiàn)分布式系統(tǒng)的模型檢查器。與 TLA+ 等傳統(tǒng)模型檢查器不同,Stateright 是 Rust DSL,能夠檢查系統(tǒng)的 Rust 生產(chǎn)實(shí)現(xiàn)。它包括 Paxos 和其他簡單算法的示例。

          • arti[133],是用 Rust 對Tor[134]的官方重寫,于 7 月首次宣布[135]。Tor 是分布式基礎(chǔ)設(shè)施的關(guān)鍵部分,通過該項(xiàng)目可以將 Tor 嵌入到我們的應(yīng)用程序中。

          • openmls[136],是Messaging Layer Security 協(xié)議[137]的 Rust 實(shí)現(xiàn),這是 IETF MLS 工作組正在開發(fā)的一個正在進(jìn)行的標(biāo)準(zhǔn)。該協(xié)議旨在解決安全消息傳遞中仍然普遍存在的問題:雖然現(xiàn)在可以對兩方對話進(jìn)行強(qiáng)大的端到端加密,但對于端到端加密群組通信,卻很少有好的解決方案.。MLS 指定了“一種密鑰建立協(xié)議,該協(xié)議為規(guī)模從 2 到數(shù)千的組提供高效的異步組密鑰建立,具有前向保密和泄露后安全性”。

          • mina-rs[138],是由ChainSafe[139]開發(fā)的 Rust 中 Mina 的實(shí)現(xiàn)。它的開發(fā)不僅考慮了移動環(huán)境,還考慮了 WASM,這表明我們將能夠直接在瀏覽器中嵌入一個完整的節(jié)點(diǎn)。Mina[140]是一個新的區(qū)塊鏈網(wǎng)絡(luò),它使用零知識證明來驗(yàn)證鏈的狀態(tài),而無需訪問完整的區(qū)塊鏈,而只是一個很小的(~22k)證明。

          • arloader[141],是一個用于將文件上傳到Arweave[142]的命令行客戶端。發(fā)布到 Arweave 的文件將永久存儲。該平臺通常用于存儲 NFT 信息??梢允褂?Arweave 原生代幣或 SOL 支付費(fèi)用。


          區(qū)塊鏈生態(tài)信息


          2021 年區(qū)塊鏈幾大公鏈出鏡比較多的是 Near / Solana/ Dfinity / NeverOS ,整年都有開發(fā)者激勵計(jì)劃和黑客松活動。

          2021 年比較活躍的概念是 跨鏈、 DeFI、NFT 和 Web3 。

          但區(qū)塊鏈?zhǔn)且粋€很大的生態(tài),如果要盤點(diǎn)的話,可以單獨(dú)出一篇很長篇幅的文章了。但幸虧有 Rust in Blockchain ? rib.rs[143] 這樣的站點(diǎn)為我們記錄每月區(qū)塊鏈生態(tài)的動態(tài)。感興趣可以自己翻一下。

          元宇宙


          元宇宙可以說是 2021 年最瘋狂的概念了,但究其技術(shù)棧,和 圖形學(xué)、人工智能、區(qū)塊鏈、VR/AR、IoT 等領(lǐng)域非常相關(guān)。那么 Rust 在這些方面準(zhǔn)備好了嗎?其中圖形學(xué)、人工智能、區(qū)塊鏈、IoT 領(lǐng)域前面都盤點(diǎn)過,具體狀態(tài)已經(jīng)清楚。

          VR/AR 領(lǐng)域,目前 Rust 生態(tài)也有人做,但不是很豐富:

          openxrs[144] ,這是對 OpenXR[145] 的 Rust 綁定。OpenXR 是用于 XR 應(yīng)用程序的 API(應(yīng)用程序編程接口),是一個開源標(biāo)準(zhǔn),開發(fā)者可以用 OpenXR 實(shí)現(xiàn)跨設(shè)備的應(yīng)用構(gòu)建與部署。

          XR 是指計(jì)算機(jī)通過人機(jī)交互產(chǎn)生的真實(shí)與虛擬組合環(huán)境的連續(xù)統(tǒng)一體,包括與虛擬現(xiàn)實(shí)(VR)、增強(qiáng)現(xiàn)實(shí)(AR)和混合現(xiàn)實(shí)(MR)相關(guān)的技術(shù)。OpenXR 是應(yīng)用程序與進(jìn)程內(nèi)或進(jìn)程外的“XR 運(yùn)行時系統(tǒng)”之間的接口,或者簡稱為“運(yùn)行時”。運(yùn)行時可以處理幀合成、外圍設(shè)備管理和原始跟蹤信息等功能。


          Rust 對 VR/AR 的支持,也許就從 OpenXR 這里起步了。

          makepad[146],是一個 VR,Web 和本機(jī)渲染 UI 框架 和 IDE,基于 Rust 和 WebAssembly (WebGL) 技術(shù)。作者是 Cloud9 IDE 的創(chuàng)始人。該項(xiàng)目也包含白皮書[147],闡述了它的愿景。目前開發(fā)進(jìn)度不是很頻繁。

          信息安全領(lǐng)域


          簡單盤點(diǎn)一些目前還在活躍維護(hù)的安全類工具或框架:

          • rustscan[148],是一個現(xiàn)代化高性能的端口掃描器,并且提供腳本引擎來支持運(yùn)行 Python,Lua,Shell。支持 自適應(yīng)學(xué)習(xí)(Adaptive learning)。用的越多,RustScan 越智能,不是基于臃腫的機(jī)器學(xué)習(xí),主要是基于基本數(shù)學(xué)。

          • feroxbuster[149],一款高性能的內(nèi)容發(fā)現(xiàn)工具,用于滲透測試。feroxbuster 使用蠻力結(jié)合單詞列表在目標(biāo)目錄中搜索未鏈接的內(nèi)容,這是一種攻擊行為。這些資源可能存儲有關(guān) Web 應(yīng)用程序和操作系統(tǒng)的敏感信息,例如源代碼,憑據(jù),內(nèi)部網(wǎng)絡(luò)尋址等。此攻擊也稱為可預(yù)測資源位置,文件枚舉,目錄枚舉和資源枚舉。

          • Enarx[150],這是一個組織,由紅帽公司牽頭其他知名企業(yè)來做可信執(zhí)行環(huán)境的應(yīng)用部署系統(tǒng)。

          • sn0int[151], 半自動高級公開資源情報(OSINT)框架和程序包管理器,用于掃描目標(biāo) IP 地址、電子郵件、網(wǎng)站和組織信息,并從不同消息源收集各種情報信息。

          • sniffglue[152],多線程網(wǎng)絡(luò)嗅探器。Kpcyrd 經(jīng)常使用 tcpdump,但他認(rèn)為輸出更友好的話會更好,并且 wireshark 也經(jīng)常存在漏洞,tcpdump 有時也有漏洞,所以他用 Rust 實(shí)現(xiàn)了這個工具。

          • ripasso[153],一款密碼管理工具。

          • rustpad[154],是經(jīng)典 padbuster 的多線程繼承者,用 Rust 編寫。它利用 Padding Oracle 漏洞在不知道加密密鑰的情況下解密任何密文或加密任意純文本!

          • vaultwarden[155],非官方 Bitwarden (密碼管理)兼容服務(wù)器,以前稱為 bitwarden_rs。

          • innernet[156],一個在后臺使用 WireGuard (下一代 VPN 技術(shù))的專用網(wǎng)絡(luò)系統(tǒng)。

          • moonwalk[157],在 Linux Exploitation 期間通過在系統(tǒng)日志和文件系統(tǒng)時間戳上留下零痕跡來掩蓋蹤跡。僅用于協(xié)助**紅隊(duì)**[158]的操作。

          • CaptfEncoder[159],CaptfEncoder 是一款跨平臺網(wǎng)絡(luò)安全工具套件,提供網(wǎng)絡(luò)安全相關(guān)編碼轉(zhuǎn)換、古典密碼、密碼學(xué)、公鑰加密、聚合查詢、雜項(xiàng)等多種實(shí)用工具。CaptfEncoder V3 版本使用 Rust 開發(fā),可執(zhí)行程序體積小,速度更快、性能更優(yōu)、功能更強(qiáng)。其作者目測在阿里云。


          科研藝術(shù)領(lǐng)域


          • nannou[160],旨在讓藝術(shù)家創(chuàng)作自己的藝術(shù)。在德國 mindbuffer[161] 公司就是基于 nannou 和 koto 來創(chuàng)建實(shí)體藝術(shù)項(xiàng)目:使用 486 步進(jìn)電機(jī),86,000 個 LED 和 5 通道顆粒式合成引擎,創(chuàng)建可以變換形狀絢麗多彩的電子藝術(shù)品[162]。

          • Glicol[163] ,一個面向圖的音樂實(shí)時編程語言。Glicol 可以幫助您使用代碼制作音樂。您可以簡單地連接不同的節(jié)點(diǎn)以形成循環(huán),用 Rust 編寫,得益于 WebAssembly,它可以在瀏覽器中絲滑運(yùn)行。

          • creek[164],用于音頻的實(shí)時磁盤流 IO。

          • Symphonia[165],純 Rust 多媒體格式解復(fù)用、標(biāo)簽讀取和音頻解碼庫。

          • cpal[166],純 Rust 的跨平臺音頻 I/O 庫。

          • dasp[167],用于數(shù)字音頻信號處理。

          • Meadowlark[168],旨在成為適用于 Linux、Mac 和 Windows 的免費(fèi)和開源 DAW(數(shù)字音頻工作站)。

          • 3photons-rust[169],一位物理科學(xué)研究員堅(jiān)持使用 Rust ,來實(shí)現(xiàn)模擬 3 個光子構(gòu)建了一種奇異形式的“分子”光。

          • varlociraptor[170],實(shí)現(xiàn)了一種新穎、統(tǒng)一的完全不確定性感知方法,用于在任意場景中調(diào)用基因組變異。該庫是《為什么科學(xué)家轉(zhuǎn)向 Rust》[171]一文中提及的生物信息處理庫。目前還在活躍維護(hù)。

          • eigenvalues[172],來自荷蘭電子科技中心研究員實(shí)現(xiàn)的一個特征值求解庫 ,詳細(xì)可以參考這篇文章 《將 Rust 用于科學(xué)數(shù)值應(yīng)用:從過去的經(jīng)驗(yàn)中學(xué)習(xí)》[173] 。


          Rust 職業(yè)崗位


          職業(yè)崗位分類


          因?yàn)?Rust 的安全屬性,目前在金融領(lǐng)域應(yīng)用 Rust 的公司比較多,所以目前全球 Rust 工作崗位最多的分布就是 區(qū)塊鏈 和 量化金融。

          基本上按目前全球 Rust 崗位招聘,可以分為以下幾類:

          1. 區(qū)塊鏈/ 量化金融 / 銀行業(yè)

          2. 基礎(chǔ)設(shè)施(云原生平臺開發(fā)):數(shù)據(jù)庫 / 存儲 / 數(shù)據(jù)服務(wù) / 操作系統(tǒng) / 容器 / 分布式系統(tǒng)

          3. 平臺工具類:遠(yuǎn)程桌面 / 遠(yuǎn)程服務(wù)類產(chǎn)品 / SaaS / 遠(yuǎn)程工作類產(chǎn)品(比如 Nexthink)

          4. AI / 機(jī)器學(xué)習(xí) / 機(jī)器人

          5. 客戶端跨平臺組件開發(fā)

          6. 安全工程師 :區(qū)塊鏈安全/ 信息安全

          7. 嵌入式工程師

          8. 廣告服務(wù)商類,比如 Adinmo

          9. 音視頻實(shí)時通信工程師

          10. 電商平臺

          11. 軟件咨詢


          關(guān)于具體的 Rust 職位招聘,可以在 Rust Weekly / Reddit r/rust 頻道 / Rust Magazine 社區(qū)月刊 / Rustcc 論壇 ,以及各大招聘網(wǎng)站中可以找到。

          Rust 國內(nèi)部分職位信息【均可內(nèi)推】


          1. 字節(jié)跳動。字節(jié)跳動內(nèi)部基礎(chǔ)設(shè)施、飛書、抖音都在用 Rust。這里有很多 Rust 職位需求。

          2. 非凸科技。國內(nèi)做量化的企業(yè),面向期貨/股票市場。

          3. 海致星圖。用 Rust 做圖數(shù)據(jù),是海致集團(tuán)旗下公司。可遠(yuǎn)程。

          4. 達(dá)坦科技。用 Rust 做分布式存儲,連續(xù)創(chuàng)業(yè)者王璞博士帶隊(duì)的初創(chuàng)企業(yè)??蛇h(yuǎn)程。

          5. databend。用 Rust 做數(shù)據(jù)云的初創(chuàng)公司??蛇h(yuǎn)程。


          還有很多其他招聘,其中區(qū)塊鏈職位居多,這里就不一一列舉了。

          全球可完全 Remote Rust 職位盤點(diǎn)


          請注意,一些號稱完全遠(yuǎn)程的職位實(shí)際上只是考慮美國/加拿大,有時甚至是歐盟居民,能不能在中國找到這些職位,可能需要看你的運(yùn)氣和溝通水平!

          • RedHat[174] ,有 Rust 職位,可遠(yuǎn)程??梢栽?Reddit 私信用戶 @sheepdog69[175]了解詳情 。

          • tangram[176],一家開發(fā)機(jī)器學(xué)習(xí)類工具的公司,可以發(fā)送郵件咨詢遠(yuǎn)程工作,但該職位只考慮美國/加拿大/歐洲的人員。

          • Materialize[177],實(shí)時流數(shù)據(jù)庫(前面介紹過)有遠(yuǎn)程職位,這個需要發(fā)郵件咨詢。

          • toyotaconnected[178] ,目前只允許在美國 12 州內(nèi)進(jìn)行遠(yuǎn)程,它們也是 Rust 基金會的成員之一。他們將 Rust 用于機(jī)器學(xué)習(xí)工作和設(shè)備上。供應(yīng)商 C 和 CPP 代碼中的大量互操作以及我們在豐田和雷克薩斯汽車內(nèi)部解決的許多很酷、有趣的問題,因?yàn)?5G 變得越來越流行。

          • Era Software[179],遠(yuǎn)程(美國/加拿大/歐洲),與 Elasticsearch 競爭。所有數(shù)據(jù)庫工程職位都是針對 Rust 的。

          • Qovery[180],遠(yuǎn)程(歐盟),Qovery 是一個平臺,它為任何開發(fā)人員提供了在幾秒鐘內(nèi)將他們的應(yīng)用程序部署到云中的超能力。

          • estuary[181],遠(yuǎn)程 Rust 開發(fā)人員來開發(fā)我們的實(shí)時數(shù)據(jù)平臺Flow[182],需要發(fā)郵件咨詢。

          • infinyon[183],遠(yuǎn)程(美國),用于為實(shí)時數(shù)據(jù)流構(gòu)建可靠且可擴(kuò)展的基礎(chǔ)架構(gòu),面向的產(chǎn)品是 Fluvio 和 InfinyOn Cloud 。

          • Ockam[184],Ockam 正在構(gòu)建開源、端到端加密和相互驗(yàn)證的通信協(xié)議和庫,這些協(xié)議和庫可以在資源受限、間歇性連接的物聯(lián)網(wǎng)設(shè)備和連接機(jī)器中工作。

          • 1password[185],遠(yuǎn)程(加拿大、美國和英國),密碼管理軟件。

          • IOHK[186],遠(yuǎn)程,區(qū)塊鏈,詳細(xì)請點(diǎn)擊鏈接申請工作。


          上面列出的只是網(wǎng)絡(luò)上可見的一部分,對于國內(nèi)的小伙伴來說,這些職位可能無法申請。對于國外的小伙伴來說,也許是一個福音。

          Rust 語言教育普及狀態(tài)


          國內(nèi)外出版書籍


          從 2018 年到 2022 年國內(nèi)外出版的書排列。

          國內(nèi)

          • 《深入淺出 Rust》

          • 《Rust 編程之道》

          • 《Rust 權(quán)威指南》

          • 《Rust 編程:入門、實(shí)戰(zhàn)與進(jìn)階》


          國外:

          • Rust in Action[187]

          • Programming Rust, 2nd Edition[188]

          • Rust for Rustaceans[189]

          • Refactoring to Rust[190]

          • Black Hat Rust [191]

          • Hands-on Rust[192]

          • Zero To Production In Rust [193]


          這些書并非全部,還有很多國外的書沒有羅列出來。

          可以看出,國外的 Rust 書在陸續(xù)增多,國內(nèi)也有這個趨勢。

          高校教育普及


          國內(nèi)

          • 國內(nèi)將 Rust 應(yīng)用于教學(xué)中的高校,據(jù)我所知,只有清華大學(xué)的 OS 課程。參見:用 Rust 寫操作系統(tǒng) | 清華 rCore OS 教程介紹[194]。

          國外:

          • 波蘭華沙(Warsaw)大學(xué)[195] ,目前該學(xué)校決定為二年級學(xué)生開設(shè) Rust 課程。
          • 耶魯大學(xué)的鐘林教授開設(shè) 《CPSC 429a, 計(jì)算機(jī)系統(tǒng)設(shè)計(jì)原理》 和 《CPSC 425b,移動和嵌入式系統(tǒng) 》[196] 支持 Rust 語言。但是該課程不是公開課。

          Reddit 討論:你夢想中的 Rust 大學(xué)課程是什么樣的?

          波蘭華沙(Warsaw)大學(xué)的一位助教在 Reddit 發(fā)起這樣的討論[197] ,一直在教授 C 語言中的內(nèi)存管理和編程(第一年)和 Java 和 C 中的并發(fā)和并行編程(第二年)。目前該學(xué)校決定為二年級學(xué)生開設(shè) Rust 課程,他被委托負(fù)責(zé)準(zhǔn)備課程和授課。他想向 Rust 開發(fā)者尋求建議,你夢想中的 Rust 大學(xué)課程是什么樣的呢?

          他目前的教學(xué)計(jì)劃大概如下:

          • 將官方的 the book 作為教材。作為教師,他會將 the book 中的知識濃縮為 PPT 進(jìn)行教授。

          • 在學(xué)習(xí)語法的過程中,也摻雜一些 Rust 生態(tài)的最佳實(shí)踐內(nèi)容。

          • 在學(xué)習(xí)完 the book 之后,將以異步為主要側(cè)重內(nèi)容。

          • 設(shè)置五個不同等級的小任務(wù),讓學(xué)生完成,每個任務(wù)有十天時間來完成。


          詳細(xì)內(nèi)容可以參考 reddit 貼。在評論中有人給出一些建議:

          • 一位本科生使用 Rust 完成強(qiáng)化學(xué)習(xí)庫:https://github.com/ZuseZ4/Rust_RL。但是他反對將 Rust 用于機(jī)器學(xué)習(xí)的教學(xué)中,因?yàn)槭褂?Python 學(xué)習(xí)機(jī)器學(xué)習(xí)更加簡單。(這樣說也很有道理,學(xué)習(xí)的時候要講究學(xué)習(xí)目標(biāo),學(xué)生的學(xué)習(xí)目標(biāo)是學(xué)習(xí)機(jī)器學(xué)習(xí)領(lǐng)域知識,而非 Rust)。

          • 一位朋友說,在大學(xué)里應(yīng)該教授學(xué)生如何解決問題。比如通過學(xué)習(xí)多線程生命游戲的實(shí)現(xiàn),來學(xué)習(xí)解決多線程并發(fā)的問題。


          你對此有何看法呢?

          結(jié)語


          對 Rust 做生態(tài)調(diào)研,是一件很累的事情,因?yàn)?Rust 作為一門真正的通用型語言,其生態(tài)信息量太大,涉及領(lǐng)域眾多。

          但我也堅(jiān)持把這篇報告做完了,因?yàn)槲覍?shí)在很喜歡 Rust 社區(qū),Rust 社區(qū)在我眼里,就是充滿了希望和蓬勃生機(jī)的社區(qū)。

          希望你也和我一樣,可以喜歡 Rust 。


          參考資料


          [1]
          《三萬言|2021 年 Rust 行業(yè)調(diào)研報告》: https://zhuanlan.zhihu.com/p/383034421
          [2]
          Transformers: https://github.com/huggingface/transformers
          [3]
          tokenizers: https://link.zhihu.com/?target=https%3A//github.com/huggingface/tokenizers
          [4]
          Linfa: https://link.zhihu.com/?target=https%3A//rust-ml.github.io/linfa/
          [5]
          Rust 機(jī)器學(xué)習(xí)之書: https://link.zhihu.com/?target=https%3A//rust-ml.github.io/book/
          [6]
          Roadmap: https://github.com/rust-ml/linfa/issues/7
          [7]
          scikit-learn: https://scikit-learn.org/stable/
          [8]
          Polars: https://github.com/ritchie46/polars
          [9]
          Apache Arrow: https://github.com/apache/arrow
          [10]
          db-benchmark: https://h2oai.github.io/db-benchmark/
          [11]
          Xomnia: https://www.xomnia.com/
          [12]
          oxide-enzyme : https://github.com/rust-ml/oxide-enzyme
          [13]
          Enzyme: https://github.com/wsmoses/enzyme
          [14]
          MegFlow: https://github.com/MegEngine/MegFlow
          [15]
          貓貓圍欄: https://github.com/MegEngine/MegFlow/tree/master/flow-python/examples/application/cat_finder
          [16]
          懶出新境界!程序員竟然造出一臺人工智能貓糧機(jī)!: https://www.bilibili.com/video/BV1PT4y1m7Kk
          [17]
          qdrant: https://github.com/qdrant/qdrant
          [18]
          tch-rs: https://link.zhihu.com/?target=https%3A//github.com/LaurentMazare/tch-rs
          [19]
          ndarray: https://link.zhihu.com/?target=https%3A//github.com/rust-ndarray/ndarray
          [20]
          nalgebra: https://github.com/dimforge/nalgebra
          [21]
          Dimforge 開源組織: https://github.com/dimforge
          [22]
          tvm-rs: https://link.zhihu.com/?target=https%3A//github.com/apache/tvm/tree/main/rust
          [23]
          Neuronika: https://link.zhihu.com/?target=https%3A//github.com/neuronika/neuronika
          [24]
          Whatlang: https://link.zhihu.com/?target=https%3A//whatlang.org/
          [25]
          Tauri: https://tauri.studio/en/docs/about/intro/
          [26]
          https://githubhelp.com/Fournux/tauri-vs-electron: https://githubhelp.com/Fournux/tauri-vs-electron
          [27]
          wry: https://github.com/tauri-apps/wry
          [28]
          tao: https://github.com/tauri-apps/tao
          [29]
          egui: https://github.com/emilk/egui
          [30]
          README: https://github.com/emilk/egui#why-immediate-mode
          [31]
          Reddit 一位網(wǎng)友: https://www.reddit.com/r/rust/comments/rgyqov/state_of_rust_gui_in_2021/honc023/?utm_source=reddit&utm_medium=web2x&context=3
          [32]
          gtk4-rs: https://github.com/gtk-rs/gtk4-rs
          [33]
          gtk4-rs: https://github.com/gtk-rs/gtk4-rs
          [34]
          iced: https://github.com/iced-rs/iced
          [35]
          druid: https://github.com/linebender/druid
          [36]
          Runebender: https://github.com/linebender/runebender
          [37]
          azul: https://github.com/fschutt/azul
          [38]
          lvgl-rs: https://github.com/rafaelcaricio/lvgl-rs
          [39]
          Tokio: https://tokio.rs/
          [40]
          async-std: https://github.com/async-rs/async-std
          [41]
          tokio_uring: https://github.com/tokio-rs/tokio-uring
          [42]
          tracing (鏈路追蹤): https://github.com/tokio-rs/tracing
          [43]
          console (異步調(diào)試,剛發(fā)布0.1版本): https://github.com/tokio-rs/console
          [44]
          loom(并發(fā)測試): https://github.com/tokio-rs/loom
          [45]
          lunatic: https://github.com/lunatic-solutions/lunatic
          [46]
          go-routines: https://golangbot.com/goroutines
          [47]
          異步執(zhí)行 (基于 smol 實(shí)現(xiàn)): https://docs.rs/smol
          [48]
          embassy: https://github.com/embassy-rs/embassy
          [49]
          Rust async trait 的 MVP : https://rust-lang.github.io/async-fundamentals-initiative/roadmap/static_async_trait_mvp.html
          [50]
          eBPF: https://ebpf.io/
          [51]
          redbpf: https://github.com/foniod/redbpf
          [52]
          路由流量: https://www.infinyon.com/blog/2021/05/ebpf-routing-rust/
          [53]
          monoio: https://github.com/bytedance/monoio
          [54]
          《Rust 異步運(yùn)行時的設(shè)計(jì)與實(shí)現(xiàn)》: https://rustmagazine.github.io/rust_magazine_2021/chapter_12/monoio.html
          [55]
          Glommio: https://github.com/DataDog/glommio
          [56]
          h3: https://github.com/hyperium/h3
          [57]
          quinn: https://github.com/quinn-rs/quinn
          [58]
          tonic: https://github.com/hyperium/tonic
          [59]
          quilkin: https://github.com/googleforgames/quilkin/
          [60]
          Embark工作室: https://www.embark-studios.com/
          [61]
          RedisJSON: https://github.com/RedisJSON/RedisJSON
          [62]
          rust-rdkafka: https://github.com/fede1024/rust-rdkafka
          [63]
          smoltcp: https://github.com/smoltcp-rs/smoltcp
          [64]
          rust-libp2p: https://github.com/libp2p/rust-libp2p
          [65]
          架構(gòu)轉(zhuǎn)換: https://perspectives.tech/2019/12/10/architectural-liberum-arbitrium/
          [66]
          以邊緣為中心: https://edgenative.eclipse.org/
          [67]
          zenoh: https://github.com/eclipse-zenoh/zenoh
          [68]
          DDS Plugin: https://github.com/eclipse-zenoh/zenoh-plugin-dds
          [69]
          ROS2: https://docs.ros.org/en/foxy/index.html
          [70]
          示例: https://github.com/poem-web/poem/tree/master/examples
          [71]
          支持: https://github.com/poem-web/poem/blob/master/examples/openapi/users-crud/src/main.rs#L84
          [72]
          這里的例子: https://github.com/poem-web/poem/blob/master/examples/poem/middleware_fn/src/main.rs#L11
          [73]
          開箱即: https://crates.io/crates/poem-lambda
          [74]
          例子: https://github.com/poem-web/poem/blob/master/examples/poem/tower-layer/src/main.rs#L22
          [75]
          delicate: https://github.com/BinChengZhao/delicate
          [76]
          databend: https://github.com/datafuselabs/databend
          [77]
          muse: https://leihuo.163.com/
          [78]
          ??低暤腍ik-ProConnect項(xiàng)目: https://www.hikvision.com/en/products/software/hik-proconnect/
          [79]
          SeaORM: https://github.com/SeaQL/sea-orm
          [80]
          sqlx: https://github.com/launchbadge/sqlx
          [81]
          SeaQuery: https://github.com/SeaQL/sea-query
          [82]
          Arel: https://github.com/rails/rails/tree/main/activerecord/lib/arel
          [83]
          Rust 生態(tài)觀察| SeaORM: 要做 Rust 版本的 ActiveRecord: https://rustmagazine.github.io/rust_magazine_2021/chapter_10/seaorm.html#rust-生態(tài)觀察-seaorm-要做-rust-版本的-activerecord
          [84]
          axum: https://github.com/tokio-rs/axum
          [85]
          perseus: https://github.com/arctic-hen7/perseus
          [86]
          Deno: https://deno.land/
          [87]
          gfx-rs 合作: https://gfx-rs.github.io/2021/09/16/deno-webgpu.html
          [88]
          parcel: https://github.com/parcel-bundler/parcel
          [89]
          parcel-css: https://github.com/parcel-bundler/parcel-css
          [90]
          swc: https://github.com/swc-project/swc
          [91]
          parcel: https://github.com/parcel-bundler/parcel
          [92]
          swc: https://github.com/swc-project/swc
          [93]
          esbuild: https://github.com/evanw/esbuild
          [94]
          Yew: https://github.com/yewstack/yew
          [95]
          Rust: https://www.rust-lang.org/
          [96]
          WebAssembly: https://webassembly.org/
          [97]
          sycamore: https://github.com/sycamore-rs/sycamore
          [98]
          percy: https://github.com/chinedufn/percy
          [99]
          seed: https://github.com/seed-rs/seed
          [100]
          sauron: https://github.com/ivanceras/sauron
          [101]
          MoonZoon: https://github.com/MoonZoon/MoonZoon
          [102]
          Elrond: https://github.com/ElrondNetwork
          [103]
          Holochain: https://github.com/holochain
          [104]
          NEAR: https://github.com/near
          [105]
          Secret Network: https://github.com/enigmamcp
          [106]
          Substrate: https://github.com/paritytech/substrate
          [107]
          Nervos: https://github.com/nervosnetwork
          [108]
          Solana: https://github.com/solana-labs
          [109]
          Capsule: https://github.com/nervosnetwork/capsule
          [110]
          eBPF: https://ebpf.io/
          [111]
          rbpf: https://github.com/solana-labs/rbpf
          [112]
          支持 eBPF 的 Rust 編譯器的分支: https://github.com/solana-labs/rust
          [113]
          Solang: https://github.com/hyperledger-labs/solang
          [114]
          Leo: https://github.com/AleoHQ/leo
          [115]
          Move: https://github.com/diem/diem/tree/master/language
          [116]
          solang: https://github.com/hyperledger-labs/solang
          [117]
          ewasm: https://github.com/ewasm
          [118]
          Sawtooth: https://github.com/hyperledger/sawtooth-core
          [119]
          rust-umbral: https://github.com/nucypher/rust-umbral
          [120]
          代理重新加密: https://en.wikipedia.org/wiki/Proxy_re-encryption
          [121]
          NuCypher: https://www.nucypher.com/
          [122]
          noir: https://github.com/noir-lang/noir
          [123]
          barretenberg: https://github.com/AztecProtocol/barretenberg
          [124]
          Aztec Network: https://github.com/AztecProtocol
          [125]
          MASQ: https://github.com/MASQ-Project/Node
          [126]
          TDN: https://github.com/CympleTech/TDN
          [127]
          bip32: https://github.com/iqlusioninc/crates/tree/main/bip32
          [128]
          這是BIP32: https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki
          [129]
          jsonrpsee: https://github.com/paritytech/jsonrpsee
          [130]
          JSON-RPC: https://www.jsonrpc.org/specification
          [131]
          jsonrpc: https://github.com/paritytech/jsonrpc/
          [132]
          stateright: https://github.com/stateright/stateright
          [133]
          arti: https://gitlab.torproject.org/tpo/core/arti
          [134]
          Tor: https://www.torproject.org/
          [135]
          于 7 月首次宣布: https://blog.torproject.org/announcing-arti
          [136]
          openmls: https://github.com/openmls/openmls
          [137]
          Messaging Layer Security 協(xié)議: https://datatracker.ietf.org/doc/html/draft-ietf-mls-protocol
          [138]
          mina-rs: https://github.com/ChainSafe/mina-rs
          [139]
          ChainSafe: https://chainsafe.io/
          [140]
          Mina: https://minaprotocol.com/
          [141]
          arloader: https://github.com/CalebEverett/arloader
          [142]
          Arweave: https://www.arweave.org/
          [143]
          Rust in Blockchain ? rib.rs: https://rustinblockchain.org/
          [144]
          openxrs: https://github.com/Ralith/openxrs
          [145]
          OpenXR: https://www.khronos.org/registry/OpenXR/specs/1.0/html/xrspec.html#_what_is_openxr
          [146]
          makepad: https://link.zhihu.com/?target=https%3A//github.com/makepad/makepad
          [147]
          白皮書: https://link.zhihu.com/?target=https%3A//github.com/makepad/makepad_docs
          [148]
          rustscan: https://link.zhihu.com/?target=https%3A//github.com/rustscan/rustscan
          [149]
          feroxbuster: https://link.zhihu.com/?target=https%3A//github.com/epi052/feroxbuster
          [150]
          Enarx: https://link.zhihu.com/?target=https%3A//github.com/enarx
          [151]
          sn0int: https://link.zhihu.com/?target=https%3A//github.com/kpcyrd/sn0int
          [152]
          sniffglue: https://link.zhihu.com/?target=https%3A//github.com/kpcyrd/sniffglue
          [153]
          ripasso: https://link.zhihu.com/?target=https%3A//github.com/cortex/ripasso/
          [154]
          rustpad: https://github.com/Kibouo/rustpad
          [155]
          vaultwarden: https://github.com/dani-garcia/vaultwarden
          [156]
          innernet: https://github.com/tonarino/innernet
          [157]
          moonwalk: https://github.com/mufeedvh/moonwalk
          [158]
          紅隊(duì): https://en.wikipedia.org/wiki/Red_team
          [159]
          CaptfEncoder: https://github.com/guyoung/CaptfEncoder
          [160]
          nannou: https://link.zhihu.com/?target=https%3A//nannou.cc/
          [161]
          mindbuffer: https://link.zhihu.com/?target=https%3A//mindbuffer.net/
          [162]
          創(chuàng)建可以變換形狀絢麗多彩的電子藝術(shù)品: https://link.zhihu.com/?target=https%3A//t.me/rust_daily_news/4863
          [163]
          Glicol: https://glicol.org/
          [164]
          creek: https://github.com/RustyDAW/creek
          [165]
          Symphonia: https://github.com/pdeljanov/Symphonia
          [166]
          cpal: https://github.com/RustAudio/cpal
          [167]
          dasp: https://github.com/RustAudio/dasp
          [168]
          Meadowlark: https://github.com/MeadowlarkDAW/Meadowlark
          [169]
          3photons-rust: https://github.com/HadrienG2/3photons-rust
          [170]
          varlociraptor: https://github.com/varlociraptor/varlociraptor
          [171]
          《為什么科學(xué)家轉(zhuǎn)向 Rust》: https://www.nature.com/articles/d41586-020-03382-2
          [172]
          eigenvalues: https://github.com/felipeZ/eigenvalues
          [173]
          《將 Rust 用于科學(xué)數(shù)值應(yīng)用:從過去的經(jīng)驗(yàn)中學(xué)習(xí)》: https://blog.esciencecenter.nl/using-rust-for-scientific-numerical-applications-learning-from-past-experiences-798665d9f9f0
          [174]
          RedHat: https://www.redhat.com/en/jobs
          [175]
          @sheepdog69: https://www.reddit.com/user/sheepdog69/
          [176]
          tangram: https://tangram.dev
          [177]
          Materialize: https://materialize.com/
          [178]
          toyotaconnected: https://toyotaconnected.com/job?gh_jid=5426060002&did=4040990002
          [179]
          Era Software: https://era.co/
          [180]
          Qovery: https://www.qovery.com/blog/we-are-hiring-developers
          [181]
          estuary: https://www.estuary.dev/about/#careers
          [182]
          Flow: https://github.com/estuary/flow
          [183]
          infinyon: https://www.infinyon.com/careers/infrastructure-engineer-senior-level/
          [184]
          Ockam: https://jobs.lever.co/ockam/9bdb612c-417c-4b26-bcb5-84e6608736aa/apply
          [185]
          1password: https://jobs.lever.co/1password/e619d831-f43b-4fd3-8366-f1e145470f57/apply
          [186]
          IOHK: https://apply.workable.com/io-global/j/40A7923138/apply/
          [187]
          Rust in Action: https://www.manning.com/books/rust-in-action
          [188]
          Programming Rust, 2nd Edition: https://www.oreilly.com/library/view/programming-rust-2nd/9781492052586/
          [189]
          Rust for Rustaceans: https://nostarch.com/rust-rustaceans
          [190]
          Refactoring to Rust: https://www.manning.com/books/refactoring-to-rust
          [191]
          Black Hat Rust : https://github.com/skerkour/black-hat-rust
          [192]
          Hands-on Rust: https://pragprog.com/titles/hwrust/hands-on-rust/
          [193]
          Zero To Production In Rust : https://www.zero2prod.com/
          [194]
          用Rust寫操作系統(tǒng) | 清華 rCore OS 教程介紹: https://rustmagazine.github.io/rust_magazine_2021/chapter_1/rcore_intro.html
          [195]
          波蘭華沙(Warsaw)大學(xué): https://mimuw.edu.pl/en
          [196]
          《CPSC 429a, 計(jì)算機(jī)系統(tǒng)設(shè)計(jì)原理》 和 《CPSC 425b,移動和嵌入式系統(tǒng) 》: http://catalog.yale.edu/ycps/courses/cpsc/
          [197]
          波蘭華沙(Warsaw)大學(xué)的一位助教在 Reddit 發(fā)起這樣的討論: https://www.reddit.com/r/rust/comments/rwp8mo/teaching_rust_at_the_university_of_warsaw/
          瀏覽 68
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日本三级网站在线观看 | 日韩A片一级无码免费 | 人人玩人人操 | aaa天堂在线观看 | 亚洲一产影院 |