The histories of the Emacs text editor and the Lisp programming language are intertwined: most 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
- 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 www.gnu.org
- Bernard S. Greenberg. Multics Emacs: The History, Design and Implementation. Originally written 1979; revised April 8, 1996. http://www.multicians.org/mepap.html
- Jamie Zawinski. Emacs Timeline. Written March 8, 1999; updated October 29, 2007. online at www.jwz.org
- 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.
- 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."
- 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 hpl.hp.com
- 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 ?[Richard C. Secrist, History of XLISP, comp.lang.lisp.x, May 25, 1992]
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.1 Almy ?
"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]
- 0.0, January 6, 1983. USENET distribution and extracted sources. ZIP archive
- 1.0, March 31, 1983. USENET distribution and extracted sources. ZIP archive
- 1.1, June 1983?. Volume 118, SIG/M collection, SIMTEL. Online at retroarchive.org
- 1.2, October 11, 1984. ARK archive and extracted sources. ZIP archive
- 1.4, January 1, 1985. .tgz archive at wiki.yak.netOnline at decuslib.com
- 1.6, January 6, 1986. C Users Group, Volume 176. ZIP archive
- 1.7, June 2, 1986.
- 2.0, February 6, 1988. ARC archives and extracted sources. ZIP archive
- 2.1, date unknown.
- 3.0, January 6, 1983. Online at xlisp.org
"This version of XLISP is mostly based on Scheme with my own object system and some Common Lispish extensions. It is derived from XScheme, my earlier implementation of Scheme." [David Betz, XLISP: An Object-Oriented Lisp, Version 3.0, January 28, 1997]
Forks of XLISP and applications embedding XLISP or a derivative
- The XLISP Family. EDM/2: The Electronic Developer Magazine for OS/2. Online at edm2.com.
- Tom Almy. XLISP-PLUS. Online at almy.us
"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 uiowa.edu
"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 nielsmayer.com.
"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 cmu.edu
"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."
- AutoLISP for AutoCAD.
"AutoLISP was derived from an early version of XLISP, which was created by David Betz. 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]