Возможность объявлять две и более переменных в условных выражениях if / while:
if let Channel::Stable(v) = release_info()
&& let Semver { major, minor, .. } = v
&& major == 1
&& minor == 88
{
println!("`let_chains` was stabilized in this version");
}
В DSL для условной компиляции cfg добавлены константы true и false, которые так же стали доступны в макросе cfg!.
Добавлено предупреждение о попытке обращения к нулевому указателю для функций, чьи инварианты корректной работы требуют не нулевых адресов. К примеру попытка сконструировать объект std::slice по нулевому адресу:
Долгая компиляция кода на Rust часто упоминалась как одно из самых больших испытаний, ограничивающих продуктивность Rust-разработчиков. Люди, вносящие вклад в компилятор Rust, конечно, в курсе об этом, и они постоянно работают над улучшением ситуации, ища новые способы ускорить компилятор, сортируя регрессии производительности и измеряя наши долгосрочные улучшения производительности. Недавно мы также внесли крупные изменения, на разработку которых было потрачено много времени, так что производительность компилятора должна значительно улучшиться по умолчанию.
Когда речь идёт о производительности компиляции, важно отметить, что это не всегда так же просто, как определить, насколько долго rustc компилирует крейт. Есть много разнообразных рабочих процессов разработки, которые могут заставлять идти на компромиссы, и тех, которые могут быть затруднены различными факторами, такими как интеграция компилятора с используемой сборочной системой.
Для того, чтобы лучше понять эти рабочие процессы, мы приготовили Опрос по производительности компилятора Rust. Он акцентирован именно на производительности компиляции, что позволяет нам получить более подробные данные, чем те, которые мы обычно получаем из ежегодного опроса «State of Rust». Данные из этого опроса помогут нам понять места, на которых нам следует сосредоточить усилия по улучшению продуктивности Rust-разработчиков.
Прохождение должно занять приблизительно 10 минут вашего времени. Опрос полностью анонимен. Мы будем принимать формы до 7 июля 2025 года. По окончании опроса мы обработаем результаты и опубликуем ключевые моменты в этом блоге.
Приглашаем вас принять участие в опросе, ведь ваши ответы помогут нам улучшить производительность компиляции Rust. Спасибо!
Microsoft опубликовал исходные тексты подсистемы wsl. Для желающих присоединиться к разработке запущен сайт wsl.dev.
WSL предоставляет виртуальную машину с полноценным ядром Linux (на базе ветки 6.6), в которой могут запускаться дистрибутивы Linux. Ядро включает специфичные для WSL изменения, такие как оптимизации для сокращения времени запуска и уменьшения потребления памяти, возможность возвращения Windows освобождённой Linux-процессами памяти и настройки для исключения лишних драйверов и подсистем. Система устанавливается в отдельный дисковый образ (VHD) c файловой системой ext4 и виртуальным сетевым адаптером.
Компоненты WSL, связанные с ядром Linux и графическим стеком wslg, применяемым для для запуска GUI-приложений на базе Wayland и X11, развивались в открытом виде изначально, но весь сопутствующий инструментарий оставался проприетарным. Отныне в число открытых переведены следующие компоненты:
утилиты командной строки wsl.exe, wslconfig.exe и wslg.exe, используемые для взаимодействия с WSL;
сервис wslservice.exe, применяемый для запуска виртуальной машины, активации в ней Linux-окружения и монтирования файловых систем;
фоновые процессы, запускаемые в Linux-окружении для доступа к функциональности WSL. Например, процесс init для начальной инициализации, gns для настройки сетевого доступа, localhost для перенаправления портов;
процесс plan9 с реализацией сервера Plan9, применяемого в WSL для совместного доступа к Linux-файлам из Windows.
Остаются частью Windows и не открыты в настоящее время:
драйвер ядра Lxcore.sys, применяемый для запуска исполняемых файлов в формате ELF через слой обеспечения совместимости;
драйвер P9rdr.sys и библиотека p9np.dll, обеспечивающие перенаправление доступа к ФС «\wsl.localhost» при обращении из Windows к Linux.
Одновременно компания Microsoft открыла под лицензией MIT исходный код консольного текстового редактора Edit, написанного на модном языке Rust и нацеленного на поставку по умолчанию в 64-разрядных версиях Windows. В ближайшие месяцы редактор будет предложен для ознакомления и тестирования в сборках Windows Insider Program, после чего войдёт в штатную поставку Windows 11.
В редакторе попытались реализовать современный интерфейс с управлением в стиле VS Code. Целью заявлено предоставление интерфейса, который был бы понятен и прост в использовании даже для тех, кто не имеет опыта работы в терминале. Редактор компактен и занимает всего 250kB на диске. Из возможностей упомянуты: система меню, управление клавиатурными комбинациями или мышью, поддержка вкладок и одновременной работы с несколькими файлами, операции поиска и замены, режим автоматического переноса текста на новую строку.
15 мая этого года исполнилось 10 лет с момента выхода первой стабильной версии языка программирования Rust, разрабатываемого Mozilla совместно с сообществом.
Основные итоги за это время:
В 2015 году на новый браузерный движок servo возлагали большие надежды, которые, к сожалению, покане оправдались.
В том же году на Rust написана операционная система Redox, до сих пор остающаяся экзотикой.
В Ubuntu 25.10 собираются использовать sudo-rs по умолчанию вместо привычного sudo. Это реализация утилиты повышения привилегий sudo, написанная на языке программирования Rust.
sudo-rs разработана Trifecta Tech Foundation (TTF), некоммерческой организацией, которая создает безопасные компоненты с открытым исходным кодом для инфраструктурного программного обеспечения.
В sudo-rs обеспечена совместимость с классическими утилитами sudo и su, что даёт возможность использовать sudo-rs в качестве прозрачной замены sudo в системе. Для пользователей, не желающих переходить на новые утилиты из uutils и sudo-rs, в Ubuntu 25.10 будет предусмотрена возможность обратного перехода на привычные варианты системных утилит coreutils и sudo.
Замена sudo на sudo-rs — часть глобального плана по повышению безопасности и качества Ubuntu путём перехода на компоненты, написанные на языке Rust.
Как всем известно, язык программирования С++, пожалуй, самый большой по объему из ЯП. Даже программисты, которые пишут на нем десятки лет не могут похвастаться, что знают его полностью. В связи с чем комитет по стандартизации С++ принял нелегкое решение: чтобы язык оставался конкурентоспособным перед напирающими новыми ЯП, например rust, нужно удалить из него все легаси фичи, написаные непонятно какими гоблинами в мохнатые восьмидесятые. В этом помогут хорошо известные на этом форуме разработчики Gnome, которые в свое время удалили все лишние фичи из своей DE, тем самым сделав ее вне конкуренции. Они будут удалять все фичи, пока не удалят все «плюсы» и не дойдут до С, из которого и вылез C++, но на этом не остановятся, оставят от языка только минимальный C--.
После двух месяцев разработки Линус Торвальдс представил релиз ядра Linux 6.14. Среди наиболее заметных изменений: драйвер ntsync c примитивами синхронизации Windows NT, настройка балансировки операций чтения в Btrfs RAID1, поддержка reflink в XFS в режиме realtime, возможность некэшируемого буферизированного ввода/вывода, dmem cgroup для ограничения памяти GPU, задействование io_uring в FUSE, делегирование атрибутов в NFS, поддержка атомарной записи в Device mapper, ускорение символических ссылок, управление возможностью выполнения скриптов, поддержка чипов Qualcomm Snapdragon 8 Elite, драйвер для NPU AMD.
В новую версию принято 12115 исправлений от 1984 разработчиков, размер патча – 39 МБ (изменения затронули 10170 файлов, добавлено 531586 строк кода, удалено 235999 строк). В прошлом выпуске было 14172 исправлений от 2086 разработчиков, размер патча – 46 МБ. Около 41% всех представленных в 6.14 изменений связаны с драйверами устройств, примерно 13% изменений имеют отношение к обновлению кода, специфичного для аппаратных архитектур, 14% связано с сетевым стеком, 7% – с файловыми системами и 4% c внутренними подсистемами ядра.
18 марта состоялся выпуск 1.7.0 библиотек BLAKE3, реализующих криптографический алгоритм хеширования BLAKE3 на языках C и Rust, и распространяемых как общественное достояние или по лицензии Apache 2.0.
Проектом также предоставляется консольная утилита b3sum, написанная на языке Rust.
Командная оболочка Fish Shell, популярная среди пользователей терминалов, обновилась до версии 4.0, которая принесла значительные изменения и улучшения.
Основное новшество заключается в том, что Fish Shell теперь полностью переписана на языке программирования Rust. Однако для обычных пользователей этот переход будет практически незаметен: команды, настройки и типичные взаимодействия останутся прежними.
К обсуждению сопротивления мэйнтейнеров внедрению Rust в ядро подключился Линус Торвальдс, который пояснил, что никто не заставляет мэйнтейнеров изучать язык Rust, использовать код на Rust, или принимать во внимание наличие в ядре кода на Rust. Мэйнтейнеры могут спокойно продолжать работать только с кодом на Си и никак не пересекаться с Rust. Но подобные сопровождающие не могут и влиять на то, как развивается Rust в ядре, например, не могут вмешиваться в организацию внешнего взаимодействия Rust-кода с кодом их подистемы.
Линус раскритиковал действия Кристофа Хелвига, мэйнтейнера подсистем DMA, KVM, Slab Allocator и архитектуры PowerPC. По мнению Линуса, Кристоф превысил свои полномочия и попытался повлиять на код, который не затрагивал код подсистемы DMA, был реализован в отдельном подкаталоге и не влиял на код, за который отвечает Кристоф. Кристоф попытался контролировать то, для чего используется подсистема DMA, и его действия можно сравнить с попыткой запрета использования DMA в каком-то драйвере, лишь потому, что ему не понравился этот драйвер. Итог: несмотря на то, что сопровождающие отвечают за свой код, они не отвечают за то, кто и как использует результат работы этого кода.
Yazi (кит. «鸭子» означает «утка») — это невероятно быстрый терминальный файловый менеджер, написанный на Rust, основанный на неблокируемом асинхронном вводе-выводе. Он нацелен на предоставление эффективного, удобного и настраиваемого опыта управления файлами.
Платформа CADBase обеспечивает систему публикации, хранения и версионирования данных инженерного дела, таких как 3D-модели и чертежи.
Название платформы образовано путём соединения двух слов — CAD (САПР) и Base (База), условно «База данных для систем автоматизированного проектирования».
На сайте платформы имеется просмотрщик для файлов STL, планируется добавить поддержку файлов в формате STEP.
Проект Tor объявил о выпуске новой версии своего клиента Arti 1.4.0, разработанного на языке Rust. Этот выпуск включает множество новых функций и улучшений, направленных на повышение производительности и удобства использования.
Arti — это клиент Tor, переписанный на Rust. Как и оригинальный клиент, написанный на C, он может использоваться как отдельно в качестве SOCKS5-прокси, так и совместно с Tor Browser.
В сообществе разработчиков ядра Linux возникли разногласия по поводу интеграции языка программирования Rust. Кристоф Хелвиг (Christoph Hellwig), мэйнтейнер подсистем DMA, KVM, Slab Allocator и архитектуры PowerPC в ядре Linux, в своё время входивший в управляющий технический комитет организации Linux Foundation и выступавший истцом в связанном с GPL судебном разбирательстве с VMware, отказался подтверждать патчи, связанные с поддержкой разработки драйверов на языке Rust.
После месяца разработки состоялся выпуск 1.16.0 высокоточного консольного научного калькулятора Numbat, написанного на языке Rust и распространяемого по лицензии MIT и/или Apache 2.0.
Отличительные особенности Numbat:
полная поддержка физических размерностей и единиц измерения;
простой встроенный язык со статической типизацией;
автодополнение имён функций, единиц измерения и переменных;
После трёх месяцев разработки состоялся выпуск 0.25.0 кроссплатформенной консольной утилиты для просмотра файлов bat, написанной на языке Rust и распространяемой по лицензии MIT или Apache 2.0.
Утилитой поддерживается подсветка синтаксиса для 174 ($ bat -L) языков программирования и разметки текста.
У консольных файловых менеджеров из коробки обычно нет интерфейса для управления дисками, эта утилита решает эту проблему. Она является логическим продолжением прошлого решения.
Состоялся выпуск 1.19.0 кроссплатформенной (Linux, MacOS, Windows) консольной утилиты hyperfine, написанной на языке Rust и распространяемой по лицензиям Apache-2.0 и MIT.
Утилита предназначена для сравнения производительности других консольных утилит.
Список изменений:
добавлена опция --reference <cmd> позволяющая вручную указать команду <cmd>, с которой будут сравниваться результаты выполнения других команд;
добавлена опция --conclude <cmd>, выполняющая команду <cmd> после выполнения измеряемой команды;
команда --output= может быть задана для каждой команды;
переменная окружения $HYPERFINE_ITERATION теперь содержит текущий номер итерации для каждой команды бенчмарка;
в сообщение об ошибке добавлена информация об итерации;
в скрипт plot_histogram.py добавлена возможность позиционирования легенды графика на диаграмме. Выходной DPI графика установлен в 600 DPI;
улучшен скрипт plot_whisker.py;
исправлена ошибка отображения примерного времени выполнения в эмуляторах терминала с блочным курсором;
Написанный на языке Rust и использующий аппаратное ускорение рендеринга UI текстовый редактор Zed теперь поддерживает Linux. Команда разработчиков Zed начала выпускать официальные сборки этого редактора, которые должны работать на большинстве современных Linux систем. Для установки редактора предлагается запустить команду curl https://zed.dev/install.sh | sh.
3 июня разработчики ОС Redox опубликовали ежемесячный публичный отчёт о прогрессе в разработке за май 2024.
COSMIC. Джереми Соллера (разработчик из System76, а так же разработчик COSMIC в Redox, ссылка на персональный гитхаб) занимался заменой компонентов с Orbital на собственные COSMIC-аналоги, и теперь COSMIC-файлы, COSMIC-редактор и COSMIC-терминал являются постоянной частью рабочего стола Redox:
У нас все еще есть несколько ошибок при выходе из приложений, но в остальном они работают без сбоев и выглядят великолепно!
Обновление инструментария. Собственная ветка Rust была обновлена до версии от 11 мая 2024 г. Исправлено множество проблем с программами, требующими последней версии Rust.
Улучшения самостоятельного хостинга. Порт компилятора Rust был обновлен для соответствия версии собственного кросс-компилятора Rust.
Обновлён собственный порт LLVM.
Обновление Mesa3D. Собственная ветка Mesa3D была обновлена до последней стабильной версии 24.0.8.
Программная часть. Одним из участников разработки, Риббоном (Ribbon, ссылка на персональный гитхаб), упаковано больше программ, утилит и инструментов Cargo.
Для справки: Redox это unix-подобная микроядерная операционная система, написанная на языке программирования Rust с акцентом на безопасность и высокую производительность. При разработке использовался опыт таких ядер и операционных систем, как SeL4, Minix, Plan 9 и BSD. В качестве цели ставится создание экосистемы, похожей на GNU или BSD, но создаваемой на безопасном для памяти языке и с использованием актуальных для 2010-х годов технологий. Среди сопутствующих компонентов особо выделяются:
микроядро, выполненное по типу ядра MINIX;
библиотека Newlib для программ на Си (аналог glibc);
драйверы работают в пространстве пользователя;
имеется опционально включаемый GUI — Orbital;
Ion shell — базовая библиотека для оболочек и выполнения команд в Redox, а также оболочка по умолчанию;
файловая система TFS, аналог ZFS;
пакетный менеджер Magnet;
менеджер памяти Ralloc.
Проект существует и активно развивается с 2015 года, распространяется по лицензии MIT.