<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>

          LWN:維護(hù)者峰會(huì)上討論Rust in kernel!

          共 3735字,需瀏覽 8分鐘

           ·

          2021-11-29 20:01

          關(guān)注了就能看到更多這么棒的文章哦~

          Using Rust for kernel development

          By Jonathan Corbet
          September 27, 2021
          Maintainers summit
          DeepL assisted translation
          https://lwn.net/Articles/870555/

          在 2021 年的 Linux Plumbers 大會(huì)上,Linux 的 Rust 開(kāi)發(fā)者們進(jìn)行了許多富有成效的討論。在維護(hù)者峰會(huì)(the Maintainers Summit)上,Miguel Ojeda 繼續(xù)談?wù)撽P(guān)于 Rust 的話題。要怎樣才能讓 Rust 補(bǔ)丁被合入 mainline?他得到的答案是很令人鼓舞的,盡管并不是完全的承諾。

          Ojeda 首先問(wèn)大家,社區(qū)是否希望 Rust 進(jìn)入內(nèi)核。他說(shuō),如果 Rust 進(jìn)入內(nèi)核,它就應(yīng)該作為一等公民。在他的討論中,他遇到了許多對(duì)該語(yǔ)言感興趣的內(nèi)核開(kāi)發(fā)者,其中許多人愿意參與。在這個(gè)過(guò)程中,他已經(jīng)得到了這些開(kāi)發(fā)者中許多人的幫助。他說(shuō),一些團(tuán)體,比如安卓團(tuán)隊(duì),都很迫切地希望 kernel 擁有 Rust 支持。

          Linus Torvalds 回答說(shuō),內(nèi)核社區(qū) "幾乎肯定(almost certainly)" 會(huì)用該語(yǔ)言來(lái)進(jìn)行試驗(yàn),但 Rust 的開(kāi)發(fā)者需要接受我們把它當(dāng)作試驗(yàn)。在這之前,不需要說(shuō)服內(nèi)核社區(qū)里的每一個(gè)人,但確實(shí)需要先獲得不少子系統(tǒng)維護(hù)者的支持,主要是那些在一開(kāi)始就會(huì)受到直接影響的維護(hù)者。他說(shuō),來(lái)自 "fake Linus"(指的是 GPIO 維護(hù)者 Linus Walleij)和 Greg Kroah-Hartman 的支持就會(huì)是一個(gè)好的開(kāi)始。并不是必須要獲得大多數(shù)內(nèi)核維護(hù)者的支持的。幾個(gè)月前,當(dāng)這些 patch 被發(fā)布出來(lái)時(shí),Torvalds 曾看過(guò)這些 patch,其中沒(méi)有什么東西會(huì)讓他感到說(shuō) "完全無(wú)法接受"。不過(guò)從那以后,他就再也沒(méi)有看到過(guò)任何后續(xù)的發(fā)布了。Torvalds 最后說(shuō),如果 Rust 支持不先被合入的話,它就永遠(yuǎn)不可能達(dá)到足夠可以在內(nèi)核中真正使用起來(lái)的程度。

          Kroah-Hartman 說(shuō),Rust 的補(bǔ)丁看起來(lái)比以前好多了,但還沒(méi)有完全準(zhǔn)備好。Wedson Almeida Filho 在 7 月份發(fā)布的 Rust GPIO 驅(qū)動(dòng)是 "非常棒的",他還說(shuō)一些文件系統(tǒng)開(kāi)發(fā)者對(duì) Rust 很感興趣。這可能是一個(gè)很好的開(kāi)展工作的場(chǎng)所,因?yàn)閮?nèi)核中的虛擬文件系統(tǒng) API 相對(duì)穩(wěn)定。

          Kees Cook 建議,WiFi 或藍(lán)牙驅(qū)動(dòng)可能是一個(gè)使用 Rust 的好地方。Kroah-Hartman 回答說(shuō),他很愿意拋棄目前所有的藍(lán)牙驅(qū)動(dòng)。他說(shuō),他知道有一款即將上市的手機(jī)將會(huì)配備 100 個(gè) out-of-tree 的驅(qū)動(dòng)程序,他建議那些對(duì) Rust 感興趣的開(kāi)發(fā)者可以從這些驅(qū)動(dòng)中挑選 10 個(gè),看看是否能開(kāi)展工作。

          Dave Airlie 說(shuō),肯定會(huì)有一些維護(hù)者因?yàn)樵黾恿艘环N新的語(yǔ)言而感到害怕。他們將不得不花時(shí)間通過(guò)編寫(xiě)一些有用的代碼來(lái)學(xué)習(xí)這個(gè)語(yǔ)言。他們需要確保外界有一些人會(huì)幫助他們來(lái)處理他們的子系統(tǒng)中的 Rust 代碼。Torvalds 說(shuō),Rust 并不難懂,盡管錯(cuò)誤處理的模式跟 C 很不一樣。任何有能力 review patch 的人應(yīng)該都可以掌握 Rust 語(yǔ)言到足夠 review 該語(yǔ)言代碼的程度。

          Ted Ts'o 建議,Rust 的開(kāi)發(fā)者應(yīng)該更有規(guī)律地來(lái)發(fā)布 patch,比如每隔一兩個(gè)星期發(fā)布一次。當(dāng)有東西出現(xiàn)在他們的收件箱里時(shí),開(kāi)發(fā)者會(huì)看一看,這就是引起他們注意的方法。

          Airlie 說(shuō),現(xiàn)在在內(nèi)核的邊邊角角的位置有了一些 Rust 代碼例子,比如說(shuō)驅(qū)動(dòng)程序領(lǐng)域。那有沒(méi)有把 Rust 放到內(nèi)核的核心領(lǐng)域的代碼,而在邊角來(lái)使用 C 代碼的例子?Ojeda 回答說(shuō),Rust 的開(kāi)發(fā)者并不是要重寫(xiě)核心內(nèi)核中的功能,相反,他們正在做一套抽象層,從而可以便于利用安全的 Rust 語(yǔ)言來(lái)編寫(xiě)驅(qū)動(dòng)程序。他說(shuō),如果使用 Rust 編寫(xiě)核心部分、而用 C 語(yǔ)言來(lái)寫(xiě)驅(qū)動(dòng)的話,就會(huì)失去使用 Rust 的很多優(yōu)勢(shì)了。一旦你使用了 Rust,你就會(huì)想保持使用 Rust。

          Ts'o 提出了經(jīng)常有人擔(dān)憂的對(duì)于那些范圍比較廣的、跨子系統(tǒng)的改動(dòng)。當(dāng)涉及到 Rust 代碼時(shí),這些改動(dòng)會(huì)有多困難?如果 GPIO 的維護(hù)者同意的話,那就沒(méi)問(wèn)題,因?yàn)檫@個(gè)子系統(tǒng)基本沒(méi)有什么其他依賴和影響。但是,如果文件系統(tǒng)開(kāi)發(fā)者不得不修改一處代碼從而破壞了 Rust 的 GPIO 接口,那會(huì)出現(xiàn)什么情況?Ojeda 重申,內(nèi)核維護(hù)者需要接受這種變化,并且他們需要準(zhǔn)備好 review 那些對(duì)他們的子系統(tǒng)的改動(dòng)。來(lái)自其他子系統(tǒng)的開(kāi)發(fā)者如果想在使用 Rust 的子系統(tǒng)中進(jìn)行修改,就得先學(xué)習(xí)這種語(yǔ)言。Rust 開(kāi)發(fā)者可以提供幫助,但這是不夠的。如果內(nèi)核維護(hù)者想要 Rust,他們就得要幫忙。Mark Brown 說(shuō),即使維護(hù)者有這個(gè)動(dòng)力去進(jìn)行 review,Rust 開(kāi)發(fā)者的 review 也還是必要的,這樣才能確保這個(gè) patch 是 "符合 Rust 品位的"。畢竟,他一周前才開(kāi)始學(xué)習(xí)這門語(yǔ)言,現(xiàn)在還不搞不清楚自己的寫(xiě)法對(duì)不對(duì)。

          Arnd Bergmann 說(shuō),把 Rust 代碼放到 kernel tree 的某些角落里,并不是正確的做法。在目前的 patch 中,有一個(gè)頂層的 Rust 目錄,但是把 Rust 代碼分放在相關(guān)的各個(gè)子系統(tǒng)中會(huì)好得多。應(yīng)該把盡可能少的代碼放在那個(gè)統(tǒng)一位置。Ojeda 回答說(shuō),還是需要有一些通用的支持代碼,但很多東西可以從目前的內(nèi)核 Rust 目錄中分離出來(lái),放到相關(guān)的子系統(tǒng)里面去。

          Al Viro 詢問(wèn) Rust 工具鏈?zhǔn)欠褡銐蚍€(wěn)定,他指出,目前要求使用最新的 Rust 編譯器,這是一個(gè)問(wèn)題。通常每個(gè)月至少會(huì)有一次他需要對(duì)過(guò)去三四年歷史的 git commit 中進(jìn)行 bisect 二分法查找來(lái)確認(rèn)引入問(wèn)題的那個(gè) commit。如果在 bisect 中每個(gè)步驟都需要用不同的編譯器,那么用起來(lái)就很麻煩了。Ojeda 說(shuō),現(xiàn)在的內(nèi)核工作還正在使用一些不穩(wěn)定的 Rust 特性,這確實(shí)是一個(gè)問(wèn)題,兼容性不夠好。目前的 Rust patch 可以使用一個(gè) Rust 版本來(lái)完成對(duì)每個(gè) kernel release 的編譯,但是他們不能保證以后更新過(guò)的編譯器還能正常編譯過(guò)。所以,是的,bisect 的時(shí)候確實(shí)可能需要改變編譯器的版本。

          然而,如果 Rust 支持進(jìn)入 mainline kernel,那么情況就會(huì)改變。這將給 Rust 開(kāi)發(fā)社區(qū)帶來(lái)壓力,使其穩(wěn)定 Rust 語(yǔ)言中所需要的那些功能,盡管沒(méi)有人能保證這一定會(huì)發(fā)生。不過(guò)遲早會(huì)建立起一個(gè)只使用穩(wěn)定的 Rust 特性的內(nèi)核,到那時(shí)兼容性問(wèn)題就會(huì)消失。他說(shuō),如果社區(qū)選擇在這之前不合并對(duì) Rust 支持,那他也能理解。

          Ts'o 說(shuō),如果 Rust 社區(qū)想要從加入 Linux kernel 中引出的這些公共關(guān)系中嘗到甜頭,那么 Rust 社區(qū)可能也會(huì)被感動(dòng),從而來(lái)對(duì)這些必需的功能保持足夠穩(wěn)定。Ojeda 說(shuō),他被邀請(qǐng)參加今年的 Rustconf,這是一個(gè)好兆頭,但隨后他提交的關(guān)于 Rust 在內(nèi)核中使用情況的材料被拒絕了,這就不是一個(gè)好兆頭了。不過(guò),后來(lái)在那次會(huì)議上還是強(qiáng)調(diào)了 Rust 加入 Linux kernel 的一些需要考慮的問(wèn)題,所以在某種程度上來(lái)說(shuō),Rust 社區(qū)肯定是有興趣的。

          Thomas Gleixner 說(shuō),他并不反對(duì)這個(gè)實(shí)驗(yàn),而且他喜歡這個(gè)語(yǔ)言中的一些概念。但他擔(dān)心的是 "Rust 中未支持的 memory-model 應(yīng)該怎么處理"。Ojeda 說(shuō),Rust 社區(qū)正在從 C++11 和 C11 標(biāo)準(zhǔn)中了解內(nèi)存模型(memory-model)相關(guān)的信息,但還沒(méi)有最終確定。Ojeda 說(shuō),在本周早些時(shí)候的一次談話中,他鼓勵(lì) Paul McKenney,認(rèn)為現(xiàn)在是去 Rust 社區(qū)并告訴他們后續(xù)事情會(huì)如何發(fā)展的最好時(shí)機(jī),這是一個(gè)修復(fù) C 語(yǔ)言 memory model 問(wèn)題并采用正確方式實(shí)現(xiàn)的好機(jī)會(huì)。

          Torvalds 在會(huì)議結(jié)束時(shí)重申,將 Rust 引入內(nèi)核算是一個(gè)實(shí)驗(yàn),社區(qū)只是把它的腳趾頭放入水中而已。它會(huì)需要好幾年的時(shí)間來(lái)把事情弄清楚,并確定它在內(nèi)核中是否真的有幫助。他對(duì) Rust 持積極態(tài)度,喜歡這種語(yǔ)言,也希望有一種更安全的語(yǔ)言,特別是用于那些驅(qū)動(dòng)開(kāi)發(fā)場(chǎng)景。但是,他在最后告誡說(shuō),他并不期望用 Rust 語(yǔ)言來(lái)重寫(xiě)整個(gè)內(nèi)核。

          全文完
          LWN 文章遵循 CC BY-SA 4.0 許可協(xié)議。

          歡迎分享、轉(zhuǎn)載及基于現(xiàn)有協(xié)議再創(chuàng)作~

          長(zhǎng)按下面二維碼關(guān)注,關(guān)注 LWN 深度文章以及開(kāi)源社區(qū)的各種新近言論~



          瀏覽 34
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <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>
                  国产麻豆成人品免费观看 | 水蜜桃视频网站 | 国产一起草 | 国产免费无码视频 | 大鸡巴在线视频 |