Нашри забони барномасозии Rust 1.67, ки аз ҷониби лоиҳаи Mozilla асос ёфтааст, аммо ҳоло таҳти сарпарастии созмони мустақили ғайритиҷоратии Rust Foundation таҳия шудааст, нашр шуд. Забон ба бехатарии хотира тамаркуз мекунад ва воситаҳоро барои ноил шудан ба параллелизми баланди кор ҳангоми канорагирӣ аз истифодаи коллектори партовҳо ва вақти корӣ таъмин мекунад (вақти кор то оғозкунии асосӣ ва нигоҳдории китобхонаи стандартӣ кам карда мешавад).
Усулҳои коркарди хотираи Rust таҳиякунандаро аз хатогиҳо ҳангоми коркарди нишонаҳо наҷот медиҳанд ва аз мушкилоте, ки дар натиҷаи коркарди хотираи сатҳи паст ба вуҷуд меоянд, ба монанди дастрасӣ ба минтақаи хотира пас аз озод шудани он, барҳам додани ишораҳои нул, изофаи буфер ва ғайра муҳофизат мекунад. Барои паҳн кардани китобхонаҳо, таъмин кардани сохтан ва идоракунии вобастагӣ, лоиҳа менеҷери бастаи боркашониро таҳия мекунад. Анбори crates.io барои хостинги китобхонаҳо дастгирӣ карда мешавад.
Бехатарии хотира дар Rust дар вақти тартибдиҳӣ тавассути санҷиши истинод, нигоҳ доштани моликияти объект, нигоҳ доштани мӯҳлати умри объект (миқёс) ва арзёбии дурустии дастрасии хотира ҳангоми иҷрои код таъмин карда мешавад. Rust инчунин муҳофизатро аз фаромадани ададҳо таъмин мекунад, пеш аз истифода оғозкунии ҳатмии арзишҳои тағирёбандаро талаб мекунад, хатогиҳоро дар китобхонаи стандартӣ беҳтар идора мекунад, консепсияи истинодҳо ва тағирёбандаҳоро ба таври нобаёнӣ татбиқ мекунад, чопкунии қавии статикиро барои кам кардани хатогиҳои мантиқӣ пешниҳод мекунад.
Навовариҳои асосӣ:
- Барои функсияҳои асинхронӣ бо Future:: Output, ҳоло имконпазир аст, ки эзоҳҳои "#[бояд истифода баред]", ки огоҳиро дар бар мегиранд, агар арзиши бозгашт сарфи назар карда шавад, ки ин барои муайян кардани хатогиҳое, ки аз фарзияи он, ки функсия арзишҳоро тағир медиҳад, кӯмак мекунад. ба ҷои баргардонидани арзиши нав. #[бояд_истифода баред] async fn bar() -> u32 {0} async fn caller() { bar().await; } огоҳӣ: баромади истифоданашудаи оянда аз ҷониби 'bar' баргардонида мешавад, ки бояд истифода шавад —> src/lib.rs:5:5 | 5 | бар().интизори; | ^^^^^^^^^^^ | = щайд: `#[огоҳӣ(unused_must_use)]' бо нобаёнӣ фаъол аст
- Татбиқи навбатҳои FIFO std::sync::mpsc (бисёристеъмолкунанда-истеъмолкунанда) нав карда шуд, ки ҳангоми нигоҳ доштани API қаблӣ ба истифодаи модули канали crossbeam гузаштааст. Татбиқи нав бо ҳалли як қатор мушкилот, иҷрои баландтар ва нигоҳдории коди соддашуда фарқ мекунад.
- Қисмати нави API ба категорияи устувор гузаронида шуд, аз ҷумла усулҳо ва татбиқи хислатҳо устувор карда шуданд:
- {integer}::checked_ilog
- {integer}::checked_ilog2
- {integer}::checked_ilog10
- {integer}::ilog
- {integer}::ilog2
- {integer}::ilog10
- NonZeroU*::ilog2
- NonZeroU*::ilog10
- NonZero*::BITS
- Аттрибути "const", ки имкони истифодаи онро дар ҳама гуна контекст ба ҷои доимӣ муайян мекунад, дар функсияҳо истифода мешавад:
- char::from_u32
- char :: аз_рақам
- char::to_digit
- core ::char ::from_u32
- аслӣ :: char :: аз_рақам
- Сатҳи сеюми дастгирӣ барои истифодаи Rust дар ядро татбиқ карда шуд Linux (linuxkernel), инчунин барои Sony PlayStation 1 (mipsel-sony-psx), PowerPC бо AIX (powerpc64-ibm-aix) ва платформаҳои QNX Neutrino RTOS (aarch64-unknown-nto-qnx710, x86_64-pc-nto-qnx710). Сатҳи сеюм дастгирии асосиро таъмин мекунад, аммо бе санҷиши автоматӣ, сохторҳои расмӣ ё тасдиқи сохтор.
Илова бар ин, ARM патчҳоеро нашр кардааст, ки истифодаи забони Rust-ро барои таҳияи драйверҳо ва модулҳои ядроӣ имкон медиҳанд. Linux, барои системаҳое, ки бар асоси меъмории AArch64 асос ёфтаанд, тартиб дода шудааст.
Манбаъ: opennet.ru
