Rust atbalsts Linux kodolam saskaras ar Torvalds kritiku

Linuss Torvalds pārskatīja ielāpus, kas ieviesa iespēju izveidot draiverus Rust valodā Linux kodolam, un sniedza dažus kritiskus komentārus.

Vislielākās sūdzības radīja iespējamā panikas() iespēja kļūdu situācijās, piemēram, mazas atmiņas situācijā, kad var neizdoties dinamiskās atmiņas piešķiršanas operācijas, tostarp kodola ietvaros. Torvalds norādīja, ka šāda pieeja kodolā ir principiāli nepieņemama un, ja šis punkts netiek saprasts, viņš var pilnībā NAKed jebkuru kodu, kas mēģina izmantot šādu pieeju. No otras puses, ielāpu izstrādātājs piekrita šai problēmai un uzskata to par atrisināmu.

Vēl viena problēma bija mēģinājumi izmantot peldošā komata vai 128 bitu tipus, kas nav pieņemami tādām vidēm kā Linux kodols. Tā izrādījās daudz nopietnāka problēma, jo šobrīd Rust pamatbibliotēka ir nedalāma un ir viena liela lāse - nav iespējams pieprasīt tikai dažus līdzekļus, neļaujot izmantot vienu vai otru problemātisku funkcionalitāti. Problēmas risināšanai var būt nepieciešamas izmaiņas rūsas kompilatorā un bibliotēkās, lai gan šobrīd komandai vēl nav stratēģijas, kā ieviest valodu bibliotēku modularizāciju.

Turklāt Torvalds atzīmēja, ka sniegtais vadītāja piemērs ir bezjēdzīgs, un ieteica mums kā piemēru izmantot kādu draiveri, kas atrisina vienu no reālajām problēmām.

Atjauninājums: Google ir paziņojis par savu dalību iniciatīvā Rust atbalsta ieviešanā Linux kodolā un ir sniedzis tehniskus iemeslus Rust ieviešanai, lai cīnītos ar atmiņas kļūdu radītajām problēmām. Google uzskata, ka Rust ir gatavs pievienoties C kā valodai Linux kodola komponentu izstrādei. Rakstā sniegti arī piemēri Rust valodas izmantošanai kodola draiveru izstrādei saistībā ar to izmantošanu Android platformā (Rust ir atzīta par oficiāli atbalstītu valodu Android izstrādei).

Tiek atzīmēts, ka Google Binder starpprocesu komunikācijas mehānismam ir sagatavojis Rust valodā rakstītu draivera sākotnējo prototipu, kas ļaus detalizēti salīdzināt C un Rust Binder implementāciju veiktspēju un drošību. Pašreizējā formā darbs vēl nav pabeigts, taču gandrīz visām kodola funkcionalitātes pamata abstrakcijām, kas nepieciešamas, lai Binder darbotos, ir sagatavoti slāņi šo abstrakciju izmantošanai Rust kodā.

Avots: opennet.ru

Pievieno komentāru