Rust 1.61 programmēšanas valodas izlaidums

Publicēts vispārējas nozīmes programmēšanas valodas Rust 1.61 izlaidums, kas dibināts ar Mozilla projektu, bet tagad izstrādāts neatkarīgās bezpeļņas organizācijas Rust Foundation paspārnē. Valoda koncentrējas uz atmiņas drošību un nodrošina līdzekļus, lai sasniegtu augstu darba paralēlismu, vienlaikus izvairoties no atkritumu savācēja un izpildlaika izmantošanas (izpildlaiks tiek samazināts līdz standarta bibliotēkas pamata inicializēšanai un uzturēšanai).

Rust atmiņas apstrādes metodes pasargā izstrādātāju no kļūdām, manipulējot ar rādītājiem, un aizsargā pret problēmām, kas rodas zema līmeņa atmiņas apstrādes dēļ, piemēram, piekļūšana atmiņas apgabalam pēc tā atbrīvošanas, nulles rādītāju atsauču atcelšana, bufera pārtēriņi utt. Lai izplatītu bibliotēkas, nodrošinātu būvējumus un pārvaldītu atkarības, projekts izstrādā Cargo pakotņu pārvaldnieku. Crates.io repozitorijs tiek atbalstīts bibliotēku mitināšanai.

Atmiņas drošība tiek nodrošināta Rust kompilēšanas laikā, pārbaudot atsauces, sekojot līdzi objekta īpašumtiesībām, sekojot līdzi objektu kalpošanas laikam (tvērumam) un novērtējot atmiņas piekļuves pareizību koda izpildes laikā. Rūsa arī nodrošina aizsardzību pret veselu skaitļu pārpildīšanu, pieprasa obligātu mainīgo vērtību inicializāciju pirms lietošanas, labāk apstrādā kļūdas standarta bibliotēkā, pēc noklusējuma piemēro nemainīgu atsauču un mainīgo jēdzienu, piedāvā spēcīgu statisko rakstīšanu, lai samazinātu loģiskās kļūdas.

Galvenie jauninājumi:

  • No galvenās funkcijas ir iespējams definēt savus atgriešanas kodus. Sākotnēji Rust galvenā funkcija varēja atgriezt tikai veidu "()" (vienība), kas vienmēr norādīja uz veiksmīgu izejas statusu, ja vien izstrādātājs nebija skaidri izsaucis funkciju "process::exit(code)". Rust 1.26, galvenajā funkcijā izmantojot nestabilo izbeigšanas pazīmi, bija iespējams atgriezt vērtības “Ok” un “Err”, kas atbilst kodiem EXIT_SUCCESS un EXIT_FAILURE programmās C. Operētājsistēmā Rust 1.61 beigu iezīme ir padarīta stabila, un ir piedāvāts atsevišķs ExitCode tips, lai attēlotu konkrētu atgriešanas kodu, kas abstrahē platformai raksturīgos atgriešanas veidus, nodrošinot gan iepriekš definētas konstantes SUCCESS un FAILURE, gan metodi From. lai atgrieztu patvaļīgu atgriešanas kodu . izmantot std::process::ExitCode; fn main() -> ExitCode { if !check_foo() { return ExitCode::from(8); } Izejas kods::SUCCESS }
  • Stabilizētas funkciju papildu iespējas, kas definētas, izmantojot izteicienu “const fn”, kuras var saukt ne tikai par regulārām funkcijām, bet arī izmantot jebkurā kontekstā konstantu vietā. Šīs funkcijas tiek aprēķinātas kompilēšanas laikā, nevis izpildes laikā, tāpēc uz tām attiecas noteikti ierobežojumi, piemēram, iespēja lasīt tikai no konstantēm. Jaunajā versijā const funkcijās ir atļautas pamatoperācijas ar funkciju rādītājiem (rādītāju izveide, nodošana un liešana ir atļauta, bet ne funkcijas izsaukšana pēc rādītāja); īpašību robežas vispārīgiem const funkciju parametriem, piemēram, T: Copy; dinamiski nosūtāmas pazīmes (dyn Pazīme); impl Iezīmju tipi funkciju argumentiem un atgriešanas vērtībām.
  • Straume apstrādā Stdin, Stdout un Stderr formātā std::io tagad ir statisks kalpošanas laiks (“statisks”), kad tas ir bloķēts, ļaujot veidot tādas konstrukcijas kā “let out = std::io::stdout().lock();” ar roktura iegūšanu un slēdzenes iestatīšanu vienā izteiksmē.
  • Jauna API daļa ir pārvietota uz stabilo kategoriju, tostarp ir stabilizētas pazīmju metodes un ieviešanas:
    • Pin::static_mut
    • Pin::static_ref
    • Vec::retain_mut
    • VecDeque::retain_mut
    • Rakstīt kursoram
    • std::os::unix::net::SocketAddr::from_pathname
    • std::process::ExitCode
    • std::process::Izbeigšana
    • std::thread::JoinHandle::is_finished
  • Atribūts "const", kas nosaka iespēju to izmantot jebkurā kontekstā konstantu vietā, tiek izmantots funkcijās:
    • ::offset un ::offset
    • ::wrapping_offset un ::wrapping_offset
    • ::add un ::add
    • ::sub un ::sub
    • ::wrapping_add un ::wrapping_add
    • ::wrapping_sub un ::wrapping_sub
    • ::as_mut_ptr
    • ::as_ptr_range
    • ::as_mut_ptr_range

Turklāt varat atzīmēt rakstu “Rust: A Critical Retrospective” ar Rust valodas iespaidu kopsavilkumu pēc tam, kad tajā tika ierakstīti 100 tūkstoši koda rindu, izstrādājot programmaparatūrā izmantoto Xous mikrokodola operētājsistēmu. Trūkumi ir grūti saprotama sintakse, valodas nepilnīgums un nepārtraukta attīstība, atkārtojamu būvējumu trūkums, tipiskas problēmas ar atkarības uzticēšanos Crates.io un nepieciešamība saglabāt noteiktu disciplīnu, lai rakstītu drošu kodu. Funkcijas, kas pārsniedza cerības, ietver rīkus koda pārveidošanai un ātras prototipēšanas laikā pievienoto "uzlauzumu" pārstrādei.

Avots: opennet.ru

Pievieno komentāru