lisp - 23.9.2004 - 4.4.2007

The Elephant Persistent Object Metaprotocol and Database - for Common Lisp. Yes, I have bracket addiction again. Sorry.

Scheme 48 - new release 1.6. Very interesting elements for programming with threads. Looks like someone has gone wild in all possible concepts.

PicoLisp Again

After some digging and leafing through and reading: PicoLisp is brilliant. What it is: simply a primitive Lisp with a very compact language core and some very unusual design decisions.

First and foremost: no compiler, not even a bytecode compiler. PicoLisp's "virtual machine" is simply an efficient Lisp interpreter for Lisp SEXPRs (the linked lists you know from old Lisp interpreters).

Another point: only lists, symbols, and numbers as data types. No floating points (instead, simple ways to use scaled integers) and strings are either lists of characters (which are symbols again) or simply symbols.

Also rather unusual: constant dynamic binding of symbols, not lexical binding. Old Lisp systems also only had dynamic binding. Lexical binding makes compilers easier and eliminates some annoying sources of errors, but dynamic binding enables some very interesting programming techniques (which is why many Lisp systems have fluids - dynamically bound variables - such as the global parameters in Common Lisp).

Other peculiarities: designed from the outset for developing database-driven applications. It includes its own database that contains all the features of typical object-relational databases and its own GUI library that targets various HTML variants (pure HTML, HTML with Java, and HTML with JavaScript).

Adding Prolog as a query language to the database is only a consistent further development - the integration of Prolog and Lisp is not new in general. But to achieve all this in such a compact way is smart.

What excites me about it? Well, anyone who has read Paul Graham's articles about Arc - the 100-year language he is working on - will see astonishing parallels. PicoLisp also limits itself to the bare essentials, uses quite compact representations, and has only strongly reduced data types. The idea is the same for both: back to clean abstraction on known concepts, not to dilute the source representation through premature optimization (data type selection).

