Објављен је програмски језик Rust 1.94, који је основао пројекат Mozilla, али је сада развијен под покровитељством независне непрофитне организације Rust Foundation. Језик се фокусира на безбедност меморије и пружа алате за постизање високог паралелизма извршавања задатака, а да притом не користи сакупљач смећа и runtime (runtime је сведен на основну иницијализацију и одржавање стандардне библиотеке).
Рустове методе управљања меморијом су дизајниране да елиминишу грешке у манипулацији показивачима и заштите од проблема који настају услед управљања меморијом ниског нивоа, као што су приступ меморији након што је ослобођена, дереференцирање нултих показивача, прекорачење бафера и тако даље. Пројекат развија менаџер пакета Cargo за дистрибуцију библиотека, олакшавање изградње и управљање зависностима. Репозиторијум crates.io се одржава за хостовање библиотека.
Безбедност меморије је обезбеђена у Русту у време компајлирања кроз проверу референци, праћење власништва над објектима, праћење животног века објекта (опсега) и процену исправности приступа меморији током извршавања кода. Руст такође пружа заштиту од прекорачења целог броја, захтева обавезну иницијализацију вредности променљивих пре употребе, боље обрађује грешке у стандардној библиотеци, подразумевано примењује концепт непроменљивих референци и променљивих, нуди снажно статичко куцање како би се минимизирале логичке грешке.
Главне иновације:
- Тип 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“ за уметање хексадецималних бајт репрезентација и излазну секвенцу „\e“ за „\u001B“, заједно са могућношћу остављања зарезе на крају последњег елемента и изостављања секунди у временским вредностима. serde = { version = "1.0", features = ["derive"] } сада се може заменити са serde = { version = "1.0", features = ["derive"], }
- Нови део АПИ-ја је премештен у категорију стабилних, укључујући методе и имплементације особина које су стабилизоване:
- <[T]>::array_windows
- <[T]>::померање_елемента
- ЛејзиСел::гет
- ЛејзиСел::гет_мут
- Лењи Цел::форсирај_мут
- ЛејзиЛок::гет
- ЛејзиЛок::гет_мут
- Лењиво закључавање::форсирање_мутације
- имп 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::ЗЛАТНИ_ОДНОС
- f64::consts::ЗЛАТНИ_ОДНОС
- Знак „цонст“ се користи у функцијама:
- f32::mul_add
- f64::mul_add
- Платформа riscv64im-unknown-none-elf је премештена на ниво подршке 3. Ниво подршке 3 укључује основну подршку, али не укључује аутоматизовано тестирање, званична издања верзија или верификацију верзија.
Поред тога, желели бисмо да истакнемо недавно најављене пројекте и догађаје везане за Руст:
- Ајртон Муњоз, који је имплементирао подршку за платформу Sony PlayStation 1 у Rust компајлеру и портовао FreeBSD на рачунаре са Apple Silicon чиповима, имплементирао је могућност писања компоненти језгра и драјвера уређаја у Rust-у за FreeBSD. Скуп KPI (Kernel Programming Interface) повезивања која омогућавају коришћење Rust кода у FreeBSD језгру је обезбеђен за тестирање, заједно са virtio звучним драјвером (virtio_snd), DockChannel HID драјвером за M2 MacBook тастатуру и неколико нисконивоских драјвера за Mac рачунарске подсистеме на Apple Silicon чиповима, сви креирани коришћењем ових повезивања.
Рад на Rust повезивањима је у току од краја 2024. године. Тренутно, повезивања имплементирају само део C-KPI-јева и сматрају се нестабилним, али временом се планира побољшање њихове стабилности како би се подударила са стабилности сличног интерфејса за C језик. Драјвер virtio_snd, предложен као пример, погодан је за репродукцију музике у QEMU-у. Очекује се да ће до 2026. године Rust повезивања бити довољно стабилна да заинтересовани програмери почну да их користе за писање кода.
- Бени Сигерт, програмер NetBSD-а, понудио је образложење зашто се подршка за Rust неће појавити у NetBSD језгру: NetBSD подржава архитектуре за које Rust није доступан; одржавање постојећег Rust ланца алата у pkgsrc-у представља значајан напор и подржава га само неколико програмера; подршка за Rust у језгру захтева да Rust компајлер буде укључен у основни систем; покретање Rust-а на NetBSD-у користи стари бинарни пакет, што је неприхватљиво за самосталне дистрибуције дистрибуиране као изворни код; циклуси издања Rust-а нису компатибилни са циклусима развоја и подршке NetBSD-а за старије гране (на пример, NetBSD 9, објављен 2020. године, и даље је подржан, што би захтевало испоруку и подршку за шест година старог 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 пројекат је развој параметарског CAD (computer-aided design) система написаног у Rust-у и интегрисаног са AI агентима користећи MCP протокол. Подржава 3D моделирање, симулацију, 2D скицирање, склапање компоненти, STEP увоз и STL/GLB/STEP/DXF извоз.
- Објављен је систем за препознавање говора написан у програмском језику Rust који користи модел Mistral Voxtral Mini 4B Realtime AI и оквир за машинско учење Burn. Пројекат се фокусира на препознавање говора у ходу за транскрипцију уживо.
- Објављен је комплет алата c2rust 0.22. Дизајниран је за превођење C кода (C99) у небезбедну Rust репрезентацију, сличну по структури оригиналном C коду. Добијени радни оквир може се користити за постепену миграцију на идиоматски Rust и уклањање небезбедних блокова.
Извор: опеннет.ру
