ReactOS

Материал из in.wiki
Перейти к навигации Перейти к поиску

ReactOS — международный проект свободной и бесплатной операционной системы с открытым кодом. ReactOS не является точным клоном Windows, но операционной системой, совместимой с приложениями и драйверами Microsoft Windows (сейчас это Windows NT версии 5.x и выше — Windows 2000 и далее).

По состоянию на февраль 2010 года проект всё ещё находится на незавершенной стадии внутреннего альфа тестирования, хотя некоторые цели проекта уже достигнуты и работает целый ряд Windows-приложений. Различные части ReactOS лицензированы под GNU General Public License, GNU Lesser General Public License и BSD License. В 2008 году были начаты работы над портированием ReactOS на другие архитектуры: x86-64 и ARM.

История появления

В начале 1996 года группа разработчиков свободного программного обеспечения объявила о начале проекта FreeWin95, целью которого была разработка свободного клона системы Windows 95. Проект забуксовал в нескончаемых дискуссиях о дизайне системы. К концу 1997 проект всё ещё не принёс никаких результатов. Чтобы оживить проект, цель изменили на клонирование Windows NT, а название — на ReactOS. В феврале 1998 года проект стартовал.

Разработчики операционной системы синхронизируют код с проектом Wine. В январе 2010 координатор проекта Алексей Брагин предложил[1] новую концепцию развития ReactOS, при которой будет использоваться общая с Wine подсистема Win32.

Функциональность

По состоянию на июль 2009 года ядро ReactOS было достаточно стабильным, проделана огромная работа над совместимостью с аппаратной частью, многие API реализованы для высокоуровневой разработки и имеется базовый GUI. В ReactOS есть ReactOS Explorer, который является базовой оболочкой для операционной системы, сходной с Windows Explorer. Начиная с версии 0.2, ReactOS способна запускать многие Win32-приложения, как стандартные для Windows (текстовый редактор Notepad, редактор реестра Regedit, командный интерпретатор cmd), так и написанные вне Microsoft (например, текстовый процессор AbiWord, игры Quake, Quake II и клон игры Minesweeper, использующий Wine). Сообщается, что некоторые игры, например Unreal Tournament и Deus Ex, работают в режиме программного рендеринга. OpenGL работает лишь с некоторыми незначительными трудностями посредством драйвера nVidia или программной реализации Mesa 3D. Но в связи с отсутствием спонсора и немногочисленности команды разработчиков активность проекта не столь высока.


История версий

В версии 0.2.8 ассортимент выполняемых приложений был расширен. В частности, нормально работают офисный пакет OpenOffice.org, игры Unreal Tournament и Deus Ex. Ведётся работа над улучшением поддержки звуковых карт и USB. Работает текстовый браузер Lynx и DCOM-компонента браузера Mozilla Firefox, позволяющая графически отображать страницы. Добавлена поддержка файловой системы Ext2 и системного загрузчика GRUB, что позволяет ReactOS сосуществовать с GNU/Linux. Началась работа над plug and play и над поддержкой WDM.

Начиная с версии 0.2.8 ReactOS может определять, работает ли он внутри виртуальной машины VMware, и устанавливать SVGA-драйвер из набора VMware Tools ISO для повышения производительности GUI.

Начиная с версии ReactOS 0.3.0, имеется полноценная поддержка TCP/IP.

В версии 0.3.1 начата работа по переписыванию некоторых модулей ядра, HAL, загрузчика FreeLdr. Были обновлены и добавлены переводы частей системы и приложений для французского, итальянского и норвежского языков. Обновлены шрифты DejaVu до версии 2.13. Добавлено новое приложение Download! для простой установки свободных программ.

История изменений в последних версиях системы:

Версия 0.3.3

включившая в себя в основном изменения в ядре, подтянула общий уровень совместимости ещё ближе к NT 5.2. Также была повышена стабильность многих модулей ядра, в частности — win32k.

Версия 0.3.4

выпущена 22 января 2008 года:

  • Новый, переработанный менеджер конфигураций (Cm — Config Manager), с улучшенной совместимостью с NT 5.2
  • Поддержка инструкций SSE / SSE2;
  • Новый драйвер клавиатуры и мыши, поддерживающий горячее подключение устройств (Plug and Play);
  • Из проекта wine полностью синхронизированы все dll библиотеки, работающие на пользовательском уровне;
  • Начальная поддержка RPC и IDL, которая в дальнейшем послужит базой для обеспечения работы сервисов и комплексных программ, подобных Microsoft Office;
  • Значительные улучшения и оптимизации быстродействия в коде библиотеки user32;
  • Улучшение библиотеки gdi32 в плане совместимости с Windows;
  • Расширение функций, поддерживаемых shell32, улучшена работа апплетов панели управления, добавлен клиент удалённого доступа к рабочему столу (remote desktop client).
  • Большая работа проведена в области перевода текста в элементах интерфейса на различные языки и расширение языковых и региональных настроек.

