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

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

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

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

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

  • Менеҷери бастаҳои боркаш ва анбори crates.io протоколи Sparse-ро устувор кардаанд, ки роҳи нави кор бо индексро муайян мекунад, ки версияҳои дастраси ҳама бастаҳои дар анбор мавҷудбударо инъикос мекунад. Протоколи нав ба шумо имкон медиҳад, ки суръати кор бо crates.io-ро ба таври назаррас афзоиш диҳед ва мушкилоти миқёсро бо афзоиши минбаъдаи шумораи бастаҳо дар анбор ҳал кунед.

    Барои кам кардани таъхирҳое, ки аз зеркашии индекси пурра ба вуҷуд омадааст, Sparse ба ҷои дастрасӣ ба индекс бо истифода аз Git зеркашии мустақимро тавассути HTTPS танҳо маълумоти индекси заруриро дар бар мегирад, ки вобастагии лоиҳаи мушаххасро фаро мегирад. Хизматрасонии нав, index.crates.io, барои пешниҳоди маълумоти индекс истифода мешавад. Бо нобаёнӣ, протоколи нав дар филиали Rust 1.70 ба нақша гирифта шудааст ва пеш аз он, шумо метавонед тағирёбандаи муҳити зистро "CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse" таъин кунед ё параметри 'protocol =' ба "[registr. crates-io]" бахши файли .cargo/config.toml 'sparse'.

  • Макроси "pin!" илова карда шуд, ки ба шумо имкон медиҳад сохтори Pin<&mut T>-ро аз ифодаи "T" бо pinning локалии ҳолати он эҷод кунед (баръакси Box::pin, он хотираро дар теппа ҷудо намекунад, балки мепайвандад. дар сатҳи стек).
  • Як коркардкунандаи хатои тақсимоти хотираи пешфарз пешниҳод шудааст, ки ҳангоми истифодаи бастаи стандартии alloc истифода мешавад. Барномаҳое, ки танҳо ҷудокуниро фаъол мекунанд (бе std) ҳоло ҳангоми нокомии тақсимоти хотира, коркардкунандаи "panic!"-ро даъват хоҳанд кард, ки ихтиёран бо истифода аз "#[panic_handler]" боздошта мешавад. Барномаҳое, ки китобхонаи std-ро истифода мебаранд, чопи иттилооти хатогиҳоро дар stderr ва садама идома медиҳанд.
  • Қисмати нави API ба категорияи устувор гузаронида шуд, аз ҷумла усулҳо ва татбиқи хислатҳо устувор карда шуданд:
    • {core,std}::pin::pin!
    • impl Аз барои {f32,f64}
    • std::path::MAIN_SEPARATOR_STR
    • impl DerefMut барои PathBuf
  • Аттрибути "const", ки имкони истифодаи онро дар ҳама гуна контекст ба ҷои константаҳо муайян мекунад, дар функсияи VecDeque::new истифода мешавад.
  • Барои кор дар платформаи Android, ҳоло ҳадди аққал NDK r25 (API 19) лозим аст, яъне. Версияи ҳадди ақали дастгирӣшудаи Android ба 4.4 (KitKat) расонида шуд.
  • Сатҳи сеюми дастгирӣ барои платформаи Sony PlayStation Vita (armv7-sony-vita-newlibeabihf) амалӣ карда шудааст. Сатҳи сеюм дастгирии асосиро дар бар мегирад, аммо бидуни санҷиши автоматикунонидашуда, нашри сохторҳои расмӣ ё тафтиши он, ки оё код сохта мешавад.

Манбаъ: opennet.ru

Илова Эзоҳ