Emacs is a family of text editors characterized by extensibility. Its most widely used member is GNU Emacs, the free-software implementation maintained by the GNU Project. Emacs is built around an interpreter for Emacs Lisp, a Lisp dialect, so most of the editor, including basic editing, is written in Lisp and can be changed while the editor is running emacs-1.
The original name was EMACS, short for "Editing MACroS" (or "Editor MACroS"). The name came from TECO, the line editor used on the MIT AI Lab's PDP-10 machines running the ITS operating system. Users had written many TECO macro packages, usually with names ending in MAC or MACS. In the mid-1970s, Guy L. Steele Jr. unified these divergent macro sets into one package, which Richard M. Stallman then largely completed and extended emacs-1.
Stallman is credited with choosing the name. He picked the letter "E" partly because <E> was not in use as an abbreviation on ITS at the time emacs-1. A later recursive acronym, "EMACS Makes All Computing Simple," also became popular emacs-1.
The name is sometimes pluralized as "emacsen," by analogy with "boxen" and "VAXen," to refer to different varieties of Emacs emacs-1.
The name "E" has no connection to Emacs' name. It refers to a separate editor, written by Fred Wright at the Stanford AI Lab. In 1976, Stallman visited Stanford and was impressed by E's intuitive WYSIWYG behavior, the display-as-you-type style that most modern editors now use by default emacs-1.
E also had random-access editing, which TECO lacked. TECO was page-sequential and designed for paper tape. Stallman did not copy E's disk structure. He changed TECO to read, edit, and write the whole file as one buffer, which most modern editors also do emacs-1.
E is therefore a predecessor that influenced Emacs' design, not the source of its name.
The original Emacs ran only on the PDP-10 under ITS. Mike McMahon later ported it to the TENEX and TOPS-20 operating systems. By 1979 it was the main editor at the MIT AI Lab and the Laboratory for Computer Science emacs-1.
Stallman's early Emacs was distributed on the basis of communal sharing. Improvements had to be sent back to him for inclusion in the distribution, a condition he used to limit uncontrolled forking emacs-1.
Several Emacs-like editors appeared on other systems in the late 1970s and early 1980s:
Stallman began GNU Emacs in 1984 as a free replacement for the proprietary Gosling Emacs. He replaced Gosling's Mocklisp interpreter with a true Lisp interpreter, which required rewriting nearly all of the code. This became the first program of the GNU Project emacs-1.
GNU Emacs is written in C, with Emacs Lisp as its extension language. Version 13, the first public release, was made on 20 March 1985 and announced on Usenet. The first widely distributed version was 15.34, later in 1985 emacs-1.
About 70% of GNU Emacs is written in Emacs Lisp, so porting it mostly means porting the C core that runs the Lisp interpreter emacs-1.
Development was relatively closed until 1999, which made it an example of the "cathedral" model in Raymond's The Cathedral and the Bazaar. Source control moved from CVS to Bazaar in 2008 and to Git in 2014 emacs-1.
Stallman remained principal maintainer for a long time. Later maintainers include Stefan Monnier and Chong Yidong (2008-2015), John Wiegley (2015-2018), and Eli Zaretskii as lead maintainer from 2018 emacs-1.
The dates below are from the GNU release history page emacs-2. The table is a selection of major releases, not a complete list.
| Version | Released | Notes |
|---|---|---|
| 13 | 1985-03-20 | First public release |
| 15.34 | 1985-05-07 | Last 15.x release; first widely distributed version |
| 17.36 | 1985-12-20 | First 17.x release |
| 18.59 | 1992-10-30 | Last 18.x release |
| 19.7 | 1993-05-22 | First 19.x release |
| 20.1 | 1997-09-15 | |
| 21.1 | 2001-10-28 | |
| 22.1 | 2007-06-02 | |
| 23.1 | 2009-07-29 | |
| 24.1 | 2012-06-10 | Package system introduced |
| 25.1 | 2016-09-17 | |
| 26.1 | 2018-05-28 | |
| 27.1 | 2020-08-10 | |
| 28.1 | 2022-04-04 | |
| 29.1 | 2023-07-30 | |
| 30.1 | 2025-02-23 | Native compilation on by default; Android port; Tree-Sitter modes |
| 30.2 | 2025-08-14 | Maintenance release |
| 31.1 | 2026-08-24 | Current release as of this writing |
In 2014 the project announced a faster release cadence, so version numbers would increase more quickly emacs-1.
Notable recent features from the project's release notes:
which-key package, and a visual-wrap-prefix-mode minor mode emacs-2.user-lisp/ subdirectory in the configuration directory, child frames on text terminals, and a package review step before installing or upgrading packages emacs-2.Smaller clones remain in use, often for small systems or quick edits:
GNU Emacs runs on the following platforms, according to the project's download page emacs-2:
It can also run in a text terminal (emacs -nw), and it can run as a background daemon that clients connect to emacs-1.