Liens connexes

Dépêche modérée par

Dépêche éditée par

: XCB : bientôt la version 1

Posté par Jerome Herman (). Modéré le 13 août 2004.
0
XCB est un projet visant à créer une bibliothèque d'accès X Window plus bas niveau et surtout asynchrone pour faire alternative à la vénérable mais gourmande en performances XLib.

Un courriel de Jamey Sharp sur la liste XCB nous apprend que la bibliothèque a fait de gros progrès, et notamment le pont vers XLib qui est très proche de fonctionner parfaitement.
De plus l'API a été documentée (bien que certaines fonctions de la documentation ne soient présentes que dans le CVS).

> Lire la suite (76 commentaires, moyenne: 3,7).   [dépêche : 1282 caractères]

XCB est une bibliothèque dont le but est de se débarrasser des ralentissements provoqués par le système synchrone de la XLib. En effet avec la XLib lorsqu'un appel est fait au serveur X, l'ensemble de celui-ci est bloqué jusqu'à ce qu'il ait traité la requête. Or le protocole X est fait pour fonctionner en mode asynchrone, les requêtes au serveur ne devrait donc pas générer de blocage en mode exclusif du serveur. 90% des lenteurs imputés à X viennent en fait de la XLib.

Comme à toute étape charnière, le projet XCB a besoin de testeurs et de rapports de bugs. Ne vous laissez pas rebuter par l'installation qui peut être assez ardue (à faire de préférence depuis le CVS), Jamey Sharp et Bart Massey sont extrêmement réactifs et vous apporteront toute l'aide nécessaire pour mener à bien votre installation (par contre l'anglais est obligatoire). Le pont vers XLib nécessite aussi pas mal de tests, en théorie toute application compilée pour XLib devrait pouvoir fonctionner sous XCB en utilisant le pont.

En ce qui concerne la documentation elle est claire et agréable à lire, mais requiert un bon niveau de connaissance sur le protocole X11.
Ceux qui se sentent courageux peuvent s'essayer à porter des bibliothèques de XLib vers XCB natif (GTK, GTK+, QT, Imlib etc.)

Cette discussion est archivée, il n'est plus possible de laisser des commentaires.

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

Performances ?

Posté par sherlokk () le 13/08/2004 à 12:27. (lien). Évalué à 1.

Est-ce qu'ils ont un objectif pour les performances de cette librairie, comparativement à la XLib ?

[+] C'est donc ça ?

Posté par Maxx () le 13/08/2004 à 12:39. (lien). Évalué à -1.

90% des lenteurs imputés à X viennent en fait de la XLib.
C'est donc ça le fameux goulot d'étranglement dont il était question il n'y pas si longtemps que ça dans un journal (ou dépêche, je ne me souviens plus).
Donc finalement c'est une bonne nouvelle la bientôt version 1 de ce projet ? :)

Bon en même temps je la ramène, mais j'y connais rien... :-/ --> [_]

Pont

Posté par Aldoo (Jabber id, ) le 13/08/2004 à 12:44. (lien). Évalué à 10.

Est-ce que le gain en performance s'observera uniquement sur les applis programmées pour XCB, ou alors aussi sur celles, pour Xlib, qui utilisent XCB via le pont ?

Quand est-ce que ça remplacera Xlib dans le projet x.org ? ;)

question

Posté par skeespin (page perso, ) le 13/08/2004 à 12:45. (lien). Évalué à 7.

XCL est donc une couche supplémentaire XCB qui permet de faciliter la migration de Xlib vers XCB ...
c'est bien ca ? ou suis je à coté de la plaque ?

Pourquoi un remplacement ?

Posté par Jllc () le 13/08/2004 à 12:46. (lien). Évalué à 5.

D'après ce que je lis :
Or le protocole X est fait pour fonctionner en mode asynchrone, [...]

Si le protocole est fait pour, pourquoi la Xlib ne le fait pas directement ? Surtout que si on remlace la bibliothèque coté client, il faut logiquement un serveur ayant les mêmes fonctionnalités. La Xlib étant gérée par les mêmes développeurs que le XFree, le serveur a forcément les mêmes limitations.

Ou alors, il est trop difficile de modifier la bibliothèque existante (et fonctionnement très bien) pour faire de l'asynchrone ?

XCB+E17

Posté par _alex () le 13/08/2004 à 12:52. (lien). Évalué à 5.

Le lien est peut être passé, mais bon :
http://sourceforge.net/mailarchive/forum.php?thread_id=1945128&(...)

C'est une discussion il y a un peu plus d'an sur l'intégration de XCB dans E17. Il y a plein de réponses aux questions qu'on peut se poser.

Compiler XCL...

Posté par Simon TRENY () le 13/08/2004 à 14:46. (lien). Évalué à 2.

Quelqu'un a réussi à compiler XCL à partir du CVS?
J'ai compiler XCB et les librairies nécessaires sans problèmes mais dans le répertoire xcb/xcl, il n'y a ni autogen, ni configure ni Makefile... donc je peux pas tester si les performances sont meilleures vu qu'il ne doit pas y avoir d'applications compatibles XCB (à part rxvt).

[+] Applications de XCB

Posté par Etienne Juliot (page perso, ) le 13/08/2004 à 16:17. (lien). Évalué à -3.

Ca voudrait aussi dire que Swing irait plus vite s'il était implémenté via un serveur Y lui utilisant XCB ??

Euuuuh, je crois que le vendredi soir avant le week end, faut éviter de poster !! -> [-20]

Je n'ai pas bien compris

Posté par L () le 13/08/2004 à 17:01. (lien). Évalué à 6.

D'après le manuel officiel de Xlib, je cite : « Most of the functions in Xlib just add requests to an output buffer. These requests later execute asynchronously on the X server. Functions that return values of information stored in the server do not return (that is, they block) until an explicit reply is received or an error occurs. You can provide an error handler, which will be called when the error is reported. » Comparé à cette nouvelle, je crois qu'il y a un malentendu quelque part sur la nature "synchrone" de X présenté comme systématiquement synchrone et bloquante.

Par ailleurs, je n'ai pas compris ce qu'est XCB techniquement: j'ai lu et relu les liens, j'ai lu les commentaires mais appremment il y a beaucoup de confusion et bien que tout le monde a "compris" que ce sera plus rapide, personne ne semble savoir ce que c'est exactement.

Concrètement, j'écrit un programme X avec Xlib : j'ouvre mon display avec XOpenDisplay(), je crée un fenêtre avec XCreateWindow(), je dessis dedans avec les fonctions X standard et je traite les événements avec XNextEvent() en attendant de terminer mon programme et de clôturer ma connection au serveur X. le tout avec Xlib qui se charge d'interfacer mes appels et de les faire suivre vers le serveur.

Donc ma question, en quoi XCB va changer cela ? Je vais devoir laisser tomber ces appels Xlib pour autre chose ? Il ne faudra plus utiliser Xlib ? XCB va dialoguer directement au serveur X sur la même machine sans passer par une couche réseau ? Comment rendre asynchrone un appel qui nécessite un résultat pour poursuivre le traitement sans ralentir le tout et sans rajouter une complexité de traitement supplémentaire ?

Si quelqu'un a des réponses autre que "ça va révolutionner le monde car c'est plus rapide", je suis preneur parce que là, c'est assez flou. Je ne vois pas en tant que développeur où s'intercale XCB ou ce que remplace XCB ou comment fonctionne XCB. Et que la personne qui a la réponse ne soit pas avare en détail technique, que ce soit sur le protocole X ou sur des détails d'implémentation de XCB, j'aime ça :)

Revenir en haut de page