Недавно один из разработчиков Qt Labs Paul Olav Tvete рассказал о проекте Lighthouse, целью которого является упростить портирование Qt на различные платформы. Идея проекта проста: изолировать весь платформенно-зависимый код, и создать фреймворк для написания «бэк-эндов» под различные платформы и устройства вывода.
Сейчас поддержка многих устройств реализована в рамках проекта Qt for Embedded Linux. Это очень гибкая платформа, которая развивается уже более десятка лет, но некоторые её аспекты не соответствуют современным тенденциям. Например, Qt/E включает в себя полноценный оконный менеджер, который нужен далеко не на всех платформах, тем более, во многих из них реализованы свои системы управления окнами.
Одной из первых идей было написать бэкэнд, который бы позволял процессу отображать полноэкранное окно во фреймбуфере (что даёт возможность писать приложения с графическим интерфейсом, не требующие X-сервера). Бэкэнд же с говорящим названием «minimal» позволяет в качестве устройства вывода использовать QImage-объект, и его реализация занимает 410 строк кода, включая комментарии.
Как всё это выглядит? Довольно скучно — как обычное Qt-приложение
Можно сказать, что цель проекта Lighthouse — дать возможность любому разработчику портировать Qt на свою любимую платформу. Morten Sørvig принял это как руководство к действию и решил подружить Qt c Google Native Client.
Native Client (NaCl) — это технология, позволяющая встраивать исполняемый нативный x86 (или ARM) код в веб-страницы. NaCl-приложения выполняются в изолированном окружении (в отличии от ActiveX-объектов и Netscape-плагинов), а потому их безопасность не должна уступать JavaScript-скриптам.
Morten успешно портировал некоторую часть функциональности QtGui и QtCore, в том числе QGraphicsView, что демонстрируется в следующем демонстрационном ролике:
Больше узнать о проекте Lighthouse, вы можете посетив страницу проекта на Gitorious. А по соседству с ним вы найдёте и страницу Qt for NaCl. Не забудьте ознакомиться с содержимым файла readme-nacl для получения дальнейших инструкций!




