ReactOS 0.4.11 — на сотню приложений больше
Привет, Хабр!
Уверен, что вы уже успели соскучиться по новостям от нашего проекта! И мы не теряли времени даром. Прошлый релиз ReactOS вышел всего каких-то три с половиной месяца назад, а сегодня вы уже сможете скачать и протестировать следующую версию нашей операционной системы. В ней исправлено 135 бага и сделано 984 изменения в исходном коде.
Скачать образы системы | Пресс–релиз | Список изменений | TL; DR | Тесты и список регрессий
При работе над версией 0.4.11 мы сделали упор на исправление ошибок совместимости приложений, и в результате мы смогли увеличить количество совместимых программ на добрую сотню, если не больше. Одновременно с этим мы очередной раз значительно снизили число ситуации, приводящих к BSOD’ам и зависаниям системы. Есть и множество других изменений, но обо всем по порядку.
— Стартуем! Я сказала — стартуем!
Первое, что стоит отметить — мы подшаманили лоадер. Лоадер (LDR) — это такой компонент, который помогает приложению запуститься. Он, в частности, читает манифест-файлы для исполняемых файлов и библиотек, вычисляет необходимые модули и зависимости для запускаемого приложения, находит их на диске в местах предполагаемого размещения и загружает в память в правильном порядке.
В прошлых версиях ReactOS библиотеки MSVC++ 2005/2008 слишком хорошо прятались в системе и лоадер их не всегда находил, особенно в ситуациях когда в последовательности загрузки попадалось несколько манифест-файлов. На Хакфесте в Берлине летом 2018 Марк Дженсен по моей просьбе решил с этим разобраться. И вот с релизом 0.4.11 безобразию окончательно пришел конец, и теперь ни одной необходимой библиотеке «не убежать» от лоадера. Улучшенная поддержка манифестов позволила добиться в ReactOS работоспособности около сотни новых приложений, таких как Blender 2.57b, Bumptop, Evernote 5.8.3, Deluge torrent и Quicktime Player 7.7.9.
Грандиозным примером этого достижения служит картинка выше и данный скриншот:
На нем вы можете наблюдать работу популярного драйверпака Snappy Driver installer (SDI) в ReactOS. Раньше он падал с ошибкой, иногда вовсе вызывал BSOD, или просто отказывался работать по описанной выше причине, теперь же времена поменялись… А косвенным эффектом стало то, что больше не придется рыскать в поисках драйверов для ReactOS по интернету, а просто хранить их все на одном DVD.
Сразу оговорюсь, что далеко не все драйвера из SDI установятся штатно, в основном только сетевые карты, и некоторые видеокарты. Однако, мы мы продолжим работать над улучшением и этой ситуации.
— Так, стопэ! Тормоза нужны не только лишь трусам…
Ранее в нескольких прошлых релизах ReactOS тестеры сталкивались со значительными трудностями, когда дело касалось попыток использования .NET-приложений. Приложения, написанные на основе фреймворка .NET версии 2.0/4.0, работали только один раз, а при закрытии вызвали хаос и заставляли систему в состоянии берсерка причинять самой себе повреждения.
В версии ReactOS 0.4.11 мы наконец вычислили и побороли проблему, из–за которой это происходило. Суть в том, что с точки зрения стабильности системы правильная остановка приложения так же важна, как и правильная последовательность инициализации при запуске, ведь при остановке программы освобождаются ранее выделенные ей ресурсы.
Выяснилось, что механизм, ответственный за завершение приложений в ReactOS, зачастую не ожидал достаточно времени, пока приложения самостоятельно правильно завершат свою работу. Особенно это касалось приложений, построенных по клиент–сервисной архитектуре. Тривиальный баг–фикс от Яниса Адамопулоса, разрешил эту конкретную проблему, мгновенно добавив в арсенал ReactOS поддержку десятков, если не сотен, популярных dotNET–приложений.
В качестве примера скриншот с nLite 1.4.9.3 — утилитой для «гаражной» переборки дистрибутивов Windows XP.
Столпотворение вавилонское
Наконец, следует напомнить, что не весь мир использует стандарт отображения текста слева направо как английский и другие языки, основанные на латинице. Многие, такие как иврит и арабский, используют ориентацию справа налево. Поддержка ReactOS для этого типа отображения текста была впервые официально продемонстрирована в релизе 0.4.10, но по-прежнему продолжает дорабатываться. Существенный прогресс был достигнут благодаря усилиям Баруха Рутмана, по адаптации библиотеки USP10 и код поддержки двунаправленного ввода из Wine в ReactOS. Конечно, еще предстоит проделать немалую работу, но характер разработки проекта с открытым исходным кодом заключается в применении итеративного подхода, с постепенными пошаговыми изменениями.
Шведский стол из улучшений
Если говорить о борьбе с BSODами, стоит вспомнить, что Марк Дженсен выявил проблему с инициализацией полосы прокрутки, исправление которой добавило еще целый спектр приложений в библиотеку совместимых c ReactOS программ. Речь к примеру идет об игре Civilization II Multiplayer Gold Edition (32bit) версии 1.3, показанной на скриншоте ниже, и других программах вроде IceChat 7.63.
Сетевой стек был вновь подвергнут модернизации, в процессе добавлен функционал мониторинга и перечисления сетевых соединений. Внесенные изменения в компоненты TCP/IP позволяют использовать netstat, PortExpert и другие необходимые приложения сети.
Драйвер RAM-диска получил значимые исправления, благодаря чему обеспечена возможность полноценной установки ОС по сети с использованием протокола PXE (ранее был возможен только вариант с запуском LiveCD).
Сизифов труд «отдела качества»
По мере того, стабильность функционирования ReactOS продолжает расти, широта и глубина необходимого тестирования также увеличиваются, хотя бы потому, растет число доступных приложений для тестирования. С этой целью Йоахим Хенце со своей обычной методичностью и настойчивостью работал над тем, чтобы обеспечить правильный баланс для этого релиза с точки зрения стабильности и появления в нем новых/улучшенных функций. Несмотря на то, что всегда соблазнительно вносить в релиз все самые важные и значимые изменения и исправления, следует помнить, что каждое такое изменение влечет за собой определенную степень риска регрессий. Способность взвешивать этот риск с оценкой вероятных выгод — то, что делает таких специалистов по обеспечению качества, как Иоахим, неоценимыми для любого проекта со стремительно возрастающей сложностью.
В свете значительных улучшений в ReactOS и для того, чтобы помочь потенциальным пользователям лучше понять текущее состояние ОС и степень поддержки определенных приложений, Иоахим также реструктурировал страницу с результатами тестирования, чтобы лучше представить соответствующую информацию. Теперь можно увидеть не только общее заключение теста по каждому приложению, но и детали, указывающие на то, что привело к конкретному выводу, а также возможные «обходные пути», для решения проблемы здесь и сейчас.
Финальный аккорд
Вы вдруг захотели поставить ReactOS первый раз в своей жизни? Обязательно прочтите этот мануал по установке системы.
Вам понравился этот релиз? Ждем ваших комментариев и мнений! Не забывайте, что вы можете помочь проекту не только пожертвованиями, но и просто поставив ему звездочку на гитхабе!
Если вам просто нравится читать мои дайджесты о том, как продвигается разработка операционной системы ReactOS, можете угостить меня чашечкой кофе, нажав на кнопку в блоке «Поддержать автора» прямо сейчас под этой статьей.