Áîëüøå íå ýêñïåðèìåíò
Ïèøóùèå íà ÿçûêå ïðîãðàììèðîâàíèÿ Rust ðàçðàáîò÷èêè ÿäðà Linux äîáèëèñü âîçìîæíîñòè ïèñàòü ñîçäàâàòü êîìïîíåíòû ÿäðà Linux èìåííî íà ýòîì íà ÿçûêå. Íà ïðîòÿæåíèè ìíîãèõ ëåò èñïîëüçîâàíèå Rust â ðàçðàáîòêå ÿäðà Linux ñ÷èòàëîñü âñåãî ëèøü ýêñïåðèìåíòîì, íî òî, ÷òî ïîíà÷àëó äåéñòâèòåëüíî áûëî èì, â èòîãå ïðåâðàòèëîñü â ñóùåñòâåííóþ, à èíîãäà è âîâñå íåîòúåìëåìóþ ÷àñòü ÿäðà.
Rust îòíîñèòñÿ ê ÷èñëó íîâåéøèõ ÿçûêîâ ïðîãðàììèðîâàíèÿ – îí ðàçðàáàòûâàåòñÿ ñ 2006 ã., íî âïåðâûå áûë ïðåäñòàâëåí øèðîêîé îáùåñòâåííîñòè â ÿíâàðå 2012 ã. Ñ ýòîãî æå âðåìåíè åãî àäåïòû íå ïðåêðàùàþò ïîïûòîê ïåðåïèñàòü âåñü êîä ÿäðà Linux, êîòîðûé äåñÿòèëåòèÿìè áàçèðîâàëñÿ èñêëþ÷èòåëüíî íà êîäå Ñ è Ñ++.
Ðåøåíèå î ñíÿòèè ïîìåòêè «ýêñïåðèìåíòàëüíàÿ ôóíêöèÿ» ñ êîäà Rust â ñîñòàâå ÿäðà Linux áûëî ïðèíÿòî ó÷àñòíèêàìè êîíôåðåíöèè Maintainers Summit. Îíè êîëëåêòèâíî îáñóäèëè ðåçóëüòàòû âíåäðåíèÿ ýòîãî êîäà â ÿäðî è ïðèøëè ê îáùåìó âûâîäó, ÷òî âñå ïðîøëî âïîëíå óñïåøíî.
Òðè ãîäà ê óñïåõó
 ñàìóþ àêòèâíóþ ñâîþ ôàçó ýêñïåðèìåíò ïî âíåäðåíèþ êîäà íà Rust â ñîñòàâ ÿäðà Linux âîøåë â 2022 ã.  òîò ïåðèîä ðàçðàáîò÷èêè ïîëó÷èëè ðàçðåøåíèå ñîçäàâàòü äðàéâåðû è ìîäóëè íà Rust – ýòà îïöèÿ áûëà âêëþ÷åíà â ÿäðî âåðñèè 6.1.