The result? A compact Lisp core with very interesting properties and a fairly simple way to put together web applications. But also suitable for typical scripting stories (once you've figured out how to get programs integrated, for example). Additionally, an interpreter with manageable source code (not 14,000 lines of C source!), which you can easily extend with the functions necessary for your own projects. Overall, this strongly reminds me of the old TCL versions, except that here a real Lisp is underneath.

If you want to read for yourself, here are some documentation links:

However, all the documentation is not quite complete - functions keep appearing in one of the documents that are missing in the reference, or functions are used that are not mentioned anywhere and whose operation is not entirely clear. But there is also the complete (and only sparsely) documented source code of all library modules for that. Yes, it sounds a bit like a text adventure, I know. On the other hand, the volume of source code is quite manageable.

Pico Lisp - a mini-Lisp interpreter that has been in practical use for application development since 1988. Interesting concept - back to Lisp 1.5, fast interpreter instead of compiler, high dynamics.

new snapshot tarballs finally - OpenMCL gets Unicode support.

DrScheme - the best Scheme implementation in the world now has a new version 350. This version includes, among other changes, a Just-in-Time-Compiler for Intel and PPC.

Allegro Common Lisp Express - the current free (as in free beer) version 8.0 of it is out now.

Clim-Desktop project - first approaches for an integrated Common Lisp development environment based on the free CLIM implementation.

Hedgehog - Never underestimate the power of a small tactical Lisp interpreter.

APRESS.COM: Practical Common Lisp - now also available as a free PDF download (go to the Free Download page and download it there).

Lisp at Light Speed - a really interesting Lisp blog

Taste for the Web - a nice cartoon about Paul Graham's articles. Yes, his sometimes rather uncle-like style with constant plugs for Yahoo Stores can get on your nerves from time to time.

LTK - The Lisp Toolkit - if it should just be a bit of GUI, but not necessarily the big hammer is needed - LTK offers simple bindings for TK in Common Lisp. Works excellently with OpenMCL together, even CLISP likes it.

Scatha and Glaurung are two chess programs written in OpenMCL, with Cocoa support from OpenMCL. Nice examples of how to build native OS X applications with OpenMCL - and they are also interesting to play, especially the hexagonal chess version.

call of the noodle

Someone is writing a Lisp compiler for Python bytecode - very interesting, as you could use the Python libraries under a Lisp dialect. Let's see what the Lisp dialect will look like when the first release comes out and what features it will cover. With support for Lisp macros, it would be very interesting.

OpenMCL 1.0 is out - after quite a long time finally a decent version jump

Retrocomputing - MIT CADR Lisp Machines

Yeeeehaaaa! The source code of the MIT CADR Lisp Machines - the precursor of most high-end Lisp machines - has been released under a BSD license!

This should hopefully give the CADR Lisp Emulator a further boost. In recent times, things have been a bit quiet around the emulator.

If Symbolics could finally bring themselves to port their OpenGenera platform to OS X, I would be even happier.

And a few more news about the emulator - there is the first support for ChaosNet, including a file server for Linux. And the Lispmachine-Board mentioned in the link would be pretty cool ...

I want one!

First signs of life from Open Genera on PowerMac - that would be really something if Open Genera didn't just run on weird OpenVMS boxes, but also on a PowerMac - I'd actually buy a desktop computer for that

ObjectiveCLIPS

Way cool: Objective CLIPS is a new development environment for OS X. From the description:

Using Objective C runtime introspection, CLIPS, and FScript, it is possible to write intelligent Cocoa applications. Any Objective C object can be asserted as a fact in CLIPS, however, CoreData provides an additional meta model along with object persistence.

CLIPS is an expert system environment that is based on a Lisp dialect and enables the management of rules and facts, as well as reasoning about them. FScript is a scripting language inspired by Smalltalk that works directly with the ObjectiveC classes in OS X. Both together should enable pretty cool things, especially since databases and documents can also be easily created with CoreData. And both languages (CLIPS and FScript) I found quite interesting in my experiments with them - CLIPS was even used by me for a longer time as a "Lisp replacement", because it is indeed a rather old-fashioned Lisp, but is equipped with powerful additional abstraction possibilities.

wxWindows now also for Common Lisp

wxCL provides Common Lisp libraries for using the brilliant wxWindows GUI library. Very nice - I have already appreciated wxWindows in its Python incarnation, and in Scheme (via DrScheme) it is also very helpful. Now Common Lispers can use it too. I know that in Common Lisp, of course, CLIM (today often in the form of McCLIM) is the toolkit of choice, especially since it is much more powerful than wxWindows. But still, it's nice to have a cross-platform GUI library, especially because it is available for more than one programming language.

Emacs on the metal

From the Movitz mailing list: Emacs on the metal. Someone wrote an Emacs clone in Common Lisp and then created a bootable Movitz kernel image from it. Movitz is a system for programming embedded applications in Common Lisp - and thus the Emacs clone is the first truly bootable Emacs. Sick

LispWorks Personal 4.4.5

LispWorks Personal - the free (free beer-free) LispWorks version is available in the new 4.4 release and also runs with Tiger. LispWorks is currently the most interesting Lisp environment for the Mac, as it integrates relatively well into the system. And the Personal version is quite sufficient for playing around.

TBNL - A Toolkit for Dynamic Lisp Websites enables generating dynamic content with Common Lisp. Essentially, it's something like a FastCGI solution for Common Lisp.

The .emacs File by Bill Clementson. Shows very nicely why one should actually consider using Emacs. Particularly interesting for Common Lisp users is his customizing for Slime for integrating various Common Lisps.

Practical Common Lisp is a new book about Common Lisp with many practical examples. Finally, a Common Lisp book that doesn't just delve into rather theoretical examples but addresses practical topics such as spam filters, web servers, HTML generation, ID3 tags, and other stuff. The book content is available to read online.

Those who want to play with XMLHTTPRequest and Common Lisp should check out CLiki : cl-ajax, which provides the necessary framework for easily integrating Common Lisp functions into web applications based on Araneida.

ParenScript is a compiler that converts Lisp to JavaScript. Certainly a pretty brilliant thing for Lisp-based web servers and application frameworks, because the programmer can work in his familiar language tools. Clientside Lisp by detours, so to speak ...

UnCommon Web Tutorial

The article hyper-cliki : Web/Continuation describes how to write web applications with the continuation-based web framework UnCommon Web in Common Lisp. Very interesting, as Common Lisp itself is much more handicapped with continuations than Scheme - in Scheme continuations are first-class objects by standard, in Common Lisp they are not.

Continuation-based web servers have the advantage that the actual code can be structured very similarly to classical applications. You don't have to deal much with the event model of classical web programming and you rarely have to deal with explicit session constructs, because the session in a continuation-based web system is implicit.

There are continuation-based web frameworks for the following languages:

  • [Smalltalk][1]
  • [Common Lisp][2]
  • [Scheme][3] (unfortunately no direct link to the web server itself)
  • [SISC Scheme][4]
  • [Ruby][5] [twice][6]
  • [Python (via CherryPy and either Stackless or StateSaver)][7]

There are certainly more, but these are the ones I could find quickly.

Hedgehog is a nice little Lisp compiler and bytecode interpreter with a special focus on low resource consumption. Unfortunately, interactivity and debugging suffer as a result: no tracebacks and no REPL, just running scripts and searching for the breakpoint in the pseudo-assembler source via grep. It would be nice if the language could offer these interactive features as an option - you can then leave them out in small boxes.

cyrusharmon.org: More GCC-XML (new and improved -- now with pr0n!) - crazy title, but a brilliant thing: SBCL gets native bindings to the Carbon API. And thus becomes the second Open Source Lisp system with integration into the OS X world (although Cocoa bindings would of course be cooler - but so far in the Open Source area only OpenMCL offers that).

symbolics.com ist die älteste noch registrierte Domain. Very cool. Ich hab übrigens eine Symbolics bei mir im Zimmer stehen

SLIME: The Superior Lisp Interaction Mode for Emacs - Common Lisp Systeme in Emacs einbetten

Arachnids and Pachyderms - Wie man ein einfaches Blogsystem mit Common Lisp bauen kann

CLiki : Araneida - Noch ein Webserver in Common Lisp - dieser ist sehr klein

Chapter 2. Building OpenMCL from its Source Code - OpenMCL vom Source erstellen (auch für die 0.14-dev)

mel-base - Basislibrary für eMail-Handling in Common Lisp

Bayescl -- cvs-prerelease - Bayesian Filter in Common Lisp

CL-PREVALENCE - In-Memory-Database und Serialization sowie Deserialization für Lisp

Lispix Table of Contents - Bildbearbeitungssystem in Common Lisp

Persistent Lisp OBjects - Persistente Lisp Objekte - aktuelle Version, Client-Server Architektur

Pg: a Common Lisp interface to PostgreSQL - PostGreSQL Client komplett in Common Lisp

Projects at Common-Lisp.net - Noch ein Haufen mehr Projekte in Common Lisp

AllegroServe - a Web Application Server - Homepage des originalen AllegroServe Webservers - mit Dokumentation die auch für Portable AllegroServe relevant ist

Common Lisp Hypermedia Server (CL-HTTP) - der klassische Common Lisp HTTP Server

Common Lisp Opensource Center - diverse Allegro Open Source Projekte - z.B. ein FTP und ein NFS Server

lisp tools for xml - Noch ein XML Parser - dieser hier ist sehr vollständig, die gängigen Modelle werden unterstützt. Auch ein SOAP Parser soll dabei sein.

Portable AllegroServe - Kompatibilitätslayer für Allegro CL Netzwerk und Threading code für den AllegroServe Webserver

S-XML - Einfacher XML Parser für Common Lisp

S-XML-RPC - XML-RPC für Client und Server in Common Lisp