Weşana Zimanê Bernamesaziyê Rust 1.38

weşandin serbestberdana zimanê bernamesaziya pergalê Rûst 1.38, ji hêla projeya Mozilla ve hatî damezrandin. Ziman balê dikişîne ser ewlehiya bîranînê, rêveberiya bîranînê ya otomatîk peyda dike, û amûrek peyda dike ku meriv paraleliya peywira bilind bêyî karanîna berhevkarek çopê an dema xebitandinê peyda bike.

Rêvebiriya bîranîna otomatîkî ya Rust pêşdebiran ji manîpulasyona nîşankerê azad dike û li hember pirsgirêkên ku ji manîpulasyona bîranînê ya nizm derdikevin, wek gihandina bîranîna bêpere, veqetandinên nîşangirên betal, zêdekirina tampon û yên wekî wan diparêze. Rêvebirek pakêtê ji bo belavkirina pirtûkxaneyan, misogerkirina civîn û birêvebirina girêdanên ji hêla projeyê ve tê pêşve xistin. Bar, dihêle hûn pirtûkxaneyên ku ji bo bernameyê hewce ne bi yek klîk bistînin. Depoyek ji bo pirtûkxaneyên mêvandar tê piştgirî kirin crates.io.

sereke nûbûnên:

  • Modek berhevkirina boriyê (pipelined) lê zêde kir, ku tê de avakirina pakêtek kaxezek girêdayî dest pê dike gava ku metadata pêwendiyê peyda dibe, bêyî ku li benda qedandina berhevkirina wê bimîne. Dema ku pakêtek berhev dike, ne hewce ye ku girêdayî bi tevahî werin berhev kirin, tenê metadata, ku navnîşên cûrbecûr, girêdan û hêmanên derhanîn vedihewîne destnîşan dikin. Metadata di destpêka pêvajoya berhevkirinê de têne peyda kirin, ji ber vê yekê pakêtên girêdayî naha dikarin pir berê werin berhev kirin. Dema ku pakêtên yekane ava dikin, moda pêşniyarkirî bandorê li performansê nake, lê heke avahî pakêtên bi girêdanên şax ve bigire, dema avakirina giştî dikare% 10-20 kêm bibe;
  • Tespîtkirina karanîna nerast a fonksiyonan piştrast dike std :: mem :: bêdestpêkirin и std::mem::sifir. Mînakî, std::mem::uninisialized rehet e ku meriv zû bi zû rêzan biafirîne, lê ew berhevkerê dixapîne ji ber ku xuya dike ku ew hatî destpêkirin, lê di rastiyê de nirx bêdestpêk dimîne. Fonksîyona mem::unitialized jixwe wekî paşverû hatîye nîşankirin û tê pêşniyar kirin ku li şûna wê celebek navîn bikar bînin. MaybeUnit. Ji bo mem:: zeroed, ev fonksiyon dikare bi celebên ku nikarin nirxên sifir qebûl nakin re pirsgirêkan derxe.

    Ji bo arîkariya naskirina behremendiya nediyar, serbestberdana nû kontrolek lintê li berhevkerê zêde dike ku hin pirsgirêkan bi mem:: uninitiialized an mem:: zeroed destnîşan dike. Mînakî, hûn niha dema ku hûn hewl didin ku mem::unitialized an jî mem::sifirkirî bi tîpên &T û Box‹T› bikar bînin, xeletiyek distînin, ku tiştên nîşankerê ku nikarin nirxên nûl qebûl nekin nîşan didin;

  • Taybetmendiya "#[deprecated]" hate berfireh kirin da ku destûr bide ku pakêtên kelûmê wekî kevinbûyî bêne nîşankirin û ji bo jêbirina pêşerojê were plansaz kirin. Wekî Rust 1.38, ev taybetmendî dikare ji bo makroyan jî were bikar anîn;
  • Kapasîteya karanîna taybetmendiya "#[global_allocator]" di binmodulan de zêde kir;
  • Taybetmendiya zêdekirî std:: her:: type_name, ku destûrê dide te ku hûn navê celebê fêr bibin, ku dikare ji bo mebestên xeletkirinê kêrhatî be. Mînakî, di dema darvekirina bernameyê de hûn dikarin fêr bibin ka fonksiyonê ji bo çi celeb hatî gotin:

    fn gen_value‹T: Default>() -› T {
    println!("Destpêkirina nimûneyeke {}", std::any::type_name::‹T›());
    Bersiv::default()
    }

    fn main() {
    bila _: i32 = gen_value(); # "i32" dê were çap kirin
    bila _: String = gen_value(); # dê "alloc::string::String" çap bike
    }

  • Fonksiyonên berfireh ên pirtûkxaneya standard:
    • slice::{concat, connect, join} niha dikare ji bilî &T nirxa &[T] bigire;
    • "*const T" û "*mut T" niha nîşanker::Unpin;
    • "Arc‹[T]›" û "Rc‹[T]›" niha FromIterator‹T› bicîh dikin;
    • iter::{StepBy, Peekable, Take} naha DoubleEndedIterator bicîh bîne.
    • ascii::EscapeDefault Clone û Display pêk tîne.
  • Beşek nû ya API-yan veguhezîne kategoriya stabîl, tevî rêbazên ku hatine stabîlkirin
    • ‹*const T›::cast, ‹*mut T›::cast,
    • Duration::as_secs_f{32|64},
    • Duration::div_duration_f{32|64},
    • Duration::div_f{32|64},
    • Duration::from_secs_f{32|64},
    • Duration::mul_f{32|64},
    • operasyonên dabeşkirinê bi mayî
      div_euclid û rem_euclid ji bo hemî primitives;

  • Piştgiriyek ji bo diyarkirina vebijarka "--taybetmendî" gelek caran zêde kir da ku taybetmendiyên cihêreng di rêvebirê pakêta bargiriyê de çalak bike;
  • Berhevkar sêyemek peyda dike navîn piştgirî ji bo platformên armanc aarch64-uwp-windows-msvc, i686-uwp-windows-gnu, i686-uwp-windows-msvc, x86_64-uwp-windows-gnu, x86_64-uwp-windows-msvc-armancên nas-linux7 -gnueabi, armv7-nenas-linux-musleabi, hexagon-nenas-linux-musl û riscv32i-nenas-none-elf. Asta sêyem piştgiriya bingehîn pêk tîne, lê bêyî ceribandina otomatîk û weşandina avahiyên fermî.

Source: opennet.ru

Add a comment