Êàê ïèøåò OpenNet, ïðîãðàììèñòû ðåøèëè íå òåðÿòü âðåìåíè äàðîì è çà ïðîøåäøèå òðè ãîäà âíåäðèëè â ÿäðî Linux ìíîæåñòâî êîìïîíåíòîâ, íàïèñàííûõ íà Rust. Ñðåäè íèõ – àáñòðàêöèè äëÿ ðàçðàáîòêè íà äðàéâåðîâ äëÿ âèäåîêàðò, ñåòåâûõ êàðò è USB-óñòðîéñòâ. Íàïðèìåð, ñóùåñòâóåò íàïèñàííûé íà Rust äðàéâåðû Nova äëÿ âèäåîêàðò Nvidia, è Tyr äëÿ èíòåãðèðîâàííîé ãðàôèêè ARM Mali, à òàêæå äðàéâåð rust_ext2 äëÿ ïîääåðæêè ôàéëîâîé ñèñòåìû Ext2.
Ñòàðîâåðû ïðîòèâ
Ñòîðîííèêè âíåäðåíèÿ êîäà íà Rust â ÿäðî Linux ñòîëêíóëèñü ñ íåâåðîÿòíî ñèëüíûì ñîïðîòèâëåíèåì ñî ñòîðîíû åãî ðàçðàáîò÷èêîâ, ïèøóùèõ íà Ñ è Ñ++. Îíè âûñòóïèëè ðåçêî ïðîòèâ òàêèõ íîâîââåäåíèé è çàÿâèëè, ÷òî íå ñîáèðàþòñÿ ïåðåó÷èâàòüñÿ èëè ÷òî-òî ìåíÿòü. Ñðåäè íèõ íàøëèñü äàæå òå, êòî ñðàâíèë âíåäðåíèå â ÿäðî êîäà íà Rust ñ ðàêîâîé îïóõîëüþ Òàêæå îíè âûñêàçàëè ìíåíèå, ÷òî ñòîëü ñëîæíûå ïðîãðàììíûå ïðîäóêòû íå äîëæíû ñîçäàâàòüñÿ íà ðàäèêàëüíî ðàçíûõ ÿçûêàõ ïðîãðàììèðîâàíèÿ, ïîñêîëüêó ýòî óñëîæíÿåò ðàçðàáîòêó.
Ïî ñîâðåìåííûì ìåðêàì è Ñ, è Ñ++ – îòíîñèòåëüíî ñòàðûå ÿçûêè, ïîñêîëüêó ìíîãèå íûíåøíèå ïðîãðàììèñòû åùå íå ðîäèëèñü, êîãäà îíè ïîÿâèëèñü. Ìåæäó òåì, Ñ (âûøåë â 1972 ã.) è Ñ++ (ïîÿâèëñÿ â 1982 ã.). äî ñèõ ïîð âõîäÿò â òîï-3 ñàìûõ ïîïóëÿðíûõ â ìèðå (ðåéòèíã Tiobe, äåêàáðü 2025 ã.) íàðÿäó ñ Python. Rust â ýòîì ðåéòèíãå íàõîäèòñÿ íà 17 ñòðî÷êå ïðîòèâ 14 ìåñòà â äåêàáðå 2024 ã.
Ñîçäàòåëü Linux Ëèíóñ Òîðâàëüäñ (Linus Torvalds) íèêîãäà íå îáõîäèë ñïîðû àäåïòîâ Ñ è Rust ñòîðîíîé.  òå÷åíèå äëèòåëüíîãî âðåìåíè îí çàíèìàë ñòîðîíó «ñòàðîâåðîâ», ïî-âñÿêîìó è ïóáëè÷íî îáçûâàÿ ïðîãðàììèñòîâ íà Rust. Ìíîãèå èç íèõ äàæå ïîêèíóëè ñîîáùåñòâî Linux, íå æåëàÿ òåðïåòü îñêîðáëåíèÿ ñî ñòîðîíû Òîðâàëüäñà, à êîãî-òî áûë çàáëîêèðîâàí ïîñëå î÷åðåäíîé ïåðåïàëêè ñ Òîðâàëüäñîì.
Íî ÷åðåç íåêîòîðîå âðåìÿ Ëèíóñ ñìåíèë ñòîðîíó. Òåïåðü îí õîòü è íå ïîëèâàåò ãðÿçüþ ïðîãðàììèñòîâ íà Ñ è Ñ++, íî îòêðûòî ïðèçíàåò, ÷òî êîäó íà Rust åñòü ìåñòî â ÿäðå Linux.
×åì òàê õîðîø Rust
Rust èìååò ìíîæåñòâî äîêàçàííûõ ïðåèìóùåñòâ ïåðåä Ñ è Ñ++, ïîìèìî âîçðàñòà.  ÷àñòíîñòè, îí, â îòëè÷èå îò ýòèõ ÿçûêîâ, óìååò áåçîïàñíî ðàáîòàòü ñ ïàìÿòüþ, ÷òî ïîçâîëÿåò ïèñàòü ïðîãðàììû ñ ãîðàçäî ìåíüøèì êîëè÷åñòâîì ïîòåíöèàëüíûõ óÿçâèìîñòåé.
Ïî îöåíêå ýêñïåðòîâ OpenNet, èñïîëüçîâàíèå Rust äëÿ íàïèñàíèÿ êîäà, â ÷èñëå ïðî÷åãî, ñîêðàùàåò âðåìÿ, çàòðà÷èâàåìîå íà ðàçðàáîòêó è îòëàäêó ââèäó íàëè÷èÿ â ýòîì ÿçûêå «ñòðîãèõ ãàðàíòèé, âûÿâëÿþùèõ îøèáêè íà ðàííåé ñòàäèè íàïèñàíèÿ êîäà».




