Puo ea Rust programming 1.38 tokollo

e hatisitsoeng tokollo ea puo ea lenaneo la sistimi Mafome 1.38, e thehiloeng ke morero oa Mozilla. Puo e shebana le polokeho ea mohopolo, e fana ka taolo ea memori ea othomathike, mme e fana ka mokhoa oa ho fihlela ts'ebetso e ts'oanang e phahameng ntle le ho sebelisa moqosi oa lithōle kapa nako ea ho sebetsa.

Taolo ea memori ea othomathike ea Rust e lokolla moqapi ho tsoa manolong a pointer le ho sireletsa khahlano le mathata a bakoang ke ho qhekella ha memori ea boemo bo tlase, joalo ka phihlello ea memori e sa lefelloeng, litšupiso tsa null pointer, buffer overruns, joalo-joalo. Motsamaisi oa liphutheloana o ntse a ntlafatsoa ho aba lilaebrari, ho netefatsa ho bokelloa le ho laola litšepe ka morero. thepa, ho u lumella ho fumana lilaebrari tse hlokahalang bakeng sa lenaneo ka ho tobetsa hanngoe feela. Sebaka sa polokelo se tšehetsoa ho amohela lilaebrari crates.io.

ka sehloohong boiqapelo:

  • E kentse mokhoa oa ho bokella liphaephe (pipeline), moo kaho ea sephutheloana sa crate e itšetlehileng ka eona e qalang hang ha metadata ea ho itšetleha e fumaneha, ntle le ho emela hore pokello ea eona e phethehe. Ha ho etsoa sephutheloana, litšepe ha li hloke ho bokelloa ka botlalo, ho hlalosa feela metadata, e kenyelletsang lethathamo la mefuta, litšepiso le likarolo tse romelloang kantle ho naha. Metadata e fumaneha qalong ea ts'ebetso ea ho bokella, kahoo liphutheloana tse hokahaneng joale li ka bokelloa pejana. Ha ho hahoa liphutheloana tse le 'ngoe, mokhoa o reriloeng ha o ame ts'ebetso, empa haeba mohaho o koahela liphutheloana tse nang le litšepe tsa makala, nako ea ho haha ​​ka kakaretso e ka fokotsoa ka 10-20%;
  • E netefatsa ho fumana ts'ebeliso e fosahetseng ea mesebetsi std::mem::e sa qala и std::mem::zeroed. Ka mohlala, std::mem::unitialized e loketse bakeng sa ho theha lihlopha ka potlako, empa e khelosa moqapi hobane e bonahala e qalisoa, empa bonneteng boleng bo lula bo sa tsejoe. The mem :: ts'ebetso e sa lebelloang e se e tšoailoe joalo ka ha e lahliloe 'me ho khothaletsoa ho sebelisa mofuta o mahareng. Mohlomong Unit. Ha e le mem ::zeroed, ts'ebetso ena e ka baka mathata ka mefuta e ke keng ea amohela litekanyetso tsa zero.

    Ho thusa ho tseba boits'oaro bo sa hlalosoang, tokollo e ncha e eketsa tlhahlobo ea lint ho komporo e lemohang mathata a mang ka mem :: unitialized or mem ::zeroed. Mohlala, joale o fumana phoso ha o leka ho sebelisa mem::e sa tsejoeng kapa mem::zeroed ka mefuta ea &T le Box‹T›, e emelang lintho tse supang tse ke keng tsa amohela boleng ba lefeela;

  • Tšobotsi ea "#[deprecated]" e atolositsoe ho lumella liphutheloana tsa crate hore li tšoaiwe ha li sa sebetsa le hore li reretsoe ho hlakoloa nakong e tlang. Joalo ka Rust 1.38, tšobotsi ena e ka boela ea sebelisoa bakeng sa macros;
  • E ekelitse bokhoni ba ho sebelisa tšobotsi ea "#[global_allocator]" ho li-submodule;
  • Sebopeho se ekelitsoeng std::feela::type_name, e leng se u lumellang hore u fumane lebitso la mofuta, le ka thusang merero ea ho lokisa liphoso. Ka mohlala, nakong ea ts'ebetso ea lenaneo u ka fumana hore na mosebetsi oo o ne o bitsoa mofuta ofe:

    fn gen_value‹T: Default>() -› T {
    println!("E qala mohlala oa {}", std:: any::type_name::‹T›());
    Kamehla:: kamehla ()
    }

    fn main() {
    let _: i32 = gen_value(); # "i32" e tla hatisoa
    tlohela _: Khoele = gen_value(); # e tla hatisa "alloc::string::String"
    }

  • Mesebetsi e atolositsoeng ea laeborari e tloaelehileng:
    • slice::{concat, connect, join} joale e ka nka boleng &[T] ho phaella ho &T;
    • "*const T" le "*mut T" joale kenya lesupa::Tlosa;
    • "Arc‹[T]›" le "Rc‹[T]›" joale li sebelisa FromIterator‹T›;
    • iter::{StepBy, Peekable, Take} joale sebelisa DoubleEndedIterator.
    • ascii :: EscapeDefault e sebelisa Clone le Display.
  • Karolo e ncha ea API e fetiselitsoe sehlopheng se tsitsitseng, ho kenyelletsa le mekhoa e tsitsitseng
    • ‹*const T›::cast, ‹*mut T›::cast,
    • Nako::as_secs_f{32|64},
    • Nako::div_duration_f{32|64},
    • Nako::div_f{32|64},
    • Nako::ho tloha_secs_f{32|64},
    • Nako::mul_f{32|64},
    • mesebetsi ea karohano le tse setseng
      div_euclid le rem_euclid bakeng sa li-primitives tsohle tse felletseng;

  • Ts'ehetso e ekelitsoeng bakeng sa ho hlakisa khetho ea "--features" makhetlo a mangata ho thusa likarolo tse fapaneng ho mookameli oa sephutheloana sa thepa;
  • Moqapi o fana ka karolo ea boraro boemo tšehetso bakeng sa li-platform tse shebiloeng aarch64-uwp-windows-msvc, i686-uwp-windows-gnu, i686-uwp-windows-msvc, x86_64-uwp-windows-gnu, x86_64-uwp-windows-msvc targets, armvx7-tse sa tsejoeng- -gnueabi, armv7-e sa tsejoeng-linux-musleabi, hexagon-e sa tsejoeng-linux-musl le riscv32i-e sa tsejoeng-none-elf. Boemo ba boraro bo kenyelletsa tšehetso ea mantlha, empa ntle le tlhahlobo e ikemetseng le phatlalatso ea meaho ea semmuso.

Source: opennet.ru

Eketsa ka tlhaloso