[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