[Qt-qml] New repository for "pure" QML/V8 prototype

Kent Hansen kent.hansen at nokia.com
Fri Mar 25 14:07:50 CET 2011


Hi,
As agreed in the QtScript/V8 team telco yesterday, we're prototyping a 
new approach for porting QML to V8.

The objective is to accelerate the process of having a complete, 
performant QML/V8 port, that can be merged into the main QML development 
branch at an early stage.
To achieve that, we are decoupling the objective of QML running on top 
of V8, from the objective of QtScript running on top of V8.

To avoid getting sidetracked by QtScript-specific API and behavior, 
we're prototyping a "pure" V8 integration -- no abstraction layer on 
top. The motivation for this is that the V8 API is stable and powerful, 
so in the interest of minimizing overhead, there's no reason for an 
abstraction layer (QtScript) to sit on top of that.

If the prototype is successful, the intent is to go back and complete 
the work on the QtScript/V8 port once the full QML/V8 port is done.
If the prototype is unsuccessful, we go back to doing what we have been 
doing (http://qt.gitorious.org/+qt-developers/qt/qt-script-ng), but 
hopefully with a lot more knowledge on how the QML/JS integration 
currently works.

The public mirror of the prototype QML/V8 work can be found here:

http://qt.gitorious.org/+qt-developers/qt/staging/commits/air-team/qtquick2v8

The initial work of completely removing all QtDeclarative's dependencies 
on QtScript, and linking against (external, for now) V8, has been done.

The next steps are:
1. Implement QML/JS integration on top of V8 API.
2. No embarrassing performance regressions --> merge QML/JS-V8 
integration to Qt.
3. Complete the QtScript/V8 port (based on our existing work in 
http://qt.gitorious.org/+qt-developers/qt/qt-script-ng).
4. Switch QtDeclarative back to linking against QtScript, so it will use 
the V8 copy that QtScript provides.
5. Merge to Qt.

For 1), the idea is to decouple as much of the QML/JS integration from 
the rest of the QML implementation as possible.
To achieve that, the core JS integration should live inside 
src/declarative/script (already created), which should have some 
well-defined "hooks" to the outside. Intent being that much of that code 
can be shared (AKA moved to QtScript) when it comes to step 4).

The main JIRA task for this work is 
http://bugreports.qt.nokia.com/browse/QTBUG-12506

Regards,
Kent


More information about the Qt-qml mailing list