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

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

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

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

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

  • Құжаттамаға ABI деңгейінде әртүрлі аргумент түрлері мен функцияны қайтару түрлерінің үйлесімділігін сипаттайтын бөлек бөлім қосылды. Алдыңғы нұсқалармен салыстырғанда, өлшемдері мен туралаулары бірдей "char" және "u32" түрлері үшін ABI үйлесімділігіне енді кепілдік беріледі.
  • Бұрын қол жетімді қоңырауға қосымша "any::type_name:: "T" параметрінде көрсетілген түр үшін жол сипаттамасын қайтаратын ()", кез келген атаусыз сілтеме негізінде түр ақпаратын алуға мүмкіндік беретін "type_name_of_val(&T)" функциясымен толықтырылды. fn get_iter() -> impl Итератор { [1, 2, 3].into_iter() } fn main() { iter = get_iter(); iter_name = std::any::type_name_of_val(&iter); қосынды болсын: i32 = iter.sum(); println!("`{iter_name}` қосындысы {sum}."); } Шығарылатын мән: `core::array::iter::IntoIter қосындысы. ` - 6.
  • API жаңа бөлігі тұрақты санатқа ауыстырылды, оның ішінде белгілердің әдістері мен іске асырылуы тұрақтандырылды:
    • Arc::орауды_немесе_клондау
    • Rc :: орау_ немесе_клондау
    • Нәтиже::тексеру
    • Нәтиже::inspect_err
    • Опция::тексеру
    • vaal_атын_түрі
    • std::хэш::{DefaultHasher, RandomState}
    • ptr::{from_ref, from_mut}
    • ptr::addr_eq
  • 3-деңгейдегі қолдау {x86_64,i686}-win7-windows-msvc, aarch64-apple-watchos, arm64e-apple-ios және arm64e-apple-darwin платформалары үшін жүзеге асырылды. 3-деңгей негізгі қолдауды қамтамасыз етеді, бірақ автоматтандырылған тестілеусіз, ресми құрастыру шығарылымдарысыз немесе құрастыруды растаусыз.

Бұған қоса, Rust тілінде жазылған және пайдаланушы кеңістігінде орындалған тәжірибелік scx_rustland тапсырмаларын жоспарлаушы демонстрациясы назар аударарлық. Тапсырманы жоспарлау логикасы BPF қолданатын sched-ext құралдар жинағы арқылы ядродан пайдаланушы кеңістігіне жылжытылады. Жоспарлаушы процессорды көп қажет ететін тапсырмалардан гөрі интерактивті тапсырмаларға басымдық беру үшін оңтайландырылған. Мысалы, ядроны құру кезінде ойын қолданбасын іске қосу сынағы кезінде scx_rustland жоспарлаушы стандартты EEVDF жоспарлаушыға қарағанда ойында жоғары FPS-ке қол жеткізді.

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

DDoS қорғауы бар сайттар үшін сенімді хостинг, VPS VDS серверлерін сатып алыңыз 🔥 DDoS қорғанысы, VPS VDS серверлері бар сенімді веб-сайт хостингін сатып алыңыз | ProHoster