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

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

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

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

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

  • «Жүк» пакетінің менеджері «қосу» пәрменін ұсынады, ол Cargo.toml манифестіне жаңа тәуелділіктерді қосуға немесе пәрмен жолынан бар тәуелділіктерді өзгертуге мүмкіндік береді. Пәрмен сонымен қатар жеке мүмкіндіктер мен нұсқаларды көрсетуге мүмкіндік береді, мысалы: cargo add serde —функциялар derive cargo add nom@5
  • Әдепкі опция «#[әдепкі]» төлсипаты арқылы анықталған сандармен «#[туынды(Әдепкі)] пайдалану мүмкіндігі қосылды. #[туынды(Әдепкі)] enum Мүмкін { #[әдепкі] Ештеңе, бірдеңе(T), }
  • Linux платформасында Linux ядросы қамтамасыз ететін футекстерді пайдалануға негізделген Mutex синхрондау механизмінің неғұрлым ықшам және жылдамырақ жүзеге асырылуы қолданылады. Бұрын қолданылған pthreads кітапханасына негізделген іске асырудан айырмашылығы, жаңа нұсқа Mutex күйін сақтау үшін 5 орнына 40 байтты ғана пайдаланады.Сол сияқты Condvar және RwLock құлыптау механизмдері футекске ауыстырылды.
  • Операциялық жүйесіз жұмыс істей алатын орындалатын файлдарды генерациялауға арналған x86_64-белгісіз-ешбір мақсатты платформасына қолдаудың екінші деңгейі жүзеге асырылды. Мысалы, ядро ​​компоненттерін жазу кезінде көрсетілген мақсатты платформаны пайдалануға болады. Қолдау көрсетудің екінші деңгейі құрастыру кепілдігін қамтиды.
  • Қолдау көрсетудің үшінші деңгейі aarch64-pc-windows-gnullvm және x86_64-pc-windows-gnullvm платформалары үшін жүзеге асырылды. Үшінші деңгей негізгі қолдауды қамтиды, бірақ автоматтандырылған тестілеусіз, ресми құрастыруларды жариялаусыз немесе кодты құрастыру мүмкіндігін тексерусіз.
  • API жаңа бөлігі тұрақты санатқа ауыстырылды, оның ішінде белгілердің әдістері мен іске асырылуы тұрақтандырылды:
    • bool::сосын_кейбір
    • f32::жалпы_см
    • f64::жалпы_см
    • Stdin::сызықтар
    • windows::CommandExt::raw_arg
    • импл AssertUnwindSafe үшін әдепкі мән
    • бастап > Rc үшін
    • бастап > Arc<[u8]> үшін
    • EncodeWide үшін FusedIterator

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

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