Download the Jatha Common LISP Library

Please report any bugs to m h e w e t t AT


Jatha is a copyrighted work whose distribution is governed by the LGPL, which provides for free access to source code and allows Jatha to be used as a library in a commercial system. However, if you make modifications to Jatha, any modified version of the library must also be made available under the LGPL.


Installation instructions

  1. Download jatha-version.jar.
  2. Option 1: Run it in its own GUI window.
  3. Option 2: Run it on the console.
  4. Option 3: Use it as a library.

Recent changes

Jatha 2.8.0 (released 25 Apr 2007)
  (mh) Compiled with Java 1.5.
  (mh) Modified Jatha.makeList(...) to accept a variable number of arguments.
  (mh) Some code mods to remove compiler warnings in Java 1.5.
Jatha 2.7.1 (released 23 Feb 2006)
  (mh) Added Jatha.eval(String) to make it easier to evaluate expressions from Java.
  (mh) Added better documentation on Jatha.eval() and in the FAQ on using eval.
  (mh) Compiled with Java 1.4.2 compiler.  The previous version was accidentally
       compiled with java 1.5.0.  (Although nobody complained.)

Jatha 2.7.0 (released 30 Jan 2006)
  (mh) Made *PACKAGE* variable special (suggested by Ola Bini).
  (mh) HashTable type now returns TRUE for atom() and FALSE for listp().
       (Suggested by Stephen Starkey).
  (mh) Modified SETQ so that it will set a local variable value
       if it is used inside a LET.  Previously it always set the
       global value of a variable.  A similar fix needs to be
       made for SET, but I don't know how to do it yet.
  (mh) Modified the GUI to make the INPUT window be multi-line.
       Suggested by Bob Futrelle.  Also added a lot of other window
  (mh) Fixed handling of #'(lambda ...) in the parser.  Now works.
  (mh) Modified LispParser to support block comments, #| ... |#.
  (mh) Lisp Listener window now allows multiple input statements.
  (mh) Lisp Listener window again highlights matching parentheses.
  (mh) Implemented a simple form of *LOAD-VERBOSE*.  You have to
       set it at the top level.  Doesn't work inside LET statements.
       Example that works:
          (setq *load-verbose* t)
          (load-from-jar "init/03.lisp")
          (setq *load-verbose* nil)

Jatha 2.5.0 (released 16 May 2005)
  Summary of new functions:
       (load-from-jar filename &OPTIONAL jar-file)
       (documentation type symbol)
       (setf-documentation type symbol)
       make-package, package-name, package-nicknames
       package-use-list, use-package,
       many cad..da..r functions
       prog1, prog2

  (mh) Updated all copyright dates to 2005.
  (mh) Fixed method StandardLispValue.compareTo().  Argument wasn't
       correctly being converted to a String before the comparison.
       Thanks to Stephen Starkey for this fix.
  (mh) Added Jatha.load(Reader) method.  Thanks to Stephen Starkey
       for this contribution.
  (mh) Added a basic implementation of macros thanks to some
       amazing code mods by Jean-Pierre Gaillardon.
  (mh) Changed the base type of the internal SymbolTable from
       HashMap to TreeMap.  Now do-package-symbols and apropos
       will print the symbols in alphabetical order.  Since normal
       symbol table access mostly uses get, which is not affected
       by the sorting, I hope speed is not affected too badly.
  (mh) Modified LispCompiler.Register to optionally accept a package
       name in which to register the builtin function.  This allows
       us to create functions in the SYSTEM package.
  (mh) Modified StandardLispSymbol.apropos_print to print [macro],
       [special form] and [type] as appropriate when printing apropos results.
  (mh) The root of the Jatha jar file now contains a directory named "init".
       Files in it will be loaded at startup by Jatha if they are named
       "01.lisp", "02.lisp", etc.  They will be loaded in alphabetical order.
       The filenames should have one leading zero if the index number is less
       than 10.  File names start with "01".  If there is a gap in the numbering,
       Jatha will stop loading files.
  (mh) Modified the Lisp Listener window to descend from JFrame instead of Frame.
       Set EXIT_ON_CLOSE so that Jatha exits if the window is closed.
  (mh) Added LOAD-FROM-JAR to load a file from either Jatha's jar file or
       from an external jar file.  Do not use a leading "/" on the name of
       the file to be loaded.  Examples: (load-from-jar "sample.lisp"),
       (load-from-jar "foo/bar/example.lisp" "mylibrary.jar").
  (mh) Added documentation page to document non-standard LISP functions
       such as the new load-from-jar.
  (mh) In the Listener (GUI frame), changed the Input box from the homebrew
       text editing field to a JComboBox so that it has a history mechanism.
       Unfortunately we lose dynamic parenthesis matching until I find a
       ComboBoxEditor that implements that feature.
  (ob) Add support for documentation inside primitives, packages, functions
       and macros, through the documentation and setf-documentation forms.
  (ob) Added a basis for package handling from Lisp, make-package, package-name
       and others.
  (ob) Added a few basic functions: prog2 and the c*r family of functions.
  (ob) Added a beginning for standard lambda lists with keywords, optional arguments
       and auxiliary arguments.
  (mh) Started an implementation of Complex numbers.  LispComplex, StandardLispComplex.  Not done yet.

Known problems with this release

Author: Micheal Hewett