Здравствуйте, дорогие друзья. Без каких-то предварительных сообщений, 21 марта 2025 года проект ReactOS выпустил новый релиз — 0.4.15. В данной статье мы рассмотрим новые функции релиза и некоторые особенности.
Данный релиз был выпущен в честь первого коммита разработчика-старожила Эрика Коля, который вступил в проект в 1999 году. В этом году он отмечает 26-летний юбилей.
Так же данный релиз является результатом работы многих участников с предыдущего релиза и включает в 8 раз больше коммитов, чем в 0.4.14. И давайте посмотрим, что изменилось в данной версии.

Plug-and-Play
Виктор Переверткин сделал значительную переработку менеджера Plug-and-Play в ядре ReactOS. Благодаря этим изменениям ReactOS теперь может запускать больше сторонних драйверов и загружаться с USB-устройств.
Так же данное изменение позволяет ReactOS загружаться на чипсетах с контроллерами EHCI, OHCI и UHCI. Эта работа стала важным шагом на пути к полной совместимости ReactOS с драйверами производителей для Windows.
Йоханнес Андервальд (janderwald) решил проблему, при которой USB-драйвер зацикливался, если USB-устройство не переходило в состояние готовности. Исправление этого бесконечного цикла позволило ReactOS загружаться на большем количестве оборудования.
Аудио
Благодаря работе Олега Дубинского, в версии 0.4.15 появилось множество улучшений в аудиосистеме. Олег добавил поддержку большего числа аудиоформатов, зацикленное воспроизведение wave-файлов, более высокие частоты дискретизации и многоканальный вывод.
Кроме того, Виктор Переверткин импортировал открытый драйвер AC’97 из Windows Driver Kit (WDK). Это обеспечивает работу звука «из коробки» в VirtualBox, если виртуальная машина настроена на использование контроллера ICH AC’97 Audio, а также на ряде материнских плат до 2004 года выпуска.

Менеджер памяти и контроллер кэша
Объекты секций (Section Objects) были переработаны Жеромом Гарду (zefklop) для улучшения совместимости с Windows. Это исправило давнюю ошибку, которая мешала запуску исполняемых файлов из удалённых источников, таких как сетевые ресурсы или общие папки виртуальной машины.

Благодаря улучшениям менеджера памяти и контроллера кэша, был импортирован открытый драйвер файловой системы FAT от Microsoft из WDK. Этот драйвер файловой системы FAT — значительный шаг вперёд по сравнению с прежним: он быстрее и стабильнее. Кроме того, теперь внешние диски с файловой системой FAT можно корректно извлекать благодаря данному новому драйверу.
Восстановление и кэширование реестра
Георг Бишок (George Bișoc) (GeoB99) реализовал фундаментальные механизмы работы системного реестра. Среди них: восстановление, сброс и кэширование. Восстановление и сброс направлены на повышение стабильности системы при неожиданном отключении питания или сбоях. Механизм восстановления применяет исправления к повреждённому реестру, а сброс периодически записывает изменения на диск, чтобы они сохранялись даже при некорректном завершении работы системы. Кэширование повышает производительность при доступе к реестру.
Подсистема безопасности
Так же Георг Бишок внёс улучшения в подсистему безопасности ядра (Se). До его работы проверки доступа в ядре всегда проходили успешно, что позволяло любому процессу получить доступ к любому системному объекту. Теперь проверки доступа полностью работают и предотвращают несанкционированный доступ к системным объектам. В результате ядро Windows работает с подавляющим большинством модулей ReactOS.
Утилиты и системные инструменты
Катаяма Хирофуми МЗ (katahiromz) активно работает над улучшением удобства использования, повышением производительности и добавлением новых функций в системные утилиты, такие как

инструмент для работы с текстом в Paint и

диалоговое окно «Печать» в Блокноте.
Катаяма также улучшил редактор методов ввода (IME), который позволяет вводить символы, отсутствующие на стандартной клавиатуре, с помощью комбинаций символов. Его работа улучшила поддержку CJK (китайских, японских и корейских) языков и позволяет устанавливать собственные IME для разных регионов. Например, японская версия ReactOS теперь может использовать MZ-IME для японского ввода.

