Профиль: Аноним (вход | регистрация) неRU opennet.me  
OpenNET

[ новости /+++ | форум | теги |    ]

Выпуск Rust 1.100. Компилятор tsrs для TypeScript, оптимизатор компиляции rustd и ОС FTL

13.11.2026 20:26 (MSK)

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

Методы работы с памятью в Rust нацелены на исключение ошибок при манипулировании указателями и защиту от проблем, возникающих из-за низкоуровневой работы с памятью, таких как обращение к области памяти после её освобождения, разыменование нулевых указателей, выход за границы буфера и т.п. Для распространения библиотек, обеспечения сборки и управления зависимостями проектом развивается пакетный менеджер Cargo. Для размещения библиотек поддерживается репозиторий crates.io.

Безопасная работа с памятью обеспечивается в Rust во время компиляции через проверку ссылок, отслеживание владения объектами, учёт времени жизни объектов (области видимости) и оценку корректности доступа к памяти во время выполнения кода. Rust также предоставляет средства для защиты от целочисленных переполнений, требует обязательной инициализации значений переменных перед использованием, лучше обрабатывает ошибки в стандартной библиотеке, применяет концепцию неизменяемости (immutable) ссылок и переменных по умолчанию, предлагает сильную статическую типизацию для минимизации логических ошибок.

Основные новшества:

  • Стабилизирован тип "never", обозначаемый символом "!" и определяющий вычисления, никогда не приводящие к возврату значений, любой код следом за которыми недостижим. Например, тип "!" имеют выражения, прерывающие ход выполнения программы, такие как функция "exit", макрос "panic!", бесконечные циклы, ключевые слова "return", "break", "continue" и "become". Похожий тип Infallible, применяемый для обозначения ошибок, которые никогда не произойдут, теперь является псевдонимом типа "!". Поскольку тип "!" не имеет значений, его разрешено автоматически приводить к любым другим типам, например, для того чтобы не возвращать значение в одном из выражений конструкций "match" и "if". В коде ниже одно выражение возвращает u32, а другое выполняет return с типом "!", и компилятор приводит его к типу u32:
    
       fn mrrrow(option: Option<u32>) {
           let value = match option {
               Some(x) => x,
               None => return,
           }; 
       }
    
  • Стабилизирована часть API Allocator и типаж Allocator, позволяющие создавать собственные обработчики выделения памяти и использовать их вместе с типами стандартной библиотеки. На текущем этапе развития допускается создание аллокаторов только для типов Vec и Box.
  • Добавлен вспомогательный тип DropGuard (core::mem::DropGuard), который позволяет гарантированно выполнить замыкание (closure) при любом выходе контролируемой переменной из области видимости (например, выполнении return, возврате ошибки через "?" или аварийном завершении) без необходимости создания отдельной обёртки и реализации для неё типажа Drop.
  • Добавлена функция std::mem::conjure_zst для создания типов нулевого размера (ZST, Zero-Sized Type) в unsafe-коде, без трюков типа std::mem::transmute(()) и MaybeUninit::uninit().assume_init(). Подобные типы имеют размер 0 байт и могут принимать только одно пустое значение. Экземпляры данного типа используются как маркеры, подтверждающие выполнение определённых условий. Например, в библиотеке PyO3 подобный маркер указывает, что текущий поток удерживает глобальную блокировку (GIL, Global Interpreter Lock).
  • В пакетный менеджер Cargo добавлены возможности для обнаружения неиспользуемых зависимостей на уровне пакета, не завязанные на вызов линтера (unused_crate_dependencies). Для исключения ложных срабатываний, предупреждение о неиспользуемой зависимости выводится только при сборке всех сборочных целей, которые теоретически могут использовать эту зависимость. Возможность реализована как часть более крупного проекта по добавлению в Cargo собственной системы линтинга. Правила проверок можно настраивать в Cargo.toml в секции "[lints.cargo]", аналогично тому, как настраиваются "[lints.rust]" и "[lints.clippy]".
  • В Cargo переработана структура каталогов сборки (build-dir) для устранения коллизий в кэше при использовании разных конфигураций (например, разных наборов "--features"). Каталоги теперь группируются по этапам сборки (build step), а не по типам файлов, а хэш сборочной конфигурации применяется ко всему контенту и перенесён из имени файла в имя родительского каталога.
  • В Cargo реализована настройка "global-min-publish-age", позволяющая задать "период охлаждения", допускающий установку новых версий при выполнении "cargo update" только если с момента их публикации прошло определённое время, иначе лишь выводится предупреждение о доступности новой версии, без её установки. Подобная задержка позволяет защититься от установки вредоносных версий пакетов, выпущенных в случае компрометации проектов. Как правило, подобные вредоносные публикации обнаруживаются сообществом в первые часы или дни после публикации. Для принудительного обновления в обход периода охлаждения можно использовать переменную кружения "CARGO_RESOLVER_INCOMPATIBLE_PUBLISH_AGE=allow".
    
       [registry]
       global-min-publish-age = "3 days"
    
  • В разряд стабильных переведена новая порция API, в том числе стабилизированы методы и реализации типажей:
  • Целевые платформы i686-pc-windows-gnu и wasm32-wasip3 переведены на второй уровень поддержки, который подразумевает гарантию сборки, но отсутствие гарантий при прохождении тестового набора.
  • Добавлена поддержка платформы powerpc64-sony-ps3, для которой обеспечен третий уровень поддержки. Третий уровень охватывает базовую поддержку, но без автоматизированного тестирования, публикации официальных сборок и проверки возможности сборки кода.



