Âûáèðàé : Ïîêóïàé : Èñïîëüçóé
0

Ñòàðîâåðû Linux ïðîèãðàëè âîéíó. Êîä íà Rust áîëüøå íå ýêñïåðèìåíò, à çàêîííàÿ ÷àñòü ÿäðà

Ïîääåðæêà ÿçûêà ïðîãðàììèðîâàíèÿ Rust ñïóñòÿ ãîäû âîøëà â ïåðå÷åíü îñíîâíûõ âîçìîæíîñòåé ÿäðà Linux. Ðàçðàáîò÷èêè è ëè÷íî Ëèíóñ Òîðâàëüäñ äîëãî ñîïðîòèâëÿëèñü ýòîìó, îáåèìè ðóêàìè äåðæàñü çà êîä íà Ñ è Ñ++. Íî êîä ýòèõ ÿçûêàõ ìåíåå áåçîïàñåí, à ñàìè ÿçûêè íàìíîãî ñòàðøå, ÷åì Rust, îòíîñÿùèéñÿ ê íîâåéøåìó ïîêîëåíèþ ÿçûêîâ ïðîãðàììèðîâàíèÿ, è äàæå ñàì Òîðâàëüäñ â èòîãå ïðèçíàë åãî î÷åâèäíûå ïðåèìóùåñòâà.

Áîëüøå íå ýêñïåðèìåíò

Ïèøóùèå íà ÿçûêå ïðîãðàììèðîâàíèÿ Rust ðàçðàáîò÷èêè ÿäðà Linux äîáèëèñü âîçìîæíîñòè ïèñàòü ñîçäàâàòü êîìïîíåíòû ÿäðà Linux èìåííî íà ýòîì íà ÿçûêå. Íà ïðîòÿæåíèè ìíîãèõ ëåò èñïîëüçîâàíèå Rust â ðàçðàáîòêå ÿäðà Linux ñ÷èòàëîñü âñåãî ëèøü ýêñïåðèìåíòîì, íî òî, ÷òî ïîíà÷àëó äåéñòâèòåëüíî áûëî èì, â èòîãå ïðåâðàòèëîñü â ñóùåñòâåííóþ, à èíîãäà è âîâñå íåîòúåìëåìóþ ÷àñòü ÿäðà.

Rust îòíîñèòñÿ ê ÷èñëó íîâåéøèõ ÿçûêîâ ïðîãðàììèðîâàíèÿ – îí ðàçðàáàòûâàåòñÿ ñ 2006 ã., íî âïåðâûå áûë ïðåäñòàâëåí øèðîêîé îáùåñòâåííîñòè â ÿíâàðå 2012 ã. Ñ ýòîãî æå âðåìåíè åãî àäåïòû íå ïðåêðàùàþò ïîïûòîê ïåðåïèñàòü âåñü êîä ÿäðà Linux, êîòîðûé äåñÿòèëåòèÿìè áàçèðîâàëñÿ èñêëþ÷èòåëüíî íà êîäå Ñ è Ñ++.

Ðåøåíèå î ñíÿòèè ïîìåòêè «ýêñïåðèìåíòàëüíàÿ ôóíêöèÿ» ñ êîäà Rust â ñîñòàâå ÿäðà Linux áûëî ïðèíÿòî ó÷àñòíèêàìè êîíôåðåíöèè Maintainers Summit. Îíè êîëëåêòèâíî îáñóäèëè ðåçóëüòàòû âíåäðåíèÿ ýòîãî êîäà â ÿäðî è ïðèøëè ê îáùåìó âûâîäó, ÷òî âñå ïðîøëî âïîëíå óñïåøíî.

Òðè ãîäà ê óñïåõó

 ñàìóþ àêòèâíóþ ñâîþ ôàçó ýêñïåðèìåíò ïî âíåäðåíèþ êîäà íà Rust â ñîñòàâ ÿäðà Linux âîøåë â 2022 ã.  òîò ïåðèîä ðàçðàáîò÷èêè ïîëó÷èëè ðàçðåøåíèå ñîçäàâàòü äðàéâåðû è ìîäóëè íà Rust – ýòà îïöèÿ áûëà âêëþ÷åíà â ÿäðî âåðñèè 6.1.

Êîäà íà Rust â ÿäðå Linux ñòàíîâèòñÿ âñå áîëüøå

Êàê ïèøåò 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 ã.

Äî ïåðâîé òðîéêè Rust åùå î÷åíü äàëåêî

Ñîçäàòåëü Linux Ëèíóñ Òîðâàëüäñ (Linus Torvalds) íèêîãäà íå îáõîäèë ñïîðû àäåïòîâ Ñ è Rust ñòîðîíîé.  òå÷åíèå äëèòåëüíîãî âðåìåíè îí çàíèìàë ñòîðîíó «ñòàðîâåðîâ», ïî-âñÿêîìó è ïóáëè÷íî îáçûâàÿ ïðîãðàììèñòîâ íà Rust. Ìíîãèå èç íèõ äàæå ïîêèíóëè ñîîáùåñòâî Linux, íå æåëàÿ òåðïåòü îñêîðáëåíèÿ ñî ñòîðîíû Òîðâàëüäñà, à êîãî-òî áûë çàáëîêèðîâàí ïîñëå î÷åðåäíîé ïåðåïàëêè ñ Òîðâàëüäñîì.

Íî ÷åðåç íåêîòîðîå âðåìÿ Ëèíóñ ñìåíèë ñòîðîíó. Òåïåðü îí õîòü è íå ïîëèâàåò ãðÿçüþ ïðîãðàììèñòîâ íà Ñ è Ñ++, íî îòêðûòî ïðèçíàåò, ÷òî êîäó íà Rust åñòü ìåñòî â ÿäðå Linux.

×åì òàê õîðîø Rust

Rust èìååò ìíîæåñòâî äîêàçàííûõ ïðåèìóùåñòâ ïåðåä Ñ è Ñ++, ïîìèìî âîçðàñòà.  ÷àñòíîñòè, îí, â îòëè÷èå îò ýòèõ ÿçûêîâ, óìååò áåçîïàñíî ðàáîòàòü ñ ïàìÿòüþ, ÷òî ïîçâîëÿåò ïèñàòü ïðîãðàììû ñ ãîðàçäî ìåíüøèì êîëè÷åñòâîì ïîòåíöèàëüíûõ óÿçâèìîñòåé.

Ïî îöåíêå ýêñïåðòîâ OpenNet, èñïîëüçîâàíèå Rust äëÿ íàïèñàíèÿ êîäà, â ÷èñëå ïðî÷åãî, ñîêðàùàåò âðåìÿ, çàòðà÷èâàåìîå íà ðàçðàáîòêó è îòëàäêó ââèäó íàëè÷èÿ â ýòîì ÿçûêå «ñòðîãèõ ãàðàíòèé, âûÿâëÿþùèõ îøèáêè íà ðàííåé ñòàäèè íàïèñàíèÿ êîäà».

Êîììåíòàðèè