Te tukunga o te reo hootaka Rust 1.75 me te unikernel Hermit 0.6.7

Ko te tukunga o te reo hootaka kaupapa whanui Rust 1.75, i hangaia e te kaupapa Mozilla, engari kua whakawhanakehia inaianei i raro i te maru o te whakahaere kore-painga motuhake Rust Foundation, kua whakaputaina. Ko te reo e arotahi ana ki te haumaru mahara me te whakarato i nga huarahi ki te whakatutuki i te whakarara nui i roto i nga mahi mahi, me te karo i te whakamahi o te kaikohi paru me te wa mahi (ka whakahekehia te wa whakahaere ki te timatanga me te tiaki i te whare pukapuka paerewa).

Ko nga tikanga whakahaere mahara a Rust ka whakawātea i te kaiwhakawhanake mai i nga hapa raweke o te atatohu me te whakamarumaru mai i nga raru ka puta mai i te raweke mahara taumata-iti, penei i te urunga kore-kore, te kore tohu tohu kore, te paopao, me era atu. Ki te tohatoha whare pukapuka, ki te whakarite i te huihuinga me te whakahaere i nga whakawhirinakitanga, kei te whakawhanake te kaupapa i te kaiwhakahaere kete Uta. Kei te tautokohia te putunga crates.io mo te manaaki whare pukapuka.

Ka whakamanahia te haumaru mahara i roto i te Rust i te wa whakahiato ma te arowhai tohutoro, te whai mana o te taonga, te whakaaro mo te oranga o te ahanoa (scoping), me te arotake urunga mahara i te wa whakahaere. Ko te waikura hoki he whakamarumaru mai i nga puhaketanga integer, me arawhiti nga uara taurangi i mua i te whakamahi, he pai ake te whakahaere hapa i roto i te whare pukapuka paerewa, ka whakamahi taunoa i te kaupapa o nga tohutoro koretake me nga taurangi, me te tuku patopato pateko kaha hei whakaiti i nga hapa arorau.

