精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

編寫完10萬行代碼,我發了篇長文吐槽Rust

開發 新聞
存在一種完美的編程語言嗎?

Rust 語言因其并發安全性而深受眾多開發者的喜愛,曾在多個榜單上獲評最受歡迎編程語言。然而,現在有人花費大量時間編寫 10 萬行 Rust 代碼之后,撰寫博客闡明 Rust 語言的一系列缺點,以下是博客的主要內容。

我深入研究 Rust 是為了改進由 Xobs 編寫的 Xous 操作系統。Xous 是一個用純 Rust 編寫的微內核消息傳遞操作系統,是為了輕量級 (IoT / 嵌入式規模) 的安全優先平臺(例如 Precursor)而編寫的,用于 MMU 的硬件強制型頁面級內存保護。

一年來,我們為 Xous 操作系統添加了許多功能,包括網絡 (TCP/UDP/DNS)、用于模態和多語言文本的中間件圖形抽象、存儲(以加密的形式)、PDDB、可信啟動(trusted boot)以及密鑰管理庫等。

我們決定編寫自己的操作系統而不是使用 SeL4、Tock、QNX 或 Linux 等現有實現,是因為我們想真正了設備中每一行代碼都在做什么。特別是對于 Linux,它的源代碼庫非常龐大且動態,即使開源,也不可能搞清其內核中的每一行代碼。因此,Xous 僅支持我們的平臺,以盡可能避免內核不必要的復雜性。

這樣減少應用范圍還意味著我們還可以充分利用 CPU 在 FPGA 中運行的優勢 。因此,Xous 以一種不尋常的 RV32-IMAC 配置為目標:具有 MMU + AES 擴展的配置。

FPGA 意味著我們有能力在硬件級別上修復 API 錯誤,從而使內核更加精簡。這對于從 RAM 中處理諸如掛起和恢復之類的抽象破壞(abstraction-busting)進程尤其重要。

我們創建 Xous 時研究了大量的系統編程語言,最終 Rust 脫穎而出。當時它剛剛開始支持 `no-std`,它的特點是強類型、內存安全,具有良好的工具和新型生態系統。我個人是強類型語言的忠實擁護者,而內存安全性不僅有利于系統編程,還能使優化器更好地生成代碼,并且 Rust 適用于并發。

實際上,我希望 Precursor 有一個支持標記指針和內存功能的 CPU,類似于 CHERI。于是我們和 CHERI 研發團隊進行了一些討論,但顯然他們非常專注于 C 語言,也沒有足夠的帶寬來支持 Rust。總體而言,C 比 Rust 需要 CHERI 多得多,他們的選擇是符合資源優先原則的。我們不使用 C 語言,但出于安全性考慮,我希望有一天 Rust 中會存在硬件強制型胖指針(fat pointer)。

然而,Rust 語言絕不是完美的,甚至給我們的開發帶來了很多問題。下面我列舉一下 Rust 的缺點。

語法混亂復雜

我發現 Rust 語法密集、繁重且難以閱讀,例如:

Trying::to_read::<&'a heavy>(syntax, |like| { this. can_be( maddening ) }).map(|_| ())?;

簡單來說,上面的代碼類似于在對象(實際上是 `struct`)上調用一個名為「to_read」的方法。

還有一種不遵循 Rust 語法規則的宏和指令也能運行:

#[cfg(all(not(baremetal), any(feature = “hazmat”, feature = “debug_print”)))]

上面的語句中最令我困惑的是使用‘=’來表示等價而不是賦值,因為配置指令中的內容不是 Rust 代碼,它就像一個完全獨立的元語言。

再比如,Rust 宏的可讀性也存在問題——即使是我自己編寫的一些 Rust 宏也「只是勉強工作」。

一種可靠的語言不應該存在這些語法問題。

Rust 的確很強大,它的標準庫中包含 HashMaps、Vecs 和 Threads 等數據結構,豐富且可用性高。然而,Rust 的「std」庫并沒有為我們構建可審計的代碼庫帶來任何好處。

?Rust 不夠完善

我們編寫 Xous 的代碼時,引入了一個叫作「const generic」的新類型。在此之前,Rust 沒有原生能力來處理多于 32 個元素的數組,這個限制令人抓狂。

在編寫 Xous 的過程中,Rust 的內聯匯編、工作空間等功能逐漸成熟,這意味著我們需要重新審視已經寫好的代碼,以使關鍵的初始啟動代碼集成進我們構建的系統。

Xous 開發的第一年都是使用’no-std’完成的,代價是占用大量內存空間且復雜性高。盡管可以編寫一個只有預先分配的、靜態大小的數據結構的操作系統,但為了適應最壞情況下的元素數量,因此我們不得不推出一些自己的數據結構。

