Թողարկվել է Rust 1.94 ծրագրավորման լեզուն, որը հիմնադրվել է Mozilla նախագծի կողմից, բայց այժմ մշակվել է անկախ ոչ առևտրային Rust Foundation-ի հովանու ներքո: Լեզուն կենտրոնանում է հիշողության անվտանգության վրա և տրամադրում է գործիքներ առաջադրանքների կատարման բարձր զուգահեռության հասնելու համար՝ առանց աղբահավաքի և գործարկման ժամանակի օգտագործման (գործարկման ժամանակը կրճատվում է ստանդարտ գրադարանի հիմնական նախնականացման և սպասարկման):
Rust-ի հիշողության կառավարման մեթոդները նախատեսված են ցուցիչների մանիպուլյացիայի ժամանակ առաջացող սխալները վերացնելու և ցածր մակարդակի հիշողության կառավարման հետ կապված խնդիրներից պաշտպանելու համար, ինչպիսիք են հիշողությանը մուտք գործելը դրա ազատումից հետո, զրոյական ցուցիչների հղումների վերացումը, բուֆերի գերբեռնվածությունը և այլն: Նախագիծը մշակում է Cargo փաթեթների կառավարիչը՝ գրադարաններ բաշխելու, կառուցվածքները հեշտացնելու և կախվածությունները կառավարելու համար: crates.io պահոցը պահպանվում է գրադարաններ հյուրընկալելու համար:
Հիշողության անվտանգությունն ապահովվում է Rust-ում կոմպիլյացիայի ժամանակ՝ հղումների ստուգման, օբյեկտի սեփականության մասին հաշվառման, օբյեկտների կյանքի ժամկետների (շրջանակների) հետևելու և կոդի կատարման ընթացքում հիշողության հասանելիության ճշգրտության գնահատման միջոցով: Rust-ը նաև ապահովում է պաշտպանություն ամբողջ թվերի արտահոսքից, պահանջում է փոփոխական արժեքների պարտադիր սկզբնավորում նախքան օգտագործումը, ստանդարտ գրադարանում ավելի լավ է լուծում սխալները, լռելյայն կիրառում է անփոփոխ հղումների և փոփոխականների հայեցակարգը, առաջարկում է ուժեղ ստատիկ մուտքագրում՝ տրամաբանական սխալները նվազագույնի հասցնելու համար:
Հիմնական նորամուծությունները.
- Slice տեսակն այժմ ունի array_windows մեթոդ։ Այս մեթոդը ստեղծում է իտերատոր՝ ֆիքսված չափի պատուհաններում շերտերը հատելու համար, որոնք միաժամանակ մեկ տարր են առաջ տանում։ Նախկինում հասանելի windows մեթոդից տարբերվող array_windows-ը գործում է հաստատուն պատուհանի չափի վրա և յուրաքանչյուր իտերացիայի համար վերադարձնում է ֆիքսված չափի զանգվածի հղում (&[T; N])՝ անորոշ չափի (&[T]) կտորի փոխարեն։ Քանի որ զանգվածի չափը սկզբնապես հայտնի է կոմպիլյատորին, արդյունավետությունը կարող է բարելավվել՝ խուսափելով սահմանների ստուգումից յուրաքանչյուր իտերացիայի փուլում։ let slice = [0, 1, 2, 3]; let mut iter = slice.array_windows(); assert_eq!(iter.next().unwrap(), &[0, 1]); assert_eq!(iter.next().unwrap(), &[1, 2]); assert_eq!(iter.next().unwrap(), &[2, 3]); assert!(iter.next().is_none());
- Cargo փաթեթների կառավարիչի կոնֆիգուրացիայի ֆայլերը (.cargo/config.toml) իրականացնում են "include" հրահանգը, որը թույլ է տալիս տեղում տեղադրել այլ ֆայլերի պարունակությունը։ include = [ "frodo.toml", "samwise.toml", ] include = [ { path = "required.toml" }, { path = "optional.toml", optional = true }, ]
- TOML 1.1 նշագրման լեզվի նոր տարբերակի աջակցությունը ավելացվել է մանիֆեստների և կոնֆիգուրացիայի ֆայլերին: Այս նոր տարբերակը ավելացնում է բազմատող ներկառուցված աղյուսակների, տասնվեցական բայթային ներկայացումներ տեղադրելու համար "\xHH" փախուստի հաջորդականության և "\u001B"-ի համար "\e" փախուստի հաջորդականության աջակցություն, ինչպես նաև վերջին տարրի վերջում ստորակետ թողնելու և ժամանակային արժեքներում վայրկյանները բաց թողնելու հնարավորության հետ մեկտեղ: serde = { version = "1.0", features = ["derive"] } }-ն այժմ կարող է փոխարինվել serde = { version = "1.0", features = ["derive"], }-ով:
- API-ի նոր մասը տեղափոխվել է կայուն կատեգորիա, ներառյալ մեթոդները և հատկությունների իրականացումը կայունացվել են.
- <[T]>::array_windows
- <[T]>::element_offset
- LazyCell::get
- LazyCell::get_mut
- LazyCell::force_mut
- LazyLock::get
- LazyLock::get_mut
- LazyLock::force_mut
- impl TryFrom օգտագործման համար
- std::iter::Peekable::next_if_map
- std::iter::Peekable::next_if_map_mut
- x86 avx512fp16 հրահանգների ներքին կողմերը
- AArch64 NEON fp16 հրահանգների ներքին կողմերը
- f32::consts::EULER_GAMMA
- f64::consts::EULER_GAMMA
- f32::consts::GOLDEN_RATIO
- f64::consts::GOLDEN_RATIO
- «Const» նշանը օգտագործվում է գործառույթներում.
- f32::mul_add
- f64::mul_add
- riscv64im-unknown-none-elf հարթակը տեղափոխվել է աջակցության 3-րդ մակարդակի: Աջակցության 3-րդ մակարդակը ներառում է հիմնական աջակցություն, բայց չի ներառում ավտոմատացված թեստավորում, պաշտոնական կառուցման թողարկումներ կամ կառուցման ստուգում:
Բացի այդ, մենք կցանկանայինք առանձնացնել Rust-ին վերաբերող վերջերս հայտարարված նախագծերն ու միջոցառումները.
- Այրտոն Մունյոսը, ով Rust կոմպիլյատորում ներդրեց Sony PlayStation 1 հարթակի աջակցությունը և FreeBSD-ը տեղափոխեց Apple Silicon չիպերով համակարգիչներ, Rust for FreeBSD-ում ներդրել է միջուկի բաղադրիչներ և սարքի դրայվերներ գրելու հնարավորություն: Փորձարկման համար տրամադրվել է KPI (Kernel Programming Interface) կապերի հավաքածու, որը հնարավորություն է տալիս օգտագործել Rust կոդը FreeBSD միջուկում, ինչպես նաև virtio ձայնային դրայվերը (virtio_snd), DockChannel HID դրայվերը M2 MacBook ստեղնաշարի համար և մի քանի ցածր մակարդակի դրայվերներ Apple Silicon չիպերի վրա գտնվող Mac համակարգչային ենթահամակարգերի համար, որոնք բոլորը ստեղծվել են այս կապերի միջոցով:
Rust կապակցումների վրա աշխատանքները շարունակվում են 2024 թվականի վերջից: Ներկայումս կապակցումները իրականացնում են C-KPI-ների միայն մի մասը և համարվում են անկայուն, բայց ժամանակի ընթացքում դրանք նախատեսում են բարելավել իրենց կայունությունը՝ համապատասխանեցնելով այն C լեզվի համար նմանատիպ ինտերֆեյսի կայունությանը: Որպես օրինակ առաջարկվող virtio_snd դրայվերը հարմար է QEMU-ում երաժշտություն նվագարկելու համար: Ակնկալվում է, որ մինչև 2026 թվականը Rust կապակցումները բավականաչափ կայուն կլինեն, որպեսզի հետաքրքրված մշակողները սկսեն օգտագործել դրանք կոդ գրելու համար:
- NetBSD մշակող Բեննի Սիգերտը NetBSD միջուկում Rust-ի աջակցության բացակայության հիմնավորում է առաջարկել. NetBSD-ն աջակցում է այն ճարտարապետությունները, որոնց համար Rust-ը հասանելի չէ. pkgsrc-ում առկա Rust գործիքակազմի պահպանումը զգալի ջանք է պահանջում և աջակցվում է միայն մի քանի մշակողների կողմից. Rust-ի միջուկի աջակցությունը պահանջում է, որ Rust կոմպիլյատորը ներառված լինի բազային համակարգում. NetBSD-ում Rust-ի բեռնաթափումը օգտագործում է ժառանգական բինար փաթեթ, ինչը անընդունելի է որպես աղբյուր բաշխված ինքնուրույն բաշխումների համար. Rust-ի թողարկման ցիկլերը անհամատեղելի են NetBSD-ի ժառանգական ճյուղերի մշակման և աջակցության ցիկլերի հետ (օրինակ՝ 2020 թվականին թողարկված NetBSD 9-ը շարունակում է աջակցվել, ինչը կպահանջի վեց տարեկան Rust կոմպիլյատորի առաքում և աջակցություն):
- Опубликован выпуск встраиваемой в приложения СУБД Turso 0.5, написанной на языке Rust и совместимой с SQLite на уровне диалекта SQL, формата файлов БД и C API. Из расширенных возможностей отмечается механизм CDC (Change data capture) для отслеживания изменения БД в реальном времени, использование io_uring для асинхронного ввода/вывода в Linux, поддержка векторного поиска, наличие выражения ALTER для изменения схемы БД, возможность шифрования данных в БД, режим инкрементальных вычислений, конструкция «BEGIN CONCURRENT».
- Նախագիծ, որը հնարավորություն է տալիս օգտագործել Rust ստանդարտ գրադարանը GPU-կողմի ծրագրերում։
- Emuko — эмулятор RISC-V, написанный на Rust, способный загружать Linux, поддерживающий JIT-компиляцию, способный сохранять и восстанавливать снапшоты состояния.
- RustConn-ը (flatpak) գրաֆիկական ինտերֆեյս է արտաքին ցանցային կապերը այլ հոսթերին կառավարելու համար, որը աջակցում է SSH, RDP, VNC, SPICE, Telnet, Serial, Kubernetes, Zero Trust և SFTP: Կոդը գրված է Rust լեզվով՝ օգտագործելով GTK4 և Wayland:
- Zlib-rs 0.6 նախագծի նոր ճյուղը թողարկվել է, որը համարվում է zlib C API-ի հետ լիովին համատեղելի առաջին կայուն տարբերակը և հարմար է zlib-ի թափանցիկ փոխարինման համար: Նախագծի նպատակն է ստեղծել zlib տվյալների սեղմման գրադարանի անվտանգ այլընտրանք: Մշակումն իրականացվում է՝ ուշադրություն դարձնելով zlib-ng նախագծին, որը մշակում է zlib-ի բարձր արդյունավետությամբ տարբերակ:
- VCAD նախագիծը Rust լեզվով գրված և MCP արձանագրության միջոցով արհեստական բանականության գործակալների հետ ինտեգրված պարամետրիկ համակարգչային նախագծման (CAD) համակարգի մշակում է։ Այն աջակցում է եռաչափ մոդելավորմանը, սիմուլյացիային, երկչափ ուրվագծմանը, բաղադրիչների հավաքմանը, STEP ներմուծմանը և STL/GLB/STEP/DXF արտահանմանը։
- Հրապարակվել է Rust լեզվով գրված և Mistral Voxtral Mini 4B Realtime AI մոդելը և Burn մեքենայական ուսուցման շրջանակն օգտագործող խոսքի ճանաչման համակարգ: Նախագիծը կենտրոնանում է ուղիղ հեռարձակման տառադարձման համար խոսքի ճանաչման վրա:
- c2rust 0.22 գործիքակազմը թողարկվել է։ Այն նախատեսված է C կոդը (C99) անապահով Rust ներկայացման թարգմանելու համար, որը կառուցվածքով նման է բնօրինակ C կոդին։ Արդյունքում ստացված աշխատանքային շրջանակը կարող է օգտագործվել Rust-ի իդիոմատիկ տարբերակին աստիճանական անցման և անապահով բլոկների հեռացման համար։
Source: opennet.ru
