Ikaupat nga edisyon sa mga patch alang sa Linux kernel nga adunay suporta alang sa Rust nga pinulongan

Si Miguel Ojeda, tagsulat sa Rust-for-Linux nga proyekto, nagsugyot og ikaupat nga bersyon sa mga component alang sa pagpalambo sa mga driver sa device sa Rust nga pinulongan alang sa konsiderasyon sa Linux kernel developers. Ang suporta sa Rust giisip nga eksperimento, apan gikasabutan na alang sa paglakip sa sunod nga sanga sa linux ug igo na nga hamtong aron magsugod sa pagtrabaho sa paghimo sa mga abstraction layer sa mga subsystem sa kernel, ingon man ang pagsulat sa mga drayber ug module. Ang kalamboan gipondohan sa Google ug sa ISRG (Internet Security Research Group), nga mao ang nagtukod sa Let's Encrypt nga proyekto ug nagpasiugda sa HTTPS ug sa pagpalambo sa mga teknolohiya aron mapausbaw ang seguridad sa Internet.

Hinumdomi nga ang gisugyot nga mga pagbag-o nagpaposible sa paggamit sa Rust isip ikaduha nga pinulongan alang sa pagpalambo sa mga drayber ug kernel modules. Ang suporta sa Rust gipresentar isip usa ka opsyon nga dili mahimo pinaagi sa default ug dili moresulta sa Rust nga gilakip isip usa ka gikinahanglan nga pagsalig sa pagtukod alang sa kernel. Ang paggamit sa Rust alang sa pagpalambo sa drayber magtugot kanimo sa paghimo og mas luwas ug mas maayo nga mga drayber nga adunay gamay nga paningkamot, gawasnon sa mga problema sama sa pag-access sa memorya human sa pagpalaya, null pointer dereferences, ug buffer overruns.

Ang pagdumala nga luwas sa memorya gihatag sa Rust sa oras sa pag-compile pinaagi sa pagsusi sa pakisayran, pagsubay sa pagpanag-iya sa butang ug kinabuhi sa butang (sangkap), ingon man pinaagi sa pagtimbang-timbang sa pagkahusto sa pag-access sa memorya sa panahon sa pagpatuman sa code. Naghatag usab ang Rust og proteksyon batok sa pag-awas sa integer, nanginahanglan mandatory nga pagsugod sa mga variable nga kantidad sa wala pa gamiton, pagdumala sa mga sayup nga mas maayo sa standard nga librarya, gipadapat ang konsepto sa dili mausab nga mga pakisayran ug mga variable nga default, nagtanyag kusog nga static nga pag-type aron maminusan ang mga lohikal nga sayup.

Ang bag-ong bersyon sa mga patch nagpadayon sa pagwagtang sa mga komento nga gihimo sa panahon sa paghisgot sa una, ikaduha ug ikatulo nga edisyon sa mga patch. Sa bag-ong bersyon:

  • Ang transisyon sa paggamit sa stable nga pagpagawas sa Rust 1.58.0 ingon nga reference compiler nahimo na. Lakip sa mga pagbag-o nga gikinahanglan alang sa proyekto, nga wala pa maapil sa nag-unang Rust toolkit, ang "-Zsymbol-mangling-version=v0" nga bandila (gipaabot sa Rust 1.59.0) ug ang "maybe_uninit_extra" mode (gipaabot sa Rust 1.60.0). .XNUMX) namatikdan. .
  • Gidugang ang mga awtomatik nga pagsusi alang sa pagkaanaa sa angay nga mga gamit sa Rust ug gipalapdan ang abilidad sa pagsulay sa suporta sa Rust sa sistema.
  • Gisugyot ang mga bag-ong abstraction alang sa pag-access sa mga lamesa sa pagkilala sa aparato ("IdArray" ug "IdTable") gikan sa Rust code.
  • Gidugang nga mga layer alang sa pag-access sa mga function nga may kalabotan sa timer (framework sa orasan).
  • Ang mga drayber sa plataporma gihubit na karon pinaagi sa mga pagpatuman sa kinaiya.
  • Usa ka bag-ong macro ang gidugang aron pasimplehon ang pagrehistro sa mga drayber sa platform, ug usa ka bag-ong template sa generic nga drayber ang gisugyot.
  • Gidugang nga mga macro para sa "dev_*" nga mga istruktura.
  • Gidugang ang "{read,write}*_relaxed" nga mga pamaagi para sa IoMem type .
  • Gikuha ang FileOpener property aron pasimplehon ang mga operasyon sa file.
  • Ang parameter nga "ThisModule" gidugang sa mga argumento nga gipasa sa pagrehistro sa usa ka drayber.
  • Usa ka sumbanan nga template alang sa paghimo sa kernel modules sa Rust nga pinulongan gisugyot.

Source: opennet.ru

Idugang sa usa ka comment