I'm pleased to announce the release of SISCweb v0.5, available at:
This release adds a space-safe implementation of Web Cells,
consolidates the interface from Scheme to JSP/Servlets, and provides
some incremental features and fixes.
- An implementation of web cells, as as described in the paper
"Interaction-Safe State for the Web". New examples now help compare
web cells, SRFI-39 parameters, state-passing-style and session
attributes with respect to scope, backtracking and cloning.
- Much improved interface from SISCweb to JSPs and other standard
- Bindings can now be explicitely single-valued or
multi-valued, as in:
`((a . 1) (b 2 3)).
- The send-forward/* functions pass bindings to the dispatcher
as request attributes for easy access via the JSTL and the
like. Multi-valued bindings are passed as collection
- Vice-versa, attributes in a request forwarded to a Scheme
program are now included in the bindings structure returned
- The SISCHttpServletRequest.getBinding*() methods are
deprecated, and will disappear in the next release.
- Added publish/regexp to publish procedures using regular
expressions. Sub-expressions can be optionally mapped to procedure
- The SISC libraries (sisc.jar, etc.) can now be shared across servlet
* better compliance of plain HTML output via send-html/*;
* added siscweb/text module for generating plain text;
* added sql/mssql module from LShift's Icing [*];
* logging rotation;
* further internal refactoring and compatibility fixes.
After a context restart, continuation tables persisted within sessions
were not being purged of expired continuations. This was partially
fixed in v0.4 by limiting the number of continuations per user, but is
now completely resolved.
Objectives for the next SISCweb releases are:
- Faster SXML generation, precompiled if possible.
- Further work on including features from the Icing framework.
- Performance improvements, possibly including clustering.
Special thanks for this release go to Dan Muresan for his
contributions, and Ben Simon for bug reports.
[**] Icing: http://www.lshift.net/icing
The complete Icing db layer is included in a "dormant" state. It is
mainly intended as a baseline for further hacking.
SISCweb is a framework aimed to facilitate writing stateful Scheme web
applications in J2EE environments.
SISCweb sports an interactive, REPL-based web application development
style. Developers can write applications interactively, without ever
restarting the context, and, insofar as it is desirable, without ever
losing application state. (In fact, save for the Java portion, SISCweb
itself is developed interactively in its own REPL.)
Through the use of continuations, SISCweb does away with the
page-centric execution model typical of web applications [*]. Every
time a response is sent to the browser, the program execution flow is
suspended, to be then resumed from that exact point when the browser
submits a request.
[*] More information can be found in this paper: Christian
Queinnec. "Inverting back the inversion of control or, continuations
versus page-centric programming". Technical Report 7, LIP6. May
SISCweb requires a J2EE 1.3 application server and a JDK 1.4 or
later. More detailed information is contained in the documentation.
SISCweb is based on SISC (sisc.sf.net), a Scheme interpreter for the
JVM, and is heavily influenced by other Lisp web frameworks:
- the PLT web server collection
- SUnet (http://www.scsh.net/resources/sunet.html)
- AllegroServe (http://allegroserve.sourceforge.net/)
A couple of initial design decisions were also lifted from Matthias
Radestock's servlet code in the contrib section of the SISC CVS tree.
Also special thanks to Anton van Straaten, Dominique Boucher, Ben
Simon, Dan Muresan and Felix Klock for bug reports, suggestions,
and/or work in support of SISCweb.
CONTRIBUTING, BUG REPORTS
Comments, ideas, and bug reports are welcome at:
(C) 2005-2007 Alessandro Colomba <firstname.lastname@example.org>