Famoahana ny fiteny fandaharana Rust 1.75 sy unikernel Hermit 0.6.7

Navoaka ny fiteny fandaharana Rust 1.75 amin'ny tanjona ankapobeny, naorin'ny tetikasa Mozilla saingy novolavolaina ankehitriny eo ambany fiahian'ny fikambanana tsy miankina Rust Foundation. Mifantoka amin'ny fiarovana ny fitadidiana ilay fiteny ary manome fitaovana ahafahana manatratra ny fitovian'ny asa avo lenta sady misoroka ny fampiasana mpanangom-pako sy ny fotoana fandehanana (ahena ny fotoana fampandehanana amin'ny fanombohana fototra sy fikojakojana ny tranomboky mahazatra).

Ny fomba fitantanana fitadidian'i Rust dia mamonjy ny mpamorona amin'ny hadisoana rehefa manodinkodina ny tondro ary miaro amin'ny olana mipoitra noho ny fikarakarana fitadidiana ambany, toy ny fidirana amin'ny faritra fitadidiana rehefa afaka izany, ny fanafoanana ireo tondro tsy misy dikany, ny fihoaran'ny buffer, sns. Mba hizarana trano famakiam-boky, manome fananganana ary mitantana ny fiankinan-doha, ny tetikasa dia mamolavola ny mpitantana fonosana Cargo. Ny tahiry crates.io dia tohanana amin'ny fampiantranoana tranomboky.

Ny fiarovana ny fitadidiana dia omena ao amin'ny Rust amin'ny fotoana fanangonana amin'ny alΓ lan'ny fanamarinana reference, ny fanaraha-maso ny fananana zavatra, ny fanaraha-maso ny androm-piainan'ny zavatra (scopes), ary ny fanombanana ny fahamarinan'ny fidirana fahatsiarovana mandritra ny famonoana ny code. Ny Rust koa dia manome fiarovana amin'ny fihoaran'ny integer, mitaky fanombohana tsy maintsy atao ny soatoavina miovaova alohan'ny fampiasana, mitantana ny lesoka tsara kokoa ao amin'ny tranomboky mahazatra, mampihatra ny foto-kevitry ny references sy ny variables tsy miova amin'ny alΓ lan'ny default, manolotra fanoratana static mahery mba hampihenana ny fahadisoana lojika.

