Ipinatupad ang borrow checker sa frontend ng GCC gamit ang Rust compiler

Isang serye ng mga patch na nagpapahusay sa suporta sa wikang Rust sa frontend ng gccrs ay iminungkahi para isama sa sangay ng GCC 15. Ang pinaka-kapansin-pansing pagbabago ay ang suporta para sa borrow checker, na batay sa Polonius component, na binuo ng Rust core team bilang susunod na henerasyon ng borrow checker.

Ang iminungkahing pagpapatupad ng Borrow checker ay naiiba dahil ito ay nakasulat sa Rust na wika at nagbibigay ng mga advanced na kakayahan sa pag-verify ng code, na nagpapahintulot sa ilang mga kaso na isaalang-alang ang ligtas na code na hanggang ngayon ay nangangailangan ng pagmamarka gamit ang Hindi Ligtas na keyword dahil sa mga limitasyon ng default na pagpapatupad ng Borrow checker.

Ang solusyon na inihanda para sa GCC ay may mga limitasyon:

  • Alam ni Polonius ang mga sitwasyon kung saan ang ilang code na aktwal na umiiral sa mga proyekto ay humahantong sa exponential growth sa pagiging kumplikado ng pagsusuri.
  • Sa kaso ng GCC, kasalukuyang hinihiling ng gccrs compiler ang Rust compiler na kumpletuhin ang yugto ng bootstrapping (aalisin ang limitasyong ito sa hinaharap).

Ang buong pagpapatupad ng self-contained assembly ay nagpapahiwatig ng 2-stage spin-up, kung saan bubuo muna ang GCC ng mga gccrs nang walang Borrow checker, at pagkatapos ay bubuo ng nabanggit na pagpapatupad ng Borrow checker, na nakasulat sa Rust na wika, gamit ang isang stripped-down na bersyon ng compiler at isinasaalang-alang ang code na pinagkakatiwalaan ng may kondisyon (ibig sabihin, nang hindi nagsasagawa ng borrow checking). Pagkatapos buuin ang Borrow checker, isa pang compiler rebuild ang isasagawa, ngunit sa pagkakataong ito ay may mga borrow check.

Pinagmulan: opennet.ru

Magdagdag ng komento