Personal tools
You are here: Home Projects LISP Embedded Lisps
Document Actions

Embedded Lisps

by Paul McJones last modified 2024-07-14 18:35


Previous: Other Lisps - Up: LISP - Next: Parallel Lisps



Emacs Lisp

The histories of the Emacs text editor and the Lisp programming language are intertwined: many versions of Emacs have used some dialect of Lisp as an extension language, and several versions (starting with Dan Weinreb's EINE for the Lisp Machine; also ZWEI by Dan Weinreb and Mike McMahon and Multics Emacs by Bernie Greenberg) have been implemented in Lisp.


  • Bernard S. Greenberg. Multics Emacs (Prose and Cons): A commercial text-processing system in Lisp. Proceedings of the 1980 ACM conference on LISP and functional programming, Stanford University, California, pages 6-12. ACM DL
  • Richard M. Stallman. EMACS: The Extensible, Customizable, Self-Documenting Display Editor. Proceedings of the ACM SIGPLAN SIGOA Symposium on Text Manipulation, Portland, Oregon, June 1981, pages 147-156. ACM DL

    Extended version published as AI Memo 519A, Artificial Intelligence Laboratory, Massachusetts Institute of Technology, March 26, 1981. PDF at MIT HTML at

  • Richard M. Stallman. My Lisp Experiences and the Development of GNU Emacs. Transcript of talk given at International Lisp Conference, San Francisco, October 28, 2002. HTML at
  • Bernard S. Greenberg. Multics Emacs: The History, Design and Implementation. Originally written 1979; revised April 8, 1996.
  • Jamie Zawinski. Emacs Timeline. Written March 8, 1999; updated October 29, 2007. online at
  • Stefan Monnier and Michael Sperber. Evolution of Emacs Lisp. Proceedings of the ACM on Programming Languages, Volume 4, Issue HOPL 4, Article No.: 74. 12 June 2020, Pages 1 - 55. ACM Digital Library


LISP Shell (Yale)

  • John R. Ellis. 1980. A LISP Shell. SIGPLAN Notices, Volume 15, Issue 5 (May 1980), pages 24-34. ACM Digital Library

    "Instead of taking a shell command language and imposing a programming language on top of it [e.g., the UNIX Bourne shell], why not do it the other way around? Take a programming language and imbed in it a shell command language. That's the aim of this work."

    It was implemented on Harvard LISP for the PDP-11.


Tinylisp (DEC SRC)

  • John Ellis. Tinylisp Reference Manual. Systems Research Center, Digital Equipment Corporation, January 26, 1989. PDF

    "Tinylisp is a language intended for 'programming-in-the-small' in SRC's Modula-2+ environment. It is a lexically scoped Lisp implemented as a package that can be bound into any Modula-2+ application, providing that application with instant programmability. The Ivy text editor uses Tinylisp to implement its predefined commands and to allow users to write their own commands; future applications may include a shell based on 'vbtkit' dialogs.

    The Tinylisp language itself is a small, modern Lisp that provides a fairly rich set of traditional control and data structures (including threads), with two-level naming based on modules. All the basic Modula-2+ packages are directly accessible from Tinylisp, including Text, List, Table, Thread, FileStream, Rd, Wr, OS, Time, Math, and RegExpr.

    Tinylisp can directly manipulate integers, characters, booleans, longreals, and any opaque-ref types provided by the particular application, and Tinylisp can call procedures that traffic in these types. Using compile_tli a stub generator similar to RPC's flume, application implementers define which of the application's procedures and datatypes will be accessible from Tinylisp. It is the responsibility of the application implementer to define Modula-2+ interfaces that are suitable for programming-in-the-small."

  • Modula-2+.
    • Paul Rovner, Roy Levin, and John Wick. On Extending Modula-2 for Building Large, Integrated Systems. Research Report 3, Systems Research Center, Digital Equipment Corporation, January 1985. Online at
    • Paul Rovner. Extending Modula-2 to Build Large, Integrated Systems. IEEE Software, Volume 3, Issue 6 (November 1986), pages 46-57. IEEE Xplore



"I've always wanted to get the history of XLISP straight. I'm a long-time V1.1 hacker, but have yet to move on because it's smaller, easier to understand, and is portable between everything I support (DECstuff) and in my flock (includes CP/M-80).

Is this much of the timeline accurate ? Can anyone fill in some of the holes ?

V1.0 DECUS C (PDT-11/150, RT-11 V?.?), inspired by MacLisp ?
V1.1 1983. Ported to K&R, placed in the PD and submitted to DECUS, BCS, SIG/M.
V1.2 Renamed things to Common Lisp usage; Byte article; CP/M
V1.4 Death to 8-bit machines.
V1.5 ? (I found a CP/M binary for a "tiny XLISP" once.)
V1.7 Macs, PCs, etal.
V2.0 ?
V2.1 Almy ?
0.22 ...
V3.0 ?"

[Richard C. Secrist, History of XLISP, comp.lang.lisp.x, May 25, 1992]

"Version 2.0 of XLISP was the first version that supported separate name spaces for functions and values (a bad decision in my opinion) to be compatible with Common Lisp. Version 2.1 added limited support for defstruct and fixed a few bugs in 2.0.

The current version of XScheme is 0.28. I'm working on 0.41, but it will probably never be released because it's likely to turn into XLISP 3.0. Unfortunately, I can't really release it yet because it doesn't support many of the special forms that even XLISP 1.7 supported. Conspicuous things that are missing are unwind-protect, catch/throw, block/return-from, tagbody/go. I suppose I should get those added before I subject the world to this latest hack. Also, XLISP 3.0 currently supports only a single namespace. It is really more like XLISP 1.7 and XScheme than XLISP 2.0 or 2.1. It does have packages and multiple values though.

David Betz"

[David Betz, History of XLISP, comp.lang.lisp.x, May 20, 1992]

Source code

Forks of XLISP and applications embedding XLISP or a derivative

  • The XLISP Family. EDM/2: The Electronic Developer Magazine for OS/2. Online at
  • Tom Almy. XLISP-PLUS. Online at

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


    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."

  • Luke Tierney. XLISP-STAT. Online at

    "A fork of XLISP 2.1 with statistical additions, originally developed for the Apple Macintosh by Luke Tierney in the 1980's but later ported to MS Windows, Atari ST, Amiga and most UNIX systems and a number of additional packages that add to the system are available although development of both the package and the add-ons has slowed down considerably in the last few years. There never was a native OS/2 version of XLISP-STAT but there is a currently maintained Win3x version that works fine under WinOS/2." [EDM/2: The Electronic Developer Magazine for OS/2]

  • Niels Mayer. WINTERP. Online at

    "WINTERP is a rapid prototyping environment for creating and delivering GUI-based applications. It fills the same niche as TCL/TK, and Python, while employing more proven (and stable) underlying technologies. WINTERP uses a small, fast, object-oriented mini-Lisp interpreter based on XLISP-PLUS (David Betz, Tom Almy, Luke Tierney, et al), and has an object oriented interface to the OSF/Motif widget class hierarchy, and a combination of high-level object and functional interfaces to the Xtoolkit, Xlib, and underlying Unix system libraries. This environment significantly simplifies the construction of GUI-based applications, and makes these applications easier to modify and extend throughout the software life-cycle. It allows for the development of extensible applications in a safe execution environment -- errors in a new module won't destroy the whole system. "

  • Roger B. Dannenberg. Nyquist. Online at

    "Nyquist is a sound synthesis and composition language offering a Lisp syntax as well as an imperative language syntax and a powerful integrated development environment."

    Appendix C of the Nyquist Reference Manual is Version 2.0 of the XLISP manual.

  • AutoLISP for AutoCAD.

    "AutoLISP was derived from an early version of XLISP, which was created by David Betz.[4] The language was introduced in AutoCAD Version 2.18 in January 1986, and continued to be enhanced in successive releases up to Release 13 in February 1995. After that, its development was neglected by Autodesk in favor of more fashionable development environments like VBA, .NET and ObjectARX. However, it has remained AutoCAD's primary user customization language." [AutoLISP, Wikipedia]


ECoLisp / ECL / ECL-Spain / ECL / Embeddable Common Lisp (Università di Pisa)

See ECL in Common Lisp family.



Inflisp for Borland Delphi

Inflisp is a Lisp interpreter written by Joachim Pimiskern in Borland Pascal / Delphi. Its main purpose is to enhance Delphi applications with Artificial Intelligence, but it can also be used for scripting / automation. Pimiskern used Inflisp to program the inference engine for a Go program he wrote.


Previous: Other Lisps - Up: LISP - Next: Parallel Lisps
« July 2024 »
Su Mo Tu We Th Fr Sa
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31

Powered by Plone CMS, the Open Source Content Management System

This site conforms to the following standards: