Нашри забони барномасозии Rust 1.63, ки аз ҷониби лоиҳаи Mozilla асос ёфтааст, аммо ҳоло таҳти сарпарастии созмони мустақили ғайритиҷоратии Rust Foundation таҳия шудааст, нашр шуд. Забон ба бехатарии хотира тамаркуз мекунад ва воситаҳоро барои ноил шудан ба параллелизми баланди кор ҳангоми канорагирӣ аз истифодаи коллектори партовҳо ва вақти корӣ таъмин мекунад (вақти кор то оғозкунии асосӣ ва нигоҳдории китобхонаи стандартӣ кам карда мешавад).
Усулҳои коркарди хотираи Rust таҳиякунандаро аз хатогиҳо ҳангоми коркарди нишонаҳо наҷот медиҳанд ва аз мушкилоте, ки дар натиҷаи коркарди хотираи сатҳи паст ба вуҷуд меоянд, ба монанди дастрасӣ ба минтақаи хотира пас аз озод шудани он, барҳам додани ишораҳои нул, изофаи буфер ва ғайра муҳофизат мекунад. Барои паҳн кардани китобхонаҳо, таъмин кардани сохтан ва идоракунии вобастагӣ, лоиҳа менеҷери бастаи боркашониро таҳия мекунад. Анбори crates.io барои хостинги китобхонаҳо дастгирӣ карда мешавад.
Бехатарии хотира дар Rust дар вақти тартибдиҳӣ тавассути санҷиши истинод, нигоҳ доштани моликияти объект, нигоҳ доштани мӯҳлати умри объект (миқёс) ва арзёбии дурустии дастрасии хотира ҳангоми иҷрои код таъмин карда мешавад. Rust инчунин муҳофизатро аз фаромадани ададҳо таъмин мекунад, пеш аз истифода оғозкунии ҳатмии арзишҳои тағирёбандаро талаб мекунад, хатогиҳоро дар китобхонаи стандартӣ беҳтар идора мекунад, консепсияи истинодҳо ва тағирёбандаҳоро ба таври нобаёнӣ татбиқ мекунад, чопкунии қавии статикиро барои кам кардани хатогиҳои мантиқӣ пешниҳод мекунад.
Навовариҳои асосӣ:
- API-и std::thread::scope илова карда шуд, ки имкон медиҳад, ки риштаҳои фарогир. Баръакси риштаҳои қаблан дастрас, API-и нави std::thread::scope ба гирифтани маълумоти ғайристатикӣ имкон медиҳад, дар ҳоле ки риштаҳое, ки бо истифода аз std::thread::spawn API-и классикӣ сохта шудаанд, бояд ҳамаи аргументҳои гузаштаро дошта бошанд ва тағирёбандаҳои гирифташударо ба даст оварда натавонистанд. API std::thread::scope кафолат медиҳад, ки ҳама гуна риштаҳои тавлидшуда пеш аз баргардонидани маълумот қатъ мешаванд ва сатҳи зарурии бехатариро барои механизми қарз таъмин мекунанд.
- Навъҳои нави ҳатмии тавсифи файл, BorrowedFd ва OwnedFd, пешниҳод карда мешаванд, ки қарзгирӣ ва моликиятро таъмин мекунанд. Навъҳо бо "#[repr(шаффоф)] ишора шудаанд, ки ба онҳо имкон медиҳад, ки мустақиман дар пайвандҳои берунии C бо моликият истифода шаванд.
- Имконияти занг задан ба Condvar::new, Mutex::new ва RwLock::new дар контекстҳои доимӣ барои эҷод кардани арзишҳои глобалии статикии Mutex, RwLock ва Condvar бидуни истифодаи бастаҳои lazy_static.
- Барои функсияҳои навъи fn foo (арзиш: T, f: impl Copy) синтаксиси монанди "foo:: иҷозат дода шудааст (3, 3)», ки намуди умумиро равшан нишон медиҳад.
- Гузариш ба техникаи NLL (Non-Lexical Lifetimes) барои ошкор кардани масъалаҳои қарздиҳии тағйирёбанда анҷом ёфт. NLL баҳисобгирии муҳосибӣ дар сатҳи маҷмӯи нишондиҳандаҳо дар графи ҷараёни иҷроро анҷом медиҳад, ки сифати чеки қарзро беҳтар мекунад ва имкон медиҳад, ки намудҳои муайяни коди дуруст, ки қаблан боиси хатогиҳо шуда буданд, иҷро карда шаванд. Дастгирии механизми кӯҳна, ки пайвастагии умри лексикиро истифода мекард, ҳоло аз rustc комилан хориҷ карда шудааст ва истифодаи NLL-и нав ба таври умум амалӣ карда шудааст.
- Қисмати нави API ба категорияи устувор гузаронида шуд, аз ҷумла усулҳо ва татбиқи хислатҳо устувор карда шуданд:
- массив ::from_fn
- Қуттии ::into_pin
- BinaryHeap :: try_reserve
- BinaryHeap :: try_reserve_exact
- OsString :: try_reserve
- OsString :: try_reserve_exact
- PathBuf::try_reserve
- PathBuf :: try_reserve_exact
- Роҳ :: кӯшиш_ мавҷуд аст
- Ref ::filter_map
- RefMut :: filter_map
- NonNull::<[T]>::len
- ToOwned::clone_into
- Ipv6Addr :: to_ipv4_mapped
- unix::io::AsFd
- unix::io::BorrowedFd<'fd>
- unix::io::OwnedFd
- Windows ::io::AsHandle
- windows ::io::BorrowedHandle
Манбаъ: opennet.ru