Версия 0.3.5

выпущена 30 июня 2008 года:

  • Обновление загрузчика (FreeLdr): некоторые части были полностью переписаны для лучшей совместимости и последующей поддержки кода
  • Исправлены проблемы с ошибками типа «повреждение памяти» (запись за пределы выделенного буфера) для кучи и пулов
  • Ядро: исправлено множество критических ошибок во всех разделах ядра, переписан код ранней инициализации менеджера памяти
  • Подсистема Win32: общие улучшения различных частей подсистемы, включая компоненты как режима пользователя, так и режима ядра
  • Переработаны ключевые части базовой CRT библиотеки для улучшения совместимости
  • Улучшения в интерпретаторе командной строки (cmd.exe), особенно в области исполнения batch-скриптов
  • Шрифты заменены на более точно соответствующие метрике шрифтов, применяемых в ОС Windows.
  • Улучшение интернационализации: реализовано переключение раскладок клавиатуры, работает апплет панели управления «Региональные настройки», первая стадия установки доступна в переводах на многие языки, добавлены новые раскладки клавиатуры
  • Работа над практически всеми драйверами и программами, апплетами панели управления и динамическими библиотеками DLL для достижения лучшей совместимости и улучшения функциональности.

Версия 0.3.6

выпущена 6 августа 2008 года:

  • Поддержка других архитектур: улучшения в ARM версии, начало поддержки архитектуры x86-64
  • Уменьшение необходимой загрузчику FreeLdr памяти для загрузки ReactOS
  • Возможность выгрузки драйверов
  • Множество исправлений и улучшения ядра (доставка APC, таймер, большая работа над архитектурно-независимыми частями менеджера памяти)
  • Поддержка большего количества Win32 приложений благодаря исправлению реализации кучи в RTL (например, инсталляторы, основанные на InnoSetup, приложения Delphi, и др.)
  • Исправления ошибок и устранение утечек памяти в сетевом стеке
  • Дальнейшее развитие подсистемы Win32, большинство библиотек DLL режима пользователя синхронизированы с Wine

Версия 0.3.7

выпущена 4 ноября 2008 года:

  • Улучшение поддержки архитектуры x86-64
  • Запуск проекта по реализации поддержки компилятора MSVC
  • Улучшение работы и исправления подсистем ядра: Configuration Manager, IO Manager, KE, Memory Manager, Object Manager, Process Manager
  • Устранение утечек памяти и увеличение функциональности сетевого стека
  • Исправления драйвера файловой системы, нацеленные на повышение совместимости с системой кеширования в Windows NT

Версия 0.3.8

выпущена 4 февраля 2009 года:

  • Исправления ошибок и улучшения в базовых сервисах ядра (напр. реестр, примитивы синхронизации такие, как guarded mutex, поддержка ввода-вывода и др.)
  • Дан старт инициативе по исправлению оставшихся двух модулей ядра, дающих больше всего проблем: Менеджер памяти, поддержка кэширования и API драйверов файловых систем, и другого кода, зависящего от Mm
  • Внедрение нового механизма Портируемого SEH (сокращенно PSEH 2.0), который намного ближе по синтаксису и работе к SEH, реализуемому компилятором
  • Исправлено несколько довольно старых ошибок (таких, как проблемы с работой LiveCD при наличии жесткого диска с несколькими разделами, отображение графика загрузки процессора в менеджере задач, и т. п.)
  • Исправления отрисовки графики
  • Реализована минимальная версия протокола KernelDebugger, позволяющая использовать базовую функциональность отладчика MS WinDbg
  • Улучшения в библиотеках CRT и RTL
  • Решён ряд проблем в системных драйверах: NPFS, CDFS, FASTFAT, FS REC, SCSIPORT
  • Улучшения в видео-драйвере для поддержки реального железа
  • Дальнейшая работа над подсистемой Win32
  • Дальнейшая работа над поддержкой MSVC
  • Исправления в инструментарии для сборки (как часть проекта по поддержке компилятора MSVC)
  • Взаимное обновление базовых утилит и модулей с Wine

Версия 0.3.9

