Closure Web Browser
Closure is a web browser implemented in Common Lisp,
implemented using the CLIM user interface toolkit (more precisely,
implementation of CLIM 2, plus some direct-to-X abstraction
- supports HTML-4 and CSS-1 plus the essential bits of CSS-2;
- supports HTTP 1.0 and 1.1, FTP and HTTPS (when using the Hutchentoot library);
- supports PNG, JPEG, GIF, XBM, XPM and TIFF image formats;
- antialiased text when used with McCLIM-Freetype;
- experimental TeX-like paragraph formatting and hyphenation support;
- simple navigation history support;
- can be extended in Common Lisp!
To check out the current version of the source code:
$ export CVSROOT=:pserver:firstname.lastname@example.org:/project/closure/cvsroot
$ cvs login
Logging in to :pserver:email@example.com:2401/project/closure/cvsroot
CVS password: anonymous
$ cvs co -P closure
Here is a quickstart guide to running Closure
on SBCL on GNU/Linux.
- Start splitting it into components, prime candidates for
- The rune abstraction.
- Network protocol (HTTP and FTP).
- Parsers (SGML, HTML, CSS).
- Graphic file formats (PNM, GIF, PNG).
- Use native McCLIM image support instead of CLX, so that
other McCLIM backends (Postscript, GTk+) work
- Implement new features, such as text entry boxes.
- David Lichteblau has updated Closure to use the external CXML libary (an improved version
of Closure's original XML parser). This should bring better standards compliance
and easier maintenance.
- Provisional support for loading
GIF files without an external helper application, thanks to
the Skippy library.
- OpenMCL support has been added to Closure.
It's later than mid-April, but the current version of Closure
runs in current SBCL and McCLIM, and is mostly robust against the
vagaries of the big bad Internet.
Currently the code base has experienced some bit rot but we expect
to get it running again with current SBCL and McCLIM by
mid-April. Also we did a license change from the former GPL/LGPL
mix to MIT-style in an attempt to make the code more useful for
integration in other projects be it free projects, GPLed projects
or even closed source projects.