Опубликован релиз языка программирования Rust 1.94, основанного проектом Mozilla, но ныне развиваемого под покровительством независимой некоммерческой организации Rust Foundation. Язык сфокусирован на безопасной работе с памятью и предоставляет средства для достижения высокого параллелизма выполнения заданий, при этом обходясь без использования сборщика мусора и runtime (runtime сводится к базовой инициализации и сопровождению стандартной библиотеки).
Metodat e punës me memorie në Rust janë të orientuara për të eliminuar gabimet gjatë manipulimit të treguesve dhe për të mbrojtur nga problemet që lindin nga puna me nivel të ulët me memorinë, siç janë akseset në zona memorien pas lirimit të saj, dereferencimi i treguesve null, tejkalimi i kufijve të bufeve etj. Për shpërndarjen e bibliotekave, sigurinë e ndërtimit dhe menaxhimin e varësive, projekti zhvillohet me ndihmën e menaxherit të paketave Cargo. Mbështetet një depo për bibliotekat, crates.io.
Puna e sigurt me kujtesën sigurohet në Rust gjatë kompilimit përmes verifikimit të referencave, ndjekjes së pronësisë së objekteve, llogaritjes së kohëzgjatjes së jetës së objekteve (fushave të dukshmërisë) dhe vlerësimit të saktësisë së qasjes në kujtesë gjatë ekzekutimit të kodit. Rust gjithashtu ofron mjete për mbrojtjen nga tejkalimet e numrave të plotë, kërkon inicializimin e detyrueshëm të vlerave të variablave para përdorimit, trajton më mirë gabimet në bibliotekën standarde, aplikon konceptin e referencave dhe variablave të pandryshueshëm (immutable) si standard dhe ofron tipizimin e fortë statik për të minimizuar gabimet logjike.
Novitetet kryesore:
- В тип slice добавлен метод array_windows, создающий итератор для прохождения по срезам (slice) «окнами» фиксированного размера, сдвигающимися на один элемент за раз. В отличие от ранее доступного метола 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, в которой появилась поддержка многострочных встроенных таблиц, escape-последовательностей «\xHH» для вставки шестнадцатеричного представления байтов и «\e» для замены «\u001B», возможности оставлять запятую в конце последнего элемента и пропускать указание секунд в значениях времени. serde = { version = «1.0», features = [«derive»] } теперь можно заменить на serde = { version = «1.0», features = [«derive»], }
- Një grup i ri API u kalua në kategorinë e stabilizuar, përfshirë stabilizimin e metodave dhe implementimeve të trait-ëve:
- <[T]>::array_windows
- <[T]>::element_offset
- LazyCell::get
- LazyCell::get_mut
- LazyCell::force_mut
- LazyLock::get
- LazyLock::get_mut
- LazyLock::force_mut
- impl TryFrom<char> for usize
- 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
- Priznaku «const» aplicohet në funksione:
- f32::mul_add
- f64::mul_add
- Платформа riscv64im-unknown-none-elf переведена на третий уровень поддержки. Третий уровень охватывает базовую поддержку, но без автоматизированного тестирования, публикации официальных сборок и проверки возможности сборки кода.
Gjithashtu mund të theksohet projektet dhe ngjarjet e shpallura së fundmi të lidhura me Rust:
- Айртон Муньос (Ayrton Muñoz), в своё время реализовавший поддержку платформы Sony PlayStation 1 в компиляторе Rust и занимавшийся портированием FreeBSD на компьютеры с чипами Apple Silicon, реализовал для FreeBSD возможность создания компонентов ядра и драйверов устройств на языке Rust. Для тестирования предложен набор KPI-обвязок (Kernel Programming Interface), позволяющих использовать код на Rust в ядре FreeBSD, а также созданные с использованием данных обвязок звуковой драйвер virtio (virtio_snd), HID‑драйвер DockChannel для клавиатуры в M2 MacBook и несколько низкоуровневых драйверов для подсистем компьютеров Mac на чипах Apple Silicon.
Отмечается, что работа над Rust-обвязками ведётся с конца 2024 года. В обвязках пока реализована лишь часть C‑KPI и они позиционируются как не стабильные, но со временем уровень стабильности планируют довести до аналогичного интерфейса для языка Си. Предложенный в качестве примера драйвер virtio_snd пригоден для воспроизведения музыки в QEMU. Предполагается, что в 2026 году Rust-обвязки будут достаточно стабилизированы для того, чтобы заинтересованные разработчики могли начать использовать их для написания кода.
- Бенни Зигерт (Benny Siegert), участвующий в разработке NetBSD, попытался обосновать причины, по которым поддержка языка Rust не появится в ядре NetBSD: NetBSD поддерживает архитектуры, для которых Rust недоступен; поддержание имеющегося в pkgsrc инструментария Rust требует больших усилий и сопровождается лишь несколькими разработчиками; поддержка 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, развивающий параметрическую систему автоматизированного проектирования (САПР), написанную на Rust и интегрируемую с AI-агентами при помощи протокола MCP. Поддерживается 3D-моделирование, симуляция, работа с 2D-эскизами, компонентная сборка, импорт в формате STEP и экспорт в форматах STL/GLB/STEP/DXF.
- Опубликована система распознавания речи, написанная на Rust и использующая AI-модель Mistral Voxtral Mini 4B Realtime и фреймворк машинного обучения Burn. Проект ориентирован на распознавание речи на лету для формирования транскрипции при потоковом вещании.
- Состоялся выпуск инструментария c2rust 0.22, предназначенного для трансляции Си-кода (C99) в unsafe-представление на Rust, близкое по своей структуре к изначальному коду на Си. Полученный рабочий каркас в дальнейшем можно использовать для постепенного перевода на идиоматический Rust и избавления от unsafe-блоков.
Burimi: opennet.ru