大約一年前,Xobs 將 Rust 的 `std` 庫移植到 Xous,這意味著我們可以在穩定的 Rust 中訪問堆,現在 Xous 與特定版本的 Rust 綁定。

`std` 庫從根本上將內存分配、線程創建等「不安全」的硬件結構轉變成了「安全」的 Rust 結構。

然而,我必須不斷提醒自己,擁有 `std` 庫并不能消除關鍵代碼中的安全漏洞風險——它只是將許多關鍵代碼移動到標準庫中。

Rust 有固定的更新周期,這意味著我們也必須定期更新 Xous ,以保持與語言的兼容性。

但這可能是不可持續的。最終,我們需要鎖定代碼庫,但我沒有明確的退出策略。也許我們可以考慮仍然使用 `no-std` 以獲得穩定的 `alloc` 功能來訪問堆。但這樣我們就還需要使用 Vec、HashMap、Thread 和 Arc/Mutex/Rc/RefCell/Box 構造等,以使 Xous 能夠被有效編碼。

Rust 在供應鏈安全方面堪憂

在 rustup.rs 安裝文件中有如下代碼:

`curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh`

用戶可以下載腳本并在運行之前對其進行檢查,這似乎比 vscode 的 Windows .MSI 安裝程序好得多。但是,這種做法遍及整個構建生態系統,讓我對通過 crates.io 生態系統發起的軟件供應鏈攻擊的可能性感到不安。

Crates.io 也存在一種拼寫錯誤,很難確定哪些 crate 是好或壞;一些完全按照用戶想要的名稱命名的 crate 放棄提供所需功能,而積極維護的 crate 必須采用不太直觀的名稱。當然,這不是 Rust 獨有的問題。

