Rust 1.37 programmēšanas valodas izlaidums

publicēts sistēmas programmēšanas valodas izlaidums 1.37. rūsa, ko dibināja Mozilla projekts. Valoda koncentrējas uz atmiņas drošību, nodrošina automātisku atmiņas pārvaldību un nodrošina iespēju sasniegt augstu uzdevumu paralēlismu, neizmantojot atkritumu savācēju vai izpildlaiku.

Rust automātiskā atmiņas pārvaldība atbrīvo izstrādātāju no manipulācijām ar rādītāju un aizsargā pret problēmām, kas rodas no zema līmeņa atmiņas manipulācijām, piemēram, pēc brīvas piekļuves atmiņai, nulles rādītāja atsauču, bufera pārtēriņu un tamlīdzīgi. Tiek izstrādāts pakotņu pārvaldnieks, lai izplatītu bibliotēkas, nodrošinātu montāžu un pārvaldītu projekta atkarības. krava, kas ļauj ar vienu klikšķi iegūt programmai nepieciešamās bibliotēkas. Repozitorijs tiek atbalstīts bibliotēku mitināšanai crates.io.

Galvenais jauninājumiem:

  • Rustc kompilatorā nodrošināta atbalsts optimizācijai, pamatojoties uz koda profilēšanas rezultātiem (PGO, profila vadīta optimizācija),
    kas ļauj ģenerēt optimālāku kodu, pamatojoties uz programmas izpildes laikā uzkrātās statistikas analīzi. Profila ģenerēšanai tiek nodrošināts karogs “-C profile-generate”, bet profila izmantošanai montāžas laikā – “-C profile-use” (sākotnēji programma tiek samontēta ar pirmo karogu, iet apkārt un pēc izveidošanas profilu, tas ir samontēts ar otro karogu);

  • Izpildot komandu “cargo run”, kas ir ērti lietojama ātrai konsoles lietojumprogrammu testēšanai, ir pievienota iespēja automātiski atlasīt izpildāmo failu palaišanai, ja pakotnē ir vairāki izpildāmie faili. Noklusējuma izpildāmais fails tiek noteikts, izmantojot noklusējuma palaišanas direktīvu sadaļā [package] ar pakotnes parametriem, kas ļauj izvairīties no precīzas faila nosaukuma norādīšanas, izmantojot karodziņu “-bin” katru reizi, kad palaižat “cargo run”;
  • Komanda “kravas pārdevējs”, kas iepriekš tika piegādāta kā atsevišķs iepakojums. Komanda ļauj organizēt darbu ar lokālo atkarību kopiju - pēc “kravas pārdevēja” izpildes visi projekta atkarību pirmkodi tiek lejupielādēti no crates.io lokālajā direktorijā, ko pēc tam var izmantot darbam, nepiekļūstot kastēm. io (pēc komandas izpildes tiek parādīts padoms konfigurācijas maiņai, lai izmantotu direktoriju būvēšanai). Šī funkcija jau tiek izmantota, lai organizētu rustc kompilatora piegādi ar visu atkarību iesaiņošanu vienā arhīvā ar izlaidumu;
  • Tagad ir iespējams izveidot saites uz enum opcijām, izmantojot tipa aizstājvārdus (piemēram, funkcijas “fn increment_or_zero(x: ByteOption) pamattekstā var norādīt “ByteOption::None => 0”), tipa aprēķinu konstrukcijas (‹ MyType‹.. ››::opcija => N) vai Pašpiekļuves (blokos c &self var norādīt “Self::Ceturksnis => 25”);
  • Pievienota iespēja izveidot nenosauktas konstantes makro. Tā vietā, lai definētu elementa nosaukumu "const", tagad varat izmantot rakstzīmi "_", lai dinamiski atlasītu identifikatoru, kas neatkārtojas, izvairoties no nosaukumu konfliktiem, atkārtoti izsaucot makro;
  • Pievienota iespēja izmantot atribūtu "#[repr(align(N))" ar enums, izmantojot sintaksi, kas līdzīga struktūras AlignN‹T› definēšanai ar līdzināšanu un pēc tam izmantojot AlignN‹MyEnum›;
  • Jauna API daļa ir pārvietota uz stabilo kategoriju, tostarp BufReader::buffer, BufWriter::buffer un
    Šūna::from_mut,
    Šūna::as_slice_of_cells,
    DoubleEndedIterator::nth_back,
    Opcija::xor
    {i,u}{8,16,64,128,size}::reverse_bits, Wrapping::reverse_bits un
    šķēle::copy_within.

Turklāt var atzīmēt testēšanas sākums projekts Async-std, kas piedāvā Rust standarta bibliotēkas asinhrono variantu (std bibliotēkas ports, kurā visas saskarnes tiek piedāvātas asinhronā versijā un ir gatavas lietošanai ar async/await sintaksi).

Avots: opennet.ru

Pievieno komentāru