Mozilla долбоору тарабынан негизделген, бирок азыр Rust Foundation көз карандысыз коммерциялык эмес уюмунун демөөрчүлүгү астында иштелип чыккан Rust 1.84 жалпы максаттуу программалоо тилинин релизи жарыяланды. Бул тил эстутумдун коопсуздугуна көңүл бурат жана таштанды жыйгычты жана иштөө убактысын колдонуудан качуу менен жогорку жумуш параллелизмине жетүү үчүн каражаттарды камсыз кылат (иштөө убактысы стандарттык китепкананы негизги инициализацияга жана тейлөөгө чейин кыскарган).
Rust'тун эстутум менен иштөө ыкмалары иштеп чыгуучуну көрсөткүчтөрдү манипуляциялоодо каталардан куткарат жана эстутумдун төмөнкү деңгээлдеги иштөөсүнөн улам келип чыккан көйгөйлөрдөн коргойт, мисалы, эстутумдун аймагына ал бошотулгандан кийин жетүү, нөл көрсөткүчтөрдү шилтемеден чыгаруу, буфердин ашып кетиши ж.б. Китепканаларды жайылтуу, курууну камсыз кылуу жана көз карандылыкты башкаруу үчүн долбоор Cargo пакетинин менеджерин иштеп чыгат. crates.io репозиторий китепканаларды хостинг үчүн колдоого алынат.
Эстутумдун коопсуздугу Rust программасында компиляция убагында маалымдама текшерүү, объектке ээлик кылуу, объекттин иштөө мөөнөттөрүн (кошумчаларын) эсепке алуу жана кодду аткаруу учурунда эстутумга жетүүнүн тууралыгын баалоо аркылуу камсыз кылынат. Rust ошондой эле бүтүн сандардын ашып кетишинен коргоону камсыз кылат, колдонуудан мурун өзгөрмө маанилерин милдеттүү түрдө инициализациялоону талап кылат, стандарттык китепканада каталарды жакшыраак иштетет, өзгөрүлгүс шилтемелер жана өзгөрмөлөр концепциясын демейки боюнча колдонот, логикалык каталарды азайтуу үчүн күчтүү статикалык терүүнү сунуштайт.
Негизги инновациялар:
- Cargo пакетинин менеджеринде долбоор тарабынан минималдуу колдоого алынган Rust компиляторунун версиялары менен шайкештикти эске алуу менен көз каранды компоненттердин версияларын тандаган стабилдештирилген көз карандылыкты иштетүү механизми бар (MSRV, Minimum Supported Rust Version). Жаңы функция тейлөөчүлөргө Rust инструменттеринин эски версиялары менен шайкеш келген долбоорлордогу ар бир көз карандылыктын эски версияларын кол менен тандоо зарылдыгын жокко чыгарат. Жаңы көз карандылыкты чечүү режими демейки боюнча Rust 1.85 релизинде иштетилет, бирок азырынча "[чечүүчү]" бөлүмүндө 'incompatible-rust-versions = " көрсөтүү менен иштетилүүчү опция катары жеткиликтүү. cargo/config.toml" файлы. кайра "'.
- Биз компиляторду жаңы типтеги чечүүчүгө айландыра баштадык, ал белгилердин колдонулуу чектерин текшерүү, типтерди нормалдаштыруу жана типтердин шайкештигин баалоо үчүн иштелип чыккан. 1.84 версиясында өзгөчөлүктөрдү ишке ашыруунун ырааттуулугун текшерүү үчүн жаңы иштеткич колдонулат, б.а. башка куту пакеттеринин кодун эске алуу менен каралып жаткан түр үчүн эң көп дегенде бир белгинин бар экендигин баалоо. Бул текшерүү бизге типтерди иштетүүчү эски ишке ашыруудагы көйгөйлөрдөн арылууга мүмкүндүк берди, бул типтердин ар кандай ишке ашырылышынын кесилишинен улам конфликттерге алып келиши мүмкүн.
- Жаңы API "Strict Provenance" сунушталды, ал көрсөткүчтү бүтүн санга жана артка айландыруу үчүн колдонулушу мүмкүн, анын келип чыгышы жана колдонуу аймагы (кошумча) менен көрсөткүчкө тиркелген метаберилиштерди эске алуу менен дарек, башка көрсөткүчтөр менен байланыштар жөнүндө маалымат менен көрсөткүчкө "текшерүү" мааниси тиркелет, бул көрсөткүч эстутумга кайда жана качан кире аларын аныктоого мүмкүндүк берет). Көрсөткүчтү бүтүн санга жана артка чыгарууда, натыйжадагы көрсөткүчтүн келип чыгышын издөө кыйынчылыгынан улам аныкталбаган жүрүм-турум пайда болот. Жаңы API көрсөткүчтү бүтүн санга чыгарбастан, көрсөткүчтүн төмөнкү тартиптеги биттеринде кошумча маалыматты сактоо сыяктуу төмөнкү деңгээлдеги көрсөткүч операцияларын аткарууга мүмкүндүк берет.
- API'нин жаңы бөлүгү туруктуу категорияга жылдырылды, анын ичинде сапаттардын ыкмалары жана ишке ашырылышы турукташтырылды:
- Ipv6Addr::is_unique_local
- Ipv6Addr::is_unicast_link_local
- core::ptr::with_exposed_provenance
- core::ptr::with_exposed_provenance_mut
- ::addr
- ::expose_provenance
- ::with_addr
- ::map_addr
- ::isqrt
- ::checked_isqrt
- ::isqrt
- NonZero::isqrt
- core::ptr::exout_provenance
- core::ptr::without_provenance_mut
- core::ptr::dangling
- core::ptr::dangling_mut
- Pin::as_deref_mut
- "const" белгиси функцияларда колдонулат:
- AtomicBool::from_ptr
- AtomicPtr::from_ptr
- AtomicU8::from_ptr
- AtomicU16::from_ptr
- AtomicU32::from_ptr
- AtomicU64::from_ptr
- AtomicUsize::from_ptr
- AtomicI8::from_ptr
- AtomicI16::from_ptr
- AtomicI32::from_ptr
- AtomicI64::from_ptr
- AtomicIsize::from_ptr
- ::is_null
- ::as_ref
- ::as_mut
- Pin::new
- Pin::new_unchecked
- Pin::get_ref
- Pin::into_ref
- Pin::get_mut
- Pin::get_unchecked_mut
- Pin::static_ref
- Pin::static_mut
- s390x жана Arm64EC архитектуралары үчүн ассемблердин саптык кыстармаларын колдоо турукташтырылган.
- WebAssembly максаттуу платформасы үчүн көп мааниге ээ, маалымдама түрлөрүн жана куйрук чалуу функцияларын колдоо турукташтырылган.
- wasm32v1-none платформасын колдоонун экинчи деңгээли ишке ашырылды. Колдоонун экинчи деңгээли монтаждык кепилдикти камтыйт.
Мындан тышкары, Rust менен байланышкан бир нече долбоорлорду белгилесе болот:
- Rust тилинде жазылган жана микроконтроллерлерде колдонууга багытталган Tock 2.2 операциялык тутумунун чыгарылышы жарык көрдү. Система сенсорлор, TPM (Ишенимдүү платформа модулу), аутентификация ачкычтары жана тагынуучу түзүлүштөр сыяктуу RAM өлчөмү чектелген орнотулган түзмөктөрдө бир нече ишенимсиз тиркемелерди бир эле учурда аткарууга мүмкүндүк берет. ARM Cortex-M жана RISC-V архитектурасына негизделген микроконтроллери бар платформалар колдоого алынат. Токтун негизги өзгөчөлүгү - бул тиркемени, ядро жана драйвер катмарларын изоляциялоо, ошондой эле ар бир тиркемени жана драйверди өзүнчө изоляциялоо. Изоляция Rust тилинин мүмкүнчүлүктөрүн да, эстутум коргоо деңгээлинде бөлүүнү да колдонот.
- VEKOS (Verified Experimental Kernel OS) долбоору Rust тилиндеги операциялык системанын өзөгүн иштеп чыгат, ал аткарылуучу компоненттерди текшерүүнү камсыз кылат. Ар бир файл тутумунун операциясы, процессти түзүү жана эстутум бөлүштүрүү үчүн криптографиялык далил түзүлөт, ал аткаруу учурунда операцияны текшерүүгө мүмкүндүк берет (ишке ашыруу операциялык тутумдагы аракеттерди текшерүү үчүн блокчейнди колдонуу менен салыштырылат). VKFS файл тутумунда бүтүндүктү жана артка кайтарылган бурмалоодон коргоону камсыз кылуу үчүн Merkle Tree түзүмү колдонулат, анын ар бир бутагы дарак хэшингинин аркасында бардык астыңкы бутактарды жана түйүндөрдү текшерет. Эстутумду бөлүштүрүү COW (Copy-On-Write) режиминде жүргүзүлөт.
- Майкрософт жана Инриадан келген изилдөөчүлөр тобу C программаларын Rust өкүлчүлүгүнө автоматтык түрдө которуу үчүн иштелип чыккан Mini-C тилинин чакан бөлүгүн иштеп чыгууда. c2rust компиляторунан айырмаланып, жаңы долбоор кооптуу колдонбостон Rust кодун түзүүгө мүмкүндүк берет, бирок биринчи кезекте ишенимдүүлүгүнүн расмий далили бар C долбоорлорун конвертациялоого багытталган. Мунун мааниси, C проектисин C'ден Rust'ка түз компиляциялоодон кийин кооптуу блокторду кайра жазганга караганда, көрсөткүч арифметикасына жол бербеген Mini-C өкүлчүлүгүнө биринчи айландыруу оңой болот.
Компиляторду ишке ашыруу KaRaMeL инструменттеринин негизинде түзүлгөн. Mini-C Rust шаарындагы HACL* криптографиялык китепканасын кайра жазуу долбоорунун алкагында иштелип чыккан жана сыналган, ал үчүн ишенимдүүлүктүн расмий далили берилген. Ушундай эле далил Mini-Cден коопсуз Rust кодун түзүү мүмкүнчүлүгүн көрсөтүү үчүн колдонулган.
- Дэниел Стенберг, curl утилитасынын автору, Curl долбоору мындан ары Hyper китепканасын колдонуу менен Rust тилинде жазылган альтернативалуу HTTP серверин өнүктүрбөйт жана колдобойт деп жарыялады. Себеби, иштеп чыгуучулардын жана колдонуучулардын кызыгуусунун жоктугу.
- Rustта кайра жазылган Fish 4.0 командалык кабыкчасынын бета релизи жарыяланды. Эки жылдык иштеп чыгуудан кийин Fish коддук базасы толугу менен C++тен Rustко которулганы белгиленген. Rust программасына өтүү бизге көп агым менен көйгөйлөрдү чечүүгө, компиляция стадиясында каталарды аныктаган заманбап куралдарды алууга, эстутумдун коопсуздугун жакшыртууга жана долбоорду жаңы иштеп чыгуучулар үчүн жагымдуураак кылууга мүмкүндүк берди.
- Tor долбоору Rustто Tor кардарынын альтернативалуу ишке ашырылышы болгон Arti 1.3.2 чыгарылышын жарыялады. Arti ар кандай колдонмолор тарабынан колдонула турган орнотулган китепкана менен камсыз кылат. Arti түзүүдө белгилүү архитектуралык көйгөйлөрдү болтурбоо жана долбоорду модулдук жана натыйжалуу кылуу үчүн Tor иштеп чыгуудагы мурунку тажрыйба эске алынган. 1.x бутагы жалпы колдонуучулар тарабынан колдонууга ылайыктуу деп белгиленген жана негизги C ишке ашыруу сыяктуу эле купуялуулукту, колдонууга ыңгайлуулукту жана туруктуулукту камсыз кылат. Жаңы версия RPCтин өнүгүшүн улантууда, релейлик колдоону ишке ашыруу үчүн даярдыктар көрүлдү жана Onion кызматтарына DoS чабуулдарынан коргоо кошулду.
- Rust тилинде жазылган Bevy 0.15 оюн кыймылдаткычынын чыгарылышы жарык көрдү. Кыймылдаткыч параллелдүү түрдө аткарыла турган Bevy ECS (Entity Component System) даяр компоненттеринин топтомуна курулган оюн логикасын аныктоо үчүн Data Driven моделин колдонот. 2D жана 3D рендерингди, скелеттик анимацияны, рендеринг графигин аныктоону, сахнаны түзүү тутумун, колдонуучу интерфейсинин алкагын колдойт, кайра баштоонун кереги жок эле сахналарга жана ресурстарга өзгөртүүлөрдү киргизет.
- Консолдук текст редактору Helix 25.01 басылып чыкты, Rust тилинде жазылган жана vim менен neovimге мүнөздүү идеяларды кеңейтет. LSP серверлери жана Tree-sitter менен интеграцияны, бир эле учурда бир нече блокторду тандоону, түзөтүүдө бир нече курсорду колдонууну, темаларды жана DAP (Debug Adapter Protocol) мүчүлүштүктөрдү оңдоо протоколун колдойт.
- Rust менен жазылган Servo браузеринин кыймылдаткычы караңгы дизайн режимин колдоону кошту. ServoShell браузеринин көлөмү 20% га кыскарган. Веб спецификацияларын колдоо Discord'та кирүү жана билдирүүлөрдү окуу мүмкүнчүлүгүнө чейин кеңейтилген (билдирүүлөрдү жөнөтүү азырынча мүмкүн эмес).
- Mozilla Rust тилинде React Native үчүн модулдарды түзүү үчүн Uniffi for React Native инструменттерин киргизди.
- PNG сүрөт коддоочуларынын иштеши сыналган. Rust декодерлери (png, zune-png, wuffs) C декодерлеринен (libpng, spng, stb_image) ылдамыраак болуп чыкты. Мисалы, crate png пакети (image-rs) x1.8 тутумунда libpngден 86 эсеге жана ARM тутумунда 1.5 эсеге ашып кеткен. сүрөт-rs: 375.401 МП/с (орточо) 318.632 МП/с (геомеан) zune-png: 376.649 МП/с (орточо) 302.529 МП/с (геомиялык) wuffs: 376.205 МП/с (орточо) МП/с (орточо) МП/с (орточо.287.181 МП/с) geomean) libpng: 208.906 МП/с (орточо) 173.034 МП/с (геомеан) снг: 299.515 МП/с (орточо) 235.495 МП/с (геомеан) stb_image: 234.353 МП/с (орточо) 171.505 МП/с (орточо)
Source: opennet.ru
