Weşana Zimanê Bernamesaziyê Rust 1.58

Serbestberdana zimanê bernamesaziya gelemperî Rust 1.58, ku ji hêla projeya Mozilla ve hatî damezrandin, lê naha di bin banê rêxistina ne-qezenc a serbixwe Rust Foundation de hatî pêşve xistin, hate weşandin. Ziman balê dikişîne ser ewlehiya bîranînê, rêveberiya bîranînê ya otomatîkî peyda dike, û amûran peyda dike ku meriv paraleliya peywira bilind bêyî karanîna berhevkarek çopê an dema xebitandinê peyda bike (dema xebitandinê ji destpêkirina bingehîn û domandina pirtûkxaneya standard re kêm dibe).

Rêvebiriya bîranîna otomatîkî ya Rust di dema manîpulekirina nîşankeran de xeletiyan ji holê radike û li hember pirsgirêkên ku ji manîpulasyona bîranînê ya nizm derdikevin diparêze, wek mînak gihîştina herêmek bîranînê piştî ku ew azad bû, veqetandinên nîşangirên betal, zêdekirina tampon, hwd. Ji bo belavkirina pirtûkxaneyan, misogerkirina civîn û birêvebirina pêwendiyan, proje rêveberê pakêtê Cargo pêşve dike. Depoya crates.io ji bo pirtûkxaneyên mêvandar têne piştgirî kirin.

Nûvekirinên sereke:

  • Di blokên formatkirina rêzê de, ji xeynî şiyana ku berê peyda bû ji bo veguheztina guhêrbarên ku bi eşkereyî li dû rêzek ji hêla hejmar û navan ve hatî navnîş kirin, bi zêdekirina îfadeya "{identifier}" li rêzê, şiyana veguheztina nasnameyên keyfî tê pêkanîn. Mînak: // Avakirinên ku berê hatine piştgirîkirin: println!("Silav, {}!", get_person()); println!("Silav, {0}!", get_person()); println!("Silav, {kes}!", person = get_person()); // niha hûn dikarin destnîşan bikin bila kesê = get_person(); println!("Silav, {kes}!");

    Nasname dikarin rasterast di vebijarkên formatkirinê de jî bêne diyar kirin. bila (firahî, rastbûn) = get_format(); ji bo (nav, xal) di get_scores() { println!("{name}: {score:width$.precision$}"); }

    Veguheztina nû di hemî makroyên ku pênasekirina formata rêzikê piştgirî dikin, ji bilî makroya "panîk!" dixebite. di guhertoyên 2015 û 2018 yên zimanê Rust de, ku tê de panîk!("{ident}") wekî rêzek birêkûpêk tê hesibandin (di Rust 2021 de cîgir kar dike).

  • Tevgera std::pêvajo::Struktura fermanê ya li ser platforma Windows-ê hate guheztin da ku dema ku fermanan bicîh tîne, ji ber sedemên ewlehiyê, ew êdî di pelrêça heyî de li pelên îcrakar nagere. Pelrêça heyî tê derxistin ji ber ku heke bername di pelrêçiyên nebawer de werin xebitandin (CVE-2021-3013) dikare ji bo pêkanîna koda xirab were bikar anîn. Mantiqa nû ya vedîtina îcrakar lêgerîna pelrêça Rust, pelrêça serîlêdanê, pelrêça pergala Windows, û pelrêçên ku di guhêrbara jîngehê PATH de hatine destnîşan kirin vedihewîne.
  • Pirtûkxaneya standard hejmara fonksiyonên bi "#[divê_bikaranîna]" hatine nîşankirin berfireh kiriye da ku heke nirxa vegerê neyê paşguh kirin hişyariyek derxîne, ku ev yek dibe alîkar ku xeletiyên ku ji ber texmînkirina fonksiyonek dê nirxan biguhezîne li şûna ku nirxek nû vegerîne nas bike.
  • Parçeyek nû ya API-yê hate veguheztin kategoriya îstîqrar, di nav de rêbaz û pêkanînên taybetmendiyan hatine stabîlkirin:
    • Metadata::is_symlink
    • Rê::is_symlink
    • {integer}::saturating_div
    • Vebijêrk::unwrap_unchecked
    • Encam::unwrap_unchecked
    • Encam::unwrap_err_unchecked
  • Taybetmendiya "const", ku îmkana karanîna wê di her çarçovê de li şûna domdar diyar dike, di fonksiyonan de tê bikar anîn:
    • Demjimêr:: nû
    • Duration::checked_add
    • Duration::saturating_add
    • Duration::checked_sub
    • Duration::saturating_sub
    • Duration::checked_mul
    • Duration::saturating_mul
    • Duration::checked_div
  • Destûra jêbirina nîşangirên "*const T" di çarçoveyên "const" de heye.
  • Di gerînendeyê pakêta Cargo de, qada rust_version li metadata pakêtê, û vebijarka "--message-format" li fermana "sazkirina bargiraniyê" hate zêdekirin.
  • Berhevkar piştgirîyê ji bo mekanîzmaya parastinê ya CFI (Control Flow Integrity) pêk tîne, ku berî her bangek nerasterast kontrolan lê zêde dike da ku hin şêwazên tevgerên nediyar ên ku dibe sedema binpêkirina fermana darvekirinê ya normal (herikîna kontrolê) wekî encama bikaranîna îstismarên ku nîşangirên ku di bîranînê de li ser fonksiyonan hatine hilanîn diguhezînin.
  • Berhevkar ji bo guhertoyên 5 û 6-ê yên formata berhevdana vegirtina LLVM piştgirî zêde kiriye, ku ji bo nirxandina vegirtina kodê di dema ceribandinê de tê bikar anîn.
  • Di berhevkerê de, hewcedariyên ji bo guhertoya hindiktirîn a LLVM heya LLVM 12 têne rakirin.
  • Asta sêyemîn a piştgirî ji bo platforma x86_64-unknown-none hate bicîh kirin. Asta sêyemîn piştgirîya bingehîn digire, lê bêyî ceribandina otomatîk, weşandina avahiyên fermî, an kontrolkirina ka kod dikare were çêkirin.

Wekî din, em dikarin weşandina Microsoft-ê ya serbestberdana Rust ji bo pirtûkxaneyên Windows 0.30, ku dihêle hûn zimanê Rust bikar bînin da ku serîlêdanan ji bo Windows OS-ê pêşve bibin. Set du pakêtên kulikê (windows û windows-sys) vedihewîne, bi navgîniya ku hûn dikarin di bernameyên Rust de xwe bigihînin Win API-yê. Koda ji bo piştgiriya API-ê bi dînamîk ji metadata ku API-ê vedibêje tê hilberandin, ku dihêle hûn ne tenê ji bo bangên Win API-ya heyî, lê ji bo bangên ku dê di pêşerojê de xuya bibin piştgirî bicîh bikin. Guhertoya nû ji bo platforma armancê UWP (Platforma Windows ya gerdûnî) piştgirî zêde dike û celebên Handle û Debug bicîh tîne.

Source: opennet.ru

Add a comment