Rust 1.54 programmēšanas valodas izlaidums

Iznācis Mozilla projekta dibinātās, bet tagad neatkarīgās bezpeļņas organizācijas Rust Foundation paspārnē izstrādātās sistēmas programmēšanas valodas Rust 1.54 izlaidums. Valoda koncentrējas uz atmiņas drošību, nodrošina automātisku atmiņas pārvaldību un nodrošina līdzekļus augsta uzdevumu paralēlisma sasniegšanai, neizmantojot atkritumu savācēju vai izpildlaiku (izpildlaiks tiek samazināts līdz standarta bibliotēkas pamata inicializēšanai un uzturēšanai).

Rust automātiskā atmiņas pārvaldība novērš kļūdas, manipulējot ar rādītājiem, un aizsargā pret problēmām, kas rodas no zema līmeņa atmiņas manipulācijām, piemēram, piekļuves atmiņas apgabalam pēc tā atbrīvošanas, nulles rādītāju novirzēm, bufera pārtēriņiem utt. Bibliotēku izplatīšanai, komplektēšanas nodrošināšanai un atkarību pārvaldībai projektā tiek izstrādāts Cargo pakotņu pārvaldnieks. Crates.io repozitorijs tiek atbalstīts bibliotēku mitināšanai.

Galvenie jauninājumi:

  • Pievienota iespēja izmantot funkcijām līdzīgus makro atribūtos (procedūras makro un makro, kas izveidoti, izmantojot makro_noteikumus!). Šādus makro no funkcijām atšķir ar simbolu “!” aiz nosaukuma (makro!(...)) un aizstājot makro avota tekstu, nevis ģenerējot funkcijas izsaukumu. Makro izsaukšana atribūtos var būt noderīga, lai komentāros iekļautu saturu no citiem failiem. Piemēram, lai ievietotu README faila saturu un skripta izpildes rezultātu, varat norādīt: #![doc = include_str!("README.md")] #[path = concat!(env!("OUT_DIR "), "/generated.rs" )] mod ģenerēts;
  • Wasm32 platformas iebūvētās kompilatora funkcijas (Intrinsics) ir stabilizētas, ļaujot WebAssembly izmantot SIMD instrukcijas. Lielākā daļa funkciju, piemēram, v128_bitselect, ir pieejamas "drošajā" režīmā, taču dažas funkcijas, kas darbojas ar rādītājiem (piemēram, v128_load), joprojām ir "nedrošas".
  • Ir atgriezusies noklusējuma pakāpeniskās kompilācijas izmantošana, kas ļauj atjaunot tikai mainītās koda daļas, kas var ievērojami samazināt laiku, kas nepieciešams projekta izveidei, veicot atkārtotu kompilēšanu pēc nelielu izmaiņu veikšanas. Laidienā 1.52.1 pakāpeniskā kompilācija tika atspējota slēptu kļūdu dēļ, kas parādījās pēc papildu pārbaudes pievienošanas datu ielādei no diska kešatmiņas.
  • Jauna API daļa ir pārvietota uz stabilo kategoriju, tostarp šādas stabilizētās:
      BTreeMap::into_keys
    • BTreeMap::into_values
    • HashMap::into_keys
    • HashMap::into_values
    • arch::wasm32
    • VecDeque::binary_search
    • VecDeque::binary_search_by
    • VecDeque::binary_search_by_key
    • VecDeque::partition_point
  • Kravas kokam ir pievienotas opcijas: "—apgriezt ", lai noņemtu pakotni no atkarības diagrammas, "—dziļums", lai atkarības kokā parādītu tikai noteiktā ligzdošanas līmeņa elementus, "—malas no-proc- makro”, lai paslēptu procesuālo makro atkarības.

Avots: opennet.ru

Pievieno komentāru