The XLISP-PLUS Home Page

Note: because of the advent of CLISP, a free, open-source Common Lisp implementation, I stopped working on XLISP-PLUS in 1999. However recently (December 2010) I did a Mac OS X port making use of the 64-bit architecture. Then I upgraded the Linux version as well. And then I rebuilt the Windows (32 bit) binary!

I've now written and added an implementation of Common Lisp's LOOP. It should have all features implemented but the use of AND with FOR to get parallel assignments. This is implemented in LOOP.LSP in Note that LOOP will be somewhat slower than using DO or DOTIME. I also recently discovered an error in the pretty-printer crept back in, and the functions PP, PP-DEF, and PP-FILE were not appearing in the GLOS command. All this has been fixed. I also uncovered some old code testing functions (used for regression testing) and added those to the distribution as well.

I had been working on Project Euler problems in XLISP-PLUS. This uncovered some problems with the BIGNUMs when the dldmem/dldimage memory management is selected, which I have fixed. I also discovered that the xldmem/xlimage choice works better on modern computers with lots of memory. "Lots of" being what you find an any system now compared to 20 years ago! I have fixed the source code and changed the memory management defaults for all xl305 files on this site.

The new Mac OS X and Linux versions have binaries both with at without Qt4 graphics. The LSP files have also been improved and the documentation has been touched up as well. There is a functionality change in that more of the FORMAT function has been implemented, in particular full implementation of ~R, a fix to a bug in ~*, numerious bugs with ~{, comma insertion in ~:B H D O and R, and addition of ~^. The version number for the new binaries has been changed to 3.05.

XLISP-PLUS is an evolutionary improvement over David Betz's Xlisp 2.1. It contains many enhancements and bug fixes.

XLISP-PLUS contains the work of many individuals. While most have contributed their efforts to the public domain, a few reserve their copyrights when Xlisp is used commercially. For that reason, XLISP-PLUS is only distributed for non-commercial (or educational) use. Don't ask me about commercial applications.

By the way, I've been dabbling in Lisp since first learning it back in 1972, and I wrote a Lisp interpreter for the PDP-11 minicomputer in the mid-70's which was used by several universities.

XLISP-PLUS was designed to run under multiple platforms. Executable files are available here for several 80x86 based operating systems. In other cases, you will need a C compiler and can compile the provided code.

There is another Xlisp version available with different features: XLISP-STAT (Web site). It has a robust statistics package built-in, and is available for multiple platforms. The author of XLISP-STAT is Luke Tierney.

Users of UNIX with X-Windows will probably be interested in the XLISP-PLUS derivative WINTERP 2.10 (Web site) by Niels Mayer.

David Betz came out of Xlisp retirement (he had been working on XScheme) and has produced XLISP 3.0 which is based on XScheme and is available at his web page.

XLISP-PLUS had been kept at version 2.1, with versions changes denoted by suffix letter in anticipation of Xlisp 2.2 or later. Since Xlisp 3.0 is based on XScheme, I do not intend to keep the release numbers in sync anymore. Therefore the current version is now XLISP-PLUS 3.05, which supercedes 2.1H. In general, it has more features than Xlisp 3.0, however Xlisp 3.0 does have a bytecode compiler and probably will run faster.

Here is the change log for XLISP-PLUS going back a few years.

UPDATE ON 5/27/2011: there are always some bugs with any release. The OS X and Linux binaries are revised to fix a problem with symbol name completion. This also changes the linuxstuff.c and osxstuff.c files. The LSP files have some small fixes and additions: the PP function stopped working but that is fixed, I improved the DESCRIBE function for objects and packages, and I added factor.lsp which finds the prime factors of numbers and also determines if a given number is prime.

UPDATE ON 6/24/2011: OS X version wasn't set up for the 8-bit Latin character set. Now it is. And I fixed a latent problem in the code for handling 8-bit character symbol names. Nobody ever reported this, so I guess nobody ever used the 8-bit character set. I've recompiled the OS X binaries but haven't touched the others. Source code is corrected.

UPDATE ON 12/2/2011: Ancient errors involving memory management with DLDMEM.C and BIGNUMS has been fixed. However default is now XLDMEM.C and is set in the xlisp.h file as an option. PRIN1-TO-STRING and PRINC-TO-STRING are now compiled. The defuns in common2.lsp for these are not executed if the functions are already defined. A problem with BIGNUMS and the CLANG compiler (in Mac OS X) has been fixed, resulting in better code for all.

Update 5/2015: Fixed problem reading string litterals with embedded carriage returns (DOS format files) in OSX or Linux systems. Now these characters will be ignored. Note that line feed characters (AKA new line) will be processed.

Platform Independent Files

Required files (200k) contains all the XLISP files required for operation, as well as a tutorial and various "readme" files. This archive is the same for every platform. You need this! This was updated May 2015

Unless you want to punish yourself, I suggest you download documentation. Note that there is on-line documentation for all functions. In addition, if you use the Microsoft Windows version you might be satisfied with the Help File version of the manual. Documentation (1.4MB) is in Microsoft Word format, although a PDF file is also provided.

Source code (356k) is available for all versions in one archive. If executable files are available for your platform, you need not bother to download this.

Project Euler Solutions (450k)The solutions to Project Euler problems done in XLISP to help verify operation. As mentioned above, I uncovered some ancient bugs doing this. I was going to work on more problems but I've gotten sidetracked.

Mac OS X

Excutable files (365k) There is finally a Mac OS X version! I had stopped working on XLISP because CLISP came out as a full, free Common Lisp implementation that offered more performance than XLISP. However there doesn't seem to be good support for the Mac. So I ported Xlisp 3.04. This has all the features that the MS-DOS version had including graphics (requires downloading the QT4 framework at Qt Project Downloads. A version without graphics is also provided. These are 64 bit Intel binaries.

Microsoft Windows (also OS/2)

Executable files (438k) in two versions (both are included in the archive). The first is a 16 bit executable for Microsoft Windows 3.1 with an 80386 or better processor. This will also work with OS/2. The second is a 32 bit executable for Windows 95, 98, or NT. It no longer works with Win32s or OS/2. This archive also has on-line help in the form of a Windows HLP file.


The executable here and is a 32 bit binary. Both the non-graphics and graphics (uses the QT4 framework) versions are included.


This archive (190k) contains the executable program. This 32 bit version does not use the Presentation Manager. Long file names (on HPFS volumes) are supported. NOTE that users should recompile the source to get a version with the MEMBER function fixed. I'd appreciate anyone who does this to let me know and send me the EXE file so I can update this archive. Note that this is the older version 3.04.

Microsoft MS-DOS

If you have an 80386 or better processor, you can run the 32 bit protected mode (174k) version. This program uses DJ Delorie's GO32 extender and is compatible with DPMI, VCPI, and XMS. Otherwise, you will need to run the generic MS/DOS (138k) version which will run on just about anything. Either of these will run in a DOS session under OS/2 or Windows 95 or NT. Note that this is the older version 3.04.

Note that the generic version is very limited in the size of the program that it will run. Also, if performance is an issue, the fastest version is that for OS/2, followed by the 32 bit DOS version, then the 32 bit Windows version. The two 16 bit versions (DOS and Windows) should be avoided unless you absolutely have to run them.

Tom Almy
Last Modified May 2015.

Return to my HOME PAGE