Rust 1.55 бағдарламалау тілі шығарылымы

Mozilla жобасы негізін қалаған, бірақ қазір Rust Foundation тәуелсіз коммерциялық емес ұйымының қолдауымен әзірленген Rust 1.55 жүйелік бағдарламалау тілінің шығарылымы жарияланды. Тіл жад қауіпсіздігіне назар аударады, жадты автоматты түрде басқаруды қамтамасыз етеді және қоқыс жинағышты немесе жұмыс уақытын пайдаланбай жоғары тапсырма параллелизміне қол жеткізу құралдарын қамтамасыз етеді (орындау уақыты стандартты кітапхананың негізгі инициализациясы мен қызмет көрсетуіне дейін қысқарады).

Rust-тың жадты автоматты басқаруы көрсеткіштерді басқару кезіндегі қателерді жояды және жад аймағына ол босатылғаннан кейін қол жеткізу, нөлдік көрсеткіш сілтемелері, буфердің асып кетуі және т.б. сияқты төмен деңгейлі жад манипуляциясынан туындайтын мәселелерден қорғайды. Кітапханаларды тарату, құрастыруды қамтамасыз ету және тәуелділіктерді басқару үшін жоба Cargo пакетінің менеджерін әзірлеуде. Crates.io репозиторийіне хостинг кітапханалары үшін қолдау көрсетіледі.

Негізгі инновациялар:

  • Жүк пакетінің менеджерінде құрастыру кезінде пайда болатын қайталанатын қателер мен ескертулерді біріктіру мүмкіндігі бар. «Жүк сынағы» және «жүкті тексеру --all-targets» сияқты пәрмендерді орындаған кезде, нәтижесінде әртүрлі параметрлері бар пакеттің бірнеше құрастырулары пайда болады, енді пайдаланушыға көрсетілудің орнына қайталанатын мәселенің пайда болуының қысқаша мазмұны көрсетіледі. бір нәрсені қайталап жасау кезінде бірнеше бірдей ескертулер. $ cargo +1.55.0 check —all-targets foo v0.1.0 нұсқасын тексеру ескерту: функция ешқашан пайдаланылмайды: 'foo' —> src/lib.rs:9:4 | 9 | fn foo() {} | ^^^ | = ескертпе: '#[warn(dead_code)]' әдепкі бойынша қосулы ескерту: 'foo' (lib) 1 ескерту ескертуін жасады: 'foo' (lib test) 1 ескерту жасады (1 көшірме) Дайын әзірлеуші ​​[оңтайландырылмаған + отладка ақпараты] мақсаты (s) 0.84 секундта
  • Стандартты кітапханадағы өзгермелі нүктені талдау коды тезірек және дәлірек Эйзель-Лемире алгоритмін пайдалану үшін жылжытылды, ол өте үлкен сандар сандары бар сандарды дөңгелектеу және талдаумен бұрын байқалған кейбір мәселелерді шешті.
  • Үлгілерде жабылмаған ауқымдарды көрсету мүмкіндігі тұрақтандырылды («X..» X мәнінен басталып, бүтін түрінің максималды мәнімен аяқталатын ауқым ретінде түсіндіріледі): x сәйкес u32 { 0 => println! («нөл!»), 1.. => println! («оң сан!»), }
  • std::io::ErrorKind қамтитын кеңейтілген қате нұсқалары (қателерді NotFound және WouldBlock сияқты санаттарға жіктейді). Бұрын бар санаттарға сәйкес келмейтін қателер ErrorKind::Other санатына жатқызылды, ол үшінші тарап кодындағы қателер үшін де пайдаланылды. Қазір бар санаттарға сәйкес келмейтін қателер үшін ErrorKind::Санатсыз бөлек ішкі санаты бар және ErrorKind::Басқа санаты стандартты кітапханада болмайтын қателермен шектелген (io::Error қайтаратын стандартты кітапхана функциялары) ErrorKind:: санатын енді пайдаланбаңыз Басқа).
  • API жаңа бөлігі тұрақты санатқа ауыстырылды, оның ішінде белгілердің әдістері мен іске асырылуы тұрақтандырылды:
    • Байланысты::клондалған
    • Drain::as_str
    • IntoInnerError::into_error
    • IntoInnerError::into_parts
    • MaybeUnit::assume_init_mut
    • MaybeUninit::assume_init_ref
    • МүмкінUninit :: жазыңыз
    • массив::карта
    • ops::ControlFlow
    • x86::_bittest
    • x86::_bittestandcomplement
    • x86::_bittestandreset
    • x86::_bittestandset
    • x86_64::_bittest64
    • x86_64::_bittestandcomplement64
    • x86_64 ::_bittestandreset64
    • x86_64 ::_bittestandset64
  • str::from_utf8_unchecked әдісінде оны тұрақты мәндердің орнына кез келген контексте пайдалану мүмкіндігін анықтайтын “const” атрибуты қолданылады.
  • Қолдау көрсетудің үшінші деңгейі powerpc64le-unknown-freebsd платформасы үшін жүзеге асырылды. Үшінші деңгей негізгі қолдауды қамтиды, бірақ автоматтандырылған тестілеусіз, ресми құрастыруларды жариялаусыз немесе кодты құрастыру мүмкіндігін тексерусіз.

Ақпарат көзі: opennet.ru

пікір қалдыру