[Haskell] Haskell Xlib bindings

Sven Panne sven.panne at aedion.de
Sat Feb 10 12:04:32 EST 2007


Am Mittwoch, 7. Februar 2007 20:51 schrieb Benjamin Franksen:
> [...]
> XCB implements the full protocol (which already makes for a daunting amount
> of data types and routines). On top of that it implements a very lean
> connection management and request handling API that allows (this is one of
> the highlights) single-threaded as well as multi-threaded access.

Hmmm, the presentation in the paper is the other way round: The lower layer is 
the XCB_Connection layer, handling connections, requests and replies. On top 
of that, the XCB_Protocol layer implements, well, the protocol, including 
(un-)marshaling to/from C.

> See the very readable paper
> http://www.linuxshowcase.org/2001/full_papers/massey/massey.pdf

After reading that paper and browsing around a bit, I think a slightly bolder 
approach might make sense for Haskell, in effect creating XHB ("X Protocol 
Haskell Binding"): I guess that the bulk of the code is in the XCB_Protocol 
layer, and that layer is already generated via an XML description for the C 
binding. If we can use the same technique to generate Haskell code, "only" a 
Haskell version of the connection layer would be needed to get a full XHB. 
This would have a few advantages:

   * There is no dependency on the XCB library, so XHB should work on *any* 
platform, including e.g. MinGW without any X11 libs. An X11 server is of 
course still needed... :-)

   * Data is only (un-)marshaled once. Using XCB, there would be 2 steps: 
Haskell <=> C <=> X protocol

   * The availability of protocol extensions is determined by XHB alone, not 
by any underlying XCB implementation.

I am not sure if this is a realistic way to go, especially I am unsure about 
the amount of work needed to implement the functionality of the 
XCB_Connection layer directly in Haskell. Let's see if I can find a more or 
less stand-alone version of XCB (with no need to build all of X.Org) and 
understand how it is actually implemented.

Any opinions? Hints?

Cheers,
   S.


More information about the Libraries mailing list