Руст 1.62 Издание за програмски јазик

Објавено е објавувањето на програмскиот јазик за општа намена Rust 1.62, основан од проектот Mozilla, но сега развиен под покровителство на независната непрофитна организација Rust Foundation. Јазикот се фокусира на безбедноста на меморијата и обезбедува средства за постигнување на висок паралелизам на работните места, притоа избегнувајќи употреба на собирач на ѓубре и време на работа (времето на работа е сведено на основна иницијализација и одржување на стандардната библиотека).

Методите за ракување со меморијата на Rust го спасуваат развивачот од грешки при манипулирање со покажувачите и го штитат од проблеми што се јавуваат поради ракување со меморијата на ниско ниво, како што се пристап до мемориската област откако ќе се ослободи, дереференцирање на нула покажувачи, пречекорувања на баферот итн. За да се дистрибуираат библиотеки, да се обезбедат градби и да управуваат со зависности, проектот го развива менаџерот на пакети Cargo. Репозиториумот crates.io е поддржан за хостирање библиотеки.

Безбедноста на меморијата е обезбедена во Rust за време на компајлирањето преку проверка на референци, следење на сопственоста на објектот, следење на животниот век на објектите (обеми) и проценка на исправноста на пристапот до меморијата за време на извршувањето на кодот. Rust исто така обезбедува заштита од прелевање на цели броеви, бара задолжителна иницијализација на вредностите на променливите пред употреба, подобро се справува со грешките во стандардната библиотека, стандардно го применува концептот на непроменливи референци и променливи, нуди силно статичко пишување за да се минимизираат логичките грешки.

Главните иновации:

  • Управувачот со пакети „cargo“ ја нуди командата „add“, која ви овозможува да додадете нови зависности во манифестот Cargo.toml или да ги промените постоечките зависности од командната линија. Командата, исто така, ви овозможува да наведете поединечни карактеристики и верзии, на пример: карго додадете serde — карактеристиките произлегуваат товарот додадете nom@5
  • Додадена е способност да се користи „#[изведува(стандардно)]“ со нумери во кои стандардната опција е дефинирана со помош на атрибутот „#[стандардно]“. #[изведи(стандардно)] enum Можеби { #[стандардно] Ништо, нешто (Т), }
  • На платформата Линукс, се користи покомпактна и побрза имплементација на механизмот за синхронизација на Mutex, базирана на употребата на футекси обезбедени од кернелот на Линукс. За разлика од претходно користената имплементација базирана на библиотеката pthreads, новата верзија користи само 5 бајти наместо 40 за складирање на состојбата Mutex. Слично на тоа, механизмите за заклучување Condvar и RwLock се префрлени на futex.
  • Имплементирано е второ ниво на поддршка за целната платформа x86_64-unknown-none, дизајнирано да генерира извршни датотеки што можат да работат без оперативен систем. На пример, наведената целна платформа може да се користи кога се пишуваат компоненти на јадрото. Второто ниво на поддршка вклучува гаранција за склопување.
  • Третото ниво на поддршка е имплементирано за платформите aarch64-pc-windows-gnullvm и x86_64-pc-windows-gnullvm. Третото ниво вклучува основна поддршка, но без автоматско тестирање, објавување официјални изданија или проверка дали кодот може да се изгради.
  • Нов дел од API е преместен во категоријата стабилни, вклучувајќи ги и методите и имплементацијата на карактеристиките се стабилизирани:
    • бул::тогаш_некои
    • f32::total_cmp
    • f64::total_cmp
    • Стдин::линии
    • windows::CommandExt::raw_arg
    • импл стандардна вредност за AssertUnwindSafe
    • Од > за Rc
    • Од > за Arc<[u8]>
    • FusedIterator за EncodeWide

    Извор: opennet.ru

Додадете коментар