[armedbear-devel] [ANN] Snow 0.1 released - GUI library for ABCL

Alessio Stalla alessiostalla at gmail.com
Tue Sep 8 07:34:52 UTC 2009

On Mon, Sep 7, 2009 at 11:48 PM, Eric Marsden<eric.marsden at free.fr> wrote:
>>>>>> "as" == Alessio Stalla <alessiostalla at gmail.com> writes:
>  as> It is a declarative DSL for creating GUIs (Swing-only for now) built
>  as> on ABCL 0.16. It supports Cells by Ken Tilton and MiG Layout (a
>  as> declarative, CSS-like layout manager for Swing and SWT).
>  Hi Alessio,
>  This looks very interesting, thanks! I have written a Swing interface
>  with ABCL for some data visualization at work (also using MigLayout,
>  which is great), and it looks like Snow would result in less verbiage.
>  In particular, the ugliest parts of my code are for event handling and
>  triggering changes elsewhere in the application, it it looks like your
>  use of JGoodies & Cells might make that much cleaner.

That's what I hope, too ;) however, I'm still unsure about the API for
that part (in fact it is not exported). In particular, I used the word
"binding" (from "data binding") to indicate the relation between a GUI
property and an application property, but "binding" already has
another meaning in Lisp and it can be confusing. I thought about
"connection" (and a :connect-to property), but I'm not sure.

>  There are some very useful-looking functions for Java interfacing in
>  sexy-java.lisp.

Well, that's my NIH-syndrome answer to invoke.lisp. It is handy
indeed, but you pay a runtime performance penalty (since the correct
method/constructor is determined at runtime via reflection). It could
be optimized more if the ABCL compiler did type inference for Java
objects, and exposed the API for querying the compiler about the
inferred type of a variable; but that is hardly worth the effort imho.

>  I have had trouble overriding the repaint() method, to draw in a Panel
>  (runtime-class.lisp is a little fragile, it seems). Have you worked on
>  that?

My initial idea about that is to do it in Java and use the widget via
the with-widget macro. This is sub-optimal for Lisp applications, but
it's something Snow alone cannot do - it needs support from ABCL.
Which problems have you found with runtime-class? I never used it.

On second thought, what I could do in Snow is to implement a sort of
"dynamic widget" that delegates the most important methods (paint()
included) to Lisp functions. Not optimal either, but better than

So, thank you for taking the time to look at Snow. I hope it is a nice
addition to ABCL. Unfortunately the widgets it supports are
embarassingly few. If you are interested in some widgets in
particular, I'll give priority to those.

Btw, I plan to set up a c-l.net project for it soon, so it will get
its own mailing list - I posted here because it's where people working
on/with abcl are most likely to look for news, but having a dedicated
forum is the right thing.


More information about the armedbear-devel mailing list