20 October, 2002: LISA 2.0's third alpha release is now available. See the release notes for new features.
17 October, 2002: LISA 2.0's second alpha release is now available. See the release notes for details.
1 October, 2002: The first 2.0 alpha release, 2.0a1, is now available from the project site. See the release notes for a brief description.
30 September, 2002: LISA 2.0 successfully ran the MAB today. This version contains a ground-up reimplementation of Rete, plus an improved parsing engine. The new algorithm appears to be about twice as fast as the 1.x version, but I haven't confirmed this. An alpha release for 2.0 will be released soon.
17 August, 2002: A significant change in the project direction. LISA's
most recent bug report, involving a subtle problem in the Rete network, has
sparked some serious thinking on my part. When I first started the project I 1)
read Forgy's paper for an introduction; 2) closely studied two existing Rete
implementations (Jess, CLIPS); then 3) borrowed aspects from both and put
together a CLOS implementation. The plan was to use this initial version as a test bed
of sorts until I thoroughly understood the algorithm, but LISA acquired some
early users and I concentrated on feature work instead. Now I find myself with a
bug in an area of LISA that falls into the "why was this particular design
path chosen", and I can't answer that question and can't immediately solve
So, I have decided it's time to overhaul the project. I'm going to do several things:
- Branch the development tree and create a LISA 2.0 path.
- Reorganize the code base such that it will support multiple matching algorithms (much work here).
- Return to Forgy's original paper and write, from scratch, a "reference implementation" in CLOS that represents the essence of Rete without some of the later optimizations used by Jess/CLIPS (join node sharing, etc.). I'll maintain the fast join node memories, but that's it for optimization in the RI.
- By this time I should completely grok Rete and be able to enhance and fix LISA's current algorithm.
Once these things have been done LISA will be in a position to support other
algorithms; experimental versions of Rete, TREAT (maybe), whatever. They will
simply "plug in" to the engine framework and "just run".
Now, what is the impact here? I intend to suspend all work on 1.x; there simply is no time to do the overhaul plus add new features to that trunk.
This probably means no more bug fixes to 1.x unless someone is really desperate. Since that's not likely I don't anticipate a problem here.
6 August, 2002: Release 1.3.1 is out. This is a bugfix release that addresses a significant problem with LISA's support for class hierarchy reasoning. There are also a few enhancements and modifications. See the ChangeLog in the distribution for details. For anonymous CVS users, the release tag for 1.3.1 is Release_1-3-1.
22 July, 2002: LISA release 1.3 is now available. See the project ChangeLog for details; there are numerous significant changes and enhancements.
1 June, 2002: There's a release 1.3 on the horizon, incorporating major overhauls in several areas. Among the changes,
18 May, 2002: I've decided to change the way facts are represented internally. Currently, LISA makes a distinction between facts defined by deftemplate and facts represented as CLOS instances, primarily for a bit of efficiency when CLOS reasoning isn't required. However, this makes things a bit mushy internally and prohibits the use of queries on template facts. As of release 1.3, all facts will be backed by a corresponding CLOS instance. A little bit of performance will be sacrificed for a cleaner implementation and fully functional queries. Along the way I'm also probably going to simplify the syntax of defimport. Details in an upcoming update.
16 April, 2002: Release 1.2 is out, and I've taken a step back to survey the project. LISA has been in development now for about eighteen months. In the beginning, I had this (probably unrealistic) notion that LISA would grow to be some type of Grand Unified Agent Development Platform for Lisp. Lately however, I've begun to see LISA as something more modest and practical; a relatively light, clean inference engine for small to medium scale Lisp applications that would benefit from production rule technology. The fact that I'm the sole developer probably has something to do with this philosophical shift (if indeed it is a shift); there's only so much time to go around. Rather than move on to new feature work for version 1.3, I've decided to pause development and concentrate on fully documenting the source code. If someone needs some capability in LISA and just can't wait I'll consider revising my plans, but for now documentation and cleanup is my principal immediate goal.