Mwepụta asụsụ mmemme nchara 1.37

bipụtara mwepụta asụsụ mmemme sistemụ Nchara 1.37, nke Mozilla rụpụtara ya. Asụsụ a na-elekwasị anya na nchekwa ebe nchekwa, na-enye njikwa ebe nchekwa akpaka, ma na-enye ụzọ iji nweta ọrụ dị elu na-enweghị iji ihe mkpofu ma ọ bụ oge ịgba ọsọ.

Njikwa ebe nchekwa akpaghị aka nke Rust na-ahapụ onye nrụpụta na ntule ntụaka ma na-echebekwa pụọ ​​na nsogbu na-esite na ngbanwe ebe nchekwa dị ala, dị ka ịnweta ebe nchekwa anaghị akwụghị ụgwọ, ndebiri pointer null, buffer overruns, na ihe ndị ọzọ. A na-emepụta onye njikwa ngwugwu iji kesaa ọba akwụkwọ, hụ na mgbakọ na jikwaa ndabere site na ọrụ ahụ. ibu, na-enye gị ohere ịnweta ụlọ akwụkwọ ndị achọrọ maka mmemme ahụ n'otu pịa. A na-akwado ebe nchekwa iji kwado ọba akwụkwọ crates.io.

Main ihe ọhụrụ:

  • Na rustc nchịkọta enyere nkwado maka njikarịcha dabere na nsonaazụ profaịlụ koodu (PGO, Nkwalite eduzi profaịlụ),
    na-enye gị ohere ịmepụta koodu kachasị mma na-adabere na nyocha nke ọnụ ọgụgụ na-agbakọ n'oge mmemme mmemme. Iji mepụta profaịlụ, a na-enye ọkọlọtọ "-C profile-generate", yana iji profaịlụ n'oge mgbakọ - "-C profile-use" (na mbụ, a na-ejikọta mmemme ahụ na ọkọlọtọ mbụ, na-agbagharị gburugburu, na mgbe ịmepụtara ya. profaịlụ, a na-ejikọta ya na ọkọlọtọ nke abụọ);

  • Mgbe ị na-eme iwu "ibu ọsọ", nke dị mma maka iji ngwa ngwa nyocha ngwa njikwa, agbakwunyere ikike ịhọrọ faịlụ nwere ike ịme ngwa ngwa ma ọ bụrụ na enwere ọtụtụ faịlụ nwere ike ime na ngwugwu. A na-ekpebi faịlụ ndabara nke a ga-egbu site na ntuziaka ndabara na-agba ọsọ na ngalaba [ngwugwu] nwere ngwugwu ngwugwu, nke na-enye gị ohere izere ịkọwapụta aha faịlụ ahụ n'ụzọ doro anya site na ọkọlọtọ "-bin" oge ọ bụla ị na-agba ọsọ "ibu ọsọ";
  • Iwu “onye na-ere ibu”, ewetere na mbụ dị ka ngwugwu iche. Iwu a na-enye gị ohere ịhazi ọrụ na nnomi nke ịdabere na mpaghara - mgbe emechara “onye na-ere ibu”, a na-ebudata koodu iyi niile nke ndabere ọrụ ahụ site na crates.io gaa na ndekọ mpaghara, nke enwere ike iji rụọ ọrụ na-enweghị ịnweta igbe. io (mgbe ịmechara iwu ahụ, a na-egosi ihe ngosi maka ịgbanwe nhazi iji jiri ndekọ maka wuo). Ejirilarị njirimara a iji hazie nnyefe nke rustc compiler na nkwakọ ngwaahịa niile dabere na otu ebe ntọhapụ;
  • Ọ ga-ekwe omume ugbu a ịmepụta njikọ na nhọrọ enum site na iji ụdị aliases (dịka ọmụmaatụ, n'ime ahụ nke ọrụ "fn increment_or_zero(x: ByteOption) ị nwere ike dee "ByteOption :: Ọ dịghị => 0"), ụdị mgbako na-arụ ọrụ (‹‹ MyType‹.. ››:: nhọrọ => N) ma ọ bụ nweta onwe (na blocks c &self ị nwere ike dee "Self :: Quarter => 25");
  • Agbakwunyere ikike ịmepụta ihe na-enweghị aha na macros. Kama ịkọwa aha mmewere na "const", ị nwere ike ugbu a iji agwa "_" họrọ njirimara na-adịghị emegharị ugboro ugboro, na-ezere esemokwu aha mgbe ị na-akpọ macro ọzọ;
  • Agbakwunyere ike iji "#[repr(align(N))" àgwà na enums na-eji syntax yiri ịkọwapụta usoro AlignN‹T› na nhazi wee jiri AlignN‹MyEnum›;
  • Atụgharịla akụkụ ọhụrụ nke API gaa na ngalaba kwụsiri ike, gụnyere BufReader:: ihe nchekwa, BufWriter:: ihe nchekwa, na
    Cell::site na_mut,
    Cell::dị ka akụkụ_cell,
    DoubleEndedIterator::nth_azụ,
    Nhọrọ ::xor
    {i,u}{8,16,64,128,size}::reverse_bits, Mwechi::reverse_bits na
    iberi :: copy_n'ime.

Ọzọkwa, enwere ike ịdeba ya mmalite nke ule oru a Async-std, nke na-enye ụdị asynchronous dị iche iche nke ọba akwụkwọ ọkọlọtọ Rust (ọdụ ụgbọ mmiri std, nke a na-enye oghere niile na ụdị async ma dị njikere maka iji async/echere syntax).

isi: opennet.ru

Tinye a comment