[armedbear-devel] Web frameworks with ABCL (was Re: SBCL->ABCL migration questions)

Mark Evenson evenson at panix.com
Tue Aug 27 08:01:20 UTC 2013

On 8/26/13 6:24 PM, Rich Morin wrote:
> On Aug 26, 2013, at 05:26, Rudi Schlatte wrote:
>> Now that abcl has a mop implementation, a port is theoretically
>> possible.  In fact, porting the existing X-Windows backend should
>> not be too much work.  ...
> "theoretically possible" isn't too encouraging.  Maybe I should
> take a closer look at my goals and (still speculative) approach.
> The program uses McCLIM to provide a single, tabbed window.  I'd
> like to retain the back-end logic, but replace the front end with
> a JavaScript single page application, using D3.js, jQuery UI, etc.


> So, recasting the question, are there any web server libraries I
> should consider?  I'd like something pretty minimal (ala Rack or
> Sinatra); all I need to do is handle requests from a client and
> respond with appropriate data structures (eg, JSON, EDN).

I like building CL web apps with [RESTAS][] to map the URI space on top 
of Hunchentoot, using [Parenscript][] to glue together the necessary 
Javascript libraries.  RESTAS uses a similiar abstraction as Ruby on 
Rails' "routes" to quickly hook representations into the URIs your 
application serves.  I use Parenscript so that I don't make so many 
mistakes writing client closures, as the Parenscript compiler can only 
emit syntactically correct Javascript.  Usually, I end up creating 
semi-general macros to write the actual content with [CL-WHO][], as I 
find that I need to abstract the "content domain" in a per-application 
manner, which I end up refactoring over the course of the project, 
tweaking for expressive power vs. maintainability.  The trick about such 
apps always seems to lie in the separation of the content (per-MIME 
"Content-Type"), the presentation (CSS), and the logic (Parenscript 
wrapped Javascript).  While I like dealing with everything in s-exprs, 
there are many good reasons for using appropiate DSLs in other 
templating systems (like Sinatra), such as when one has a person helping 
out who is especially profficient at browser Javascript and/or CSS/HTML.

[RESTAS]: http://code.google.com/p/restas/
[Parenscript]: http://common-lisp.net/project/parenscript/
[CL-WHO]: http://weitz.de/cl-who/

> On a related front, I'd love to hear about any work in using EDN
> with Common Lisp:
>    https://github.com/edn-format/edn
>    https://github.com/edn-format/edn/wiki/Implementations

Given the list of implementations that you have cited--and knowing 
nothing about EDN--I would go for using CFFI to the C implementation, 
knowing that one could possibly use Jython or JRuby to orchestrate their 
implementations of EDN as a backup.

"A screaming comes across the sky.  It has happened before, but there
is nothing to compare to it now."

More information about the armedbear-devel mailing list