Несмотря на все потрясения, для ReactOS это был довольно продуктивный год. Было исправлено много ошибок и нестабильностей, гораздо больше было добавлено. В этом году были наняты на полную ставку два разработчика ядра, это произошло впервые в истории проекта.

В последнее время Shell не привлекает особого внимания, поскольку большая часть работы сосредоточена на ядре, но есть еще некоторые полезные исправления и реализации функций:
  • Katayama Hirofumi MZ проделал отличную работу по реализации функции уведомления об изменении файловой системы (также известной как SHChangeNotify) в оболочке. Это требуется для всех приложений, отслеживающих изменения файловой системы.
  • Визуальные улучшения и улучшения удобства использования: метка «Размер на диске» в диалоговом окне «Свойства файла», клавишные сочетания в диалоговом окне «Открыть»/«Сохранить» и многое другое.

[Изображение: gsoc2020-rapps-final-report.png]
He Yang (kernel.bin) продолжает работу, проделанную студентами GSoC в предыдущие годы, улучшая менеджер приложений RAPPS. Это включает в себя улучшения пользовательского интерфейса и удобства использования, отображение снимков экрана приложений и поддержку сценариев командной строки.

Устаревший набор инструментов RosBE 2.1 хорошо справлялся со своими задачами с 2013 года, но пришло время двигаться дальше и включить все полезные функции, реализованные в современных компиляторах и инструментах сборки. Теперь есть GCC 8.4 и CMake 3.17 по умолчанию в новом RosBE 2.2, сохраняя при этом совместимость с последней версией CMake. Однако переход не произошел без нескольких препятствий, Colin Finck приложил немало усилий, чтобы заставить современный CMake работать в Windows Server 2003 (и, следовательно, в ReactOS). Все патчи находятся в свободном доступе на GitHub.

Сборка с помощью Clang теперь возрождена в CI с планами поддержки этого компилятора вместе с GCC и MSVC. ReactOS сейчас собирается с Clang, но все равно не загружается.

Было принято спорное решение отказаться от поддержки старых компиляторов MSVC, и поднять стандарт языка C до C99 для лучшей совместимости кросс-компилятора. Планируемое прекращение поддержки вызвало большую дискуссию в списке рассылки и на GitHub. Тем не менее, это открывает окно для будущих обновлений стандартной библиотеки C ++ (возможно, в 2021 году, кто знает) и поддержки современного C ++ в кодовой базе ReactOS.

Поскольку над ядром на постоянной основе работают два разработчика, есть довольно долгожданные изменения:

Завершён стек хранилища PnP. Новый стек хранилища, созданный на основе драйверов Microsoft с открытым исходным кодом пришел на замену старому NT4-совместимому стеку хранилища ReactOS. В течение долгого времени применялось множество обходных путей, чтобы заставить стек хранения NT4 работать в среде NT5.2. Эта эпоха заканчивается сейчас, когда делается большой шаг вперед в обеспечении совместимости с современной Windows, а также в новых функциях:
  • Поддержка таблицы разделов GPT.
  • Поддержка API пользовательского режима, связанных со стеком хранилища.
  • Установка и отключение USB-накопителя на ходу.
  • Специальные команды SSD, диски Blu-ray, диски >2ТБ и многое другое.

Поддержка Driver Framework в режиме ядра. Как часть переключателя стека хранилища KMDF был перенесен в ReactOS, что позволило потенциально использовать в ОС больше драйверов. Порт еще не завершен, но уже позволяет использовать некоторые драйверы.

Менеджер памяти/Улучшения подсистем общего кеширования. Этим занимается Jérôme Gardou, параллельно с PnP и хранением от Victor Perevertkin. Эти две подсистемы (CC и MM) бьют рекорды как по количеству затраченного времени, так и по количеству людей, которые над ними работали. Текущие усилия направлены на улучшение совместимости с Windows при запуске драйверов файловой системы. И здесь есть некоторые достижения: ReactOS, наконец, может работать с драйвером ntfs.sys из Windows и может работать с драйвером Microsoft fastfat.sys с открытым исходным кодом для файловой системы FAT. Работы еще не завершены, но обязательно будут в 2021 году.
[Изображение: ms-ntfs-in-reactos.jpg]

Улучшения подсистемы Plug and Play. Здесь происходит серьезный рефакторинг, чтобы сделать драйверы более совместимыми и улучшить общую стабильность системы. Теперь стало возможной долгожданная загрузка с USB-носителя в ветке вне дерева (примечание переводчика: это вообще можно было перевести нормально? ☺).

Все эти изменения были бы невозможны без пожертвований сообщества. Большое им спасибо!

Интерпретатор команд ReactOS (CMD) недавно был пересмотрен, с рядом исправлений, направленных на улучшение правил синтаксического анализа командных и пакетных файлов по сравнению с правилами анализа CMD Windows. Эти усилия были вызваны недавним отчетом об ошибке CORE-17030, в котором говорилось о несовместимости нашего CMD для синтаксического анализа команд REM (комментарии, которые игнорируются для целей выполнения командного файла), а также тем фактом, что общий синтаксический анализ команд нашего CMD не полностью совместим с CMD из Windows, согласно свидетельствам многих сбоев, обнаруженных во время тестирования с модульным тестом cmd:batch Wine.
[Изображение: cmd-tests-changes.png]

Hermès Bélusca-Maïto решил сделать правила синтаксического анализа CMD ReactOS более совместимыми с правилами Windows, включая некоторые неясные случаи, а также воспользоваться возможностью внести дополнительные исправления в некоторые из своих команд с целью исправления большего количества тестов.

Теперь больше cmd:batch-тестов проходит с меньшим количеством сбоев. Он также добавил новые тесты для парсера CMD в собственный модульный тест cmd:reactos. Большинство из них проходят нормально, за исключением некоторых, для которых все еще требуется дополнительная работа.

Hermès также обнаружил, что некоторые аспекты реализации существующей команды копирования CMD в ReactOS, а также выполнение внешних команд по конвейеру в некоторых случаях действительно не работают. В будущем в этих областях потребуется дополнительная работа.

Старый добрый i386 по-прежнему остается основной платформой, но работа по переносу ReactOS на другие архитектуры постепенно продолжается:
  • AMD64: большая часть кода была объединена в master, поэтому теперь ночные сборки могут, наконец, загружаться до первого этапа настройки экрана на некотором оборудовании. Графический интерфейс все еще нуждается в исправлении. Портированием занимается Timo Kreuzer.
  • XBOX: восстановлен оригинальный порт XBOX для ReactOS, и теперь он может загружаться до рабочего стола. Большую часть работы выполняет Stanislav Motylkov.
  • PC98: Dmitry Borisov (disean) запустил порт ReactOS для NEC PC-98, который представляет собой версию i386, но с некоторыми несовместимостями.

Дальнейшая работа
В настоящее время ведутся работы по нескольким направлениям, которые будут продолжены в 2021 году. Это включает:
  • Подсистема прямой совместимости для поддержки приложений Windows Vista и старше.
  • Поддержка печати.
  • Улучшения CRT и стандартной библиотеки.
  • Работа над поддержкой amd64 и APIC HAL (Hardware Abstraction Layer) для поддержки SMP.