RefLisp

From EDM2
Jump to: navigation, search

Reference-Counting Lisp (RefLisp) is a relatively miniscule implementation of LISP originally developed for DOS that sported partial Standard LISP and Common Lisp compatibility alongside some native graphic manipulation capabilities. It gets its name from the way memory management is implemented, but it uses reference counting garbage collection which means memory is reclaimed as soon as it is out of use in a "non-stop" fashion, which should in theory at the least allow the system to be used to write timing sensitive programs. This is a simpler type of garbage collection than most modern LISP system use and was chosen by the author since it makes it easier to implement a system that interfaces with C programs and libraries. The package was also available under the name VxeLisp as a part of a now defunct security framework.

Classic RefLisp

Originally a DOS Standard Lisp interpreter written in C with some small extensions to SL reminiscent of the old Cambridge Lisp implementations. RefLisp was placed in the public domain and got ported to the Atari ST and AIX, over time compatibility with Common Lisp was added via macros although the package is far from being fully CL compliant. The DOS and the Atari ST versions gained graphic manipulation capabilities and mouse support that set them apart from other freeware LISP packages available at the time and made them a popular choice with some educational institutions.

By the time RefLisp v2.67 published in early 1993 the system was reasonably stable, most bugs were known and documented in the programs manual. It had enough of a Common Lisp compatibility to run most simple programs such as supplied with CL tutorial books, and make porting medium size programs fairly easy. It would also compile on OS/2 as it stood using either the DOS version or the UNIX version via EMX although to take advantage of OS/2 features some minor tweaks were needed. However the main author of the system announced he was stopping development at that point for personal reasons.

Actually Mr Birch did continue to work on it, releasing minor upgrades to the system and a port to Microsoft Windows, but only uploaded the updated packages to the USENET LISP group and not to any file repositories so most people missed the updated packages altogether and have continued to work with the 2.67 version ever since. It is the version listed on most places as the last available one and all known forks are based on it. There was also later a 32-bit MS Windows version that was only available via E-Mail from the author.

Versions 4 to 5.3

In 2003 the author announced on his homepage that he had switched development platforms and language with future version being written in C++, licensed under the GPL v2, developed on Linux with MS Windows as a secondary target and that it would no longer be released in binary form but only as source code. The new version came with a built-in web server, XML parser and regular expression matching for strings, although these were not developments by the author but rather standard C libraries called by your Lisp package as you needed it. It also has some experimental features such as a preprocessor that allows using Lisp without parentheses with list structure being expressed by tab indentation. Over time the package also gained other web-centric features such as a Wiki package and so on.

Getting the package running on running on MS Windows required getting hold of the Cygwin environment and a whole host of separate dependencies and compiling it yourself, and while Cygwin works well enough once it is set up correctly it can be very time consuming to get going initially and Windows users are keener to get their packages already compiled. But even though it was supposedly developed primarily for Linux (the "reference platform" according to the author) all the screenshots the author provided with the package were from MS Windows and it showed as getting the package to work on Linux was frequently painful, the initial v4 beta Linux release in an odd bit of karma compiled and ran on EMX under OS/2 but required backdated compilers and a number of other tweaks to work on the OS it was actually designed for.

All releases from 4 to 5.3 are also buggy, although none of them have any show stopping bugs, but it is something you notice in day to day use, as people had by then a choice of a number of other fairly mature freeware LISP packages for either platform and even had the conceptually similar but also problematic NewLISP which has much of the same feature set as RefLisp 4x/5x, there was never any real interest in the package and in April 2007 the author announced that he would no longer be working on it and would be focusing on a new LISP implementation running on Java, but that later morphed into the Genyris scripting language.

Versions

  • RefLisp v1.x (1992)
  • RefLisp v2.67 (Org. 1993-02-27 but most common version is 1993-12-31)
The "Classic" RefLisp implementation and the only one you will find in the wild. Last version that also got released for Atari-ST and AIX.
  • RefLisp v2.75 (1994-04-17)
MS Windows 3.x executable that has no graphic facilities. Runs fine on WinOS/2
  • RefLisp v2.76 (1997-02-03)
Last DOS version, compiles on OS/2 using Borland C++ with minimal nudging, but you may just as well use the DOS executable.
  • RefLisp v3.01 (1999-06)
aka RefLisp32, a 32 bit MS Windows only version that was available directly from the author but not distributed.
  • RefLisp v4 Beta (2003-04-28)
This compiles on OS/2 using the old EMX 2.9.x compiler but not using newer GCC versions or Open Watcom. First version released under the GPL.
  • RefLisp v4.2 Beta (2003-05-01)
  • RefLisp v4.3 Beta (2003-05-10)
  • RefLisp v5 Beta (2005-01-20)
  • RefLisp v5.3 Beta (2005-01-27)
Last known release of RefLisp. Does not compile automatically using EMX, but can be made to compile with newer GCC version with a little bit of work, making it work with Watcom will probably be a much bigger task.
  • uLisp-rt 0.1 (2015-12-6)
Modern fork of RefLisp v2.67, not tested on OS/2.

Links

You will only need to download the reflisp.tar.gz package, all the other files in the folder and subfolders are derived from that pacakage.

Licence

RefLisp is open source code published under the following licences:

  • Versions up to 2.67 are in the Public Domain.
  • Versions 2.67 up to 3 are copyrighted freeware and while source is provided the author asks people not to fork or distribute versions of the software but rather send him patches.
  • Versions 4 and up are published under the GPL v2

The status of uLisp-rt is unknown

Authors

  • Peter William "Bill" Birch
  • Glenn Takanishi (uLisp-rt)