README for OBJ3 Source Tree

Welcome to the OBJ3 source tree.

Source Structure

The source code for the OBJ3 system is found in the "obj3" directory. In particular, note that the standard OBJ3 prelude is included as "obj3/prelude/obj3sp.obj".

The source code for the TRIM system is found in the "trim" directory. The TRIM example code and documentation are found there as well.

Many OBJ3 examples are included in the "examples" directory. See the readme in that directory for more information.

A few miscellaneous support programs (coded in C) are available in the "support" directory.

Building

Background

The OBJ3 system is written in Common Lisp. Modern Common Lisp systems can compile Lisp code to C, thus a compiled implementation of OBJ3 is quite efficient.

The last major release of OBJ3 (2.0) took place in April of 1992 and was built by Timothy Winkler, one of the primary OBJ3 developers. At that time, OBJ3 built properly on several Common Lisp implementations including:

  • CMU CL - Carnegie Mellon's Common Lisp's last major release (17) from CMU took place in November, 1994. CMU-CL is currently under development by a group of interested individuals and the latest version (18b) was made available in mid-1998. See CMU Common Lisp Activities Page for more information.
  • LUCID CL (now Liquid CL from Harlequin) - A commercial Common Lisp implementation that is still sold and supported. The latest version at the time of this writing is 5.0.6 (released December, 1998).
  • Kyoto Common Lisp (KCL) - Was the primary Lisp platform for OBJ3 development in the early 90s. KCL is a highly portable implementation of Common Lisp. KCL evolved into AKCL (Austin Kyoto Common Lisp) by Bill Schelter, which then evolved into GNU Common Lisp. A release of AKCL is available from CMU but it is circa 1992. It is unclear how portable or supported AKCL is at this time.

The world of Common Lisp implementations has changed over the last eight years. The primary free implementation that is widely used and available today is GNU Common Lisp. This release of OBJ3 is only guaranteed to run under GNU Common Lisp (GCL), CMU Common Lisp, Steel Bank Common Lisp, and CLISP.

Thanks go primarily to Sula Ma at Oxford for the OBJ3 2.04 port to GCL 2.2.2. Sula is preparing a new branch of OBJ called "OBJ4", and this port was part of that work.

We are interested in hearing if anyone ports OBJ3 to other Common Lisp implementations, in particular, LispWorks and Franz Allegro CL.

For a good breakdown of modern Common Lisp implementations, see this informative page. All other questions about Common Lisp implementation are probably addressed in the Lisp FAQ.

Building

To build OBJ3, you need one of the above Common Lisp implementations and GNU make. Set the shell variable 'lisp_compiler' to the executable of the Common Lisp compiler you wish to use, then type "make" in the OBJ3 root directory. After the build completes, the OBJ3 and TRIM executables will be found in the bin directory.

Questions or comments?

Please email kiniry@acm.org.