From: Tamas Papp
Subject: announcing cl-cairo2: yet another cairo package for Common Lisp
Date: 
Message-ID: <87bqfwb2tt.fsf@pu100877.student.princeton.edu>
Hi,

I have been working on creating a CL interface to the Cairo API, and
now it has reached the state where I think it is usable by others who
need it.  Features:

* CFFI bindings are generated by SWIG.  This ensures that API changes
  are caught easily and makes it easier to follow them. The bindings
  to C functions are not exported directly.

* It attempts to make the interface more Lisp-like. The Cairo API is
  written in C, which has no garbage collection or condition handling,
  and has little support for sophisticated dynamic data
  structures. However, the Lisp user should not worry about reference
  counting and pointer arithmetic. Instead of merely providing the C
  wrappers, cl-cairo2 aims to provide an interface conforming to the
  style of Lisp better.

* Condition handling. In the Cairo API, an error is signaled by
  changing the state of the object, which the user is supposed to
  query periodically. The functions in cl-cairo2 do this
  automatically, and use Common Lisp's powerful condition facility to
  signal errors (this feature is not fully developed yet: currently a
  warning is signalled for all errors. The framework is in place, I
  just need to decide which errors require user intervention, etc).

You can find the ASDF package, mailing lists and a tutorial at
http://common-lisp.net/project/cl-cairo2/.

I am working on a 2d graph package, and I implemented mostly what I
use from Cairo for this project.  However, in the long run I am
interested in implementing the whole interface, contact me if you are
missing anything.

Comments on the code are welcome, I am a Lisp newbie.

Best,

Tamas