Nga mahi hou:

  • Kua taapirihia te kaha ki te whakamahi i te "async fn" me te tohu "-> impl Trait" i roto i nga ahuatanga motuhake. Hei tauira, ma te whakamahi i te "->impl Trait" ka taea e koe te tuhi i tetahi tikanga huanga ka whakahoki mai i te kaitoro: trait Container { fn items(&self) -> impl Iterator; } impl Ipu mo MyContainer { fn items(&self) -> impl Iterator {self.items.iter().cloned() } }

    Ka taea hoki e koe te hanga ahuatanga ma te whakamahi i te "async fn": trait HttpService {async fn fetch(&self, url: Url) -> HtmlBody; // ka whakawhānuihia ki: // fn fetch(&self, url: Url) -> impl Future; }

  • He API taapiri mo te tatau i nga paita paita e pa ana ki nga tohutohu. I te wa e mahi ana me nga tohu tohu ("*const T" me "*mut T"), ka hiahia pea nga mahi ki te taapiri i te taapiri ki te tohu. I mua, mo tenei ka taea te whakamahi i te hanga penei i te "::add(1)", me te taapiri i te maha o nga paita e rite ana ki te rahi o "size_of::()". Ko te API hou he whakangawari i tenei mahi, ka taea te raweke i nga paita offset me te kore e maka i nga momo ki "*const u8" ranei "*mut u8".
    • tohutohu::byte_add
    • tohutohu::byte_offset
    • tohutohu::byte_offset_from
    • tohutohu::byte_sub
    • tohutohu::wrapping_byte_add
    • tohutohu::wrapping_byte_offset
    • tohutohu::wrapping_byte_sub
  • Mahi tonu ki te whakanui ake i te mahi a te kaitoi rustc. I taapirihia te BOLT optimizer, e rere ana i roto i te waahanga hono-i muri me te whakamahi i nga korero mai i te whaarangi mahi kua oti te whakarite. Ma te whakamahi i te BOLT ka taea e koe te tere ake i te mahi whakahiato ma te 2% ma te whakarereke i te whakatakotoranga o te waehere whare pukapuka librustc_driver.so kia pai ake te whakamahi i te keteroki tukatuka.

    Kei roto ko te hanga i te rustc compiler me te "-Ccodegen-units=1" hei whakapai ake i te kounga o te arotautanga i roto i te LLVM. Ko nga whakamatautau i mahia e whakaatu ana i te pikinga o te mahi i roto i te keehi o te hanga "-Ccodegen-units=1" tata ki te 1.5%. Ko nga arotautanga taapiri e taea ana ma te taunoa anake mo te papaaho x86_64-unknown-linux-gnu.

    Ko nga arotautanga kua whakahuahia i mua i whakamatauhia e Google hei whakaiti i te wa hanga o nga waahanga papaarangi Android kua tuhia ki Rust. Ma te whakamahi i te "-C codegen-units=1" i te wa e hanga ana i te Android ka taea e matou te whakaiti i te rahi o te kete taputapu ma te 5.5% me te whakanui ake i tana mahi ma te 1.8%, i te mea kua tata rua te wa hanga o te kete taputapu.

    Ma te whakaahei i te kohinga para mo te hono-wa (“--gc-sections”) kua eke te whiwhinga mahi ki te 1.9%, ka taea te arotautanga wa-hononga (LTO) ki te 7.7%, me te arotautanga-a-kotaha (PGO) ki te 19.8% . I te mutunga, i whakamahia nga arotautanga ma te whakamahi i te taputapu BOLT, i taea ai te piki o te tere hanga ki te 24.7%, engari ko te rahi o te kete taputapu i piki ake i te 10.9%.

    Te tukunga o te reo hootaka Rust 1.75 me te unikernel Hermit 0.6.7

  • Kua nekehia tetahi waahanga hou o te API ki te waahanga pumau, tae atu ki nga tikanga me nga whakatinanatanga o nga ahuatanga kua whakapumautia:
    • Atomic*::from_ptr
    • Wā Kōnae
    • FileTimesExt
    • Kōnae::set_modified
    • Kōnae::set_times
    • IpAddr::to_canonical
    • Ipv6Addr::to_canonical
    • Kōwhiringa::as_slice
    • Kōwhiringa::as_mut_slice
    • tohutohu::byte_add
    • tohutohu::byte_offset
    • tohutohu::byte_offset_from
    • tohutohu::byte_sub
    • tohutohu::wrapping_byte_add
    • tohutohu::wrapping_byte_offset
    • tohutohu::wrapping_byte_sub
  • Ko te huanga "const", e whakatau ana i te kaha ki te whakamahi i roto i tetahi horopaki hei utu mo nga taumau, ka whakamahia i roto i nga mahi:
    • IPv6Addr::to_ipv4_mapped
    • PeaUninit:: assume_init_read
    • MahaloUninit::kore
    • mem::whakahāwea
    • mem::kore
  • Ko te taumata tuatoru o te tautoko kua whakatinanahia mo nga papaaho csky-unknown-linux-gnuabiv2hf, i586-unknown-netbsd me te mipsel-unknown-netbsd. Ko te taumata tuatoru ko te tautoko taketake, engari kaore he whakamatautau aunoa, te whakaputa i nga hanganga mana, me te tirotiro mena ka taea te hanga te waehere.

I tua atu, ka taea e tatou te kite i tetahi putanga hou o te kaupapa Hermit, e whakawhanake ana i te kakano motuhake (unikernel), kua tuhia ki te reo Rust, e whakarato ana i nga taputapu mo te hanga tono-whaiaro ka taea te whakahaere i runga ake o te hypervisor me te taputapu kore noa kaore he paparanga taapiri. me te kore he punaha whakahaere. I te wa i hangaia ai, ka honoa te tono ki tetahi whare pukapuka, e whakatinana ana i nga mahi katoa e tika ana, me te kore e herea ki te kernel OS me nga whare pukapuka punaha. Ka tohatohahia te waehere kaupapa i raro i nga raihana Apache 2.0 me MIT. Ka tautokohia te Huihuinga mo te mahi tuutahi o nga tono kua tuhia ki Rust, Go, Fortran, C me C++. Kei te whakawhanake ano te kaupapa i tana ake bootloader ka taea e koe te whakarewa i a Hermit ma te whakamahi i te QEMU me te KVM.

Source: opennet.ru

Tāpiri i te kōrero