URL: https://linuxfr.org/users/beagf/journaux/xcb-en-version-10-rc1-le-futur-en-marche Title: XCB en version 1.0-RC1, le futur en marche... Authors: beagf Date: 2006年09月26日T11:19:33+02:00 Tags: Score: 0 Grande nouvelle... Bientôt la fin des trolls sur le fait que X est lent... En effet XCB est proche de la version 1.0, hier la version RC1 est sortie (désolé pour le retard mais j'ai pas mal de boulot en ce moment) Tout d'abort, qu'est-ce que c'est ce truc ? Tout le monde ici, je pense connait le système graphique X, puisqu'il équipe la très grosse majoritée des systèmes linux. Ce système est en fait un protocole qui permet à un serveur, le système d'affichage, de communiquer avec des clients, les applications. Les clients envoies des requettes d'affichage et le serveur affiche ce qui est demandé. Le protocole va plus loin, puisqu'il gère aussi les souris et les clavier, bref tout ce qui constitue l'interface graphique de nos systèmes. Ce que ce système à de génial, c'est qu'il permet de manière transparente l'affichage déporté, les requètes du protocole pouvant être transférée soit localement via des socket unix, soit à distance via TCP. Jusqu'à maintenant la gestion de ce protocole était principalement éffectuée par la Xlib. Elle fournies des fonctions haut-niveau qui sont transformées en série de requettes envoyée au serveur. Le problème de la Xlib est qu'elle est synchrone, c'est à dire (en simplifiant) qu'elle envoie une requette, attend la réponse du serveur, envoie la requette suivante... Hors le protocole X est fondamentalement asynchrone, c'est-à-dire que l'on envoie une série de requette et on traite les réponse quand elle arrivent. Le seul cas ou l'on doit attendre une réponse et donc bloquer le reste ce produit quand la reponse à une grande importance, ce qui arrive rarement dans une application graphique. En effet les applications graphiques ont tendance à être réactive plustôt que active. C'est de ce problème qu'est né la légende que X est lent et que si on virait l'abstraction réseau on pourrait obtenir un système qui sux des mamans ours. XCB est la pour contredire tout ces médisant qui parlent sans connaître le problème ;-) En effet, XCB est une nouvelle implémentation du protocole X mais asynchrone, elle met à disposition du programmeur un acces direct au protocole et permet de jouer directement avec les requètes. Il devient donc possible d'envoyer quelques tonnes de requettes sans attendre de réponses et quand l'appli dispose d'un peu de temps libre elle vérifie qu'il n'y a pas eu de gros problèmes. Et comble du bonheur, XCB peu aussi servir de couche de transport pour la Xlib. Attention, ça veux pas dire que toutes les vieilles applis programmée avec les pieds vons soudain ce mettrent a être tellement rapide qu'elles en deviennent inutilisable, en effet mais en utilisant XCB la Xlib reste synchrone. L'avantage par contre est qu'il devient possible de mélanger les appels à la Xlib et à XCB et donc de migrer progressivement les applications. Bon je m'enflamme mais déjà c'est juste une pré-version, mais la 1.0 ne devrait pas tardée puisque l'API est stabilisée et que si aucun problème dans cette API n'est soulevé durant cette phases de test la version 1.0 sortira d'ici peu. Le deuxième problème c'est que maintenant il va falloir ce motivé à porter les applications... et là il y a du boulot, mais c'est possible. Il existe déjà par exemble une version XCB de evas la bibliothèque graphique de enlightenment 17, et quelques autres. L'idéal serait un portage d'un gros toolkit tel que GTK ce qui boosterait un max d'applis rapidement. Donc maintenant au boulot... Liens : ------- Le site de XCB : [http://xcb.freedesktop.org/](http://xcb.freedesktop.org/) Vielle news LinuxFr : [http://linuxfr.org/2004/08/13/17033.html](http://linuxfr.org/2004/08/13/17033.html) Encore plus vielle : [http://linuxfr.org/2003/05/05/12270.html](http://linuxfr.org/2003/05/05/12270.html) Les téléchargements : --------------------- [http://xcb.freedesktop.org/dist/xcb-proto-0.9.91.tar.bz2](http://xcb.freedesktop.org/dist/xcb-proto-0.9.91.tar.bz2) with sha1sum: b447894b8e46bc36dec89cf0ccd65e2db5e20b94 [http://xcb.freedesktop.org/dist/xcb-proto-0.9.91.tar.gz](http://xcb.freedesktop.org/dist/xcb-proto-0.9.91.tar.gz) with sha1sum: b05f6f14d9266aa3827a444a2d77c453c1b3131d [http://xcb.freedesktop.org/dist/libxcb-0.9.91.tar.bz2](http://xcb.freedesktop.org/dist/libxcb-0.9.91.tar.bz2) with sha1sum: 8da28b68107613b67dc0dc51dc06a361b11953b4 [http://xcb.freedesktop.org/dist/libxcb-0.9.91.tar.gz](http://xcb.freedesktop.org/dist/libxcb-0.9.91.tar.gz) with sha1sum: edad8cb60daad429bc8ef0635ab2d6aeb6b6ae5d La mailing-list : ----------------- [http://lists.freedesktop.org/mailman/listinfo/xcb](http://lists.freedesktop.org/mailman/listinfo/xcb) Annonce : --------- Et pour finir une rapide traduction du début du mail de Jamey Sharp annoncant cette RC1.0 sur la mailling list du projet : libxcb : La libxcb est une interface au protocole X11, qui a pour but de remplacer l'actuelle interface de ce protocole : la Xlib. Elle à plusieurs avantages sur la Xlib : - La taille : aussi bien la lib que l'empreinte memoire sont réduites. - Masquage de la latence : il est possible (et même encouragé) d'envoyer une série de requettes sans attendre la réponse du serveur entre chacune. - Acces direct au protocol : les fonctions proposées corresponde directement aux requettes du protocol. - Gestion des thread : l'acces à XCB depuis plusieurs threads est transparent. - Facilitée d'implémentation des extensions : Les interfaces sont générées depuis des fichiers XML décrivant le protocol. xcb-proto : xcb-proto contient la description du protocol au format XML que la libxcb utilise pour générer la majoritée de son code et de son API. Elle est fournie séparément de la libxcb pour permettre une réutilisation simple par d'autres projets, tel que des interfaces à d'autres langages, des générateurs de documentations... Cette séparation entre la couche de transport XCB et la couche protocol générée automatiquement rend aussi beaucoup plus facile la rédaction de nouvelles extensions. Avec l'infrastructure de la Xlib, le support côté client demande de gros éfforts alors qu'avec XCB, le support ne nécéssite qu'une description XML de l'extention sans la moindre ligne de code. Pourquoi cette release ? Nous sortons cette pré-version pour permettre une plus grande vérification et test avant la version 1.0 de XCB. Lors de la version 1.0, la libxcb aura une API et une ABI stable; les futurs modifications porterons uniquement sur des aditions; les applications compilées avec XCB 1.0 ou plus fonctionerons avec toutes les futures versions de XCB. Saud découverte de problème sérieux avec l'API, nous ne prévoyons aucun changement de l'API entre cette release et la erlease 1.0. Nous apprecierions annormément des relecture de l'API de cette release. Nous avons eu quelques retours sur le fait qu'imposer une verification statique des types des XID en C pose plus de problèmes que d'aide, donc nous apprécierions des commentaires sur ce point et sur le fait que cela puisse etre un serieux problème dans l'API. Il reste aussi quelques questions sur est-ceqque xcb_poll_for_event doit avoir le paramètre 'error' maintenant que XCB dispose d'un systeme de gestion des erreures plus uniforme. XCB à été testé sur de nombreux OS, tels que GNU/Linux, FreeBSD, Solaris et MacOS. La plus part des test on été éffectués sur x86 et x86-64, mais les systèmes big-endian tel que PowerPC et SPARC on aussi un un peu testés. La bilibothèque doit compiler avec les versions récentes de GCC et du compilateur de Sun. Nous aimerions des tests sur des OS, procésseurs et compilateurs plus variés. DISCLAIMER: Ce journal contient quelques notes d'humour povant être interprétées comme des attaques envers la Xlib et les programmes l'utilisant. J'ai un profond respect pour cette vénérable bibliothèque ainsi que ces programmes dépassés, qu'ils me pardonnent ;-)