Fragen? Antworten! Siehe auch: Alternativlos
Die Idee war natürlich mal wieder, "kleiner" und "schneller" zu sein, "improved threading support" (!?!?) und "extensibility". Also wenn jemand von extensibility redet, dann gehen bei mir ja schon die Alarmglocken an, denn das ist das X aus XML. Und hey, was soll ich euch sagen, es kommt von Freedesktop.org, den größten Flaschen des Universums, die Homepage ist ein furchtbares Wiki (!), und es ist noch viel schlimmer:
XCB is built atop an XML description of the core X protocol and the protocol of most of the extensions in common use today.
OH MEIN GOTT! Warum würde jemand so etwas furchtbares tun?This allows much of the XCB code to be auto-generated […]
Ich weiß nicht, wie es euch geht, aber ich habe noch NIE "auto-generated" Code gesehen, der kleiner, schneller oder besser wartbar gewesen wäre als handgeschriebener Code. Wer sich das noch mal eben vor Augen führen will, der möge sich mal ein "configure" angucken. Im Gegenteil, autogenerierter Code ist üblicherweise um Faktoren bis Größenordnungen größer und langsamer als handgehackter Code. Die einzige Ausnahme, wo generierter Code gelegentlich schneller ist, ist yacc (von Hand schreibt man normalerweise Top-Down Parser, keine Bottom-Up Parser wie yacc sie generiert, eben weil die nicht verständlich sind am Ende. Bei gcc haben sie kürzlich den yacc-Parser rausgeschmissen und einen Parser von Hand gemacht, weil dieser generierte Code völlig unwartbar war).Aber hey, Vorurteile wollen gepflegt werden. Und so habe ich mal configure und make gesagt.
[…]Ja, richtig gesehen. Der XML-basierte Buildprozeß kackt ab. Nicht irgendein Teil — der Teil, der den auto-generierten Code generiert. Das ist libxslt 1.1.18, gelinkt gegen libxml2 2.6.27, nicht irgendein obsoleter Kack, falls das jetzt jemand vermutet hat.
make[2]: Entering directory `/tmp/build/libxcb-0.9.93/src'
for i in xproto.xml bigreq.xml composite.xml damage.xml dpms.xml glx.xml randr.xml record.xml render.xml res.xml screensaver.xml shape.xml shm.xml sync.xml xc_misc.xml xevie.xml xf86dri.xml xfixes.xml xinerama.xml xprint.xml xtest.xml xvmc.xml xv.xml ; do \
rm -f $i ; \
ln -s /usr/X11R7/share/xcb/$i $i ; \
done
/usr/bin/xsltproc --stringparam mode source \
--stringparam base-path /usr/X11R7/share/xcb/ \
--stringparam extension-path /usr/X11R7/share/xcb/ \
-o xproto.c ./c-client.xsl xproto.xml
make[2]: *** [xproto.c] Segmentation fault
Keine weiteren Fragen, Euer Ehren.