Whindmar Saksit (whindsaks) внёс ряд исправлений для повышения стабильности RAPPS, а Hermès Bélusca-Maïto (HBelusca) добавил минимальный режим отображения в RAPPS для удаления программ.

Сетевой драйвер для виртуальных машин Microsoft
В базовый комплект поставки ReactOS был добавлен драйвер сетевой карты DECchip 21140.
В аппаратном исполнении ее уже довольно сложно найти, но знаменита она тем, что используется в качестве эмулируемого сетевого адаптера в виртуальных машинах Connectix / Microsoft Virtual PC / Hyper-V
Теперь драйвер не нужно искать и скачивать, он установится сам, полностью автоматически.

Исправление бага с мерцающими окнами

Зимой случился эпичнейший баг-фикс пул-реквестом от разработчиков Julen Urizar Compains, I_Kill_Bugs и Simone Lombardo.
Баг заключался в сильном мерцании окон некоторых приложений, если в окне была гиперссылка совмещенная с изображением. Так же наблюдалась близкая к 100% нагрузка ЦПУ, что делало подверженный софт практически неюзабельным. От проблемы страдало больше десятка самых разных программ, из числа тех, о которых сообщили тестеры (потенциально же счет шел на сотни).
Например, речь идет о установщике библиотек VC++ 2008 redistributable, утилите CPU-Z, торрент-клиенте BitComet 1.86, игре Caesar 3, стандартном установщике игр от Ubisoft и многих других...
Самому первому сообщению о баге в этом году исполнилось бы 15 лет.
Исправление функции SetParent


Ранее значительная часть интерфейса левой панели в PeaZip была невидимой или искаженной.
В Windows, использование функции SetParent для установки одного и того же родительского окна вызывает перемещение дочернего окна на верхнюю позицию в порядке слоев z-order. PeaZip вызывал функцию SetParent после каждого создания окна, пытаясь переместить окно на верхнюю позицию в порядке слоев z-order, однако ReactOS/SetParent предотвращал это. Удаление проверки на равенство идентификаторов одного и того же родительского окна помогло решить проблему.
За исправление бага возрастом в 9 лет говорим спасибо программистам проекта Doug Lyons и I_Kill_Bugs.
Это фикс потенциально может починить и другие программы, где есть проблемы с перекрытием или отображением порядка слоев.
Оболочка
В версии 0.4.15 графическая оболочка была улучшена усилиями нескольких участников проекта.
Карл Бялорукки (cbialorucki) добавил поддержку крупных значков на панели задач.

Марк Янсен (learn-more) реализовал встроенную поддержку архивов ZIP.

Даг Лайонс (DougLyons) исправил несколько ошибок, из-за которых неправильно отображались значки в таких программах, как Microsoft Office 2000, Microsoft Visual Basic 6 и Hoyle Cards.

Катаяма Хирофуми МЗ добавил поддержку значка «Интернет-браузер» на рабочем столе.
Кроме того, Whindmar Saksit внёс множество исправлений для повышения стабильности Shell32 — ключевого компонента оболочки ReactOS.
В этом выпуске мы также установили стиль оформления и обои по умолчанию — тему Mizu. Дополнительные темы оформления и обои доступны в RAPPS.

В ReactOS пофиксили одну недоработку, когда при скрытии значка на рабочем столе (Мой компьютер, Мои документы, Сетевое окружение и Корзина), тот пропадал и в проводнике и панели "Папки".

Так же, в настройках меню Пуск были реализованы мелкие значки.

Куда мы движемся?
ReactOS — это сообщество людей, объединённых вокруг экосистемы Windows и свободного программного обеспечения с открытым исходным кодом. Проект включает в себя исследования и документацию по внутреннему устройству Windows, запуск Windows-программ в свободной среде и помощь более широкому сообществу разработчиков Windows.
Ветка 0.4.15 была создана 6 месяцев назад. С тех пор в основной ветке активно разрабатываются новые и интересные функции: поддержка UEFI, симметричная многопроцессорность (SMP),


новый драйвер файловой системы NTFS, управление питанием и поддержка более новых приложений. Мы рады идти по этому пути вместе с вами, по мере того как ReactOS развивается и становится лучше.
Статистика
Решено задач в Jira: 1 319
Коммитов: более 8 600
Самая старая решённая задача в Jira: CORE-1091 от 19 декабря 2005 года