ROS Newsletter87
Содержание
Выпуск новостей ReactOS 87
Завершение проектов Google Summer of Code
В рамках программы Google Summer of Code от ReactOS было представлено шесть проектов, и четыре из них близятся к завершению. Каждый из законченных проектов поможет значительно улучшить удобство работы с системой и заложить прочную основу для её дальнейшего развития. Успешно завершенные проекты помогут ReactOS стать более пригодным к повседневной эксплуатации как в плане стабильности, так и в плане удобства пользовательского интерфейса. Срок для представления студентами результатов своих работ уже прошёл, и представители проекта совместно с Google сейчас заняты их оценкой. Команда ReactOS хотела бы поблагодарить Google за предоставление нашим студентам возможности внести свой вклад в ReactOS, а мы, в свою очередь, надеемся извлечь уроки из наших ошибок в этом году, и в будущем постараться увеличить количество успешных проектов.
Набор тестов режима ядра
Томас Фабер (Thomas Faber) уже закончил разработку среды для запуска тестов в режиме ядра, и сейчас занят добавлением нескольких дополнительных тестов. Набор тестов режима ядра поможет нам тестировать функции, доступные только в режиме ядра, по большей части это функции, используемые драйверами. В наборе тестов проекта Wine подобные тесты не используются, поскольку целью Wine является запуск приложений, а не драйверов. Однако, целью проекта является создание полноценной замены 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 за проведение конкурса и их поддержку сообщества открытого исходного кода.
Newsletters | |
---|---|
30-39 | #30 • #31 • #32 • #33 • #34 • #35 • #36 • #37 • #38 • #39 |
40-49 | #40 • #41 • #42 • #43 • #44 • #45 • #46 • #47 • #48 • #49 |
50-59 | #50 • #51 • #52 • #53 • #54 • #55 • #56 • #57 • #58 • #59 |
60-69 | #60 • #61 • #62 • #63 • #64 • #65 • #66 • #67 • #68 • #69 |
70-79 | #70 • #71 • #72 • #73 • #74 • #75 • #76 • #77 • #78 • #79 |
80-89 | #80 • #81 • #82 • #83 • #84 • #85 • #86 • #87 • #88 • #89 |
90-99 | #90 • #91 • #92 • #93 • #94 • #95 • #96 • #97 • #98 • #99 |