Дополнительно можно отметить недавно анонсированные проекты и события, связанные с Rust:

  • Компания Cloudflare в сотрудничестве с командой TypeScript разрабатывает порт компилятора TypeScript, написанный на языке Rust - tsrs. В проведённых тестах новая реализация оказалась в 8 раз быстрее и потребляла на 70% меньше памяти по сравнению с написанным на языке Go штатным компилятором из состава TypeScript 7.0. Часть появившихся в tsrs оптимизаций перенесена в основной состав TypeScript, что позволило до 2.5 раз поднять производительность штатного компилятора. Язык Rust выбран как позволяющий добиться большей эффективности при сборке в WebAssembly, так как в отличие от языка Go в Rust не используется сборщик муcора. Запуск в WebAssembly важен для Cloudflare для реализации поддержки TypeScript в Cloudflare Worker-ах.
  • rustd - фоновый процесс для оптимизации компиляции кода на Rust, позволяющий до 25 раз ускорить повторные и параллельные сборки при помощи cargo за счёт сохранения состояния компиляции. В отличие от cargo и rustc, которые каждый раз анализируют и компилируют код с нуля, rustd хранит результаты анализа кода в оперативной памяти, а скомпилированные представления функций в кэше на диске. При внесении изменений перекомпилируются только изменившиеся функции. Проект актуален для систем, в которых приходится многократно и параллельно в нескольких рабочих деревьях собирать один и тот же код.
  • FTL - операционная система для облачных систем, написанная на Rust и предоставляющая слой совместимости с Linux. В FTL применяется минималистичное ядро наподобие гипервизора, которое предоставляет базовые примитивы, такие как vCPU и виртуальное адресное пространство, и перенаправляет системные вызовы Linux в обработчик в пользовательском пространстве. В пользовательском пространстве в форме библиотек также реализованы стек TCP/IP, VFS и средства управления процессами. По аналогии с gVisor каждый контейнер содержит собственный изолированный экземпляр ОС и может применяться для запуска Linux-контейнеров. Код поставляется под лицензией MIT.
  • Компания Collabora рассказала о прогрессе интеграции в основной состав ядра Linux драйвера Tyr для GPU ARM Mali-G610, написанного на Rust. В недавно выпущенное ядро Linux 7.3 вошли изменения, позволяющие загружать прошивки в формате Mali CSF, активировать виртуальную память GPU и запускать микроконтроллер (MCU) для обеспечения взаимодействия c GPU, но до полноценной замены драйвера Panthor ещё далеко.
  • На языке Rust подготовлена альтернативная прошивка для USB-тестера Kowsi KWS-X1, предоставляющая такие расширенные возможности, как продвинутый графический интерфейс с графиками изменения напряжения, силы тока и мощности, диагностика и сканирование зарядных устройств, управление протоколами быстрой зарядки. Код открыт под лицензиями MIT и Apache-2.0.
  • blackship - написанный на Rust инструментарий оркестровки Jail-окружений для FreeBSD, поддерживающий декларативную конфигурацию в формате TOML, интеграцию с ZFS, импорт содержимого через "zfs send | ssh zfs receive", VNET для сети, шаблоны Jailfile, управление зависимостями при запуске сервисов, обновление jail-окружений на лету, ограничение ресурсов, MCP-сервер и контроль над жизненным циклом jail-окружений.


  1. Главная ссылка к новости (https://blog.rust-lang.org/202...)
  2. OpenNews: Основатель CentOS и Rocky Linux представил Linux-совместимое ядро Ginux, написанное на Rust
  3. OpenNews: В systemd добавлена возможность разработки компонентов на языке Rust
  4. OpenNews: Выпуск Rust 1.99.0. Microsoft перевёл Rust в число первичных языков
  5. OpenNews: NVIDIA представила CUDA Rust для разработки GPU-ядер на языке Rust
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/66680-rust
Ключевые слова: rust



Обсуждение (7) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.2, Аноним (2), 21:03, 13/11/2026 [ответить]  
  • –2 +/–
    Такая титаническая работа проделана. А до некоторых еще не дошло.

    Надо уязвимость с памятью сразу в паблик кидать, мб хоть так почешутся.

     
  • 1.3, Аноним (3), 21:09, 13/11/2026 [ответить]  
  • +1 +/–
    Компилятор typescript на сабже - благо. Всякие LSP на сабже - благо. И еще куча всего что на всяких петонах и нодах написано.
     
  • 1.4, Карлос Сношайтилис (ok), 21:10, 13/11/2026 [ответить]  
  • +/–
    Ну что, друзья, о чём сегодня похоливарим? Отсутствие спецификаций, теории заговоров, только ИИ на расте писать могут...?

    Или есть новые темы?
    Прошу, проявите фантазию!

     
     
  • 2.6, Аноним (3), 21:12, 13/11/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Операционка в стиле Unix, только на расте. Кде открываешь man fopen - а там РАСТ :D
     

  • 1.5, Аноним (3), 21:10, 13/11/2026 [ответить]  
  • +/–
    Кстати, а что происходит с разработкой Helix? Куда пропали разрабы, они живы вообще?
     
  • 1.7, Hexen (ok), 21:12, 13/11/2026 [ответить]  
  • +/–
    Бля, они заняли имя которое я хотел использовать для крейта обработки временных рядов =(
     
  • 1.8, Аноним (8), 21:13, 13/11/2026 [ответить]  
  • +/–
    wasm32-wasip3 переведены на второй уровень поддержки. Главная фича этого релиза
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    XSQUARE
    Inferno Solutions
    Hosting by Hoster.ru
    Хоcтинг: