Nouveautés pour les développeurs
Les changements suivants sont importants pour les développeurs utilisant la plateforme de développement GNOME 3.2. Si vous n'êtes pas intéressé par les changements concernant les développeurs, vous pouvez passer à la partie Section V ― Internationalisation.
La dernière version de la plateforme de développement GNOME accompagne la sortie de GNOME 3.2. Elle consiste en un ensemble de bibliothèques aux API et ABI stables disponibles sous la licence GNU LGPL qui peuvent être utilisées pour le développement d'applications multi plateformes.
Pour des informations sur le développement avec GNOME, visitez le centre de développement GNOME.
- IV.I. GLib 2.30
- IV.II. GTK+ 3.2
- IV.III. Clutter 1.8
- IV.IV. De l'usage des bibliothèques dépréciées
- IV.V. Compilation simplifiée de GNOME par JHBuild
- IV.VI. Autres mises à jour à destination des développeurs
IV.I. GLib 2.30
La bibliothèque d'utilitaires logiciels bas niveau de GNOME, GLib, a vu de nombreuses améliorations :
- La classe GApplication peut maintenant être utilisée pour des applications non unique.
- GLib installe à présent un en-tête séparé pour les API spécifiques à Unix : glib-unix.h. Elle fournit, entre autres choses, une source de boucle principale pour les signaux Unix.
- GDBus prend en charge le motif « object manager » avec de nombreuses nouvelles interfaces.
- GDBus possède maintenant un générateur de code : gdbus-codegen.
- Les opérations atomiques ont été réécrites pour utiliser celles de gcc ; l'utilisation de casts explicites peut être problématique.
- Les opérations atomiques sur les pointeurs ont été ajoutées, incluant les verrous par bit sur les emplacements de taille pointeur.
- La politique de choix des unités a été modifiée pour privilégier les unités du Système International (SI) ; la fonction g_format_size_for_display a été dépréciée en faveur de g_format_size.
- La prise en charge des codes d'authentification de messages HMAC a été ajoutée via la classe GHmac.
- Une interface pour la consultation des certificats et des clés a été ajoutée via la classe GTlsDatabase. Une implémentation est fournie par glib-networking.
IV.II. GTK+ 3.2
GTK+ 3.2 est la dernière version de la boîte à outils GTK+ qui est au cœur de GNOME. GTK+ 3.2 inclut de nouvelles fonctionnalités à destination des développeurs, ainsi que de nombreuses corrections de bogues.
- Les champs de saisie peuvent à présent contenir des astuces. Voir gtk_entry_set_placeholder_text.
- De nouveaux composants prennent en charge la gestion de la géométrie height-for-width. Il est important de définir des tailles raisonnables pour les étiquettes et de vérifier les dimensions des fenêtres.
- Nouveaux composants :
- GtkLockButton est un nouveau contrôle pour les opérations nécessitant des privilèges, comme dans certains panneaux du Centre de Contrôle.
- GtkOverlay est un nouveau conteneur pour les contrôles flottants au dessus d'une zone de contenu, comme on peut le voir dans les navigateurs Web.
- GtkFontChooserDialog est une nouvelle boîte de dialogue pour la sélection de police.
- Une prise en charge sensiblement meilleure des thèmes CSS, en particulier pour les barres d'outils.
- Le moteur de rendu HTML Broadway a été amélioré, bien que toujours expérimental. Il permet théoriquement l'exécution d'une application sur un serveur et son accès depuis n'importe quel navigateur, ou bien, sur un serveur public, le lancement d'une nouvelle instance pour chaque utilisateur. Notez bien qu'il vous faudra compiler GTK+ avec les options --enable-x11-backend --enable-broadway-backend et utiliser la variable d'environnement GDK_BACKEND à l'exécution.
- La prise en charge des reftests a été ajoutée pour faciliter l'écriture de scénarios de test.
- Diverses améliorations de performances ont été apportées à GTK+ pour la mise en cache des requêtes de tailles, le calcul des tailles des contrôles, et pour la lecture des feuilles de style CSS.
IV.III. Clutter 1.8
Clutter, la bibliothèque d'éléments interactifs utilisant l'accélération matérielle, apporte les améliorations suivantes :
- De nouvelles actions, comme ClutterGestureAction pour la prise en charge des gestuelles, ClutterSwipeAction pour détecter une gestuelle de type « swipe », ClutterDropAction pour permettre à un acteur de relâcher son objet lorsqu'il utilise ClutterDragAction, et aussi la prise en charge des clics longs avec ClutterClickAction.
- Une transition ClutterState peut être rattachée à un signal au moment où l'on crée une scène dans un ClutterScript.
- l'intégration du dessin via Cairo a été améliorée.
- Cogl, l'interface de programmation GPU utilisée par Clutter, est maintenant dans une bibliothèque séparée.
IV.IV. De l'usage des bibliothèques dépréciées
De nouvelles étapes ont été franchies dans le travail continu de remplacement des technologies obsolètes.
- GConf utilise désormais D-Bus, et ainsi ne dépend plus de ORBit2. Par conséquent, les bibliothèques dépréciées ORBit2 et libIDL ont été retirées de la plateforme GNOME.
- Les modules de base de GNOME programmés en Python ne dépendent plus que des bindings basés sur l'introspection (pygobject-3). Ainsi pygtk, gnome-python et gnome-python-desktop ne sont plus nécessaires.
- Plusieurs applications utilisent désormais GSettings à la place de GConf. C'est le cas d'Accerciser, Dasher, GHex, du débogueur graphique Nemiver, et du gestionnaire de mots de passe et de clés de chiffrement Seahorse.
- Plusieurs applications, comme le navigateur Web Epiphany, ont été converties de dbus-glib à GDBus et de libunique à G(tk)Application.
IV.V. Compilation simplifiée de GNOME par JHBuild
L'outil de construction de GNOME JHBuild ne construit plus un module si la version installée sur votre système est suffisamment récente. Ceci est contrôlé par l'option de configuration partial_build qui est activée par défaut. La commande jhbuild sysdeps fournit la liste des modules systèmes trouvés ainsi que celle des modules qui seront construits.
Si vous voulez construire GNOME à partir de zéro avec une distribution récente, cela peut vous éviter la compilation d'une bonne cinquantaine de modules.
IV.VI. Autres mises à jour à destination des développeurs
Les autres améliorations de la plateforme GNOME incluent :
- Du côté de Python, les bindings classiques (statiques) ont été abandonnés pour PyGObject 3.0, et seuls les bindings dynamiques (reposants sur l'introspection) sont fournis. PyGObject 2 et 3 sont installables en parallèle, du fait que l'introspection n'est pas active par défaut pour PyGObject 2. Les informations de migration de vos applications de PyGObject 2 à PyGObject 3 sont disponibles.
- La version 0.12 de Tracker prend en charge Firefox 4.0 et ultérieurs, Thunderbird 5.0 et ultérieurs, MeeGoTouch, plusieurs paramètres SPARQL additionnels, l'extraction d'informations de fichiers EPub, et les fichiers « desktop » dans les répertoires XDG locaux.
- La version 0.9 de NetworkManager apporte la prise en charge de l'introspection, et une API D-Bus simplifiée. Les informations de migration de vos applications de NetworkManager 0.8 à 0.9 sont disponibles.
- Dans un effort de promotion de PKCS#11 comme une passerelle entre différentes bibliothèques de chiffrement, diverses parties de gnome-keyring ont été séparées en bibliothèques d'usage général.
- GtkSourceView prend en charge la mise en évidence des syntaxes Markdown et Standard ML.
- Evolution-Data-Server a reçu de nombreuses corrections concernant la prise en charge de l'introspection.
- La bibliothèque libfolks inclut à présent un moteur de traitement Evolution-Data-Server, qui est utilisé par la nouvelle application Contacts.
- Pour le traitement de la documentation, les outils gnome-doc-utils et xml2po sont peu à peu remplacés par yelp-tools et itstool. yelp-xsl inclut quelques extensions expérimentales pour Mallard, comme le traitement conditionnel et les glossaires dynamiques.