Qt Creator 3.4.0

La nouvelle version de Qt Creator, numérotée 3.4.0, vient d’arriver. Elle se focalise sur le peaufinage de l’existant, avec des corrections de défauts (notamment au niveau du débogueur) et des améliorations du code interne, tout en apportant quelques nouvelles fonctionnalités.

Côté C++, une nouvelle action de refactorisation a été ajoutée pour déplacer les définitions de fonction en dehors d’une définition de classe ; également, l’autocomplétion propose maintenant la nouvelle syntaxe pour la connexion entre signaux et slots arrivée avec Qt 5. Un nouveau filtre propose également de signaler tous les fichiers C et C++ inclus dans le projet, même sans être explicitement mentionnés.

L’intégration Android est désormais compatible avec les chaînes de compilation 64 bits. Le développement sur des plateformes embarqués sans Qt (bare metal) peut être fait avec des projets génériques.

Clang se fait une place plus importante dans l’EDI : son analyseur statique n’est plus considéré comme expérimental, il peut d’ailleurs être utilisé en combinaison avec les compilateurs Visual C++ et MinGW.

Sources : Qt Creator 3.4.0 released, Qt Creator 3.4 RC1 released, Qt Creator 3.4 beta1 released.
Voir aussi : les notes de version.

PhysX sur GitHub : quelques nouveautés

Quelques nouveautés du côté de PhysX et de l’ouverture de son code (sans qu’on puisse parler de logiciel libre, toutefois). Le premier élément tient plus de l’ordre du détail : le dépôt GitHub précédent est déprécié au profit d’un dépôt par version majeure. PhysX-3.3 ne contiendra donc que PhysX 3.3 (et les diverses mises à jour, probablement), un nouveau dépôt sera créé pour la branche 3.4.

Ce nouveau dépôt contient maintenant les sources nécessaires à la compilation de PhysX pour iOS, ainsi que celles des exemples livrés avec le SDK. Plus intéressant : dans les semaines à venir, NVIDIDA proposera un contrat de licence pour les contributeurs. En conséquence, les développeurs de PhysX pourront recevoir et accepter des pull requests de la part d’utilisateurs de PhysX, ce qui ouvre le développement du moteur à un public plus large, tout comme Unreal Engine 4.

Source : New Github Repo: PhysX-3.3. Old repo PhysX is deprecated!

Qt Installer Framework 2.0

Le Qt Installer Framework est une brique logicielle prévue pour créer des installateurs, tant en ligne que hors ligne, pour Windows, Linux et OS X, en gérant les mises à jour. Bien que focalisé sur Qt, l’outil est suffisamment générique pour des applications ne l’utilisant pas.

La version 2.0 vient de sortir, avec quelques nouvelles fonctionnalités. La raison principale pour le changement de version majeure est que cet outil est maintenant compilé avec Qt 5 plutôt que Qt 4. La compatibilité a été préservée par rapport à la version précédente : il devrait être possible de mettre à jour une installation réalisée avec QIF 1.6 avec un installateur basé sur cette nouvelle version.

Notamment, le moteur JavaScript précédemment utilisé, Qt Script, a été remplacé par celui de Qt Quick, en gardant la compatibilité avec les scripts existants. Aussi, il devient possible de lancer des installations sans aucune interface graphique.

Télécharger Qt Installer Framework 2.0.
Voir aussi : les notes de version.
Source : Qt Installer Framework 2.0 Released

PEEL, un outil de comparaison de moteurs physiques

NVIDIA avait développé un outil pour comparer les performances de différents moteurs physiques, notamment pour situer son moteur maison (PhysX) par rapport à la concurrence, mais aussi pour repérer les régressions en performances (certaines ont déjà été repérées pour PhysX 3.4 et sont en cours de correction). Il avait déjà été utilisé pour la sortie de PhysX 3.3. Cet outil, nommé PEEL, est maintenant disponible gratuitement pour tous, sources incluses (sous une licence zlib). Des binaires sont fournis pour Windows.

Une série de moteurs est déjà incluse dans la distribution : Newton (3.13, 3.9), Bullet (2.79, 2.81, 2.82) et PhysX (2.8.4, 3.1, 3.2, 3.3.0, 3.3.1, 3.3.2, 3.4). Les sources pour intégrer Havok (6.6.0, 2011.3.0, 2011.3.1, 2012.1.0, 2012.2.0, 2013.1.0) sont incluses, mais pas de source ou de binaire pour Havok lui-même, pour des raisons de licence.

Télécharger PEEL.

Source : http://physxinfo.com/news/12580/physics-engine-evaluation-lab-peel-is-released/.

Intégration de PhysX et GameWorks dans Unreal Engine 4

