Доступен релиз проекта lsFusion 6.1, развивающего декларативную платформу для разработки бизнес- и веб-приложений. Платформа подходит для разработки корпоративных и учётных приложений и может применяться в качестве открытой и бесплатной альтернативы платформе 1С. Код проекта написан на языке Java и распространяется под лицензией LGPLv3. Типовое ERP-решение для малого и среднего бизнеса MyCompany, использующее lsFusion, распространяется под лицензией Apache 2.0.
В основе платформы заложена парадигма комбинаторного программирования (function-level), что существенно отличает lsFusion от существующих на рынке платформ (например SAP, Dynamics AX, 1С, .Net). Также внутри активно используются событийное, реактивное и объектно-ориентированное программирование. Версия 6.1 фокусируется на исправлении ошибок, а также повышении удобства интеграции, расширении возможностей языка и интерфейса, а также на подготовке к поддержке альтернативных клиентов.
Поддержка аннотации "@@deprecated" для пометки устаревших элементов языка и постепенного вывода их из использования.
Поддержка MEASURES(groupObject) для построения многомерных отчётов с несколькими показателями.
Возможность передачи имён файлов напрямую в операторах чтения и записи (READ / WRITE).
Улучшен поиск через PrefixSearch, точные совпадения теперь имеют больший приоритет, а также добавлен новый оператор prefixSearchExact для более гибкого ранжирования.
Поддержка внешнего идентификатора действий EXTID для интеграционных сценариев.
Действие UpdateStats теперь можно выполнять автоматически по расписанию.
Обеспечена канонизация JSON для корректного сравнения/подписей/кеширования без «ложных» различий в порядке полей.
Выполнен рефакторинг клиентских действий для будущей поддержки Flutter-клиента.
В start.log обеспечена запись версии Java, classpath и аргументов JVM.
Улучшено определение и переопределение мобильного режима.
Компания Steinberg, занимающаяся производством оборудования и программных систем для музыкальной индустрии, открыла исходный код инструментария для протокола ASIO (Audio Stream Input/Output) и изменила лицензию на SDK, применяемый для разработки плагинов VST 3 (Virtual Studio Technology). Выпуск VST SDK 3.8 переведён на лицензию MIT (ранее VST 3 SDK поставлялся под GPLv3 и коммерческой лицензией). Также предложен открытый вариант ASIO SDK, доступный под лицензией GPLv3. Поддерживается работа в Linux, Windows и macOS.
Технология VST 3 позволяет создавать кроссплатформенные плагины с реализацией звуковых эффектов и виртуальных музыкальных инструментов, которые можно использовать в различных платформах для создания музыки и цифровой обработки звука. В настоящее время VST является самым распространённым форматом плагинов для программ работы со звуком и, среди прочего поддерживается в открытых, проектах, таких как OBS Studio, Ardour и Audacity. SDK для VST включает реализацию API VST 3, вспомогательную библиотеку классов C++ для упрощения разработки плагинов, обвязки для поддержки форматов плагинов AAX (Avid Audio eXtension), AUv3 (Audio Unit v3) и AU (Audio Unit), набор примеров и тулкит VSTGUI для использования графического интерфейса в плагинах. Помимо изменения модели лицензирования версия VST SDK 3.8 примечательна добавлением экспериментальной поддержки Wayland на платформе Linux.
ASIO SDK включает в себя открытую реализацию протокола ASIO (Audio Stream Input/Output), применяемого для взаимодействия приложений со звуковыми картами. ASIO ориентирован на использование в профессиональных системах для записи и воспроизведения звука с низкими задержками, стабильным качеством и высокой пропускной способностью. Протокол поддерживает такие возможности, как переменная разрядность кодирования (bit depth), переменная частота дискретизации, многоканальные операции и средства синхронизации звукового потока.
Открытие кода ASIO SDK позволит интегрировать поддержку ASIO в открытые проекты, совместимые с лицензией GPLv3. Изменение модели лицензирования стало результатом сотрудничества компании Steinberg с разработчиками открытой системы потокового видеовещания OBS Studio, для которой Steinberg взял на себя роль технического спонсора. Интеграция поддержки ASIO в OBS Studio позволит расширить область применение данного протокола и использовать его не только при создании музыки и обработке звука, но и при организации live-трансляций.
После трёх лет разработки опубликована спецификация для формата изображений AVIF 1.2 (AV1 Image Format), использующего технологии внутрикадрового сжатия, применяемые в формате кодирования видео AV1. Контейнер для распространения данных в формате AVIF аналогичен HEIF. Помимо изображений в стандартном динамическом диапазоне (SDR), AVIF поддерживает изображения в расширенном динамическом диапазоне (HDR, High Dynamic Range) и цветовом пространстве Wide-gamut.
В новой версии стандартизирована поддержка механизма "Sample Transform", позволяющего формировать конечное изображение через объединение одного или нескольких вспомогательных изображений и констант, используя математические преобразования над пикселями, тип и параметры которых сохраняются в области с метаданными. Например, данный механизм может применяться для создания изображений с более высокой глубиной цвета из изображений с низкой глубиной цвета, сохраняя при этом обратную совместимость. В библиотеке libavif, предлагающей эталонную реализацию формата AVIF, экспериментальная поддержка "Sample Transform" присутствует с апреля 2024 года.
Представлен релиз языка системного программирования Nim 2.2.6. Обновление вышло спустя шесть месяцев после релиза версии 2.2.4 и включает 141 коммит с исправлениями ошибок и улучшениями производительности. Nim – статически типизированный компилируемый язык программирования с синтаксисом, вдохновлённым Python, и возможностями метапрограммирования на уровне Lisp. Язык компилируется в C, C++ и JavaScript, обеспечивая производительность на уровне C при выразительности высокоуровневых языков. Код проекта поставляется под лицензией MIT.
Ключевые особенности Nim включают мощную систему макросов, работающих на AST во время компиляции, развитую систему обобщённого программирования с концептами, множественную диспетчеризацию (multiple dispatch), детерминированное управление памятью с поддержкой нескольких стратегий (ARC/ORC, refc, маркировка-и-подметание), встроенную поддержку async/await для асинхронного программирования и FFI для простой интеграции с C/C++/JavaScript. Nim позиционируется как системный язык, подходящий для разработки от встраиваемых систем до веб-серверов, с акцентом на эффективность, безопасность памяти и удобство разработки.
Оптимизация move-семантики для полей объектов. Компилятор научился распознавать возможность применения move-операций при возврате полей объектов. Ранее конструкции вида "return obj.field" приводили к копированию данных, теперь компилятор корректно применяет перемещение:
proc getField(obj: MyObject): string =
return obj.field # Теперь move вместо copy
Это особенно важно для тяжёлых типов данных (строки, последовательности, объекты с ресурсами), где устранение лишнего копирования даёт заметный прирост производительности без изменения кода.
Полная переработка closure-итераторов с обработкой исключений.
Механизм трансформации замыканий-итераторов полностью переписан, что кардинально улучшило стабильность async-кода с обработкой исключений. Исправлены критические проблемы, включая SIGSEGV при использовании try/except не на верхнем уровне:
iterator problematicIterator(): int {.closure.} =
for i in 0..10:
try:
if i == 5:
raise newException(ValueError, "test")
yield i
except ValueError:
discard # Ранее вызывало SIGSEGV
Также решена проблема с некорректным пробросом исключений в finally-блоках внутри closure-итераторов.
Исправления, связанные с управлением памятью
Устранена фундаментальная проблема в сборщике мусора при обработке циклических структур данных, которая могла приводить к выводу ошибки "Illegal storage access". Проблема существовала с момента создания языка и проявлялась при сложных графах объектов с взаимными ссылками.
Исправлен некорректный порядок уничтожения объектов, который мог приводить к обращению к уже освобождённой памяти:
type
Resource = object
data: ptr Data
Container = object
resource: Resource
other: OtherResource
# Теперь деструкторы вызываются в правильном порядке:
# сначала other, затем resource
Сборщик ORC ошибочно помечал окружения некоторых замыканий как циклические, что приводило к задержкам освобождения памяти или утечкам. Теперь анализ циклов работает корректно.
Исправлена утечка сокетов в asyncnet при ошибках согласования TLS-соединения:
proc handleClient() {.async.} =
var socket = await server.accept()
try:
await socket.setupSSL() # При ошибке здесь socket теперь корректно закрывается
except SSLError:
discard # Сокет больше не утекает
Критические исправления в компиляторе.
Устранена регрессия, при которой глобальные переменные, объявленные внутри процедур с static-параметрами, переинициализировались при каждом вызове:
proc test[N: static int]() =
var global {.global.}: array[N, int]
global[0] += 1
echo global[0]
test[5]() # Выводило: 1
test[5]() # Должно: 2, но выводило: 1 (было переинициализировано)
Исправлена генерация кода для глобальных переменных в рекурсивных функциях, которая приводила к неопределённому поведению.
Решена древняя проблема генерации некорректного C-кода при использовании конструкторов для глобальных переменных внутри конвертеров:
converter toInt(x: MyType): int =
let global {.global.} = MyType() # Генерировал невалидный C-код
result = global.value
Устранено падение компилятора при генерации исключений типа Defect и использовании doAssert в определённых контекстах.
Улучшения в системе типов
Исправлена невозможность возврата lent-значений из case/if выражений:
proc getBest(a, b: string): lent string =
if a.len > b.len:
return a # Ранее: ошибка компиляции
else:
return b
Устранена проблема с некорректным сохранением значений lent-полей в обобщённых типах:
type
Wrapper[T] = object
data: lent T
proc process[T](w: Wrapper[T]) =
echo w.data # Значение теперь корректно сохраняется
Восстановлена проверка инициализации переменной result для типов с requiresInit, которая была сломана в версии 2.2:
type
MustInit {.requiresInit.} = object
value: int
proc test(): MustInit =
discard # Теперь корректно выдаёт ошибку о неинициализированном result
type
Base {.noCopy.} = object
Derived = object of Base
var a: Derived
var b = a # Теперь корректно запрещено
Оптимизации производительности
Ускорение оператора "@" для тривиальных типов: устранена критическая деградация производительности при создании последовательностей из массивов простых типов:
let arr = [1, 2, 3, 4, 5]
let s = @arr # Было крайне медленно, теперь оптимально
Оптимизация vmgen.sameConstant: значительно ускорена компиляция за счёт оптимизации сравнения констант в виртуальной машине компилятора и сокращения операций выделения памяти.
Разыменование результата cast в одиночном выражении больше не вызывает ненужное копирование:
let data = cast[ptr MyType](address)[] # Теперь без копирования
Исправления в бэкенде для компиляции в JavaScript:
=destroy для не-var типов: исправлена генерация деструкторов, которая ранее приводила к ошибкам компиляции.
cast[char] для значений > 255: теперь корректно выполняется усечение, как в C-backend.
Концепты в varargs: устранён вывод ошибки "internal error" при передаче концептов в varargs.
В бэкенде для компиляции в C++ восстановлена L-valueness для совместимых типов что было сломано в регрессии между версиями 2.2.2 и 2.2.4:
# nim cpp
var x: CppCompatibleType
takeRef(x) # Снова работает как lvalue
Исправления в бэкенде для компиляции в C (refc):
pthread на некоторых платформах: исправлена генерация кода для pthread_mutex_t с использованием .abi;
Обобщённые типы с GC-памятью: устранена генерация некорректного C-кода для generic-типов, содержащих управляемую память;
Виртуальная машина
Глобальные переменные и присваивания: множественные исправления работы с глобальными переменными на этапе компиляции.
Case-объекты из compileTime proc: исправлена передача вариантных объектов как static-параметров.
repr для длинных строк под refc: устранён RangeDefect при использовании repr.
Исправления в стандартной библиотеке
В strutils.formatSize исправлена работа с большими значениями, близкими к int64.high:
echo formatSize(9223372036854775807) # Теперь корректный результат
В deques восстановлена совместимость поведения итератора items между версиями 2.0.16 и 2.2.0.
В lists.SinglyLinkedList.remove устранён AssertionDefect при удалении элементов из односвязного списка.
В tables.withValue исправлено условие проверки в макросе withValue для неизменяемых таблиц.
Прагмы и области видимости
В "{.push raises: [].}" исправлено некорректное игнорирование лексических областей видимости для push-прагм с raises.
Устранён эффект «утечки» отключения предупреждений за пределы pragma-блоков:
{.push warning[UnusedImport]: off.}
import module1
{.pop.}
import module2 # Предупреждения теперь корректно включены
Прочие важные исправления
Сравнение cstring: добавлены отсутствовавшие операторы "<" и "cmp" для cstring.
Проверка диапазонов float: включена корректная проверка диапазонов для чисел с плавающей точкой
filterIt и rvalue: исправлено ошибочное возвращение rvalue вместо lvalue
Устранён FieldDefect при сравнении указателей на этапе компиляции.
hasCustomPragma после копирования typedesc: восстановлена работоспособность после копирования дескрипторов типов.
nim doc и приватные поля: исправлено использование комментариев от приватных полей для публичных.
Представлен выпуск дистрибутива Devuan 6.0 "Excalibur", форка Debian GNU/Linux, поставляемого без системного менеджера systemd. Новая ветка примечательна переходом на пакетную базу Debian 13. Для загрузки подготовленыLive-сборки (1.7 ГБ) и установочные iso-образы для архитектуры amd64. Пакеты собираются для архитектур i386, amd64, armel, armhf, arm64, ppc64el и riscv64.
Проектом поддерживаются ответвления для около 400 пакетов Debian, которые модифицированы для избавления от привязок к systemd, ребрендинга или адаптации для особенностей инфраструктуры Devuan. Два пакета (devuan-baseconf, jenkins-debian-glue-buildenv-devuan)
присутствуют только в Devuan и связаны с настройкой репозиториев и работой сборочной системы. В остальном Devuan полностью совместим с Debian и может использоваться в качестве основы для создания специализированных сборок Debian без systemd. Специфичные для Devuan пакеты можно загрузить из репозитория packages.devuan.org.
Рабочий стол по умолчанию основан на Xfce и дисплейном менеджере Slim. Опционально доступны для установки KDE, MATE, Cinnamon, LXQt и Sway. Вместо systemd поставляется классическая система инициализации SysVinit, а также опционально системы openrc и runit. Предусмотрена возможность работы без D-Bus, которая позволяет создавать минималистичные конфигурации рабочего стола на базе оконных менеджеров blackbox, fluxbox, fvwm, fvwm-crystal и openbox. Для настройки сети предлагается вариант конфигуратора NetworkManager, не привязанный к systemd. Вместо systemd-udev задействован eudev, форк udev от проекта Gentoo. Для управления пользовательскими сеансами в Xfce и MATE используется consolekit, а в остальных рабочих столах применяется elogind, вариант logind, не привязанный к systemd.
Изменения в Devuan 6 в основном сводятся к переходу на пакетную базу Debian 13 и ядро Linux 6.12, а также внесению изменений для обеспечения работы систем инициализации sysvinit, runit и OpenRC. Возвращена поддержка регистрации сеансов в файле /run/utmp, так как время сопровождения дистрибутива завершится раньше, чем начнёт проявляться проблема 2038 года.
Как и в Debian выполнен перенос исполняемых файлов и библиотек из корневого раздела в раздел /usr (/bin, /sbin и /lib* оформлены как символические ссылки на соответствующие каталоги внутри /usr). Прекращено формирование установочных сборок и пакетов с ядром для 32-разрядных систем x86, но сохранено наличие официально поддерживаемого репозитория пакетов и multi-arch-репозитория. Добавлены сборки для архитектуры riscv64.
Опубликован первый стабильный релиз проекта TidesDB, развивающего библиотеку для хранения данных в формате ключ/значение. Проект может использоваться как обособленно запускаемый движок или для встраивания в приложения. Из ключевых возможностей отмечается поддержка ACID-транзакций и оптимизация для эффективного хранения данных на Flash-накопителях и в оперативной памяти. Код написан на языке Си и распространяется под лицензией MPL 2.0. Обвязки подготовлены для языков C++, Go, Java, Python, Rust, Lua и JavaScript.
Для хранения данных задействована структура LSM-tree (журнально-структурированное дерево со слиянием), обеспечивающее высокую производительность не только при чтении, но и при выполнении операций записи и изменения данных. Операции чтения не блокируют запись и чтение данных, а операции записи блокируют только семейство столбцов в котором выполняется запись. Для дополнительного ускорения чтения поддерживаются индексы и кэширование на базе фильтров Блума (позволяют проверить вхождение во множество, допуская ложное определение отсутствующего элемента, но исключая пропуск существующего элемента).
Имеется полная поддержка ACID-транзакций, позволяющих атомарно вносить изменения, охватывающие семейства столбцов, и при необходимости атомарно откатывать операции. Данные могут хранится в сжатом виде с выбором алгоритма сжатия в привязке к семейству столбцов. Возможно выставление блокировок на уровне отдельных семейств столбцов и упаковки хранилища в параллельном режиме без блокировки выполнения операций с БД.
Основные возможности:
Поддержка семейств столбцов (Column Families) - изолированных наборов данных в формате ключ/значения. Для каждого семейства столбцов используются свои memtable, SSTable и WAL-лог.
ACID-транзакции, охватывающие несколько операций с семействами столбцов.
Оптимизация для параллельного доступа к данным.
Поддержка двунаправленных итераторов, позволяющих перебирать пары ключ/значение вперёд или назад относительно выбранной позиции в хранилище, используя изначально заданный метод сортировки.
Поддержка добавления своих функций сравнения ключей. Наличие встроенных функций сравнения memcmp, string и numeric.
Ведение лога операций (WAL, Write-Ahead Log) и автоматическое восстановление memtable (хранилище в оперативной памяти) из данного лога при запуске.
Использование фильтров Блума для минимизации обращений к накопителю за счёт проверки наличия ключа до чтения из SSTable (постоянное хранилище).
Поддержка алгоритмов Snappy, LZ4 и ZSTD для сжатия записей в хранилище SSTable и WAL-логе.
Возможность определения времени жизни записей (TTL) и автоматического исключения просроченных записей.
Три режима синхронизации данных в ОЗУ с постоянным хранилищем: NONE (самый быстрый), BACKGROUND (сбалансированный), FULL (наиболее надёжный).
Возможность настройки размера memtable, методов сжатия, фильтров Блума, режима синхронизации и параметров упаковки для каждого семейства столбцов.
Простой C API, возвращающий 0 при успешном выполнении операции и -1 при ошибке.
Использование SBHA (Sorted Binary Hash Array) для быстрого поиска данных в SSTable, позволяющий определять смещения блоков с ключами без полного сканирования.
Компактный переносимый бинарный формат представления базы, поддерживающий версионирование.
Встроенные механизмы контроля целостности, определения повреждений данных и восстановления.
Состоялся выпуск интегрированной среды разработки Qt Creator 18, предназначенной для создания кроссплатформенных приложений с использованием библиотеки Qt. Поддерживается как разработка классических программ на языке C++, так и использование языка QML, в котором для определения сценариев используется JavaScript, а структура и параметры элементов интерфейса задаются CSS-подобными блоками. Готовые сборки сформированы для Linux, Windows и maсOS.
Добавлена экспериментальная поддержка спецификации Development Containers для автоматизации настройки контейнеров с окружением для разработки проекта. Qt Creator теперь определяет наличие файла "devcontainer.json" в каталоге с проектом, создаёт на его основе Docker-контейнер и настраивает взаимодействие с ним из приложения.
На страницу первого запуска (Welcome) добавлена вкладка "Overview" с подборкой содержимого из других вкладок и рекомендованным списком заметок, руководств и примеров.
Изменено оформление уведомлений, которые теперь выводятся во всплывающих окнах. Для возвращения показа уведомлений в форме встроенного баннера можно изменить настройку "Environment > Interface > Prefer banner style".
В редакторе кода реализована опциональная возможность использования вкладок для быстрого переключения между файлами. Режим активируется через настройку "Environment > Interface > Use tabbed editors".
В модель кода C++ добавлена поддержка новых возможностей языка. Для C++ также реализованы быстрые правки для удаления фигурных скобок и определения статических полей. Инструментарий Clangd/LLVM обновлён до версии 21.1.
Для QML обеспечена загрузка и использование самой свежей версии QML Language Server.
Файлы ".user" со специфичными для Qt Creator настройками проекта перенесены в подкаталог ".qtcreator/".
В режиме проекта реализована возможность отображения только kit-наборов (привязки к разным сборочным инструментариям и версиям Qt), применимых к проекту или уже используемых в проекте. Страница "Run" разделена на страницы с настройками развёртывания ("Deploy Settings") и запуска ("Run Settings"), которые вместе с настройками сборки ("Build Settings") перемещены из страницы выбора kit-наборов во вкладки в окне просмотра контента. Добавлена опция для синхронизации настроек запуска с одним kit-набором или между всеми kit-наборами проекта.
Для проектов, использующих CMake, добавлена поддержка преднастроенных тестов (Test Preset). В Locator добавлен фильтр "ct" для запуска тестов на базе CTest.
Добавлена конфигурация для использования на удалённых Linux-устройствах различных утилит, таких как CMake, clangd, rsync и qmake. Добавлена настройка Auto-connect для включения автоматического подключения к удалённому устройству при запуске.
В редакторе Git-коммитов расширены доступные действия с файлами, например, добавлена поддержка прямого добавления файлов в ".gitignore".
Опубликован релиз видеоредактора Shotcut 25.10, развиваемого автором проекта MLT и использующего данный фреймворк для редактирования видео. Поддержка форматов видео и звука реализована через FFmpeg. Возможно использование плагинов с реализацией видео и аудио эффектов, совместимых с Frei0r и LADSPA. Из особенностей Shotcut можно отметить возможность многотрекового редактирования с компоновкой видео из фрагментов в различных исходных форматах, без необходимости их предварительного импортирования или перекодирования. Имеются встроенные средства для создания скринкастов, обработки изображения с web-камеры и приёма потокового видео. Код написан на C++ с использованием фреймворка Qt и распространяется под лицензией GPLv3. Готовые сборки доступны для Linux (AppImage и snap), macOS и Windows.
Среди изменений в новом выпуске:
Добавлена возможность генерации изображения или видео из HTML. Например, при помощи новой функции формат HTML можно использовать для создания шаблонов c текстом, накладываемым на видео. Для обработки HTML используется Chrome или Chromium.
В инструменты для работы с заметками и субтитрами добавлена функция синтеза речи, позволяющая озвучить текст. Для синтеза речи задействован движок Kokorodoki с моделью Kokoro (русский язык не поддерживается).
Добавлена поддержка создания скриншотов и скринкастов для их добавления к видео. В Linux запись содержимого экрана осуществляется при помощи FFmpeg на системах с X11 и GNOME Shell, KDE Spectacle или OBS на системах с Wayland.
Добавлен видеоэффект "Печатная машинка" и генератор видео с изображением процесса набора текста.
В меню свойств добавлены пункты: "Открыть с помощью" для редактирования изображений и звука во внешнем приложении; "Перезагрузить" для повторного открытия файла после его изменения на диске.
Для работы теперь требуется как минимум версия glibc 2.35 (Ubuntu 22.04). FFmpeg обновлён до ветки 8. Обновлены библиотеки SVT-AV1, libaom, dav1d, libvpx, libwebp и whisper.cpp.
В списке рассылки разработчиков ядра Linux опубликованы патчи с реализацией архитектуры "Wasm" для ядра Linux, позволяющей компилировать ядро в промежуточный код WebAssembly для последующего прямого выполнения в web-браузере без задействования эмуляторов. Кроме того, для ядра Linux проектом реализована возможность запускать исполняемые файлы в формате ".wasm" и подготовлен драйвер "web console" для симуляции работы с консолью в браузере. Также подготовлен инструментарий для упрощения сборки запускаемых в браузере системных окружений.
В качестве примера сформировано окружение на базе скомпилированных в WebAssembly набора утилит BusyBox и системной библиотеки musl. В качестве эмулятора терминала для работы с подобным окружением задействован Xterm.js. Отдельно запущен демонстрационный сайт, позволяющий оценить работу порта без самостоятельно компиляции. Заявлена полная поддержка браузеров на движке Chromium и частичная поддержка Firefox, в котором ограничены возможности отладки. На современных компьютерах загрузка Wasm-сборки ядра в браузере занимает менее секунды.
Проект развивается уже около двух лет и на текущем этапе позволяет загружать ядро в браузерах и выполнять типовые программы. Работа ещё не завершена и порт имеет отдельные проблемы и ограничения. Например, ещё не реализована поддержка вызовов vfork и longjmp (к BusyBox применены патчи для работы без них), отсутствует возможность прерывания задач, недоступен MMU (ядро и процессы работают в одном адресном пространстве), невозможно изменение уже загруженного кода, наблюдается зависание консоли примерно через 5 минут из-за проблем с таймером. Отмечается, что имеющиеся ограничения преодолимы, но для некоторых из них требуется реализация в браузерах дополнительных расширений к WebAssembly. Подобные расширения предложено реализовать для MMU и приостановки потоков.
Невозможность приостановки выполнения потоков в WebAssembly не сочетается с работой планировщика задач в ядре, но многозадачность удалось реализовать обходным путём, через привязку каждого потока/задачи к своему виртуальному CPU, обрабатываемому в отдельном Web Worker. Таким способом удалось добиться параллельного выполнения процессов за счёт браузерного движка и ядра хостовой ОС без использования вытесняющей многозадачности и переключения задач в запускаемом в браузере ядре. Прерывания и сигналы при такой схеме полноценно не работают, а для доставки прерываний таймера и IPI (Inter-Processor Interrupt) задействован отдельный виртуальный CPU.
Область применения проекта выходит за рамки простого запуска Linux-окружений в браузерах. Например, порт может применяться для создания многоплатформенных WebAssembly программ, использующих специфичные для Linux системные вызовы. Реализация подобных системных вызовов может быть отдельно преобразована в WebAssembly и прикреплена к приложению, что позволит использовать его без привязки к системному ядру. Порт также будет полезен для организации изолированного выполнения приложений при помощи WASI (WebAssembly System Interface).
Из планов упоминаются эксперименты с реализацией поддержки графики в окружениях c ядром, собранным в WebAssembly - на базе браузерного API WebGL планируют реализовать EGL и обеспечить работу OpenGL ES. Также планируется реализовать поддержку отладочного формата Dwarf для построчной отладки кода.
Доступен релиз пакетного менеджера Pacman 7.1, применяемого в дистрибутиве Arch Linux. Из изменений можно выделить:
По умолчанию включена обязательная проверка по цифровой подписи для пакетов и файлов с БД репозитория (настройка SigLevel выставлена по умолчанию в значение "Required"). Отсутствие подписи или некорректная подпись теперь будет по умолчанию приводить к завершению с выводом ошибки.
Усилена sandbox-изоляция обработчика, загружающего данные по сети. Ограничено число допустимых системных вызовов, задействован флаг NO_NEW_PRIVS для запрета смены привилегий, улучшено ограничение через механизм Landlock. В pacman.conf и утилиту командной строки добавлены параметры для управления изоляцией: "DisableSandboxFilesystem", "DisableSandboxSyscalls" и "DisableSandbox".
При наличии просроченных ключей
обеспечен вывод запроса на их повторный импорт c расчётом на то, что на сервере ключей уже имеются обновлённые ключи.
В утилиту makepkg добавлен параметр NPROC для настройки числа параллельно выполняемых операций. Реализована возможность распараллеливания операций очистки файлов. В PKGBUILD-файлы добавлена поддержка полей "xdata" и "options_$arch". Для настройки Git задействован отдельный файл /etc/makepkg.d/gitconfig (системные настройки игнорируются). Улучшена поддержка воспроизводимых сборок.
В утилиту "repo-add" добавлены опции "--wait-for-lock" для повторной попытки установки блокировки на БД вместо завершения и "--remove" для удаления старых файлов пакетов.
Доступен выпуск проекта FPDoom 1.20251101, позволяющего запустить классический Doom, его дополнения и другие портированные игры на распространённом на дешёвых кнопочных телефонах чипе Spreadtrum SC6531 и его модификациях. Проект содержит порты ванильного Doom, а также Duke3D, Shadow Warrior, Blood, Wolfenstein 3D, Heretic, Hexen, эмуляторов InfoNES, Snes9x и gnuboy.
Порты выполнены в виде приложений bare-metal, запускаемых через свой загрузчик (добавляется в прошивку, загружает игры с SD-карты). Устанавливается на современные кнопочные телефоны с чипами Spreadtrum SC6530/SC6531, которые составляют более половины предложений на российском рынке.
В обновлении 1.20251101 добавлена поддержка нового чипа Unisoc UMS9117, который является развитием Spreadtrum SC6531 (компания Unisoc ранее называлась Spreadtrum). Характеристики нового чипа: поддержка 4G, поддержка NAND flash, одно ядро ARMv7-a на 1ГГц и 64МБ ОЗУ. Приглашаются желающие запустить на нём Linux.
Работа протестирована на 10 моделях телефонов на чипе UMS9117. Есть загрузка с SD-карты (загрузчик на SD-карте, прошивку патчить не нужно). Все порты игр и эмуляторов уже работают на новом чипе (с эмуляторами есть мелкие недоработки). Нет драйвера NAND (пока в зачаточной стадии чтения ID чипа), поэтому таблицы настройки контактов чипа и раскладку клавиш нужно извлекать из самостоятельно сдампленной прошивки (для протестированных моделей телефонов эти файлы есть в релизах на GitHub).
Джулиан Андрес Клоде (Julian Andres Klode), основной сопровождающий проект APT, объявил о решении добавить код на языке Rust в пакетный менеджер APT, а также включить в число обязательных зависимостей компилятор Rust, стандартную библиотеку Rust и PGP-инструментарий от проекта Sequoia, написанный на Rust. Изменения намерены реализовать не раньше мая 2026 года, чтобы дать разработчикам портов Debian полгода на реализацию корректной работы инструментария Rust или сворачивание порта.
На Rust планируют реализовать компоненты APT, требующие повышенного внимания с точки зрения безопасности, такие как парсеры форматов deb, ar и tar, а также код для проверки цифровых подписей. Ранее, в состав релиза APT 3.0 уже была добавлена возможность использования написанной на Rust утилиты sqv для проверки цифровых подписей вместо вызова gpgv.
В анонсе предстоящего изменения отмечается важность того, чтобы проект мог двигаться вперёд и опираться на современные инструментарии и технологии, а не буксовать, пытаясь заставить работать современное программное обеспечение на устаревших системах.
Нейт Грэм (Nate Graham), разработчик, занимающийся контролем качества в проекте KDE, опубликовал очередной отчёт о разработке KDE. Наиболее заметные изменения, развиваемые для выпуска KDE Plasma 6.6, запланированного на 12 февраля:
Ограничение на максимальное число виртуальных рабочих столов увеличено с 20 до 25 (позволяет отображать виртуальные рабочие столы в сетке 5x5).
Добавлена поддержка портала xdg для доступа к USB-устройствам из изолированных приложений.
Добавлена поддержка настройки визуального выделения рамок и контуров элементов интерфейса, для которых используется тема оформления Breeze. Среди прочего возможно полное отключение разделителей элементов или контрастное разделение выбранным цветом.
На системах с ядром Linux 6.20, разработка которого ещё не началась, и соответствующей аппаратной поддержкой реализована возможность корректировки чёткости всего содержимого экрана.
В интерфейс выбора обоев рабочего стола для показа в режиме слайдшоу добавлены кнопки установки и снятия выделения со всех миниатюр.
В конфигураторе переделан интерфейс настройки Bluetooth. Добавлены рамки для кнопок элементов списка, добавлен текст на кнопки "Connect" и обеспечено скрытие вкладки с параметрами активного устройства при выключенном Bluetooth.
В конфигураторе на странице выбора обоев реализованы дополнительные отступы.
Улучшено отображение содержимого на страницах с информацией о системе.
Добавлена комбинация клавиш Meta+I для вызова конфигуратора.
Реализована возможность использования ключевого слова "dxdiag", привычного пользователям Windows, для вывода информации о графической подсистеме при поиске.
В текстовых полях задействован стандартный стиль кнопок для встроенных действий.
В Discover добавлена кнопка для повторной проверки наличия обновлений, показываемая в диалоге после завершения очередной установки обновлений и вывода запроса на перезагрузку.
В GTK-теме Breeze GTK по аналогии с Qt-темой Breeze прекращено использование градиентов на кнопках.
Унифицирован размер слайдеров на странице настройки экрана в конфигураторе.
Дополнительно можно отметить исправления проблем, выявленных после релиза KDE Plasma 6.5, которые войдут в состав корректирующего выпуска 6.5.2:
Улучшено ранжирование результатов поиска в KRunner. Высокий приоритет теперь отдаётся точным совпадениям с именами и ключевыми словами, средний - частичным совпадениям с началом строки и низкий - частичным совпадениям в середине строки.
Новая реализация эффекта размытия фона приближена к поведению Plasma 6.4, что решило проблему со слишком ярким фоном при тёмных стилях и прозрачности. По умолчанию отключён эффект "background contrast".
Устранено аварийное завершение KWin при перемещении указателя на некоторые внешние экраны, подключённые к ноутбукам.
Устранено аварийное завершение диалога выбора экрана при создании нового виртуального устройства вывода.
Устранено аварийное завершение приложения Discover при открытии страницы установленных пакетов на дистрибутивах, поставляющих файлы с прошивками в основном репозитории.
Исправлена регрессия, из-за которой в некоторых приложениях внутри виртуальных машин перестала работать вставка через буфер обмена.
Изменения для KDE Frameworks 6.20:
Выравнивание пиктограмм со звёздочками приведено к соответствию с другими пиктограммами.
Устранены аварийные завершения Plasma, проявлявшиеся при использовании большого числа виджетов мониторинга (System Monitor).
Исправлена ошибка, из-за которой диалог открытия/сохранения не показывался для файлов при его вызове из некоторых Flatpak-приложений.
Изменения для Qt 6.10.1:
Устранены ошибки, приводившие к аварийным завершениям Plasma.
Исправлена регрессия, из-за которой в эффекте свечения краев и углов экрана показывался не тот цвет.
Опубликован экспериментальный выпуск открытой реализации Win32 API - Wine 10.18. С момента выпуска 10.17 было закрыто 30 отчётов об ошибках и внесено 298 изменений.
В режиме WoW64 (64-bit Windows-on-Windows), обеспечивающем выполнение 16/32-разрядных Windows-приложений в 64-разрядных Unix-системах, реализована возможность маппинга памяти для OpenGL при помощи API Vulkan. Изменение принято из-за того, что в OpenGL не существует необходимого расширения для реализации подобной функциональности, и нет надежд на его появление в будущем из-за заброшенности развития OpenGL в пользу развития только Vulkan, где необходимое расширение есть.
Отсутствие возможности маппинга памяти для OpenGL приводило к тому, что 32-битные OpenGL-приложения, запускаемые в Wine в режиме WoW64, работали слишком медленно, что было главной причиной, по которой режим WoW64 до сих пор не включён по умолчанию в Wine. Ранее Александр Джуллиард (Alexandre Julliard), руководитель проекта Wine, во время своего выступления на конференции WineConf 2025, сказал, что собирается сделать режим WoW64 основным в Wine, даже несмотря на то, что это неизбежно приведёт к несовместимости и неработоспособности ранее созданных 32-битных префиксов Wine.
В режиме WoW64 добавлена поддержка проброса SCSI-устройств.
В ntdll добавлен API синхронизации "Synchronization barriers", позволяющий приостановить выполнение нескольких потоков до достижения определённой точки выполнения во всех потоках (например, дождаться пока все потоки достигнут определённой стадии при параллельном выполнении одного и тот же кода).
Закрыты отчёты об ошибках, связанные с работой приложений: cmd.exe
Autodesk Fusion, Keepass 2, CD Manipulator, Exact Audio Copy, Realterm, PlayOnline Viewer, Cheat Engine.
Закрыты отчёты об ошибках, связанные с работой игр: Witcher 2, Yukon Trail, Sid Meier's Pirates, Nightshade, Jolly Rover, MDk 2. Кроме того, исправлена регрессия, приводившая к зависаниям приложений и игр, запускаемых с использованием NTsync.
По статистике сервиса protondb.com, собирающего информацию о работе игровых приложений, представленных в каталоге Steam, в Linux работоспособно около 90% протестированных Windows-игр. Для сравнения в 2020 году в Linux были работоспособны примерно 75% игр, а в 2018 году - 60%. Оценка выполнения в Linux игр при помощи Wine и Proton показала, что 7419 протестированных игр имеют платиновый уровень поддержки, 5095 - золотой, 5196 - серебряный, 718 - бронзовый и лишь 361 игра помечена как неработающая. При ограничении выборки до 1000 наиболее популярных в Steam игр, уровень поддержки составляет: 361 - платиновый, 449 - золотой, 84 - серебряный, 27 - бронзовый и 28 - нерабочий.
Платиновый уровень свидетельствует об отличной работе игр; игры на золотом уровне работают без проблем, но требуют корректировки настроек; серебряный уровень указывает, что в игру можно играть, но не всё работает идеально; на бронзовом уровне игры запускаются, но имеют серьёзные проблемы; нерабочий статус присваивается при невозможности запустить игру.
Компания Canonical начала поставку для Ubuntu 25.10 отдельных вариантов пакетов с исполняемыми файлами, собранными с оптимизациями для архитектуры x86-64-v3. В настоящее время для x86-64-v3 подготовлено около 2000 пакетов из репозитория main, которые доступны в качестве опции. Данные пакеты не протестированы на уровне основных пакетов, но уже могут использоваться энтузиастами, желающими добиться максимальной производительности. В Ubuntu 26.04 намерены собрать оптимизированные для архитектуры x86-64-v3 варианты всех имеющихся пакетов и обеспечить для них полноценное тестирование.
Возможность использования пакетов с оптимизациями для x86-64-v3 реализована без нарушения поддержки старого оборудования. В dpkg, apt и Launchpad внесены изменения, позволяющие собирать и распространять пакеты одновременно для нескольких вариантов архитектуры x86-64. Для проверки поддержки архитектуры x86-64-v3, настройки репозитория и установки соответствующих пакетов можно использовать команды:
Версии x86-64-v* определяют неофициальный способ идентификации срезов состояния микроархитектуры, охватывающих определённые наборы расширений. Третья версия микроархитектуры x86-64 (x86-64-v3) применяется в процессорах Intel примерно с 2015 года (начиная с Intel Haswell) и отличающейся наличием расширений AVX, AVX2, BMI2, FMA, LZCNT, MOVBE и SXSAVE. Версия x86-64-v2 охватывает расширения SSE3, SSE4_2, SSSE3, POPCNT, LAHF-SAHF и CMPXCHG16B, а версия x86-64-v4 - AVX512F, AVX512BW, AVX512CD, AVX512DQ и AVX512VL.
В большинстве случаев прирост производительности при сборке с оптимизациями для архитектуры x86-64-v3 составляет примерно 1%, но в отдельных ситуациях в приложениях, выполняющих большие вычисления, может наблюдаться более заметное повышение производительности.