Tuuina atu o le gagana polokalame Rust 1.75 ma unikernel Hermit 0.6.7

O le faʻasaʻolotoina o le gagana faʻapolokalame faʻamoemoe lautele Rust 1.75, faʻavaeina e le poloketi Mozilla, ae o lea ua atiaʻe i lalo o le faʻauluuluga a le faʻalapotopotoga tutoatasi e leai ni tupe mama Rust Foundation, ua lomia. O le gagana o loʻo taulaʻi i le saogalemu o manatuaga ma maua ai le auala e ausia ai le maualuga maualuga i le faʻatinoina o galuega, aʻo aloese mai le faʻaogaina o le lapisi lapisi ma le taʻavale (ua faʻaitiitia le taimi i le amataga ma le tausiga o le faletusi masani).

O auala e pulea ai manatuaga a Rust e fa'asa'oloto ai le tagata atia'e mai mea sese o le fa'aogaina o fa'ailoga ma puipuia mai fa'afitauli e tula'i mai i le fa'aogaina o mafaufauga maualalo, e pei o avanoa e leai se totogi, fa'aletonu le fa'asinomaga, fa'amama fa'alavelave, ma mea faapena. Ina ia tufatufaina faletusi, faʻamautinoa le faʻapipiʻiina ma pulea faʻalagolago, o le poloketi o loʻo atiaʻe le pule o pusa uta. O le crates.io repository e lagolagoina mo le talimalo faletusi.

O le saogalemu o manatuaga e fa'amalosia i le Rust i le taimi fa'aopoopo e ala i le siakiina o fa'asinomaga, su'esu'eina o mea e umia, iloiloga o mea i le olaga atoa (scoping), ma le iloiloga o le avanoa e manatua ai i le taimi. E maua ai foi e le ele le puipuiga mai le tele o numera, e manaʻomia ai le faʻavaeina o tau fesuiaʻi aʻo leʻi faʻaaogaina, e sili atu le taulimaina o mea sese i totonu o le faletusi masani, faʻaaogaina le manatu o faʻamatalaga e le mafai ona suia ma fesuiaiga e ala i le le mafai, ma ofoina atu le malosi o le taina e faʻaitiitia ai mea sese.

