A monthly summary of Free ("as in Freedom") CL Hackery news-that-I-know-about. October 2001
This month: Maxima, CMUCL simple-streams, OpenMCL 0.8, ECLS directions, the Eclipse Window Manager, cCLan packages, LISA 1.1, MorphiCL
For submission information, see the bottom of the page
It looks like Maxima is not going to wither. The Maxima mailing list has been seeing a lot of activity of late, including a post by James Amundson which lay out his proposals for the project and roadmap for forthcoming releases.
It seems also that a concerted effort is being made on the Maxima documentation lately. This is all really good news.
Nobody has yet offered to maintain GCL ...
Paul Foley writes:
I guess it's a good time to announce that I'm implementing simple-streams for CMUCL. It's far from usable as yet, but I'll put something on http://www.actrix.gen.nz/users/mycroft/cl.html over the weekend. If anyone wants to help out, please let me know.
Simple-streams are intended to serve as the new preferred alternative to Gray streams: from the Franz web site -
A major simplification in the simple-stream hierarchy over Gray streams is the collapsing of many class distinctions into one:
- Gray streams distinguish input and output directions per class, whereas simple-streams make this distinction with flags.
- Gray streams distinguish streams by element-type. Simple-streams have no element-type, but (with the exception of string streams) always act as if transferring octets (8-bit bytes).
The Gray streams class hierarchy distinguishes between different kinds of stream usage. The simple-stream hierarchy distinguishes between different kinds of external I/O device or pseudo-device.
In short, to implement a new class of Gray stream, one writes a bunch of methods that operate on characters. For simple-streams, one deals instead with buffers. This is not only a lot faster (as we no longer need to do CLOS dispatch per character) but a lot simpler to use for applications where one needs a buffer anyway: for example, interfaces to FFI, encrypting streams, and so on.
Once again, we can report a new release of OpenMCL
Juan Jose Garcia Ripoll summarises open projects related to ECLS. Work is presently ongoing on the C interface and a Developer Manual.
The Eclipse Window Manager (nothing to do with the Eclipse Common Lisp compiler) is written entirely in Common Lisp. Originally created by a group of students of the 4th year CS program in Bordeaux (part of their second-semester programming project), it's now being developed further as a free software project, and can be had from http://dept-info.labri.u-bordeaux.fr/~strandh/index.en.html.
It requires CLX and reportedly also still has a few CMUCL dependencies in it. Documentation is presently somewhat sparse, so I downloaded and briefly played with the October 26th snapshot. First impressions:
Installation: The instructions want you to dump a core image with defsystem and CLX already loaded. I used the Debian CMUCL 3.0.4 package, with CLX as provided by cmucl-source, so I did
# apt-get install cmucl cmucl-source $ lisp * (require :cmucl-clx) ;; clx appears to munge *herald-items* in a nasty way: work around * (setf *herald-items* (subseq *herald-items* 4)) * (save-lisp "/home/dan/clx.core") $ ./configure --with-core=/home/dan/clx.core $ make $ X :1 # start another x server to test on $ ./eclipse :1.0
Don't attempt to start it on a display which is already managed, because it doesn't check and you'll end up with another layer of borders around all your windows. Also it seems to require that the screen number be supplied as well as the display number: "./eclipse :1" didn't work.
In use: in its default incarnation Eclipse looks a lot like Sawfish with the microGUI theme - perhaps unsurprisingly, as it appears to use the same pixmaps as the Sawfish microGUI theme. The theme support is described in the manual page, and entirely pixmap-based: simply provide a replacement set of png files for the window borders.
Basic window manager operations (move, resize, delete, etc) work exactly as you'd expect them to. There is support for virtual screens (a.k.a workspaces); by default there are four of them, but obviously this is infinitely cusomizable. It understands GNOME window manager hints, but not yet session management.
Extending it: The major impediment to extending it is that documentation is kind of sparse, so you have to look at the code and try things. But (a) it comes with a sample .eclipse file which has a few of the more common operations, (b) it's Common Lisp, (c) it's only 3000 lines long: it shouldn't take long to understand it.
And you can customize on the fly, as it opens a TCP port and starts a listener on it. This is password-protected, but you will want at least to change the default password (better, put a packet filter on the port to limit access to trusted machines) if you're going to use it seriously.
Verdict: subject to any stability issues - I haven't been running it for long enough to form an opinion - there's enough of a window manager here to be used for actual work. Now I've figured out how to bind the F4 key to raise the current window, I'm planning to test it more thoroughly; check CLiki later in the month to see if I ever get that far.
Neat!
LISA is a platform for the development of intelligent systems in Common Lisp. At LISA's core is a CLOS implementation of Rete, along with a production rule language closely related to CLIPS and JESS.
LISA's latest release, version 1.1, was announced this month. "The most significant new feature in this release is support for dynamic rule definition; that is, it is now possible to create new rules from the RHS of existing rules at runtime. This feature has been tested to some extent but should still be considered somewhat experimental."
Development continues with efforts concentrated on the creation of a preliminary query language.
Morphic is a new user interface in Squeak Smalltalk, which replaces the venerable MVC. MorphiCL is (or will be) a UI for Common Lisp loosely based on Morphic. Currently it uses CLX, but can easily be ported. More information at http://ww.telent.net/cliki/MorphiCL
** cl-meta - The META library for Common Lisp
* Initial Release.
** cl-acl-compat - Compatibility layer for Allegro Common Lisp
** cl-aserve - Portable Aserve
* New to cCLan
* Minor fix on debian-package type.
* Fixing lintian bugs
** cl-utils - A collection of utilities for Common Lisp
* Removed meta, and moved into separate package cl-meta.
* Added partition.
* Added man-page for partition.
* Ensured that it replaces cl-partition package.
* Added preliminary extremum.
** clocc-port - The Common Lisp library 'port' from CLOCC.
* included upstream changes, mostly sbcl-related
* Fixed lintian-issues.
* Updated it from upstream with better naming of internal modules of the
port system. Allows it to use more of the source directly.
* Renamed the name of the system to :port from :clocc-port
** encycmuclopedia - The EncyCMUCLopedia is an extensive doc collection for CMUCL
* Initial Release.
** ilisp - Package for interacting with LISPs using EMACSes
* CVS updated a bit, which should fix new-SBCL problems.
* Included cltl2.el in the compilation procedure, thus fixing SF bug
#476556
"Free The X3J Thirteen" is compiled once a month by me (Daniel Barlow) from news that I know about. If you're associated with a free CL project that's under-represented here, all you have to do is send me news so that I know about it. Email me! I'd especially like to hear news from CLISP and OpenMCL people because I don't often have time to follow that myself