Отчет с BeGeistert 026 и состояние ARM-порта Haiku

Nov 11, 2012 08:40


На этой неделе состоялся очередной марафон разработчиков Haiku, связанный с ежегодным съездом BeOS/Haiku программистов BeGeistert. Подробный текст о мероприятии вы можете прочитать на сайте IsComputerOn, а здесь представлен более сжатый отчет о проделанной работе в течение марафона.

Портирование Haiku на платформу ARM (Ithamar Adema, René Gollent, Adrien Destugues)
Итамар на этот раз не выпускал клавиатуру из рук. Он занимается низкоуровневым программированием на платформе Android на своей основной оплачиваемой работе, поэтому он хорошо знает железо и ядро Linux, модификация которого используется в Android и служит Итамару в качестве примера.

Порт ARM был инициирован в рамках Google Summer of Code 2009. Проект в то время добился сборки ядра и работы базового загрузчика Haiku. В течение нескольких лет на этом все и остановилось. Однако, в следствие недавнего выхода Raspberry Pi и некоторого другого ARM-совместимого железа у разработчиков снова появилось желание возобновить проект портирования Haiku эту платформу. Итамар работает с платой Gumstix Verdex. Это та же самая плата с которой работали в 2009 году. Она уже довольно сильно устарела, однако для нее существует полноценная эмуляция в QEMU, что является большим подспорьем в глубокой отладке ядра.

Мы работали над прерываниями, контекстными переключателями и страницами ошибок. В конце концов мы добились того, что ядро сообщает об "отсутствии загрузочных дисков", поскольку для ARM-версии Haiku никакого USB-стека еще нет в природе (также загораются четыре иконки в загрузчике Haiku).