Depuis Unreal Engine 3 et UDK, Epic utilise le moteur physique PhysX, développé par NVIDIA. Unreal Engine 4 en utilise d’ailleurs la dernière mouture (la série 3.x). Depuis lors, NVIDIA a lancé une série de nouvelles briques logicielles dans le domaine de la simulation physique sous l’ombrelle GameWorks.

L’une de ces briques est une réflexion de fond sur la manière d’exploiter les GPU pour la simulation multiphysique en temps réel, avec des couplages entre tous les types de simulation : des interactions entre solides (déformables ou non), liquides et tissus, chaque type d’objet étant régi par des systèmes d’équations différents. NVIDIA FleX unifie toutes ces problématiques en considérant chaque objet comme un ensemble de particules. Après quelques années de développement et des démonstrations dont les principaux intérêts sont techniques (couplages en temps réel), la version 0.25 dispose maintenant d’une intégration (certes encore expérimentale et incomplète) dans Unreal Engine 4.

Les sources de l’intégration sont disponibles sur un dépôt Git, accessible sous les mêmes conditions que les sources d’Unreal Engine 4. D’autres modules de GameWorks sont en cours d’intégration : HBAO+, VXGI, Vehicles et WaveWorks sont d’ores et déjà disponibles, toujours en tant qu’intégrations expérimentales, toujours uniquement pour Windows.

Il est prévu d’ajouter d’autres modules dans les mois à venir, comme HairWorks ou Turf Effects. Certains modules ont besoin d’un GPU NVIDIA, d’autres se satisfont d’un GPU DirectX 11.

Source : NVIDIA GameWorks Integration, le clone NVIDIA du dépôt Unreal Engine.

Les sources de PhysX disponibles gratuitement

Peu après Unreal Engine 4, voici que son moteur physique, PhysX, développé par NVIDIA, se met à la même mode : son code source est gratuitement disponible. Bien évidemment, le projet ne devient pas libre pour autant : il est nécessaire de s’enregistrer sur le site de NVIDIA avant d’avoir accès aux sources.

Ce moteur physique est disponible pour les plateformes Windows, Linux, OS X et Android (en plus des consoles de jeux, mais elles sont exclues de cette ouverture) et est utilisé dans plus de cinq cents jeux. Il était déjà gratuit pour des utilisations, commerciales ou non.

L’ouverture concerne principalement le moteur physique, mais également le débogueur visuel (PVD) et quelques modules APEX : Clothing, Destructible et Emitter. Il s’agit de la version 3.3.3 (PhysX) et 1.3.3 (APEX), c’est-à-dire la prochaine version. Parmi les fonctionnalités disponibles, on compte les corps rigides, les collisions, la gestion des personnages, des particules et des véhicules, en plus des tissus et objets déformables, notamment.

Le dépôt GitHub n’est cependant pas celui de développement : il ne contient que huit commits depuis fin janvier. Le code CUDA, qui déporte une partie des calculs sur le GPU, est bien évidemment de la partie.

Sources : https://developer.nvidia.com/content/latest-physx-source-code-now-available-free-github, http://physxinfo.com/.

Aperçu des nouvelles fonctionnalités prévues pour Qt 5.5

Bien que la liste ne soit pas complètement figée, Qt 5.5 devrait venir avec une série de nouvelles fonctionnalités. La principale est l’ajout du module Qt 3D, sans être finalisé (technology preview), un ambitieux projet remontant à l’époque Qt Mobility et Qt 4.8, qui facilite l’intégration de contenu 3D dans des applications Qt, tout en gardant des API C++ et Qt Quick. Il s’agit d’un moteur de rendu 3D prévu pour l’extensibilité : son architecture devrait s’accommoder de tout besoin au niveau du rendu de scènes 3D.

Un autre morceau de Qt Mobility, Qt Location, fait son retour dans Qt 5. Là où Qt Positionning fournit la position de l’utilisateur, Qt Location en facilitera l’exploitation, comme la gestion des itinéraires, la navigation, la recherche de lieux, etc.

L’édition commerciale fournit le module Qt Quick Entreprise Controls, avec des composants bien utiles comme des jauges (verticales ou circulaires), des cadrans, des indicateurs de statut ou encore des boutons à bascule. Toutes ces fonctionnalités (et d’autres encore, comme une vue en arbre) seront ajoutées au module Qt Quick Controls de l’édition libre, sous le nom de Qt Quick Extras.

Les amateurs de vidéos pourront se réjouir de la gestion de GStreamer 1.0 : jusqu’à présent, seules les versions 0.10 étaient prises en charge (plus aucune mise à jour n’a été réalisée depuis 2012). Ainsi, le décodage de vidéos pourra être accéléré sur le GPU, par exemple. Ces améliorations de performances n’ont pu se faire que par des modifications importantes au niveau de la structure du code de GStreamer, causant des difficultés pour la mise à jour côté Qt. Cependant, la version utilisée par défaut lors de la compilation est toujours la 0.10.

