Lëshimi i Rust 1.92. Projeket Rust për GUI, izolimin e sandbox-it dhe krijimin e firmware-it

Опубликован релиз языка программирования Rust 1.92, основанного проектом Mozilla, но ныне развиваемого под покровительством независимой некоммерческой организации Rust Foundation. Язык сфокусирован на безопасной работе с памятью и предоставляет средства для достижения высокого параллелизма выполнения заданий, при этом обходясь без использования сборщика мусора и runtime (runtime сводится к базовой инициализации и сопровождению стандартной библиотеки).

Metodat e punës me kujtesën në Rust e çlirojnë zhvilluesin nga gabimet gjatë manipulimit me treguesit dhe e mbrojnë atë nga problemet që lindin për shkak të punës me kujtesën në nivel të ulët, si qasja në një zonë kujtese pas çlirimit të saj, dereferencimi i treguesve null, dalja jashtë kufijve të buffers etj. Për shpërndarjen e bibliothekave, sigurimin e ndërtimit dhe menaxhimin e varësive, projekti zhvillohet me menaxherin e paketave Cargo. Për mbështetje të bibliothekave, ekziston një repository 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:

  • Продолжена стабилизация типа «never», обозначаемого символом «!» и определяющего вычисления, никогда не возвращающие значения (например, функция «exits», макрос «panic!» и бесконечные циклы никогда не возвращают управление). В новой версии Lint-проверки «never_type_fallback_flowing_into_unsafe» и «dependency_on_unit_never_type_fallback» по умолчанию переключены с вывода предупреждений на генерацию ошибок компиляции. Данные проверки срабатывают при наличие проблем в коде, проявляющихся при использовании типа «never».

    По предварительной оценке подобные проблемы имеются примерно в 500 crate-пакетах. Включение lint-проверок позволит подготовиться к стабилизации типа «never», который в пока отнесён к числу экспериментальных возможностей. Lint-проверки срабатывают только при прямой сборке пакетов и не проявляются при сборке зависимостей. Проверки также могут быть отключены через атрибут «#[allow]».

  • Изменено поведение lint-проверки «unused_must_use», срабатывающей при игнорировании возвращаемого функцией значения, если функция или возвращаемый тип помечены атрибутом «#[must_use]». В новой версии прекращён вывод предупреждений об игнорировании возвращаемых значений с типами Result и ControlFlow, в которых состояние ошибки определяется типом без значений («!» или «Infallible»). Например, «fn can_never_fail() -> Result<(), Infallible> {…}».
  • Изменено поведение флага «-Cpanic=abort», при указании которого включена генерация по умолчанию unwind-таблиц для выполнения обратной трассировки (backtrace) . Для возвращения старого поведения предусмотрена опция «-Cforce-unwind-tables=no».
  • Ужесточена проверка аргументов атрибута «#[macro_export]». При указании недопустимых атрибутов теперь будет выводиться ошибка, а не предупреждение. Проблемы с «#[macro_export]» будут проверяться не только при прямой сборке crate-пакета, но и при сборке зависимостей.
  • В safe-коде разрешено получение raw-указателей («&raw [mut | const]») на поля в union-типах.
  • Для целевой платформы mips64el-unknown-linux-muslabi64 реализована поддержка динамического связывания.
  • Минимально поддерживаемая версия внешнего инструментария LLVM поднята до ветки LLVM 20.
  • Një grup i ri API u kalua në kategorinë e stabilizuar, përfshirë stabilizimin e metodave dhe implementimeve të trait-ëve:
    • NonZero<u{N}>::div_ceil
    • Location::file_as_c_str
    • RwLockWriteGuard::downgrade
    • Box::new_zeroed
    • Box::new_zeroed_slice
    • Rc::new_zeroed
    • Rc::new_zeroed_slice
    • Arc::new_zeroed
    • Arc::new_zeroed_slice
    • btree_map::Entry::insert_entry
    • btree_map::VacantEntry::insert_entry
    • impl Extend<proc_macro::Group> for proc_macro::TokenStream
    • impl Extend<proc_macro::Literal> for proc_macro::TokenStream
    • impl Extend<proc_macro::Punct> for proc_macro::TokenStream
    • impl Extend<proc_macro::Ident> for proc_macro::TokenStream
  • Priznaku «const» aplicohet në funksione:
    • <[_]>::rotate_left
    • <[_]>::rotate_right
  • В пакетном менеджере Cargo обеспечен повтор операции «git fetch» в случае сбоя выполнения первого запроса. Добавлены компоненты для интеграции с эмулятором терминала Ghostty. В руководство добавлена новая глава про оптимизацию процесса сборки.