Попытавшись добавить драйвер для USB, мы получили панику ядра с определенной ошибкой, которая редко, но все-таки встречается на платформе x86. Также была проделана некоторая работа (с удаленной помощью Оливера Таппе) над переносом утилит разработки ARM на Haiku. Компилятор уже собирается и утилиты u-boot также портированы (они требуются для сборки загружаемого образа, с которым может работать загрузчик. Сборка ARM-версии Haiku все еще требует программу для разметки разделов на диске в командной строке, а также некоторые изменения в скриптах, чтобы использовать наши собственные команды mkdos, вместо dosfstools mkdosfs. Итамар принялся за решение этой задачи сразу после того, как установил Haiku на свой ноутбук.

Поддержка FDT (François Revol)
Частью работы Франсуа над портированием Haiku на платформу PowerPC была поддержка Flattened Device Tree. FDT - это структура данных, которая передается загрузчиком u-boot в загруженное ядро. В ней описаны параметры аппаратного обеспечения, на котором запущено ядро, также FDT позволяет находить последовательный порт, кадровый буфер, клавиатуру, накопители, ОЗУ и все остальное, что требуется для Haiku. Это позволяет избежать жестко закодированных драйверов под фиксированные адреса для периферии. Поскольку uboot также используется в устройствах на платформе ARM, завершение работы над поддержкой FDT позволит добиться прогресса в портировании Haiku как на ARM, так и на PPC железо.

Рефакторинг следящего кода BMenu (Alexandre Deckner)
Код BMenu - один из самых непроходимых участков Interface kit. Каждое меню это целое BWindow, что означает свой собственный поток и даже кольцо (loop). Так как меню разделяет много данных с подменю, код, как вы можете себе представить, очень далек от идеала и нашпигован мелкими, но очень противными ошибками. Александр работает над более совершенным решением вопроса с BMenu.

Сетевой бэк-энд Services Kit и WebPositive (Alexandre Deckner)
Services Kit - еще один из наших прошлых проектов GSoC (2010). В наших планах было получить полноценную поддержку http API для того, чтобы извлекать информацию из веб-сервисов гораздо более быстрым и легким способом. Services Kit был объединен с деревом Haiku, но оставался полностью недокументированным, так что от него было мало толка.

Александр занялся объединением патчей для улучшенной поддержки https. Затем он протестировал код путем написания репликанта Deskbar использующего API Services Kit, который отвечает за демонстрацию прогноза погоды из Интернета. Однако, основной частью работы был браузер WebPositive. Сегодня браузер использует стандартный back-end движка WebKit под названием Curl. Несмотря на то, что он входит в комплект движка по-умолчанию, почти ни один современный браузер, основанный на WebKit, его не использует. К тому же, у него обнаружились серьезные проблемы с печеньками (cookies), кэшированием и соединениями https, а также общей медлительностью в работе. Родной Services Kit должен будет заменить портированную библиотеку, чтобы избежать всех перечисленных проблем. Это также означает то, что информация о cookies и других данных может быть использована другими приложениями, которые используют новый фреймворк.

Улучшения в отладчике (René Gollent)
Рене занят воплощением поддержки точек слежения (watchpoints) в дебаггере. Это еще один шаг на пути к завершению достойной замены текущему отладчику GDB.

Исправления Stack & Tile, ALE и другого (Clemens Zeidler)
Клеменс занят со своей докторской в университете Окланда. Исследовательский отдел занимается несколькими проектами по совершенствованию пользовательского интерфейса. Они используют Haiku в качестве прототипа в их исследованиях, так как в ней легче производить модификации, которые влияют на всю систему в целом. Вы уже знакомы с результатами их работы над поддержкой Stack & Tile, а также Окландской Моделью Разметки (ALM).

В этом году Клеменс показал нам Aukland Layout Editor, который является drag&drop утилитами для разметки графического интерфейса пользователя. ALE можно использовать во время исполнения программы в ALE-совместимых окнах для того, чтобы менять разметку элементов приложения по своему вкусу. Клеменс попросил нас пройти через ряд тестовых приложений и посмотреть, способны ли мы использовать возможности ALE для того, чтобы повысить эффективность нашей деятельности. Также существует поддержка для событий в графическом интерфейсе (например нажатие кнопки), связанных с действиями, нечто очень похожее на программу Cortex. Клеменс исправил определенное количество багов в Haiku, связанных со Stack & Tile. Проделанный труд выглядит очень многообещающе.

Пользовательский интерфейс fRiSS (Adrien Destugues)
fRiSS - это программа просмотра RSS/ATOM-каналов. Он отображает новости с избранных вами вебсайтов в окне или в качестве репликанта. fRiSS доступен в Haiku как опциональный пакет, над улучшением которого работает Адриен. Вместе со скорым выходом Alpha 4, Адриен хотел усовершенствовать пользовательский интерфейс, который был прежде второпях набросан и оставлен без внимания. После очистки кода и приведения в порядок отрисовки он теперь хотя бы отдаленно напоминает приложение для Haiku. Переработка кода была завершена прямо перед "заморозкой кода", так что все пользователи, которые установят Haiku Alpha 4 получат самую свежую версию Friss.

Усовершенствованный браузер NetSurf (Adrien Destugues)
NetSurf - это веб браузер, изначально разработанный для RiscOS, главной задачей которого было дать пользователям очень быстрый и легковесный обозреватель интернета. Портирование на BeOS начал Франсуа Револь с умыслом в конце концов заменить им устаревший NetPositive. В основном он использовал NetSurf в качестве репликанта внутри программы BeHappy. Отрисовка html работает очень хорошо, но сама оболочка браузера остается очень аскетичной.

Работа Адриена заключается в модификации панели инструментов, окна загрузок (пока нет сохранения на диск), исправлении некоторых закольцованных событий, чтобы избежать зависания сетевой активности, когда UI не активен, а также обновлении порта в соответствии со свежими исходниками git-дерева NetSurf. Также он добавил поддержку автоматического вкладывания окон используя Stack & Tile, что позволит избавиться от вкладок внутри приложения. Будем надеяться что скоро больше приложений будут использовать данный метод управления окнами, начиная с Терминала. NetSurf очень хороший браузер и он гораздо быстрее других альтернатив под Haiku. Его основным недостатком было отсутствие поддержки JavaScript, но разработчики активно занимаются исправлением этой ситуации. Браузер имеет весь потенциал быть одним из основных для Haiku. Его сборка из исходников длится гораздо меньше, чем в случае с WebPositive вместе со всем движком WebKit, а значит NetSurf легче будет совершенствовать в будущем.

Также следует упомянуть, что в APlayer также внесены существенные изменения и исправления ошибок. Когда последние из них будут устранены, APlayer будет опубликован для тестирования пользователями.

В заключение
В целом марафон кодинга прошел очень насыщенно и весело. Мы также обрадованы удаленной активностью в связи с грядущим выпуском Alpha 4, после "заморозки кода" кандидат в релиз вступает в стадию интенсивного тестирования. Если все пойдет как надо, то четвертая альфа появится на свет уже совсем скоро.

[ источник ]

hardware, haiku, software

Previous post Next post
Up