D’autres modules devraient être dépréciés, comme Qt WebKit (en cours de remplacement par Qt WebEngine), Qt Declarative (remplacé par Qt Quick 2) et Qt Script (remplacé par le moteur de script de Qt Quick2 ). Ils pourraient ne plus être inclus dans les paquets binaires dès Qt 5.6.

Comme pour Qt 5.4, ces nouveaux modules sont disponibles sous les licences GPL2 et LGPL3, en plus d’une offre commerciale.

Sources : Licensing of new modules in Qt 5.5, Qt3D: wip/newapi branch is dead. Long live dev!, Qt 5.5 Is Packing On New Features, Going Into Feature Freeze Soon, What is new in Qt 5.5, Deprecating modules with 5.5.

CUDA 7 RC

CUDA 7, dont la RC vient de sortir, est présentée par NVIDIA comme une « mise à jour importante de la plateforme ». Outre les habituelles améliorations de performances, du côté des plateformes, l’architecture IBM POWER sera maintenant gérée dans toutes les versions du SDK (seule la version 5.5 était disponible) — ce qui n’est pas étonnant, NVIDIA étant membre de la fondation OpenPOWER.

Lire la suite

Sortie de Gurobi 6.0

Gurobi est l’un des meilleurs solveurs en programmation mathématique existants, ce qui le rend très intéressant pour la recherche opérationnelle. Il se montre également versatile : il gère les problèmes avec des variables continues et discrètes, avec une structure linéaire ou quadratique. Il est notamment utilisé pour assigner les vols aux comptoirs d’enregistrement et aux portes d’embarquement à l’aéroport de Copenhague, mais aussi pour des recherches sur l’équilibre entre la demande en électricité et la production renouvelable.

Sa version 6.0 apporte bien évidemment des améliorations de performances intéressantes (jusqu’une trentaine de pour cent de temps économisé pour des problèmes linéaires en nombres entiers — MIP — difficiles), mais aussi de nouvelles fonctionnalités algorithmiques : les objectifs linéaires par morceaux peuvent être indiqués directement au solveur, ce qui conduit à d’importantes améliorations de performances par rapport à une modélisation plus classique.

Le solveur distribué est également amélioré : pour résoudre un MIP, il était possible d’exploiter plusieurs machines en lançant la résolution avec des paramètres différents sur chaque machine (concurrent optimiser) ; désormais, ces machines pourront également collaborer sur une même instance du problème (distributed MIP solver). Selon les problèmes à résoudre, cette technique pourrait être plus rapide.

Parmi les autres améliorations, on peut noter que les matrices des contraintes pourront contenir plus de deux milliards d’éléments non nuls. De nouvelles méthodes permettent également l’optimisation asynchrone, afin de lancer d’autres tâches pendant que le solveur travaille. Les fonctions de retour pourront également ajouter des contraintes retardées (lazy), une indication supplémentaire par rapport aux plans sécants déjà disponibles.

Source : http://www.gurobi.com/products/gurobi-optimizer/what%27s-new-in-v6.0

Qt 5.4 : vérification de la syntaxe QML

En QML, une erreur des plus fréquentes concerne la syntaxe des fichiers QML et JavaScript — y compris dans des applications en production, principalement pour des composants chargés de manière asynchrone. La plupart de ces erreurs ne sont que des typos, mais elles restent fort ennuyantes et facilement évitables.

Pour éviter ce genre d’erreurs, Qt 5.4 proposera un outil en ligne de commande pour vérifier la syntaxe des fichiers QML. Il est prévu notamment pour s’intégrer facilement aux outils d’intégration continue, tout comme xmllint et json_verify sont utilisés pour les fichiers XML et JSON, respectivement :

$ qmllint ClickableImage.qml
ClickableImage.qml:17 : Expected token `numeric literal'

$ find -type f -name \*qml -exec qmllint \{\} +
./qml/SettingsPage.qml:35: Unexpected token `if'
./qml/AboutPage.qml:35: Expected a qualified name id

Cet outil ne fait que de la vérification syntaxique, pas sémantique : en cas d’erreur dans un nom de variable, par exemple, l’outil sera incapable de le détecter. La vérification de ce genre d’erreur est bien plus difficile, car la sémantique dépend également du contexte de l’application en cours d’exécution.

Bar.qml:1 TypeFoo is not a type
Bar.qml:2 module "QtQuickControls" is not installed
Bar.qml:6:9: QML Rectangle: Cannot anchor to an item that isn't a parent or
sibling.

Source : KDAB contributions to Qt 5.4: qmllint