還有一個事實是,依賴項是鏈式的。也就是說當你從 crates.io 拉入一個東西時,你也會拉入該 crate 的所有從屬依賴項,以及它們所有的 build.rs (http://build.rs/) 腳本,這些最終都將在你的機器上運行。因此,僅審核 Cargo.toml 文件中明確指定的 crate 是不夠的——您還必須審核所有相關 crate 是否存在潛在的供應鏈攻擊。

幸運的是,Rust 確實允許您使用 Cargo.lock 文件將 crate 固定在特定版本,并且可以完全指定依賴 crate 。我們試圖在 Xous 中通過發布 Cargo.lock 文件并將我們所有的一階相關 crate 指定為次要修訂的策略來緩解這個問題。

然而,我們的大部分調試和測試框架都依賴于一些相當花哨和復雜的 crate,這些 crate 引入了大量的依賴項,即使我嘗試為我們的目標硬件運行構建,在主機上運行的依賴 crate 和 build.rs 腳本還是被構建。

針對這個問題,我編寫了一個名為「crate-scraper」的小工具,它為我們的 Cargo.toml 文件中指定的每個源下載源包,并且將它們存儲在本地,這樣我們就可以獲得用于構建 Xous 版本的代碼快照。

它還運行一個快速的「分析」程序——搜索名為 build.rs 的文件并將它們整理到一個文件中,這樣我就可以更快地通過 grep 查找明顯的問題。當然,手動審查并不是檢測嵌入在 build.rs (http://build.rs/) 文件中巧妙偽裝的惡意軟件的實用方法,但它至少讓我了解了我們正在處理的攻擊面的規模。令人驚訝的是,我們審查出來自各種第三方的大約 5700 行代碼,用于操作文件、目錄和環境變量,并在我的計算機上運行其他程序。

我不確定這個問題是否有更好的解決方案,但是,如果你的目標是構建可信賴的固件,請警惕 Rust 廣泛的軟件供應鏈攻擊面。

無法復現別人的 Rust 構建

我對 Rust 的最后一點看法是,一臺計算機上的構建無法在另一臺上復現。我認為這主要是因為 Rust 將源代碼的完整路徑作為內置到二進制文件中調試字符串的一部分。這導致了一些糟糕的情況,例如我們在 Windows 上構建的工作成功了,但在 Linux 下卻失敗了,因為二者的路徑名非常不同,這會導致一些內存對象在目標內存中被轉移。

公平地講,這些失敗是由于 Xous 中存在錯誤,這些錯誤已經得到修復。但是,最終仍會有用戶向我們報告我們無法復現,因為他們在構建系統上的路徑與我們的不同。

最后,我想說盡管這里列出了所有的怨言,但如果能重來,Rust 仍然是我們用于構建 Xous 所用語言的有力競爭者。我用 C、Python 和 Java 完成了很多大型項目,所有這些項目最終都背負著「不斷增加的技術債務」,而 Rust 可以規避這些問題。

責任編輯:張燕妮 來源: 機器之心
相關推薦

2023-06-28 14:18:06

2024-03-13 15:48:43

2021-03-02 13:56:24

Linux 5.12代碼驅動

2019-01-03 09:29:15

Linux 系統 數據

2009-07-21 08:44:14

微軟Linux內核開源操作系統

2015-09-01 16:26:18

Linux內核

2023-05-29 14:00:00

Rust代碼

2009-07-21 08:51:33

微軟發布Linux設備微軟開源虛擬化

2011-05-03 09:10:12

項目管理程序員

2009-08-20 16:34:50

Linux源代碼紅帽Linux內核

2018-10-15 09:20:08

代碼軟件工程師

2012-05-21 17:37:17

Windows Pho吐槽

2019-04-19 13:01:12

Java代碼庫Go代碼移植

2012-07-23 09:58:50

代碼程序員

2020-02-24 16:27:19

開源大數據計算引擎

2013-05-22 09:30:01

Windows 8Windows 8系統

2025-09-22 00:00:05

JDK 25JDK 21LTS

2023-06-19 14:14:24

Rust程序Web

2013-10-29 09:32:05

2013-10-29 09:08:05

點贊
收藏

51CTO技術棧公眾號

精品无码人妻一区二区三区| 一女二男3p波多野结衣| 无码精品一区二区三区在线| 99亚洲视频| 亚洲欧美精品在线| 亚洲国产成人va在线观看麻豆| 黄色网在线播放| 国产成人精品免费一区二区| 91福利视频在线观看| 欧美激情视频二区| jizzjizzjizz欧美| 欧美亚洲免费在线一区| 日韩中文在线字幕| 色鬼7777久久| 国产一区二区0| 国产91色在线|免| 欧美日韩一级在线观看| 精品一区二区三区中文字幕老牛| 欧美一级艳片视频免费观看| 黄色a级片免费| www久久日com| 中文av一区二区| 国产精品免费区二区三区观看| 中文字幕第2页| 国产日韩视频| 欧美肥老妇视频| 一级肉体全黄裸片| 欧美日韩麻豆| 欧美mv和日韩mv的网站| 九九精品久久久| 电影网一区二区| 亚洲国产精品久久不卡毛片| 日本高清xxxx| 91看片在线观看| 久久久精品免费免费| 国产欧美日韩综合一区在线观看| 国产精品无码AV| 免费在线一区观看| 国产精品91久久| 亚洲男人第一av| 狠狠综合久久| 欧美国产日产韩国视频| 日韩一级片大全| 小小影院久久| 日韩在线视频网| 亚洲黄色网址大全| 日韩欧美午夜| 中文字幕欧美日韩精品| 男人天堂av电影| 亚洲桃色综合影院| 亚洲精美色品网站| 亚洲色图欧美日韩| 精品综合久久88少妇激情| 亚洲第一精品自拍| 国产精品麻豆入口| 美女视频亚洲色图| 亚洲激情视频在线播放| 亚洲国产精品自拍视频| 欧美freesex8一10精品| 亚洲国产欧美久久| 免费a级黄色片| 欧美人与拘性视交免费看| 亚洲免费视频网站| 欧美波霸videosex极品| 日韩av大片| 久久精品一本久久99精品| 黑人巨大精品一区二区在线| 好看不卡的中文字幕| 97国产成人精品视频| 亚洲高清毛片一区二区| 久久综合伊人| 国产精品免费一区二区三区都可以| 中文字幕在线观看第二页| 免费人成精品欧美精品| 91精品在线看| 高潮一区二区三区乱码| 99国产精品视频免费观看| 热re99久久精品国产99热| 成人高清免费在线播放| 亚洲女性喷水在线观看一区| 国内少妇毛片视频| 在线观看特色大片免费视频| 色悠久久久久综合欧美99| 另类小说色综合| 色悠久久久久综合先锋影音下载| 亚洲成人精品视频| 免费观看a级片| 亚洲激情中文在线| 亚洲 日韩 国产第一| 伊人久久久久久久久久久久| 国产一区二区电影| 久久精品国产一区二区三区日韩| 大地资源中文在线观看免费版| 亚洲人成精品久久久久| 欧美,日韩,国产在线| 国产精品久久久久久妇女| 欧美大片在线观看一区| 91视频免费观看网站| 亚洲成人99| 97香蕉久久超级碰碰高清版| 一卡二卡三卡在线| 91网站黄www| 三上悠亚免费在线观看| 久久人体大尺度| 91精品国产福利在线观看| v天堂中文在线| 仙踪林久久久久久久999| 欧美一级大胆视频| 国内精品国产成人国产三级| 久久久久久久久99精品| 大陆极品少妇内射aaaaaa| 久久青青视频| 精品粉嫩超白一线天av| 亚洲激情图片网| 国产日韩一区| 高清国产在线一区| 欧美被日视频| 色一情一乱一乱一91av| www.四虎精品| 希岛爱理一区二区三区| 国产精品久久久久久久久久小说| 少妇精品高潮欲妇又嫩中文字幕 | 欧美性生交大片免费| 婷婷激情5月天| 欧美精美视频| 91国内在线视频| 亚洲精品人妻无码| 亚洲狠狠丁香婷婷综合久久久| 国产又猛又黄的视频| 狼人精品一区二区三区在线| 欧美乱人伦中文字幕在线| 怡红院成永久免费人全部视频| 91麻豆swag| 成人免费性视频| 精品视频91| 日韩在线播放一区| 在线观看亚洲一区二区| 国产日产亚洲精品系列| 日本wwww视频| 亚洲伊人春色| 91成人在线播放| 农村少妇久久久久久久| 亚洲国产视频一区二区| 精品人妻一区二区三| 天天影视综合| 96sao精品视频在线观看| 日本在线播放| 欧美精品三级日韩久久| 糖心vlog免费在线观看 | 中文字幕av一区二区三区人妻少妇 | 成人黄色免费网址| 日韩精品亚洲专区| 日韩精品欧美在线| 国产精品久久久久久久久免费高清 | 中文字幕日韩一区二区不卡| 成人黄色免费网站在线观看| 看黄网站在线| 91精品国产黑色紧身裤美女| 高h视频免费观看| 成人小视频在线| 亚洲精品无码国产| 天天躁日日躁狠狠躁欧美巨大小说 | 久久精品午夜一区二区福利| 国产在线88av| 亚洲人永久免费| 中文字幕乱码在线观看| 亚洲欧洲日产国码二区| 在线观看网站黄| 亚洲特级毛片| 狼狼综合久久久久综合网| 外国成人直播| www.亚洲成人| 99久久免费国产精精品| 亚洲国产日韩av| 性高潮久久久久久久| 美女一区二区视频| 国内精品国产三级国产99| 开心激情综合| 国产精品夜间视频香蕉| 欧美性video| 亚洲国产精品久久久久秋霞蜜臀 | 欧美黄色视屏| 精品香蕉在线观看视频一| 真实新婚偷拍xxxxx| 亚洲黄一区二区三区| 国产精品九九视频| 强制捆绑调教一区二区| 日韩免费在线观看av| 奇米亚洲欧美| 91手机在线播放| 欧美一级大黄| 欧美疯狂做受xxxx高潮| 久草视频在线看| 日韩一本二本av| 9i精品福利一区二区三区| 亚洲天堂av老司机| 中文字幕在线播放视频| 麻豆精品在线观看| 国产不卡一区二区视频| 成人嘿咻视频免费看| 国产精品乱码一区二区三区| 全球最大av网站久久| 久久免费精品日本久久中文字幕| 91在线免费看| 亚洲精品国产品国语在线| 国产乱码精品一区二区| 欧美性猛交xxxx富婆弯腰| 欧美三级日本三级| 国产精品视频yy9299一区| 好吊色视频一区二区三区| 久久99久久99小草精品免视看| 99视频在线免费播放| 亚洲精品午夜av福利久久蜜桃| 欧美色欧美亚洲另类七区| 中文字幕一区二区三区四区久久| 国产精品久久久久久久久免费| 秋霞伦理一区| 欧美激情欧美激情在线五月| 网友自拍视频在线| 亚洲新中文字幕| 色婷婷av一区二区三区之红樱桃 | www.四虎在线| 精品一区二区三区视频在线观看| 欧美极品欧美精品欧美图片| 亚洲小说区图片区| 成年人视频大全| 欧美国产偷国产精品三区| 欧美一区少妇| 亚洲宅男一区| 国外成人免费视频| 超碰成人97| 国产激情一区二区三区在线观看 | 91精品国产91热久久久做人人 | 日本一级二级视频| 国产精品久久久久一区| 真实乱视频国产免费观看| 91在线播放网址| 国产原创剧情av| 不卡一卡二卡三乱码免费网站| 巨乳女教师的诱惑| 国产精品亚洲第一区在线暖暖韩国| 久久久久久蜜桃一区二区| 免费人成网站在线观看欧美高清| 在线免费视频a| 日本一区中文字幕 | 国产成都精品91一区二区三| 中文国产在线观看| 国产在线国偷精品免费看| 亚洲色图欧美自拍| 国产传媒久久文化传媒| 久久久国产精品久久久| 国产精品一卡二卡| 妖精视频在线观看| 成人少妇影院yyyy| 亚洲视频在线播放免费| 91在线小视频| www.99热| 综合欧美一区二区三区| 女同久久另类69精品国产| 中文字幕中文乱码欧美一区二区| 国产色无码精品视频国产| 一区二区高清在线| 日韩三级小视频| 日韩欧美国产网站| 中文字幕欧美在线观看| 制服丝袜亚洲精品中文字幕| 国产后入清纯学生妹| 亚洲成年人在线播放| 男人的天堂在线| 色偷偷91综合久久噜噜| 在线播放免费av| 8050国产精品久久久久久| 不卡av影片| 成人激情视频在线观看| 成人av综合网| 欧洲精品在线一区| 888久久久| 日本午夜激情视频| 日韩精品高清不卡| 国产又粗又长又爽又黄的视频| 国产aⅴ精品一区二区三区色成熟| 又黄又爽的网站| 国产日韩欧美亚洲| 成年人av电影| 色欧美日韩亚洲| 国产精品亚洲lv粉色| 亚洲第一区第二区| 麻豆影视在线观看_| 午夜精品久久久99热福利| 日本精品另类| 亚洲qvod图片区电影| 亚洲免费福利一区| 超碰免费在线公开| 亚洲专区免费| 樱花草www在线| 久久久99久久| 久久久久久久久久久97| 欧美写真视频网站| 欧美一级在线免费观看| 日韩一区二区久久久| 一本大道色婷婷在线| 亚洲自拍另类欧美丝袜| 欧美人妖在线| 国产一区二区三区小说| 麻豆国产精品视频| 波多野结衣一本| 亚洲综合999| 国产又粗又猛又爽| 亚洲男人的天堂在线| 国产丝袜在线观看视频| 国产精品一区av| 最新亚洲精品| 国产婷婷一区二区三区| 国产精品自产自拍| 五月婷婷婷婷婷| 91久久国产综合久久| 色婷婷激情五月| 欧美成年人网站| 3d动漫一区二区三区在线观看| 你懂的视频在线一区二区| 欧美午夜精品| wwwxxxx在线观看| 中文字幕中文字幕一区二区| 波多野结衣二区三区| 亚洲激情成人网| 2020国产在线| 国产精品一区二区在线观看| 一本到12不卡视频在线dvd| 午夜精品在线免费观看| 久久色视频免费观看| 日韩精品久久久久久久酒店| 日韩你懂的在线观看| 免费在线观看av网站| 国产精品视频免费观看www| 国产91精品对白在线播放| 777久久久精品一区二区三区| 北条麻妃一区二区三区| 久久精品国产亚洲av高清色欲 | 免费一级在线观看播放网址| 97色在线视频| 欧美美女在线直播| 九九九九免费视频| 91网站最新网址| 日本免费在线观看视频| 亚洲精品小视频在线观看| 亚洲欧洲高清| 免费看成人片| 久久久夜夜夜| 日本美女bbw| 欧美日韩中文一区| 日本免费中文字幕在线| 91亚洲精品久久久| 欧美成人日本| 麻豆精品国产传媒av| 岛国精品视频在线播放| 欧美女优在线| 国产精品亚洲精品| 亚洲草久电影| 国产一卡二卡三卡四卡| 午夜激情久久久| 美女欧美视频在线观看免费 | 亚洲色图综合| 青青视频免费在线观看| 成人蜜臀av电影| 国产成人在线视频观看| 国产一区二区久久精品| 国产亚洲人成a在线v网站| 日本精品免费视频| 成人午夜大片免费观看| 国产三级av片| 少妇激情综合网| 天堂精品在线视频| 国产肥臀一区二区福利视频| 欧美国产一区二区在线观看| 国产日韩在线观看一区| 久久久久久久久电影| 国产精品入口久久| www.色欧美| 亚洲午夜私人影院| 国产乱子伦三级在线播放| 91精品在线国产| 亚洲欧美网站| 永久免费未视频| 亚洲福利在线视频| 激情久久99| 国产精品推荐精品| 免费的国产精品| 久久久国产精华液| 亚洲精品国精品久久99热一| 日本欧美韩国| 国产a级片网站| 国产精品成人免费| 香港一级纯黄大片| 成人免费在线网址| 久久久久久自在自线| 九九九在线视频| 亚洲视频免费一区| 999在线精品| 亚洲 激情 在线| 动漫精品一区二区|