Gjithashtu mund të theksohet projektet dhe ngjarjet e shpallura së fundmi të lidhura me Rust:

  • Компания Ferrocene объявила о прохождении сертификации IEC 61508 (SIL 2) для библиотеки libcore, включающей подмножество вызовов из стандартной базовой библиотеки Rust. Сертификация подтверждает соответствие библиотеки требованиям для критически важных промышленных систем. Компания Ferrocene известна созданием инструментария для разработки на языке Rust приложений для критически важных систем (Safety-Critical Systems), а также поддержанием спецификации FLS (Ferrocene Language Specification), на базе которой развивается эталонная спецификация на язык Rust.
  • Опубликован релиз библиотеки Iced 0.14 для создания графических интерфейсов пользователя с использованием модели реактивного программирования. В Iced реализована архитектура, привычная для разработчиков, знакомых с языком декларативного построения интерфейсов Elm. Предлагается готовый набор виджетов с возможностью создания асинхронных обработчиков и применения адаптивной компоновки элементов интерфейса в зависимости от размера окна и экрана. Предоставляется несколько движков отрисовки, поддерживающих Vulkan, Metal и DX12. Из крупных проектов, использующий Iced, можно отметить среду рабочего стола COSMIC.

    В новой версии добавлены виджеты «table», «grid», «sensor», «float» и «pin», а также расширены возможности виджета для работы с разметкой Markdown. Реализованы: режим реактивной отрисовки; появляющиеся при необходимости полосы прокрутки; API для работы с анимацией; поддержка методов ввода; headless-режим; возможность внесения изменений без остановки приложения (hot reloading); распараллеливание декодирования изображений; инструменты для отладки и профилирования производительности.

  • Проект Ribir развивает библиотеку для создания многоплатформенных приложений с графическим интерфейсом, позволяющую использовать одну общую кодовую базу приложения для формирования графических приложений для разных платформ (Linux, Windows, macOS, в планах Android и iOS). Доступны декларативный язык построения интерфейса на основе Rust-макросов, более 20 виджетов, темы оформления, рендер на базе wgpu.
  • Представлена утилита Island, предназначенная для изолированного запуска приложений. Для sandbox-изоляции задействован механизм Landlock. Island позволяет создавать правила в формате TOML и применять их для изоляции при помощи Landlock существующих исполняемых файлов, без необходимости внесения изменений в код. В отличие от Firejail утилита Island не требует прав root и специальных полномочий.
  • Компания Google представила написанный на Rust инструментарий Wasefire для разработки защищённых прошивок. Основная идея в запуске поверх базового окружения прошивки (платформы) отдельных изолированных обработчиков (апплетов). Разработка прошивки не привязана к языкам программирования — компоненты прошивки могут поставляться в представлении WebAssembly с расширениями WASI (WebAssembly System Interface) и выполняться при помощи Wasmtime.
  • Опубликован выпуск UEFI-прошивки Patina 18, написанной на Rust. Patina предоставляет замену базовым компонентам прошивки UEFI и может использоваться для постепенного перевода существующих прошивок, написанных на Си, на использование языка Rust.
  • Проект Brimstone развивает новый JavaScript-движок, написанный с нуля на языке Rust. В текущем виде уже поддерживается более 97% от возможностей ECMAScript 2026. Виртуальная машина для выполнения байткода создана с оглядкой на архитектуру движка V8.
  • Проект Catten развивает ядро для экспериментальной операционной системы CharlotteOS, написанное на Rust. Ядро поддерживает управление доступом на основе «capability» (по аналогии с Fuchsia) и использует похожую на Plan 9 распределённую иерархию ресурсов с адресацией файловых путей по URI.
  • Опубликован выпуск интерактивной командной оболочки Fish 4.2.0 (friendly interactive shell). Ветка 4.x примечательна полным переводом кодовой базы с языка С++ на Rust.
  • Компания Сoudflare открыла код Rust-библиотеки tokio-quiche, для встраивания поддержки протоколов QUIC и HTTP/3 в асинхронно работающие приложения на базе фреймфорка Tokio.
  • Проект Tor опубликовал выпуски Arti 1.7 и 1.8, реализации инструментария Tor, написанного на языке Rust. Когда код Arti достигнет уровня, способного полностью заменить вариант на Си, разработчики Tor намерены придать Arti статус основной реализации Tor и постепенно прекратить сопровождение реализации на Си.

    В новой версии стабилизирована реализация ограниченного определения onion-сервисов с использованием авторизации клиента («restricted-discovery»). В дополнение к прокси SOCKS добавлена поддержка HTTP-прокси, использующего метод CONNECT. Реализовано адаптивное выставление таймаутов в зависимости от нагрузки. Добавлена экспериментальная поддержка tokio-console. Продолжено развитие функциональности для релеев и serverësh директорий (Directory Authority). Добавлена команда «arti hsc ctor-migrate» для переноса ключей из Си-клиента в хранилище ключей Arti. Добавлены настройки для управления запуском onion-сервисов.

  • Опубликована СУБД RustDB, созданная на языке Rust под впечатлением от PostgreSQL. Поддерживаются базовые SQL-операции (CREATE/DROP TABLE/VIEW, INSERT, SELECT, UPDATE, DELETE, SHOW TABLES, EXPLAIN, VACUUM), транзакции, MVCC, WAL (Write-Ahead Log), индексы, подключение через PostgreSQL-совместимый протокол. При написании RustDB использовался AI.

Burimi: opennet.ru

Blini hostim të besueshëm për faqe interneti me mbrojtje DDoS, serverë VPS VDS 🔥 Blini hostim të besueshëm për faqe interneti me mbrojtje DDoS, serverë VPS VDS - ProHoster