Представлены результаты работы по интеграции JavaScript-движка V8 в Qt

Разработчики фреймворка Qt представили проект qt-script-ng, нацеленный на проведение замены интегрированного в WebKit JavaScript-движка JavaScriptCore на разработанный компанией Google высокопроизводительный движок V8, снабженный эффективным сборщиком мусора, обеспечивающий возможность одновременного изолированного выполнения нескольких скриптов одним процессом и реализующий расширенные методы оптимизации кода. В частности, V8 поддерживает функции JIT-компиляции, позволяющие на лету транслировать некоторые элементы в машинный код, минуя фазу интерпретации байткода в виртуальной машине.

В настоящий момент в рамках проекта подготовлен полный клон репозитория Qt, отличающийся заменой JavaScript-бэкенда. Несмотря на то, что некоторые элементы QtScript API пока не реализованы и определенные автоматические тесты завершаются ошибкой, с новым бэкендом уже работает ряд демонстрационных примеров использования QtScript и QML. Qt-script-ng пока не готов для полноценного внедрения, но его уже можно использовать для экспериментов. Проект позиционируется как исследовательский - решение о возможной интеграции V8 в основную кодовую базу Qt будет принято в зависимости от достигнутых результатов. В будущем разработчики планируют провести ревизию QtScript API и значительно урезать его, одновременно интегрировав в QML поддержку направленных на создание web-приложений API HTML5.

Интеграция V8 позволит увеличить производительность работы приложений, сформированных с использованием модуля QtScript, позволяющего встраивать блоки на языке JavaScript в код на языке C++, а также активно используемого для обеспечения работы технологии декларативного описания интерфейса Qt Quick и языка QML. В качестве языка для создания сценариев в QML используется JavaScript, а структура и параметры элементов интерфейса задаются CSS-подобными блоками, представляющими собой определение JavaScript-объектов. QML-компоненты могут быть не только интегрированы в состав проектов на языке C++, но и работать в виде обособленных графических приложений, логика функционирования которых задана целиком на языке JavaScript.

В частности, на использование QML планируется перевести десктоп-оболочку KDE4 Plasma и другие KDE-программы, ранее базирующиеся на фреймворке QGraphicsView. Кроме упрощения процесса разработки переход на QML также сулит ускорение выполнения почти всех экранных операций, за счет более активного использования OpenGL и GPU-акселерации.

©  OpenNet