Nouveau moteur JavaScript pour Qt et Qt 5.1 en alpha

Posté par  . Édité par Nÿco, Florent Zara et Xavier Teyssier. Modéré par Florent Zara. Licence CC By‑SA.
Étiquettes : aucune
20
23
avr.
2013
Communauté

Qt (prononcer « cute », comme mignon en anglais), célèbre framework C++ libre multiplate-forme, continue son bonhomme de chemin avec ces deux annonces : un nouveau moteur Javascript et la version alpha de la 5.1 !

Qt

NdM : merci à neil pour son journal.

Nouveau moteur JavaScript

Après avoir changé de moteur JavaScript lors du passage à QML 2.0 (inclus dans Qt 5.0), Digia, la société qui soutient et développe Qt, annonce vouloir effectuer un nouveau changement de moteur ! Pour rappel, QML est le langage privilégié pour le futur de Qt, et mêle un aspect déclaratif pour la définition d‘interface graphiques, à un aspect impératif sous forme de code JavaScript. Pour l’instant, Qt se base sur le moteur V8, développé par Google, et dont la vélocité et la stabilité de l’API ont été les principales motivations de son incorporation à Qt.

Mais ce moteur est trop orienté navigateur, et rend complexe la définition d’objets en Qt. Ceux-ci devant être accessibles depuis QML, JavaScript et C++ (sous forme d’objet QObject). De plus l’utilisation de V8 pose différents problèmes, notamment pour le support d’iOS et WinRT (QML ayant vocation à unifier les interfaces graphiques mobile et desktop). Pour l’instant Qt maintient sa propre branche patchée de V8 dans son arbre. Le nouveau projet, commencé du temps de Nokia, fonctionne et porte le nom de v4vm, mais les performances actuelles sont encore très faibles : trois fois plus lents que l’ancien moteur JavaScriptCore (de QML 1.0).

Qt 5.1 en alpha

Digia a aussi annoncé la version beta de Qt 5.1. Cette nouvelle version apporte son lot de nouveautés, en particulier en complétant la bibliothèque QML pour la définition d’interfaces graphiques. En effet, les interfaces à base de widgets ne sont pas disponibles en QML, et les utilisateurs devaient jusqu’alors re-créer leurs propres composants graphiques en se basant sur les quelques éléments disponibles. Il est aussi possible de créer ses propres éléments QML à partir de zéro, soit en les peignant d’abord dans un QPainter, ce qui implique une perte de performance lors de la copie des bitmaps vers OpenGL, soit en définissant ses propres scènes OpenGL, un travail plus que fastidieux.

Avec Qt 5.1, on voit apparaître les Controls QtQuick qui regroupent tous les éléments standards d’une interface graphique habituelle : boutons, labels, barre de menu, barre de progrès, tabs, et un début de composants de texte. Tout ça reste bien moins puissant que l’expérience accumulée dans les widgets standards (le module Qt Widgets), et ceux-ci sont loin d’être dépréciés dans Qt.

Une avancée de Qt 5.1 est le support d’Android, en sus des plates-formes basées sur Linux ou BlackBerry. Ce support est quasi complet, n’omettant que certaines parties du module Multimedia. On peut noter aussi la présence d’un support minimal d’iOS, mais les problèmes du moteur V8 ne permettent pas d’écrire du QML sur cette plate-forme.

On peut aussi noter la sortie de Qt 5.0.2, uniquement des corrections de bugs. Notamment celui empêchant d’utiliser Qt/MinGW sous Windows XP.

Aller plus loin

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.