Fanavaozana lehibe:

  • Nampiana ny fahafahana mampiasa "async fn" sy ny "-> impl Trait" amin'ny toetra manokana. Ohatra, amin'ny fampiasana "-> impl Trait" dia azonao atao ny manoratra fomba fiasa izay mamerina iteratera: toetra Container { fn item(&self) -> impl Iterator; } impl Container for MyContainer { fn items(&self) -> impl Iterator {self.items.iter().cloned()} }

    Azonao atao koa ny mamorona toetra mampiasa "async fn": toetra HttpService {async fn fetch(&self, url: Url) -> HtmlBody; // dia hitarina ho: // fn fetch(&self, url: Url) -> impl Future; }

  • Nampiana API ho an'ny kajy byte offset mifandraika amin'ny tondro. Rehefa miasa miaraka amin'ny tondro miboridana (β€œ*const T” sy β€œ*mut T”), dia mety ilaina ny fandidiana mba hanampiana offset amin'ny tondro. Teo aloha, azo atao ny mampiasa fanorenana toy ny "::add(1)", manampy ny isan'ny bytes mifanaraka amin'ny haben'ny "size_of::()". Ny API vaovao dia manatsotra ity asa ity ary ahafahana manodinkodina ny offset byte nefa tsy manipy ny karazana ho "*const u8" na "*mut u8".
    • pointer::byte_add
    • pointer::byte_offset
    • pointer ::byte_offset_from
    • pointer::byte_sub
    • pointer ::wrapping_byte_add
    • pointer ::wrapping_byte_offset
    • pointer ::wrapping_byte_sub
  • Nitohy ny asa hampitomboana ny fahombiazan'ny rustc compiler. Nampiana ny BOLT optimizer, izay mandeha amin'ny sehatra post-link ary mampiasa fampahalalana avy amin'ny mombamomba ny famonoana efa nomanina. Ny fampiasana BOLT dia ahafahanao manafaingana ny fanatanterahana ny compiler amin'ny 2% eo ho eo amin'ny fanovana ny fisehon'ny kaody famakiam-boky librustc_driver.so ho an'ny fampiasana mahomby kokoa ny cache processeur.

    Tafiditra ao anatin'izany ny fananganana ny rustc compiler miaraka amin'ny safidy "-Ccodegen-units=1" hanatsarana ny kalitaon'ny fanatsarana ao amin'ny LLVM. Ny fitsapana natao dia mampiseho fampitomboana ny fahombiazan'ny trangan'ny fananganana "-Ccodegen-units=1" eo amin'ny 1.5%. Ny fanatsarana fanampiny dia alefa amin'ny alΓ lan'ny default ho an'ny sehatra x86_64-unknown-linux-gnu.

    Ireo fanatsarana voalaza teo aloha dia nosedrain'ny Google mba hampihenana ny fotoana fananganana ireo singa amin'ny sehatra Android voasoratra amin'ny Rust. Ny fampiasana ny β€œ-C codegen-units=1” rehefa manangana Android dia namela anay hampihena 5.5% ny haben'ny kitapom-pitaovana ary hampitombo 1.8% ny zava-bitany, raha toa ka efa ho avo roa heny ny fotoana fanamboarana ny kitapom-pitaovana.

    Ny fampandehanana ny fanangonana fako amin'ny fotoanan'ny rohy (β€œ--gc-sections”) dia nitondra ny tombony azo tamin'ny zava-bita hatramin'ny 1.9%, nahafahany nanatsara ny fotoanan'ny rohy (LTO) hatramin'ny 7.7%, ary ny fanatsarana mifototra amin'ny profil (PGO) hatramin'ny 19.8%. Tamin'ny farany, ny fanatsarana dia nampiharina tamin'ny fampiasana BOLT utility, izay namela ny fitomboan'ny hafainganam-pandehan'ny fananganana ho 24.7%, fa ny haben'ny fitaovana dia nitombo 10.9%.

    Famoahana ny fiteny fandaharana Rust 1.75 sy unikernel Hermit 0.6.7

  • Ny ampahany vaovao amin'ny API dia nafindra ho amin'ny sokajy stable, ao anatin'izany ny fomba sy ny fampiharana ny toetra efa niorina:
    • Atomic*::from_ptr
    • FileTimes
    • FileTimesExt
    • File ::set_modified
    • File ::set_times
    • IpAddr::to_canonical
    • Ipv6Addr::to_canonical
    • Safidy::as_slice
    • Safidy::as_mut_slice
    • pointer::byte_add
    • pointer::byte_offset
    • pointer ::byte_offset_from
    • pointer::byte_sub
    • pointer ::wrapping_byte_add
    • pointer ::wrapping_byte_offset
    • pointer ::wrapping_byte_sub
  • Ny toetra "const", izay mamaritra ny mety hampiasana azy amin'ny toe-javatra rehetra fa tsy constants, dia ampiasaina amin'ny fiasa:
    • IPv6Addr::to_ipv4_mapped
    • MaybeUninit :: assume_init_read
    • MaybeUninit::zeroed
    • mem:: manavakavaka
    • mem::aotra
  • Ny fanohanana ambaratonga fahatelo dia nampiharina ho an'ny sehatra csky-unknown-linux-gnuabiv2hf, i586-unknown-netbsd ary mipsel-unknown-netbsd. Ny ambaratonga fahatelo dia misy fanohanana fototra, saingy tsy misy fitiliana mandeha ho azy, famoahana fananganana ofisialy, na fanamarinana raha azo amboarina ny kaody.

Fanampin'izany, azontsika atao ny manamarika ny dikan-teny vaovao amin'ny tetikasa Hermit, izay mamolavola kernel manokana (unikernel), voasoratra amin'ny fiteny Rust, manome fitaovana amin'ny fananganana rindranasa tsy misy dikany izay afaka mandeha eo ambonin'ny hypervisor na fitaovana tsy misy sosona fanampiny. ary tsy misy rafitra miasa. Rehefa amboarina, ny fampiharana dia mifandray amin'ny tranomboky iray, izay mametraka tsy miankina ny fiasa ilaina rehetra, tsy mifatotra amin'ny kernel OS sy ny tranomboky rafitra. Ny kaody tetikasa dia zaraina amin'ny alΓ lan'ny lisansa Apache 2.0 sy MIT. Ny Fivoriambe dia tohanana amin'ny fanatanterahana samirery ny fampiharana voasoratra amin'ny Rust, Go, Fortran, C ary C ++. Mamolavola ny bootloader azy ihany koa ny tetikasa izay ahafahanao manomboka Hermit mampiasa QEMU sy KVM.

Source: opennet.ru

Add a comment