выпущена 26 апреля 2009 года:

  • Снижены минимальные требования памяти до 32 Мб. В теории сейчас ReactOS можно установить имея 24 Мб ОЗУ и запускать всего-лишь с 20 Мб оперативной памяти
  • В ядре реализован новый, более быстрый интерфейс отображения гиперпространства («Hyperspace Mapping») что дало прирост производительности более, чем на 300 %
  • Улучшения в проверках безопасности в менеджере объектов повышают производительность на 500 %. Особенно это заметно при работе с реестром или большими файлами
  • Решены различные проблемы NDIS и AFD, что улучшило совместимость с драйверами сетевых карт и закалило сетевой стек
  • Предварительная поддержка звука через новый сервис Kernel Streaming. Теперь стало возможным использовать драйвер ac97 через новую библиотеку Port Class для воспроизведения звука используя программу winamp
  • Большая работа проделана над интерпретатором командной строки, чтобы сделать его более совместимым. Теперь он может исполнять сложные скрипты, включая Среду Сборки ReactOS (ReactOS Build Environment)
  • Множество улучшений в части GDI, работающей в режиме ядра и отвечающей за отрисовку изображений
  • Синхронизация большинства DLL с проектом Wine

Версия 0.3.10

выпущена 5 июля 2009 года:

  • Добавлена возможность работы с разделами размером больше 8 гигабайт
  • Добавлена возможность установки на любой из четырёх первичных разделов диска
  • Базовая поддержка контроллеров SerialATA и Enhanced ATA
  • Базовая поддержка клавиатур и мышей USB
  • Существенно улучшена поддержка сетевых карт (подтверждена корректная работа 20-ти различных сетевых карт)
  • Более надежная работа в сети
  • Добавлен аналог приложения MS Paint
  • Первоначальная поддержка компилятора Microsoft Visual C
  • Улучшение использования системных ресурсов
  • Синхронизация большей части библиотек и общей части кода подсистемы Win32 с проектом Wine

Версия 0.3.11

выпущена 16 декабря 2009 года:

  • Переписана библиотека kdcom, что улучшило встроенную поддержку WinDBG.
  • Добавлена поддержка китайского и корейских шрифтов.
  • Улучшена поддержка различных приложений, таких как Opera, OpenOffice, Firefox 3.5, VLC1.1 и Skype.
  • Добавлена игра «пасьянс Паук».
  • Произведена синхронизация с некоторыми компонентами из Wine.

(Данный список включает лишь наиболее значимые изменения, с полным списком можно ознакомиться на официальном сайте)

Аудит кода

Менеджер устройств ReactOS

17 января 2006 года в списке рассылки разработчиков ReactOS (ros-dev) Хартмут Бирр заявил, что он покидает проект, поскольку, по его мнению, код ReactOS содержит элементы, полученные путём дизассемблирования Microsoft Windows. [2] В результате разработчики решили временно отключить доступ всем не-разработчикам к коду ReactOS. Поскольку ReactOS является свободным ПО, эти действия вызвали негативный отклик в сообществе свободного ПО.

Доступ к средствам разработки был вскоре восстановлен. Хотя обвинения не были доказаны, 8 марта 2006 года разработчики ReactOS начали собственный аудит всего кода, отвечающего за совместимость с Microsoft Windows. Чтобы убедиться, что в ReactOS нет частей, написанных кем-то, кто мог видеть утёкший из Microsoft код или проводил обратную разработку напрямую, ведущими разработчиками ReactOS было отдано распоряжение о полной проверке всего исходного кода.

Также было решено проверять, какие участки кода могли бы быть результатом непосредственной обратной разработки, и заставить всех разработчиков подписать соглашение о том, что они будут использовать результаты обратной разработки лишь косвенно.[3] Ожидается, что это замедлит разработку, заставляя разработчиков переписывать уже готовые участки кода, попавшие под подозрение. Проверка будет проводиться путём закрытия «грязных» участков кода до тех пор, пока они не будут полностью проверены.[4]

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

На сентябрь 2007 года проверка была завершена на 99,5 % и оставалось только 49 закрытых файлов. 23 сентября было решено убрать с главной страницы сайта ReactOS индикатор завершённости проверки.[5] Это было мотивировано тем, что проверка не затрагивает конечных пользователей, тестеров или второстепенных разработчиков, а также тем, что процесс создания прочной и легальной основы для исходного кода ReactOS и стандартов разработки не может быть адекватно отражён обычным индикатором и будет продолжаться бесконечно. Информация о проверке и её история по-прежнему свободно доступны на сайте.

В настоящий момент проверка завершена полностью и все файлы разблокированы.[6]

Ссылки

Фан-сайты и сообщества

Обзоры