87 выпуск новостей проекта ReactOS

Доступен перевод 87 выпуска новостей проекта ReactOS, операционной системы с открытым исходным кодом, нацеленной на обеспечение совместимости с программами и драйверами Microsoft Windows семейства NT (XP/2003).

Завершение проектов Google Summer of Code

В рамках программы Google Summer of Code от ReactOS было представлено шесть проектов, и четыре из них близятся к завершению. Каждый из завершённых проектов поможет значительно улучшить удобство использования ReactOS и заложить основу для дальнейшего развития. Множество успешных проектов помогут ReactOS стать более пригодным к повседневной эксплуатации как в плане стабильности, так и в плане удобства пользовательского интерфейса. Срок для представления студентами своих работ уже прошёл, и представители проекта совместно с Google сейчас оценивают их результаты. Команда ReactOS хотела бы поблагодарить Google за предоставление нашим студентам возможности внести свой вклад в ReactOS, а мы, в свою очередь, надеемся извлечь уроки из наших ошибок в этом году, и увеличить шансы на успех в будущем.

Набор тестов, работающий на уровне ядра

Томас Фабер (Thomas Faber) уже закончил разработку среды для запуска тестов на уровне ядра, и сейчас занят добавлением нескольких дополнительных тестов. Набор тестов на уровне ядра поможет тестировать функции, доступные только внутри ядра, по большей части это функции, используемые драйверами. В наборе тестов проекта Wine подобные тесты не используются, поскольку целью Wine является запуск приложений, а не драйверов. Однако, проект ReactOS стремится создать полноценную замену Windows, а для этого необходимо обеспечить полную поддержку драйверов Windows. Набор тестов на уровне ядра также позволит показать работу недокументированных функций ядра Windows.

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

Интеграция lwIP

Преобразование сетевой библиотеки lwIP в драйвер, которым занимался Клаудиу Михаил (Claudiu Mihail), было полностью завершено, и результаты были слиты с транком. Во время тестирования Камерон Гутман (Cameron Gutman) обнаружил, что сетевой стек стал более стабильным и производительным, и, по ощущениям, работает гораздо быстрее. Камерон протестировал множество разнообразных программ, как серверов, так и клиентов. Среди протестированных программ были abyss web server, chargen, Opera, а также telnetd, и все из них продолжали работать даже под большой нагрузкой. Однажды система всё-таки рухнула из-за утечки в пуле памяти win32k, однако причина краха была обнаружена и устранена. Несмотря на все возникшие трудности, связанные с потерей пакетов и неправильным закрытием соединений по протоколу TCP, Клаудиу удалось преодолеть все проблемы и мы сейчас пользуются плодами его трудов.

Темы оформления

В процессе работы над созданием поддержки тем оформления, Яннису Адамопулосу (Giannis Adamopoulos) удалось выяснить, что Microsoft частично использует совместные (side by side, SxS) классы. Классы SxS представляют собой разновидность уже знакомых многим разработчикам сборок SxS, являющихся механизмом, используемым Microsoft для обеспечения обратной совместимости библиотек и других целей. Яннис не уверен, что кто-нибудь, помимо Microsoft использует классы SxS, поскольку они крайне запутаны. SxS позволяет в одном приложении иметь два класса с одинаковыми именами, а операционная система узнаёт о том, какой класс из этих двух необходимо использовать из файла-манифеста.

Хотя в ReactOS недавно была добавлена поддержка сборок SxS, она всё ещё не поддерживает классы SxS, и предстоит ещё достаточно работы для обеспечения их полной поддержки. Поэтому Яннис был вынужден добавить в ReactOS хак, разрешающий существование двух классов с одинаковыми именами. Одна версия класса является классом по умолчанию и прорисовка темы не производится. Другая версия является классом, который информирует ReactOS о том, как рисовать конкретную тему. Несмотря на сложности в разработке, Яннису удалось получить более или менее работающую поддержку тем в ReactOS, и создать образ ISO, который каждый может скачать для самостоятельного тестирования. Если всё пойдёт хорошо, то в следующем релизе ReactOS все мы вполне можем увидеть поддержку тем оформления пользовательского интерфейса.

Драйвер шрифтов

Тимо Кройцеру (Timo Kreuzer) довольно легко удалось заставить работать свой драйвер шрифтов в Windows XP, однако хотя многое ещё предстоит сделать, прежде чем он заработает в ReactOS. В качестве основы для своего драйвера, Тимо использовал шрифтовой движок freetype, однако freetype использует отличную от используемой в Windows систему хинтинга. Хинты шрифтов используются для улучшения качества выводимых на экран букв и знаков текста. В результате, после интеграции нового драйвера шрифтов ReactOS научится использовать хинты, находящиеся в файлах шрифтов, однако шрифты, предназначенные для использования в Windows, будут выглядеть немного размытыми по сравнению со шрифтами, созданными для использования совместно с движком freetype.

Как уже упоминалось выше, разработка драйвера проводилась в ОС Windows XP из-за того, что в ReactOS отсутствуют механизмы, позволяющие использовать этот драйвер. Проект Google Summer of Coge для Тимо был ограничен лишь созданием драйвера шрифтов, однако он также работал над обеспечением возможности запуска этого драйвера в ReactOS. Над данный момент драйвер загружается сам и может загрузить в память информацию о шрифте, а также создаёт таблицу для её систематизации. Реализация, растеризация глифов, а также версия функции TextOut, которая действительно сможет использовать растеризованные глифы, пока в системе отсутствуют.

Реализация включает в себя запросы, которые драйвер шрифтов использует для получения информации о шрифте и подстановке шрифта, связь логического и физического шрифта, а также некоторые дополнительные биты и части. Хотя драйвер отвечает за прорисовку глифов, однако ОС должна предоставлять механизмы для облегчения управления памятью, в которой хранятся растровые изображения. Про работу функции TextOut, а также про требования шрифтового движка вы можете прочитать в выпуске новостей №55. Для завершения этой работы, вероятно, потребуется еще несколько месяцев, хотя разработка самого драйвера шрифтов полностью закончена.

Вклад Thomas Krenn AG в открытое ПО

Во время конференции LinuxTag в Германии, Маттиас Купфер (Matthias Kupfer) зарегистрировал проект в конкурсе, проводимом производителем серверного оборудования компанией Thomas Krenn AG. Призами соревнования были деньги, которые можно было потратить на покупку серверной системы от этой компании, и проект ReactOS занял 5-е место и приз в размере 700 Евро. Проект намерен потратить эти деньги на приобретение нового сервера для сборки/тестирования, который поможет облегчить нагрузку на уже имеющиеся машины. Проект хотел бы поблагодарить компанию Thomas Krenn AG за проведение конкурса и их поддержку сообщества открытого исходного кода.

Полный текст статьи читайте на OpenNet