Опубликован релиз языка программирования Rust 1.98, основанного проектом Mozilla, но ныне развиваемого под покровительством независимой некоммерческой организации Rust Foundation. Язык сфокусирован на безопасной работе с памятью и предоставляет средства для достижения высокого параллелизма выполнения заданий, при этом обходясь без использования сборщика мусора и runtime (runtime сводится к базовой инициализации и сопровождению стандартной библиотеки).
Методы работы с памятью в Rust нацелены на исключение ошибок при манипулировании указателями и защиту от проблем, возникающих из-за низкоуровневой работы с памятью, таких как обращение к области памяти после её освобождения, разыменование нулевых указателей, выход за границы буфера и т.п. Для распространения библиотек, обеспечения сборки и управления зависимостями проектом развивается пакетный менеджер Cargo. Для размещения библиотек поддерживается репозиторий crates.io.
Безопасная работа с памятью обеспечивается в Rust во время компиляции через проверку ссылок, отслеживание владения объектами, учёт времени жизни объектов (области видимости) и оценку корректности доступа к памяти во время выполнения кода. Rust также предоставляет средства для защиты от целочисленных переполнений, требует обязательной инициализации значений переменных перед использованием, лучше обрабатывает ошибки в стандартной библиотеке, применяет концепцию неизменяемости (immutable) ссылок и переменных по умолчанию, предлагает сильную статическую типизацию для минимизации логических ошибок.
Для типов с плавающей запятой f32 и f64 реализованы алгебраические методы для сложения, вычитания, умножения, деления и нахождения остатка, реализующие оптимизацию, похожую на опцию "-ffast-math" в компиляторах C/C++. Подобные методы допускают изменение порядка операций, когда это необходимо для оптимизаций, таких как векторизация циклов. Например, при вычислении
"a + b + c + d" при использовании обычного сложения компилятор всегда выполнит вычисление в одном порядке "((a + b) + c) + d", а при использовании метода algebraic_add может сгруппировать выражение как "(a + b) + (c + d)" и выполнить "(a + b)" и "(c + d)" параллельно при помощи инструкций SIMD. Ценой применения алгебраических методов является недетерминированность результатов вычисления, которые могут меняться в пределах погрешности.
Для всех примитивных целочисленных типов реализован встроенный метод "format_into" для преобразования чисел в строки, который может применяться вместо пакета itoa. В качестве параметра передаётся буфер NumBuffer<Self>, размер которого гарантированно достаточен для записи любого значения используемого типа в десятичном виде. На выходе возвращается отформатированная строка &str, время жизни которой привязано к буферу.
Взаимодействие между обвязкой ManuallyDrop и умным указателем Box теперь не приводит к неопределённому поведению.
В разряд стабильных переведена новая порция API, в том числе стабилизированы методы и реализации типажей:
Целевые платформы thumbv7a-none-eabi, thumbv7a-none-eabihf, thumbv7r-none-eabi, thumbv7r-none-eabihf и thumbv8r-none-eabihf переведены на второй уровень поддержки, который подразумевает гарантию сборки, но отсутствие гарантий при прохождении тестового набора.
Добавлена поддержка платформ powerpc64-unknown-linux-gnuelfv2 и aarch64-unknown-linux-pauthtest, для которых обеспечен третий уровень поддержки. Третий уровень охватывает базовую поддержку, но без автоматизированного тестирования, публикации официальных сборок и проверки возможности сборки кода.
Дополнительно можно отметить компрометацию популярного crate-пакета arrayref, насчитывающего более 53 млн загрузок за последние 90 дней и применяемого в качестве зависимости у 403 пакетов. Атакующие разместили в репозитории crates.io новые пакеты proc-macro1, proc-macro-en, aovine, arone, aronenao и tinymember, содержащие вредоносный код. После этого в репозитории были опубликованы новые выпуски пакетов arrayref 0.3.10, internment 0.8.7 и append-only-vec 0.1.9 в которые в качестве зависимости был добавлен вредоносный пакет proc-macro1. Вредоносная версия пакета arrayref была размещена 20 августа в 10:15 (MSK) и просуществовала до 11:41, после чего была удалена администраторами crates.io.
С сопровождающим arrayref пока не удалось связаться для прояснения ситуации, но предполагается, что его учётные данные были перехвачены злоумышленниками. В пакете proc-macro1 вредоносное изменение присутствовало в сборочном скрипте и осуществляло загрузку исполняемого файла с внешнего сервера. Загруженный файл в Unix-системах сохранялся как /tmp/rust-setup, а в Windows - %TEMP%\rust-setup.ps1 или %TEMP%\rust-setup-launch.vbs.
Опубликован релиз пакетного менеджера RPM 6.1, который будет задействован в выпуске дистрибутива Fedora Linux 45. Проект развивается компанией Red Hat и используется в таких дистрибутивах, как RHEL, Fedora, SUSE, openSUSE, ALT Linux, Rosa Linux, OpenMandriva, Mageia, PCLinuxOS и Tizen. Код проекта распространяется под лицензиями GPLv2 и LGPLv2.
При подготовке RPM 6.1 осуществлён переход на новую схему нумерации релизов. Первая цифра версии меняется при изменении формата RPM-пакетов, а вторая - при добавлении новой функциональности и исправлений, не нарушающих обратную совместимость. Третья цифра указывает на наличие только исправлений ошибок или уязвимостей. Вместо формирования альфа- и бета-версий для тестирования теперь публикуются кандидаты в релизы.
Для разделения доступа к хранилищу ключей вместо использования общей блокировки транзакций задействована отдельная блокировка, что решило проблему с остановкой обработки всех запросов к
rpmdb во время выполнения транзакций.
Возвращено использование по умолчанию системы NSS (Name Service Switch) для поиска пользователей и групп.
На системах ядром 5.11+ и библиотекой glibc 2.34+ повышена эффективность закрытия файловых дескрипторов, что в некоторых ситуациях сократило время установки на 26%.
Добавлен новый синтаксис модификаторов для макросов (имя_макроса<модификаторы>), изменяющих поведение макросов. Реализованы два модификатора: "l" (literal, отключает обработку символа "%" внутри тела макроса) и "o" (one-shot, выполнение макроса только при первом вызове с последующим использованием прокэшированного значения).
В выражение "%define" добавлены опции: "-e" для раскрытия тела максроса только во время определения и "-g" для размещения макроса в глобальном контексте. Комбинация данных опций эквивалентна выражению "%global".
Улучшена обработка ошибок, связанных со сборкой и верификацией.
Улучшена работа плагина rpm-plugin-syslog с systemd-journal.
В утилите rpmsign реализована возможность заверения файлов цифровой подписью с использованием токенов PKCS11.
Опубликован проект SoLo, позволяющий полностью статическим Linux-программам, собранным с musl, загружать через dlopen() установленные в системе glibc-библиотеки, в первую очередь GPU-драйверы. Обычно статическая сборка несовместима с драйверами Vulkan и OpenGL, которые дистрибутивы поставляют в виде разделяемых библиотек, собранных с glibc. SoLo снимает это ограничение при помощи встроенного в исполняемый файл загрузчика ELF и прослойки, транслирующей вызовы glibc в musl-рантайм процесса — сам glibc в процесс не загружается, второго libc в процессе не появляется. Код написан на C++ и распространяется под лицензией MIT.
В репозиторий входит наглядный пример: статический исполняемый файл, в котором нет ни интерпретатора, ни динамической секции, штатным для Vulkan способом находит установленный в системе драйвер, загружает его вместе с зависимостями, выполняет вычислительный шейдер и сохраняет результат в PNG. В рамках непрерывной интеграции пример проверяется на Alpine, Fedora и Ubuntu с пакетами Lavapipe из штатных репозиториев этих дистрибутивов. Подход уже используется на практике — им формируются релизные сборки эмулятора терминала Shitty.
Опубликован кандидат в релизы X.Org Server 26.1.0 (xorg-server 26.0.99.901), который ознаменовал начало фазы тестирования перед финальным стабильным релизом. X.Org Server 26.1.0 станет первым крупным релизом X.Org Server за последние пять лет - предыдущая значимая ветка 21.1 была выпущена в 2021 году.
Ключевые изменения по сравнению с xorg-server 21.1:
Удаление системы сборки autoconf/automake в пользу поддержки только Meson.
Xwayland выделен в отдельный проект и больше не входит в состав xorg-server (из кодовой базы удалено более 21 тысячи строк кода).
Отключены по умолчанию байтово-инвертированные клиенты (byte-swapped clients), позволяющие на клиенте и сервере использовать разный порядок байтов.
Отключены по умолчанию соединения с сервером шрифтов.
Добавлена поддержка событий DPMSInfoNotify из DPMS 1.2.
В xorg.conf добавлена поддержка XFixes 6.1 и опция AllowForceTerminate.
Добавлена DRM-платформа (Direct Rendering Manager) для BSD-систем.
Логи для не-root пользователей перемещены в каталог $XDG_STATE_HOME/xorg.
В Xvfb реализована поддержка нескольких дисплейных контроллеров (CRTC) и до 13 кнопок мыши.
Удалены устаревшие расширения DMX, EXA и shadow pixmap.
В состав включены дополнительные тесты.
Релиз включает все оставшиеся X-серверы, не связанные с Xwayland: Xorg, Xephyr, Xnest, Xvfb, Xwin (для Microsoft Windows) и Xquartz (для macOS). Для тестирования Xorg рекомендуется собирать и запускать с libpciaccess 0.19 (выпущен в марте 2026), так как как минимум одно исправление зависит от нового API, представленного в этом релизе.
После четырёх месяцев разработки представлено августовское сводное обновление приложений KDE Gear 26.08, развиваемых проектом KDE. В составе набора опубликованы выпуски более 250 программ, библиотек и плагинов. Информацию о наличии Live-сборок с новыми выпусками приложений можно получить на данной странице. Новые версии отдельных приложений можно загрузить из каталогов Flathub и SnapCraft.
В файловом менеджере Dolphin улучшена интеграция с KDE Connect для сопряжения смартфона с рабочим столом - при навигации по файлам на смартфоне в панели теперь отображается кнопка "Open KDE Connect", позволяющая перейти в приложение "KDE Connect" для взаимодействия с мобильным устройством.
При просмотре директории с большим числом файлов предоставлена возможность открытия расширенной панели фильтрации содержимого комбинацией "Ctrl + i" для показа файлов, подпадающих под текстовую строку, маску или регулярное выражение.
Добавлена поддержка группировки файлов и директорий независимо от выбранного режима сортировки (например, можно отсортировать файлы в алфавитном порядке и затем сгруппировать их по типам файлов).
В контекстное меню вкладок добавлены кнопки для удаления вкладки справа или слева от текущей.
В просмотрщике документов Okular усовершенствованы возможности для подписания документов; объединены диалоги с настройками приложения и бэкендов; добавлена поддержка выделения разом всей строки тремя кликами; при работе с аннотациями обеспечено автоматическое включение выделенного текста при добавлении примечания; реализована возможность переноса примечаний и комментариев между документами через буфер обмена.
В эмулятор терминала Konsole добавлена возможность перемещения мышью файла во внешнее приложение через клик на имени файла в терминале, удерживая клавишу Alt (например, таким способом можно передать файловый путь к изображению в редактор изображений или путь к текстовому файлу в текстовый редактор). Аналогичным способом можно перемещать URL, email-адреса и коды цветов (например, можно перетащить мышью URL из терминала в браузер для открытия страницы).
В видеоредакторе Kdenlive в эффектах трансформации реализована возможность свободного перемещения осей вращения в кадре (ранее ось вращения была всегда зафиксирована строго по центру).
В эффекте "Карта градиента" появилась возможность добавления произвольного числа точек для управления переходом цветов. В эффекте "Кривые" разрешено независимо настраивать каждый цветовой канал.
Во временной шкале реализована возможность выделения группы клипов для копирования в отдельную вложенную последовательность (sequence). Добавлена функция автоматического создания звуковых дорожек, необходимых для клипа. Реализована возможность менять дорожки местами через их перетаскивание мышью. Добавлена поддержка назначения своих цветов для разных типов объектов на временной шкале.
В редакторе титров реализовано копирование и вставка объектов через буфер обмена. Появилась возможность скругления углов прямоугольных рамок. Обеспечена привязка перемещаемых объектов к другим элементам, краям или центру экрана, используя наглядные направляющие.
Предложен новый интерфейс программы обучения музыке Minuet, адаптирующийся для экранов настольных систем и мобильных устройств.
Компания Canonical анонсировала проект, развиваемый совместной с Бристольским университетом и нацеленный на разработку инструментария для автоматической трансляции кода с языка Си на Rust. Проект ориентирован на перевод больших репозиториев, содержащих сотни тысяч строк кода на Си, в безопасное (без unsafe-операций) и легко сопровождаемое представление на языке Rust. Canonical профинансирует работу исследователей над проектом в течение 3 лет. Развиваемая технология будет опробована для перевода на Rust пакетов AppArmor и snap-confine, чтобы проверить применимость метода к реальным системным компонентам.
В инструментарии будет задействована гибридная модель, комбинирующая технологии на основе машинного обучения с классическими методами анализа, тестирования и формальной верификации. В процессе работы крупные кодовые базы будут разделяться на отдельные фрагменты, транслируемые независимо без потери общего контекста, необходимого для учёта типов, зависимостей и поведения. AI-инструментарий будет обучен на коде существующих проектов, уже переведённых с Си на Rust, для задействования в результирующем коде корректных Rust-абстракций вместо переписывания Си-конструкций на Rust.
Помимо этого будет предоставлен инструментарий для проверки результирующего кода, использующий fuzzing-тестирование и элементы формальной верификации, а также средства для отладки и анализа проблем, выявленных в результате проверки. Проект позиционируется как исследовательский и подразумевает не просто создание связки "AI-компиляция-тестирование", а разработку новых методов, обрабатывающих ситуации с неопределенным поведением в коде на Си, указателями и конкурирующими блокировками.
Создание нового проекта объясняется тем, что ручное переписывание с Си на Rust требует больших трудозатрат и приводит к потере накопленных исправлений и оптимизаций, традиционные трансляторы создают неидиоматичный и небезопасный Rust-код, а AI-модели плохо масштабируются на крупные репозитории и не гарантируют сохранение поведения программы.
COSMIC развивается как универсальный проект, не привязанный к конкретному дистрибутиву и соответствующий спецификациям Freedesktop.
Для построения интерфейса в COSMIC задействована библиотека Iced, которая использует безопасные типы, модульную архитектуру и модель реактивного программирования, а также предлагает архитектуру, привычную для разработчиков, знакомых с языком декларативного построения интерфейсов Elm. Предоставляется несколько движков отрисовки, поддерживающих Vulkan, Metal, DX12, OpenGL 2.1+ и OpenGL ES 2.0+. Разработчикам предлагается готовый набор виджетов, возможность создавать асинхронные обработчики и использовать адаптивную компоновку элементов интерфейса в зависимости от размера окна и экрана.
Помимо использования языка Rust из особенностей COSMIC выделяются режимы гибридной мозаичной компоновки окон и стекового закрепления окон (группировка окон по аналогии со вкладками в браузере), которые могут включаться в привязке к виртуальным рабочим столам. Проектом также разрабатывается композитный сервер cosmic-comp на базе Wayland.
Среди изменений:
Добавлена возможность индивидуального изменения уровня громкости и параметров вывода в привязке к отдельным приложениям.
В эмуляторе терминала реализована возможность настройки визуального разделения границ между панелями.
В файловом менеджере в поисковой строке реализована поддержка операций копирования и вставки через буфер обмена.
Проведена подготовка к реализации возможностей для захвата ввода и удалённого доступа к рабочему столу. Добавлена поддержка протокола эмуляции ввода EI (Emulated Input).
В композитном менеджере реализована поддержка 6 версии протокола linux-dmabuf, в которой предоставлены средства для работы с несколькими видеокартами при необходимости рендеринга на другом GPU (например, на дискретной видеокарте вместо встроенной).
При отображении обоев рабочего стола учтены сведения о повороте изображения, присутствующие в метаданных EXIF.
В cosmic-greeter добавлена поддержка изображений в форматах JPEG-XL и AVIF, а также задействован Wayland-протокол cosmic-keymap-unstable-v1.
Опубликован выпуск проекта IncidentRelay 2.0, развивающего открытую систему для организации дежурств, маршрутизации оповещений и сопровождения инцидентов, разворачиваемую на собственном сервере (self-hosted). Проект ориентирован на SRE, DevOps и инфраструктурные команды, которым требуется локальная альтернатива облачным платформам управления дежурствами. Код написан на Python и распространяется под лицензией MIT.
IncidentRelay принимает события из Prometheus Alertmanager, Grafana Alerting, Zabbix, Sentry, LibreNMS, RMON, AWS SNS/CloudWatch, Datadog, Uptime Kuma и произвольных webhook-обработчиков. После нормализации событие связывается с сервисом, командой и ротацией, к нему применяются правила маршрутизации и политики эскалации, после чего уведомление направляется текущему дежурному. Для доставки поддерживаются Mattermost, Slack, Telegram, Discord, Microsoft Teams, email, webhook, browser/PWA push и провайдеры голосовых вызовов.
Главным новшеством версии 2.0 стал механизм Event Orchestration, предоставляющий отдельный слой обработки событий между входящими интеграциями и жизненным циклом алерта. Основные изменения:
Добавлен визуальный редактор правил оркестрации. Правила могут применяться глобально или к отдельному сервису, объединяться во вложенные группы условий и последовательно изменять приоритет, уровень важности, метки, команду, маршрут, способ группировки, политики уведомлений и эскалации;
Реализованы действия для подавления, отбрасывания и приостановки обработки событий, извлечения значений при помощи регулярных выражений и JSON Path, разделения строк, создания переменных и преобразования значений;
Конфигурация оркестрации разделена на редактируемые черновики и неизменяемые опубликованные версии. Поддерживаются проверка конфигурации, публикация, откат на предыдущую версию и добавление комментариев к изменениям;
Предусмотрены режимы disabled, shadow и active. В режиме shadow результаты выполнения правил сохраняются для анализа, но не влияют на реальную маршрутизацию. Для переходного периода доступны режимы совместимости legacy, hybrid и orchestration;
Добавлены средства симуляции и повторного воспроизведения событий. Они позволяют проверить правила на нормализованном событии или исходном payload интеграции без создания реального алерта. Для анализа результатов предоставляются трассировка выполнения, Explain-данные и метрики теневого режима;
Реализованы переиспользуемые webhook-действия, выполняемые асинхронно после обработки события. Заголовки хранятся в зашифрованном виде, секреты скрываются в API и журналах, а обращения к частным сетям по умолчанию запрещены. Можно настроить тайм-ауты, повторные попытки и список разрешённых внутренних адресов;
Добавлена интеграция с Uptime Kuma, принимающая стандартные webhook-сообщения о состоянии мониторов. Реализованы нормализация состояний UP и DOWN, определение важности, обработка тегов и новый тип входящего маршрута uptime_kuma;
Для silences и окон плановых работ появились параметры apply_to_existing и reactivate_on_end. Первый позволяет применить подавление к уже открытым алертам, а второй определяет, следует ли возобновить их обработку после завершения периода подавления. Приостанавливаются и восстанавливаются уведомления, напоминания и цепочки эскалации;
Для персональных API-токенов введены раздельные права чтения и изменения групп, команд, пользователей, маршрутов, каналов, сервисов, ротаций, политик, окон обслуживания, heartbeat-проверок, SSO и оркестраций. Старые агрегированные права resources:read, resources:write и * сохранены для обратной совместимости;
Добавлен интерфейс журнала аудита с фильтрацией и постраничным выводом. В журнале фиксируются операции с оркестрациями, webhook-действиями, silences и окнами плановых работ, при этом конфиденциальные значения удаляются из отображаемых данных;
В web-интерфейсе появилась тёмная тема и пользовательские настройки языка и оформления. Добавлена французская локализация, расширены переводы разделов оркестрации и обслуживания, исправлено редактирование правил сопоставления групп SSO;
Улучшена работа heartbeat-проверок: исключено повторное создание событий о просрочке, восстановление сигнала корректно закрывает алерт и отправляет уведомление о решении проблемы, унифицировано представление временных меток;
Подготовлена документация по развёртыванию в Kubernetes при помощи Helm. В Helm-чарт добавлен отдельный обработчик Slack Socket Mode, необходимый для работы интерактивных кнопок подтверждения и закрытия инцидентов;
Усилена защита исходящих HTTP-запросов, регулярных выражений и конфиденциальных данных, централизована обработка UTC и часовых поясов, переработаны вычисления расписаний ротаций и расширено покрытие автоматическими тестами.
Перед обновлением рекомендуется создать резервную копию базы данных. Необходимые изменения схемы выполняются штатным механизмом миграций IncidentRelay. Для постепенного внедрения Event Orchestration разработчики рекомендуют сначала использовать режимы shadow и hybrid, проверить трассировки выполнения правил и только после этого переключать оркестрацию в режим active.
Компания Mozilla продлилаподдержку ESR-ветки Firefox 115 до марта 2027 года. Поддержка ограничивается только платформами Windows 7-8.1 и macOS 10.12-10.14, для других операционных систем работоспособность Firefox 115 не гарантируется. По статистике Mozilla от 10 августа 2026 года 4.796% пользователей Firefox продолжают использование Windows 7.
После шести месяцев разработки представлен релиз языка программирования Go 1.27, развиваемого компанией Google при участии сообщества. Язык сочетает высокую производительность, свойственную компилируемым языкам, с такими достоинствами скриптовых языков, как простота написания кода, высокая скорость разработки и защита от ошибок. Код проекта распространяется под лицензией BSD.
Синтаксис Go основан на привычных элементах языка Си с отдельными заимствованиями из языка Оберон. Язык достаточно лаконичен, но при этом код легко читается и воспринимается. Код на языке Go компилируется в обособленные бинарные исполняемые файлы, выполняемые нативно, без использования виртуальной машины (модули профилирования, отладки и другие подсистемы выявления проблем на этапе выполнения интегрируются в виде runtime-компонентов), что позволяет добиться производительности, сопоставимой с программами на языке Си.
Проект изначально разрабатывается с оглядкой на многопоточное программирование и эффективную работу на многоядерных системах. Например, на уровне операторов реализованы средства для организации параллельных вычислений и взаимодействия между параллельно выполняемыми методами. Язык также предоставляет встроенные средства защиты от выхода за границы буфера и обеспечивает возможность использования сборщика мусора.
Реализована поддержка обобщённых (generic) методов, позволяющих объявлять собственные параметры типов и добавлять обобщённые функции непосредственно в пространство имён конкретного типа данных, без объявления на уровне всего пакета. Например, вместо раздельного объявления методов для каждого типа теперь можно использовать один обобщённый метод для всех типов:
// Было
func (r *Rand) Int32N(n int32) int32
func (r *Rand) Int64N(n int64) int64
func (r *Rand) IntN(n int) int
// Стало
func (r *Rand) N[Int intType](n Int) Int
При инициализации структур в качестве ключа разрешено использовать любой допустимый селектор полей, что позволяет напрямую инициализировать поля вложенных или встроенных структур:
type Habitat struct {
Burrow string
}
type Gopher struct {
Name string
Habitat // встроенная структура
}
g := Gopher{
Name: "Gopher",
Burrow: "Burrow #42",
}
Расширен механизм автоматического вывода типов для функций, который теперь применяется во всех контекстах присвоения переменной, что позволяет использовать обобщённые (generic) функции без явного указания типов аргументов.
В команду "go fix" добавлены новые модернизаторы кода: atomictypes, embedlit, slicesbackward и unsafefuncs для переписывания устаревших конструкций atomic, упрощения объявления встроенных структур, использования slices.Backward при переборе срезов, и замене конструкций с unsafe.Pointer на более безопасные варианты.
В команде "go doc" реализована поддержка запросов "package@version", например, "go doc example.com/[email protected]".
Повышена эффективность выделения памяти для мелких объектов, размером менее 80 байт. В приложениях, интенсивно создающих мелкие объекты оптимизация приводит к повышению производительности примерно на 1%.
В пакет runtime/pprof добавлен профиль goroutineleak для автоматического определения постоянно заблокированных сопрограмм (goroutine).
Добавлен пакет encoding/json/v2 с новой реализацией функций для обработки данных в формате JSON.
Добавлен пакет crypto/mldsa с реализацией постквантового алгоритма формирования цифровых подписей ML-DSA (FIPS 204).
Добавлен пакет uuid для генерации и разбора UUID-идентификаторов.
Добавлены пакеты simd и simd/archsimd с экспериментальной поддержкой распараллеливания выполнения операций над данными c использованием процессорных инструкций SIMD (Single Instruction, Multiple Data).
Опубликован выпуск основной ветки nginx 1.31.4, в которой продолжается развитие новых возможностей. В параллельно поддерживаемую стабильную ветку 1.30.x вносятся только изменения, связанные с устранением серьёзных ошибок и уязвимостей. В дальнейшем на базе основной ветки 1.31.x будет сформирована стабильная ветка 1.32. Код проекта написан на языке Си и распространяется под лицензией BSD.
Разработчики языка программирования Mojo открыли исходный код компилятора и сопутствующего инструментария, необходимого для сборки проектов на языке Mojo. Код компилятора написан на языке C++ и открыт под лицензией Apache 2.0 c исключениями от проекта LLVM, допускающими смешивание с кодом под лицензией GPLv2. Ранее в открытом доступе находился только код стандартной библиотеки, а код компилятора обещали открыть после стабилизации внутренней архитектуры, что было достигнуто в опубликованном на прошлой неделе релизе Mojo 1.0. Изменения от сторонних участников в кодовую базу компилятора пока не принимаются, но возможность передачи изменений планируют реализовать до конца года.
Язык Mojo развивается под руководством Криса Латнера (Chris Lattner), основателя и главного архитектора проекта LLVM и создателя языка программирования Swift. Синтаксис Mojo основан на языке Python, а система типов близка к C/C++. Проект преподносится как язык общего назначения, расширяющий возможности языка Python средствами системного программирования, подходящий для широкого круга задач и сочетающий простоту применения для исследовательских разработок и быстрого создания прототипов с пригодностью для формирования высокопроизводительных конечных продуктов.
Простота достигается благодаря использованию привычного синтаксиса языка Python, а разработке конечных продуктов способствуют возможность компиляции в машинный код, механизмы безопасной работы с памятью и задействование средств для аппаратного ускорения вычислений. Для достижения высокой производительности поддерживается распараллеливание вычислений с задействованием всех имеющихся в системе аппаратных ресурсов гетерогенных систем, таких как GPU, специализированные ускорители для машинного обучения и векторные процессорные инструкции (SIMD). При интенсивных вычислениях распараллеливание и задействование всех вычислительных ресурсов даёт возможность добиться производительности, превосходящей приложения на C/C++.
Язык поддерживает статическую типизацию и средства для безопасной низкоуровневой работы с памятью, напоминающие возможности языка Rust, такие как отслеживание времени жизни ссылок и проверка заимствования переменных (borrow checker). При этом в языке доступны и возможности для низкоуровневой работы, например, возможно прямое обращение к памяти в режиме unsafe с использованием типа Pointer, вызов отдельных SIMD-инструкций или доступ к аппаратным расширениям, таким как TensorCores и AMX.
Mojo может использоваться как в режиме интерпретации с использованием JIT, так и для компиляции в исполняемые файлы (AOT, ahead-of-time). В компилятор встроены современные технологии автоматической оптимизации, кэширования и распределённой компиляции. Исходный код на языке Mojo преобразуются в низкоуровневый промежуточный код MLIR (Multi-Level Intermediate Representation), развиваемый проектом LLVM. Компилятор позволяет применять для генерации машинного кода различные бэкенды, поддерживающие MLIR.
Дополнение: В конце июля была завершена сделка по покупке компании Modular, разрабатывающей проект Mojo, корпорацией Qualcomm. Также было объявлено об интеграции поддержки AI-ускорителей Qualcomm в платформу Modular. Код, написанный на языке Mojo и фреймворке MAX, теперь может работать не только на GPU NVIDIA и AMD, но и на AI-ускорителях Qualcomm.
В дополнениях для гостевых систем и хост-окружений с Linux улучшена работа с общим буфером обмена на системах с Wayland.
В дополнениях для хост-окружений с Linux реализована поддержка ядер
7.1 с включённым механизмом Intel FRED (Flexible Return and Event Delivery), обеспечивающим возвращение информации о низкоуровневых событиях при помощи процессорной инструкции IRET вместо передачи событий через таблицу IDT (Interrupt Descriptor Table).
В дополнениях для гостевых систем с Linux устранены проблемы с пакетом с ядром из дистрибутива RHEL 9.8.
В GUI налажен вывод предупреждений при проблемах с импортом образов в формате OVF и реализована корректная обработка недоступных виртуальных машин.
Повышена производительность 3D-операций в виртуальном видеоадаптере VMSVGA.
Устранено зависание при остановке записи видео после большого числа обновления дисплея.
Решены проблемы со сборкой хостовых компонентов с OpenSSL 4.0.
Применение спецификации LNA (Local Network Access) расширено на WebSocket-соединения. LNA ограничивает обращение к локальной системе (loopback, 127.0.0.0/8) или внутренней сети (192.168.0.0/16, 10.0.0.0/8 и т.п.) при взаимодействии с публичными сайтами. Для обращения к внутренним ресурсам пользователь должен предоставить web-приложению специальные полномочия, так как подобная активность используются злоумышленниками для осуществления CSRF-атак на маршрутизаторы, точки доступа, принтеры, корпоративные web-интерфейсы и другие устройства и сервисы, принимающие запросы только из локальной сети. Открытие сайтом WebSocket-соединения к устройству в локальной сети теперь приведёт к показу пользователю диалога подтверждения операции.
В режим "Smart Window" добавлена возможность использования AI для рекомендации группировки вкладок и назначения имени каждой группе. Smart Window предоставляет отдельное пространство взаимодействия с AI, дополняющее имеющийся стандартный режим навигации в Web и режим приватного просмотра.
Предоставлена возможность отмены для отдельных сайтов операций очистки Cookie и данных сайтов при завершении работы, сохранив при этом для этих сайтов защиту от отслеживания и ограничения, связанные с Cookie.
Функция перевода содержимого всей странницы теперь охватывает и содержимое iframe-блоков, интегрированных в страницу. Обеспечена идентификация языка на этапе загрузки страницы.
В адресную строку добавлено действие "Manage AI" для быстрого перехода к разделу настройки параметров AI в конфигураторе
При принудительной перезагрузке страницы (нажатие на кнопку "обновить" с удержанием клавиши Shift) теперь дополнительно очищается содержимое кэша favicon-миниатюр.
Значительно ускорена операции смены позиции в потоке при просмотре видео.
Во встроенном PDF-просмотрщике реализована подсветка выделяемого текста по аналогии с тем как выделяется текст на web-страницах.
По умолчанию при создании новых профилей и обращении к давно не используемым профилям прекращено размещение кнопки "Firefox View" в панели. Кнопку можно вернуть через интерфейс кастомизации панели.
Добавлены CSS-свойства "text-box-trim" и "text-box-edge", позволяющие точно управлять отступами до и после текста. Свойство "text-box-trim" определяет область обрезки (верх, низ или с обоих сторон), а "text-box-edge" задаёт способ обрезки краёв.
Добавлены CSS-функции sibling-index() и sibling-count() для стилизации элементов на основе позиции или числа соседних элементов.
Реализован интерфейс для ввода времени, показываемый при использовании элементов <input type="time"> и <input type="datetime-local">.
Реализован HTTP-заголовок No-Vary-Search, через который можно настроит правила кэширования запросов с учётом передаваемых в URL параметров (например, можно исключить неважные параметры при определении наличия прокэшированного варианта страницы).
В JavaScript-интерфейс Iterator добавлена поддержка синхронно выполняемых методов Iterator.prototype.chunks (разбивает элементы итератора на последовательные непересекающиеся группы), Iterator.prototype.windows (перебор элементов итератора методом cкользящего окна, Iterator.prototype.includes (проверка наличия в итераторе определённого элемента) и Iterator.prototype.join (объединяет все элементы итератора в одну строку).
В просмотрщике данных в формате JSON Viewer в нижней части экрана теперь показывается полный путь до выбранного элемента.
В Firefox для Android обновлены пиктограммы, предоставлена возможность выбора имени файла и каталога для сохранения загружаемого файла, обеспечено автоматическое сохранение адресов в полях ввода, ускорен поиск закладок и предоставлена секция Firefox Labs для тестирования экспериментальных возможностей.
Кроме новшеств и исправления ошибок в Firefox 154 устранено 167 уязвимостей, большинство из которых вызваны проблемами при работе с памятью, такими как переполнения буферов и обращение к уже освобождённым областям памяти. Потенциально данные проблемы способны привести к выполнению кода злоумышленника при открытии специально оформленных страниц.
Кон Коливас (Con Kolivas) возобновил работу над планировщиком задач MuQSS (Multiple Queue Skiplist Scheduler) и набором патчей "-ck" для ядра Linux, нацеленных на повышение отзывчивости и интерактивности при выполнении пользовательских задач и игр. Разработка данных проектов была прекращена в 2021 году из-за потери мотивации и нехватки времени. Теперь Кон вернулся к прежней деятельности и выпустил набор патчей ck и планировщик MuQSS для ядра Linux 7.2. Отмечается, что вопрос нехватки времени удалось решить благодаря применению AI-инструментов, которые упростили разработку и адаптацию изменений к новому ядру.
В новой версии патчей реализован режим планирования распределения ресурсов CPU между процессами с учётом активности ввода/вывода и выполнения операций чтения/записи в вызываемом процессе (нагрузка от ввода/вывода теперь учитывается при расчёте выделяемых процессу ресурсов CPU). Помимо этого исправлены ошибки, связанные с переходом в спящий или ждущий режим.
Патчи "-ck" включают планировщик задач MuQSS, продолжающий развитие проекта BFS, и различные изменения, влияющие на работу системы управления памятью, обработку приоритетов, генерацию прерываний таймера и настройки ядра. Ключевой задачей патчей является повышение отзывчивости приложений на рабочем столе. Так как предлагаемые изменения могут негативно влиять на производительность серверных систем, компьютеров с большим числом ядер CPU и на работу в условиях одновременного выполнения большого числа процессов, многие изменения Кона Коливаса отказались принимать в основной состав ядра и ему приходится поддерживать их в форме отдельного набора патчей, адаптируемого к каждому новому выпуску ядра.