Rust 1.62 Варақаи забони барномасозӣ

Нашри забони барномасозии Rust 1.62, ки аз ҷониби лоиҳаи Mozilla асос ёфтааст, аммо ҳоло таҳти сарпарастии созмони мустақили ғайритиҷоратии Rust Foundation таҳия шудааст, нашр шуд. Забон ба бехатарии хотира тамаркуз мекунад ва воситаҳоро барои ноил шудан ба параллелизми баланди кор ҳангоми канорагирӣ аз истифодаи коллектори партовҳо ва вақти корӣ таъмин мекунад (вақти кор то оғозкунии асосӣ ва нигоҳдории китобхонаи стандартӣ кам карда мешавад).

Усулҳои коркарди хотираи Rust таҳиякунандаро аз хатогиҳо ҳангоми коркарди нишонаҳо наҷот медиҳанд ва аз мушкилоте, ки дар натиҷаи коркарди хотираи сатҳи паст ба вуҷуд меоянд, ба монанди дастрасӣ ба минтақаи хотира пас аз озод шудани он, барҳам додани ишораҳои нул, изофаи буфер ва ғайра муҳофизат мекунад. Барои паҳн кардани китобхонаҳо, таъмин кардани сохтан ва идоракунии вобастагӣ, лоиҳа менеҷери бастаи боркашониро таҳия мекунад. Анбори crates.io барои хостинги китобхонаҳо дастгирӣ карда мешавад.

Бехатарии хотира дар Rust дар вақти тартибдиҳӣ тавассути санҷиши истинод, нигоҳ доштани моликияти объект, нигоҳ доштани мӯҳлати умри объект (миқёс) ва арзёбии дурустии дастрасии хотира ҳангоми иҷрои код таъмин карда мешавад. Rust инчунин муҳофизатро аз фаромадани ададҳо таъмин мекунад, пеш аз истифода оғозкунии ҳатмии арзишҳои тағирёбандаро талаб мекунад, хатогиҳоро дар китобхонаи стандартӣ беҳтар идора мекунад, консепсияи истинодҳо ва тағирёбандаҳоро ба таври нобаёнӣ татбиқ мекунад, чопкунии қавии статикиро барои кам кардани хатогиҳои мантиқӣ пешниҳод мекунад.

Навовариҳои асосӣ:

  • Менеҷери бастаи "бор" фармони "илова кардан"-ро пешниҳод мекунад, ки ба шумо имкон медиҳад вобастагии навро ба манифести Cargo.toml илова кунед ё вобастагии мавҷударо аз сатри фармон тағир диҳед. Фармон инчунин ба шумо имкон медиҳад, ки хусусиятҳо ва версияҳои инфиродӣ муайян кунед, масалан: боркашонӣ илова серде — хусусиятҳо ҳосили бор илова ном@5
  • Имконияти истифодаи "#[дарё (Стандарт)]" бо рақамҳо, ки дар он имконоти пешфарз бо истифода аз атрибути "#[default]" муайян карда шудааст, илова карда шуд. #[дастовард(Пешфарз)] enum Шояд { #[пешфарз] Ҳеҷ чиз, чизе(T), }
  • Дар платформаи Linux дар асоси истифодаи футексҳои аз ҷониби ядрои Linux пешниҳодшуда татбиқи паймонтар ва зудтари механизми синхронизатсияи Mutex истифода мешавад. Баръакси амалисозии қаблан истифодашуда дар асоси китобхонаи pthreads, версияи нав барои нигоҳ доштани ҳолати Mutex ба ҷои 5 танҳо 40 байт истифода мебарад.Ба ҳамин монанд, механизмҳои қулфкунии Condvar ва RwLock ба futex интиқол дода шудаанд.
  • Сатҳи дуюми дастгирӣ барои платформаи мақсадноки x86_64-unknown-none амалӣ карда шуд, ки барои тавлиди файлҳои иҷрошаванда, ки бидуни системаи амалиётӣ кор карда метавонанд, тарҳрезӣ шудааст. Масалан, платформаи мақсадноки муайяншударо ҳангоми навиштани ҷузъҳои ядро ​​истифода бурдан мумкин аст. Сатҳи дуюми дастгирӣ кафолати васлкуниро дар бар мегирад.
  • Сатҳи сеюми дастгирӣ барои платформаҳои aarch64-pc-windows-gnullvm ва x86_64-pc-windows-gnullvm амалӣ карда шудааст. Сатҳи сеюм дастгирии асосиро дар бар мегирад, аммо бидуни санҷиши автоматикунонидашуда, нашри сохторҳои расмӣ ё тафтиши он, ки оё код сохта мешавад.
  • Қисмати нави API ба категорияи устувор гузаронида шуд, аз ҷумла усулҳо ва татбиқи хислатҳо устувор карда шуданд:
    • bool :: then_some
    • f32 :: total_cmp
    • f64 :: total_cmp
    • Stdin::хатҳо
    • windows ::CommandExt ::raw_arg
    • ишорат арзиши пешфарз барои AssertUnwindSafe
    • Аз > барои Rc
    • Аз > барои Arc<[u8]>
    • FusedIterator барои EncodeWide

    Манбаъ: opennet.ru

Илова Эзоҳ