[Haskell-cafe] ANNOUNCE: X Haskell Bindings

Antoine Latter aslatter at gmail.com
Fri Jan 9 11:57:58 EST 2009


Folks,

I'd like to announce a preview-release of the X Haskell Bindings.  The
goal of the library is to provide low-level access to the X11
protocol, in the spirit of the X C Bindings  This is a "preview"
because I expect that the interface will still need to change - but I
do plan on bump the minor-version number when that happens.

On Hackage: http://hackage.haskell.org/cgi-bin/hackage-scripts/package/xhb

What works:
  All X protocol requests have corresponding functions.  I haven't
tested all of them.
  Requests are sent asynchronously - the caller is not blocked until
they need to examine the result of the request
  Errors and Events are unpacked into Haskell data types
  It should be safe to use the same connection in multiple threads

What needs improvement:
 * There's no documentation - you pretty much need to be sitting down
with the X Protocol reference while using this library.  Once we can
get documentation into the XML that this library is generated from, we
should be able to generate Haddock documentation at the same time
 * A lot of parameters are specified using integer types, even though
a proper Haskell enum-like data type exists.
 * Many functions take a ValueParam argument, which is not fun to work
with in a language like Haskell.  I have plans for how to make these
more type-safe, but this is something else that requires more
information in the XML protocol descriptions.
 * There's no way to share a connection between XHB and libraries
built against the Xlib bindings.
 * I haven't done any benchmarking, so it's possible that all of this
is pretty slow.

Keep in mind that this is a library for the X Protocol - it alone is
not a replacement for XLib - XLib does a lot more than pushing and
pulling on a file-handle.


Related releases:

Spencer Janssen has released FFI bindings to Xauth:
 http://hackage.haskell.org/cgi-bin/hackage-scripts/package/Xauth-0.1

I've released a small library for determining the byte-ordering of the system:
 http://hackage.haskell.org/cgi-bin/hackage-scripts/package/byteorder-1.0.0


Related projects:

X C Bindings: http://xcb.freedesktop.org/


-Antoine


More information about the Haskell-Cafe mailing list