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

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

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

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

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

  • Басқа түрмен байланыстырылған түрдің бүркеншік атын жасауға мүмкіндік беретін және тип конструкторларын белгілермен байланыстыруға мүмкіндік беретін жалпы байланысты типтерге (GAT, Generic Associated Types) қолдау қосылды. trait Foo { type Bar; }
  • Үлгіні сәйкестендіру шартын тікелей «let» өрнегі ішінде тексеруге және үлгі сәйкес келмесе, ерікті кодты орындауға мүмкіндік беретін «let ... else» өрнегі іске асырылды. let Ok(count) = u64::from_str(count_str) else { дүрбелең!("Бүтін санды талдау мүмкін емес: '{count_str}'"); };
  • Аяқталатын блокты анықтау үшін блок атауын (белгісін) пайдаланып, аталған блоктардан мерзімінен бұрын шығу үшін үзіліс операторын пайдалануға рұқсат беріңіз. let result = 'block: { do_thing(); if condition_not_met() { break ‘block 1; } do_next_thing(); if condition_not_met() { break ‘block 2; } do_last_thing(); 3 };
  • Linux үшін бұрын тек macOS платформасы үшін қол жетімді отладтау ақпаратын бөлек сақтау мүмкіндігі қосылды (сплит-debuginfo). "-Csplit-debuginfo=unpacked" опциясын көрсеткенде, DWARF пішіміндегі debuginfo деректері ".dwo" кеңейтімі бар бірнеше бөлек нысан файлдарына сақталады. "-Csplit-debuginfo=packed" параметрін көрсету жобаның барлық отладка ақпараты деректерін қамтитын ".dwp" пішімінде жалғыз буманы жасайды. Түзету ақпаратын ELF нысандарының .debug_* бөліміне тікелей біріктіру үшін "-Csplit-debuginfo=off" опциясын пайдалануға болады.
  • API жаңа бөлігі тұрақты санатқа ауыстырылды, оның ішінде белгілердің әдістері мен іске асырылуы тұрақтандырылды:
    • std::backtrace::Backtrace
    • Байланысты ::as_ref
    • std::io::read_to_string
    • ::cast_mut
    • ::cast_const
  • Оны тұрақты мәндердің орнына кез келген контексте пайдалану мүмкіндігін анықтайтын «const» атрибуты ::offset_from және ::offset_from функцияларында қолданылады.
  • LSP (Language Server Protocol) хаттамасын іске асыруды тот анализаторына көшірудің соңғы кезеңінің бөлігі ретінде Rust Language Server (RLS) ескірген енгізуі ауысу ұсынысы бар ескерту беретін stub серверімен ауыстырылды. тот анализаторын қолдану.
  • Компиляция кезінде MIR аралық кодын кірістірілген орналастыруды қолдау қосылады, бұл әдеттегі жәшік пакеттерін құрастыруды 3-10% жылдамдатады.
  • Жоспарланған құрастыруларды жылдамдату үшін жүк пакетінің менеджері кезекте орындалуды күтіп тұрған тапсырмаларды сұрыптауды қамтамасыз етеді.

Сонымен қатар, сіз Volvo-да автокөлік ақпараттық жүйелерінің құрамдастарын әзірлеу үшін Rust тілін қолдану туралы сұхбатты атап өтуге болады. Rust жүйесінде бар және тексерілген кодты қайта жазу жоспарлары жоқ, бірақ жаңа код үшін Rust төмен шығындармен сапаны жақсартудың таңдаулы нұсқаларының бірі болып табылады. Сондай-ақ AUTOSAR (Automotive Open System Architecture) және SAE (Автокөлік инженерлері қоғамы) автомобиль бірлестіктерінде Rust тілін қолдануға қатысты жұмыс топтары құрылды.

Сонымен қатар, Google компаниясының инженерия жөніндегі вице-президенті Дэвид Клейдермахер шифрлау кілттерін Rust жүйесіне басқару үшін Android платформасында қолданылатын кодты аудару, сондай-ақ стекте HTTPS протоколы арқылы DNS енгізу кезінде Rust пайдалану туралы айтты. UWB-чиптері үшін (Ultra-Wideband) және Tensor G2 чипімен байланысты виртуализация шеңберінде (Android Virtualization Framework). Rust-та қайта жазылған Bluetooth және Wi-Fi үшін жаңа стек Android үшін де әзірленуде. Жалпы стратегия алдымен ең осал және маңызды бағдарламалық құрал құрамдастарын Rust-қа түрлендіру, содан кейін басқа қатысты ішкі жүйелерге кеңейту арқылы қауіпсіздікті біртіндеп күшейту болып табылады. Өткен жылы Rust тілі Android платформасын жасауға рұқсат етілген тілдер тізіміне енді.

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

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