Autu fa'afouga:

  • Faʻaopoopo le tomai e faʻaaoga ai le "async fn" ma le faʻailoga "-> impl Trait" i uiga patino. Mo se faʻataʻitaʻiga, i le faʻaaogaina o le "-> impl Trait" e mafai ona e tusia se auala uiga e toe faʻafoʻi mai ai se faʻataʻitaʻiga: trait Container { fn items(&self) -> impl Iterator; } impl Container mo MyContainer { fn items(&self) -> impl Iterator {self.items.iter().cloned() } }

    E mafai fo'i ona e faia uiga e fa'aaoga ai le "async fn": trait HttpService {async fn fetch(&self, url: Url) -> HtmlBody; // ole a fa'alauteleina ile: // fn fetch(&self, url: Url) -> impl Future; }

  • Ua fa'aopoopoina le API mo le fa'atatauina o fa'asologa o byte e fa'atatau i fa'ailoga. Pe a galue ma fa'ailoga e leai ni fa'ailoga ("*const T" ma le "*mut T"), e ono mana'omia ni gaioiga e fa'aopoopo ai se fa'aafi i le fa'asino. I le taimi muamua, mo lenei mea na mafai ai ona faʻaogaina se fausaga e pei o le ":: add (1)", faʻaopoopo le numera o bytes e fetaui ma le tele o le "size_of:: ()". O le API fou e faʻafaigofieina lenei gaioiga ma mafai ai ona faʻaogaina faʻamalo o byte e aunoa ma le tuʻuina muamua o ituaiga i le "* const u8" poʻo le "*mut u8".
    • fa'asino::byte_add
    • fa'asino::byte_offset
    • fa'asino::byte_offset_from
    • fa'asino::byte_sub
    • faasino:: wrapping_byte_add
    • fa'asino:: wrapping_byte_offset
    • faasino:: wrapping_byte_sub
  • Faʻaauau galuega e faʻateleina le faʻatinoga o le rustc compiler. Faʻaopoopo le BOLT optimizer, lea e tamoʻe i le post-link stage ma faʻaogaina faʻamatalaga mai se faʻataʻitaʻiga faʻataunuʻu na saunia muamua. O le fa'aaogaina o le BOLT e mafai ai e oe ona fa'avavevave le fa'atinoina o le fa'apipi'i e tusa ma le 2% e ala i le suia o le fa'asologa o le librustc_driver.so faletusi code mo le fa'aoga lelei o le fa'aogaina o le cache.

    E aofia ai le fausiaina o le rustc compiler ma le "-Ccodegen-units = 1" filifiliga e faʻaleleia ai le lelei o le faʻaleleia i le LLVM. O suʻega na faia o loʻo faʻaalia ai le faʻatupulaia o le faʻatinoga i le tulaga o le "-Ccodegen-units=1" fausia e tusa ma le 1.5%. O fa'aopoopoga fa'aopoopo e mafai ona fa'agaoioia mo na'o le x86_64-unknown-linux-gnu platform.

    O faʻataʻitaʻiga na taʻua muamua na faʻataʻitaʻiina e Google e faʻaitiitia ai le taimi o le fausiaina o vaega Android platform na tusia i le Rust. O le faʻaaogaina o le "-C codegen-units = 1" pe a fausia le Android na faʻatagaina ai i matou e faʻaititia le tele o le meafaigaluega i le 5.5% ma faʻateleina lona faʻatinoga i le 1.8%, ae o le taimi o le fausiaina o le meafaigaluega lava ia toetoe a faaluaina.

    O le fa'amalosia o le aoina o lapisi taimi feso'ota'i ("--gc-sections") na maua ai le fa'atinoga o le fa'atinoga i le 1.9%, fa'ataga le feso'ota'iga-taimi optimization (LTO) e o'o atu i le 7.7%, ma fa'ailoga fa'avae fa'atatau (PGO) e o'o atu i le 19.8% . I le faʻaiʻuga, na faʻaaogaina faʻataʻitaʻiga e faʻaaoga ai le aoga BOLT, lea na faʻatagaina ai le faʻateleina o le saoasaoa o le fausiaina i le 24.7%, ae o le tele o le meafaigaluega na faʻateleina e 10.9%.

    Tuuina atu o le gagana polokalame Rust 1.75 ma unikernel Hermit 0.6.7

  • O se vaega fou o le API ua siitia i le vaega o fale mautu, e aofia ai metotia ma faʻatinoga o uiga ua faʻamautuina:
    • Atomic*::from_ptr
    • FileTimes
    • FileTimesExt
    • File::set_modified
    • File::set_times
    • IpAddr::to_canonical
    • IPv6Addr::to_canonical
    • Filifiliga::as_slice
    • Filifiliga::as_mut_slice
    • fa'asino::byte_add
    • fa'asino::byte_offset
    • fa'asino::byte_offset_from
    • fa'asino::byte_sub
    • faasino:: wrapping_byte_add
    • fa'asino:: wrapping_byte_offset
    • faasino:: wrapping_byte_sub
  • O le uiga "const", lea e fuafua ai le avanoa e faʻaaogaina ai i soʻo se faʻamatalaga nai lo faʻaauau, e faʻaaogaina i galuega:
    • IPv6Addr::to_ipv4_mapped
    • MasaloUninit :: assume_init_read
    • AtonuUninit::zeroed
    • mem::faailoga tagata
    • mem::zero
  • O le tulaga lona tolu o le lagolago ua faʻatinoina mo le csky-unknown-linux-gnuabiv2hf, i586-unknown-netbsd ma le mipsel-unknown-netbsd platforms. O le vaega lona tolu e aofia ai le lagolago faʻavae, ae aunoa ma se faʻataʻitaʻiga otometi, faʻasalalauga faʻapitoa faufale, poʻo le siakiina pe mafai ona fausia le code.

E le gata i lea, e mafai ona tatou matauina se faʻamatalaga fou o le poloketi Hermit, lea e atiaʻe ai se fatu faʻapitoa (unikernel), tusia i le gagana Rust, e tuʻuina atu meafaigaluega mo le fausiaina o le tagata lava ia talosaga e mafai ona tamomoe i luga o se hypervisor poʻo ni meafaigaluega e aunoa ma ni faʻaopoopoga faaopoopo. ma e aunoa ma se faiga fa'aoga. Pe a fausia, o le talosaga e fesoʻotaʻi faʻatasi i se faletusi, lea e tutoʻatasi le faʻatinoina o galuega talafeagai uma, e aunoa ma le nonoa i le OS kernel ma faletusi faʻaoga. O le faʻailoga o le poloketi o loʻo tufatufa atu i lalo ole Apache 2.0 ma laisene MIT. E lagolagoina le Fonotaga mo le faʻatinoina naʻo le faʻatinoina o talosaga na tusia i le Rust, Go, Fortran, C ma C ++. O loʻo faʻatupuina foi e le poloketi lana lava bootloader lea e mafai ai ona e faʻalauiloa Hermit e faʻaaoga ai QEMU ma KVM.

puna: opennet.ru

Faaopoopo i ai se faamatalaga