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

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

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

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

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

  • Аз функсияи асосӣ рамзҳои бозгашти худро муайян кардан мумкин аст. Дар ибтидо, функсияи асосии Rust метавонад танҳо навъи "()" (воҳид) баргардонад, ки ҳамеша ҳолати муваффақияти баромаданро нишон медод, агар таҳиякунанда ба таври возеҳ функсияи "раванд:: баромадан(код)" -ро даъват накунад. Дар Rust 1.26, бо истифода аз хусусияти қатъи ноустувор дар функсияи асосӣ, имкон дошт, ки арзишҳои "Ok" ва "Err", ки ба рамзҳои EXIT_SUCCESS ва EXIT_FAILURE дар барномаҳои C мувофиқанд, баргардонида шаванд. Дар Rust 1.61, хусусияти қатъкунӣ устувор карда шуд ва як намуди алоҳидаи ExitCode барои муаррифии рамзи баргардонидани мушаххас пешниҳод шудааст, ки навъҳои бозгашти мушаххаси платформаро тавассути пешниҳоди ҳам константаҳои пешакӣ муайяншудаи SUCCESS ва FAILURE ва усули Аз абстракт мекунад. барои баргардонидани рамзи бозгашти фармоишӣ. истифода std::process::ExitCode; fn main() -> ExitCode { if !check_foo() { баргардонидани ExitCode::аз(8); } ExitCode::МУВАФФАКИЯТ }
  • Имкониятҳои иловагии функсияҳое, ки бо истифода аз ибораи “const fn” муайян шудаанд, устувор карда шуданд, ки онҳоро на танҳо ҳамчун функсияҳои муқаррарӣ номидан мумкин аст, балки дар ҳама гуна контекст ба ҷои константаҳо низ истифода мешавад. Ин функсияҳо дар вақти тартибдиҳӣ ҳисоб карда мешаванд, на дар вақти иҷро, аз ин рӯ онҳо таҳти маҳдудиятҳои муайян қарор доранд, ба монанди қобилияти хондан танҳо аз доимӣ. Дар версияи нав, амалиёти асосӣ бо нишондиҳандаҳои функсия дар дохили функсияҳои const иҷозат дода мешавад (эҷод кардан, интиқол додан ва интиқол додани нишондиҳандаҳо иҷозат дода мешавад, аммо даъват кардани функсия бо нишондод манъ аст); сарҳадҳои хос барои параметрҳои умумии функсияҳои const ба монанди T: Нусхабардорӣ; хислатҳои ба таври динамикӣ фиристодашаванда (dyn Trait); impl Навъҳои хислатҳо барои далелҳои функсия ва арзишҳои бозгашт.
  • Ҷараён Stdin, Stdout ва Stderr-ро дар std::io идора мекунад, ҳоло ҳангоми баста шудан умри статикӣ дорад ("'static") ва имкон медиҳад, ки конструксияҳое мисли "let out = std::io::stdout().lock();" бо гирифтани даста ва гузоштани қулф дар як ифода.
  • Қисмати нави API ба категорияи устувор гузаронида шуд, аз ҷумла усулҳо ва татбиқи хислатҳо устувор карда шуданд:
    • Pin ::static_mut
    • Pin ::static_ref
    • Vec::retain_mut
    • VecDeque :: retain_mut
    • Барои курсор нависед<[u8; Н]>
    • std ::os :: unix :: net :: SocketAddr :: from_pathname
    • std :: раванд :: ExitCode
    • std :: раванди :: Қатъи
    • std::thread::JoinHandle::is_finished
  • Аттрибути "const", ки имкони истифодаи онро дар ҳама гуна контекст ба ҷои доимӣ муайян мекунад, дар функсияҳо истифода мешавад:
    • <*const T>::offset ва <*mut T>::offset
    • <*const T>::wrapping_offset ва <*mut T>::wrapping_offset
    • <*const T>:: add ва <*mut T>:: add
    • <*const T>::sub ва <*mut T>::sub
    • <*const T>::wrapping_add ва <*mut T>::wrapping_add
    • <*const T>::wrapping_sub ва <*mut T>::wrapping_sub
    • <[T]>::as_mut_ptr
    • <[T]>::as_ptr_diapazon
    • <[T]>::as_mut_ptr_диапазон

Илова бар ин, шумо метавонед мақолаи "Руст: Ретроспективи интиқодӣ" -ро бо мухтасари таассуроти забони руст пас аз навиштани 100 ҳазор сатри код дар он ҳангоми таҳияи системаи оператсионии Xous microkernel, ки дар нармафзор истифода мешавад, қайд кунед. Камбудиҳо синтаксиси душворфаҳм, нопурраӣ ва рушди давомдори забон, набудани сохторҳои такроршаванда, мушкилоти маъмулӣ бо эътимоди вобастагӣ ба Crates.io ва зарурати нигоҳ доштани интизоми муайян барои навиштани рамзи бехатарро дар бар мегиранд. Хусусиятҳое, ки аз интизориҳо зиёдтар буданд, асбобҳо барои рефакторинги код ва коркарди "ҳакҳо" -ро дар бар мегиранд, ки ҳангоми прототипсозии зуд илова карда шудаанд.

Манбаъ: opennet.ru

Илова Эзоҳ