Fact-checked by Grok 2 weeks ago

GNU Emacs

GNU Emacs is a text editor and extensible application framework developed by as the flagship program of the GNU Project, emphasizing user freedom through open-source licensing under the GNU General Public License. It functions as a real-time display editor that supports multi-buffer editing, keyboard-driven modal commands, and deep customization via the Emacs Lisp programming language, enabling it to serve not only as a code editor but also as an environment for running shells, compilers, and diverse utilities. Originating from Stallman's 1976 implementation of atop the TECO editor at MIT's Laboratory, the GNU variant began development in 1984 to create a proprietary-free alternative to existing Emacs implementations, achieving its initial public release in 1985. Key defining characteristics include built-in tools such as the Dired file manager, calculator, and newsreader, alongside a vast package ecosystem that has sustained its relevance for programming, documentation, and workflow automation across decades. Despite criticisms of its resource demands and learning curve, GNU Emacs has endured as a symbol of and software libre, powering contributions to the while spawning forks like amid 1990s disputes over extensibility models and licensing purity. As of 2024, version 29 remains the stable release, with ongoing development reflecting its active maintainer community and adaptability to modern computing needs.

Historical Development

Origins in the GNU Project

The GNU Project was announced by Richard Stallman on September 27, 1983, with the goal of creating a free Unix-compatible operating system. GNU Emacs emerged as one of the project's initial components, developed to provide a portable and extensible text editor free from proprietary restrictions. Stallman initiated work on GNU Emacs in September 1984, motivated by the need for an editor that aligned with free software principles, as he refused to use non-free alternatives like the vi editor or proprietary Emacs implementations such as Gosling Emacs. GNU Emacs was designed with a hybrid architecture: its core written for efficiency on hardware without , such as 1 MB machines, and an embedded Emacs interpreter for extensibility. This -based extension system built on Stallman's prior experiences with editors at , including Bernie Greenberg's Emacs, enabling users to customize commands and add features programmatically while maintaining the editor's self-documenting qualities. By early 1985, Emacs had become sufficiently usable for editing on Unix systems, allowing Stallman to distribute it via anonymous FTP and magnetic tapes to support further development. The initial public release of GNU Emacs took place in March 1985, establishing it as a foundational tool within the ecosystem. This effort reflected the Project's emphasis on licensing, later formalized in the GNU General Public License, to preserve users' freedoms to study, modify, and redistribute the software. GNU Emacs's development underscored Stallman's commitment to reviving the cooperative hacker ethos of the AI Lab, prioritizing extensibility and community contributions over commercial constraints.

Evolution Through the 1990s and 2000s

In the early , GNU Emacs development focused on version 19, which introduced significant architectural enhancements including support for multiple graphical toolkits such as X Toolkit Intrinsics and Lucid widgets, improved through better management, and expanded capabilities for extensibility. This version's prerelease alpha, dated around 1991, served as the basis for the Lucid Emacs fork initiated by developers and others at Lucid Inc., driven by frustrations over the slow integration of advanced user interface features like enhanced support amid the rise of adoption. Lucid Emacs, later renamed in 1994, diverged by prioritizing rapid innovation in areas such as multilingual text handling (via the Mule subsystem) and widget toolkits, while GNU Emacs maintainers emphasized compatibility and purity under Richard Stallman's oversight. GNU Emacs 19 reached stable release in 1995 with version 19.34, incorporating refinements like of files and better integration with systems, though it lagged behind in polished graphical features. followed in March 1997, adding tools such as the for user configuration, speedbar for navigation, and improved indentation engines, alongside fixes for support that addressed limitations in earlier releases. These updates reflected a gradual convergence, with GNU Emacs adopting select ideas from the —such as enhanced overlay mechanisms—while maintaining a conservative release cycle to ensure stability across diverse hardware, including non-X terminals prevalent in the decade. The 2000s saw GNU Emacs accelerate feature integration, with version 21.1 released on , , introducing native image display (supporting formats like and ), sound playback capabilities, and variable-width font rendering, which bridged gaps with XEmacs's earlier advancements. Subsequent minor releases, such as 21.3 in March 2003, refined these with better toolkit portability and bug fixes for large-file handling. By , Emacs 22 marked a unification milestone by incorporating XEmacs-inspired elements like native tabs, toolbars, and improved mouse support, while resolving long-standing licensing tensions through clarified GPL compliance; this version, released , , also enhanced handling and performance for modern workloads. Throughout the period, Emacs's development remained volunteer-driven via the emacs-devel , prioritizing over experimental changes, which sustained its dominance in academic and open-source communities despite XEmacs's temporary lead in usability innovations.

Recent Advancements and Releases (2010s–2025)

GNU Emacs saw accelerated development in the , with major releases introducing enhancements to extensibility, performance, and integration with modern computing environments. Emacs 24.1, released on June 10, 2012, incorporated a built-in for easier extension installation from the ELPA repository, alongside improved support for images, animations, and rendering. Subsequent minor releases refined these features, including better handling and context menus. Emacs 25.1, released September 22, 2016, added char-folding search to match similar non-ASCII characters, enhanced query-replace with history and regex improvements, and introduced threaded execution for better responsiveness during long computations. It also improved help buffers with rounded quotes and expanded customization options for comments. Emacs 26.1, released September 12, 2018, enabled optional line number display in buffers, supported threads for concurrent operations, and added a so-long mode to handle excessively long lines without performance degradation. The 2020s brought further performance optimizations and ecosystem integrations. Emacs 27.1, released August 11, 2020, included native parsing, text shaping for advanced typography, support for arbitrary-precision integers, and image manipulation without external libraries like . Emacs 28.1, released April 4, 2022, stabilized native compilation of code for faster execution, introduced portable dumping to reduce startup time across platforms, and enhanced indentation and tools. Emacs 29.1, released July 28, 2023, integrated Tree-sitter for precise syntax parsing and highlighting, bundled Eglot for support enabling advanced code intelligence without external packages, and optimized handling of very long lines to prevent hangs. It also added built-in support for editing on via integration and improved with better compatibility. The series continued with maintenance releases addressing bugs and security issues, such as Emacs 29.4 on June 22, 2024. Emacs 30.1, released February 23, 2025, incorporated which-key functionality natively to display available keybindings during input, expanded Tree-sitter grammars for more languages, and added support for subprocess communication. Performance gains included faster parsing and subprocess output handling, alongside EditorConfig integration for consistent coding styles across projects. Emacs 30.2, released August 14, 2025, focused on bug fixes without new features. These releases reflect ongoing emphasis on extensibility while adapting to contemporary hardware and software paradigms, such as native compilation yielding 2-5x speedups over byte-code.

Architectural Foundations

Lisp-Centric Design and Extensibility

GNU Emacs is architected around Emacs Lisp (Elisp), a dialect of the Lisp programming language that forms the foundation for its extensibility and customization. Elisp implements the majority of the editor's high-level functionality, including editing commands, modes, and user interfaces, while lower-level operations such as display rendering and keyboard input are handled in C for performance. This Lisp-centric approach embeds an Elisp interpreter at the core of Emacs, enabling seamless integration between the editor's primitives and user-defined extensions. Elisp's design draws from Maclisp, developed at in the 1960s, with partial influences from , but it prioritizes simplicity and low memory usage to suit Emacs's embedded environment. Key Lisp features, such as treating functions as data and —where code is represented as manipulable list structures (S-expressions)—facilitate real-time modification of Emacs behavior. Users can redefine commands, parameters, and even core functions interactively via the interpreter, without recompiling the editor, allowing extensions to be loaded, tested, and adjusted during active sessions. Extensibility is achieved through mechanisms like defining interactive functions as new commands, major modes for language-specific editing (e.g., adjusting indentation and via code), and minor modes for toggling features such as auto-completion or spell-checking. Hooks provide insertion points for custom code before or after events, like buffer saving or file opening, while advice allows non-destructive modification of existing functions. Customization variables, stored as Lisp variables, can be set interactively or persistently via the customize interface, which generates Elisp code for configuration files. Macros enable metaprogramming to generate repetitive code, further amplifying the language's power for building complex extensions like for note-taking or for integration. This architecture promotes a modular, user-driven , where community-contributed libraries—distributed via package archives—extend into a programmable beyond text , such as email clients or debuggers, all without altering the C codebase. For efficiency, Elisp supports byte-compilation to via the Emacs byte-compiler, reducing interpretation overhead, with native compilation introduced in Emacs 27 (released March 28, 2021) for further performance gains on supported platforms. The design's emphasis on ensures that remains highly adaptable, with users able to inspect and modify the system's internals directly, fostering a self-sustaining of enhancements.

Buffer Model and Editing Paradigm

In GNU Emacs, the serves as the fundamental for text manipulation, representing a contiguous sequence of characters stored independently of any visual display. Each buffer maintains its own content, including such as the associated name (if visiting a ), modification status, and active major and minor modes that dictate behaviors. Buffers are not limited to file contents; they can hold output from processes, such as interactions or listings in Dired mode, enabling Emacs to treat diverse data uniformly as editable text. The editor's display mechanism decouples buffers from presentation: multiple windows within a frame can simultaneously view different buffers or distinct portions of the same buffer, with changes in a buffer's content automatically reflected across all displaying windows. This model supports efficient multitasking, as the selected buffer—displayed in the selected window—receives user input, while point (the cursor position) and (defining a ) are buffer-local, allowing precise, context-specific operations like insertion, deletion, or transposition relative to these markers. Undo operations are also confined to individual buffers, preserving edit history per content unit without interference. Emacs employs a command-oriented where keystrokes invoke Emacs Lisp functions bound to keys, rather than relying on modal switches between insertion and command states as in editors like . Printable characters default to at point, while modifier keys (, /, or combinations) execute commands for navigation, selection, or transformation, fostering an extensible interface where users can redefine bindings or author custom functions. Major modes tailor this to buffer types—e.g., imposing indentation rules for programming languages or structural for markup—while minor modes layer supplementary behaviors, such as auto-completion or spell-checking, without altering the core buffer-centric model. This approach prioritizes programmability, enabling causal extensions that modify dynamics at runtime.

Self-Documenting and Self-Modifying Nature

GNU Emacs features an integrated help system that provides on-demand access to documentation, command descriptions, and usage information without requiring external resources, embodying its self-documenting design as articulated by in the editor's foundational description. This system is invoked primarily through the C-h (or F1) key prefix, which offers subcommands for querying key bindings (C-h k), command descriptions (C-h f), variable values (C-h v), and prefix completions (C-h after a partial key sequence). Apropos functionality, accessed via C-h a for commands or C-h d for documentation strings, enables keyword-based or regular-expression searches across Emacs's function and variable names, facilitating discovery of relevant features. The built-in Info reader, integrated since Emacs's early versions, delivers hyperlinked access to the official manuals, including the Emacs user manual and Emacs Lisp reference, with search commands like C-h r i for index lookups and C-h r s for full-text searches. This self-contained documentation extends to mode-specific help and package keywords (C-h p), ensuring users can explore extensions dynamically. Stallman emphasized this approach in 1979, noting that self-documentation allows Emacs to display command purposes and argument requirements interactively, reducing the need for memorized syntax. Complementing self-documentation, Emacs's self-modifying capability arises from its core implementation in Emacs Lisp (Elisp), a dialect that treats code as manipulable data, permitting runtime evaluation and alteration of editor behavior. Users can load Elisp files with M-x load-file, evaluate expressions via M-: or C-x C-e, and redefine functions using defun without recompilation or restart, as the interpreter processes definitions incrementally. This enables immediate , such as overriding built-in commands or creating macros with defmacro, directly within an active session— a feature Stallman designed for extensibility, allowing modifications to propagate to buffers, modes, and keymaps in real time. Such dynamic modification supports advanced uses like debugging via the Elisp debugger (edebug), where code can be instrumented and stepped through interactively, or byte-compiling on-the-fly with M-x byte-compile-file to optimize redefined code. Since GNU Emacs's initial release in , this Lisp-centric architecture has enabled the editor to evolve through user-contributed extensions, with the bulk of its functionality—estimated at over 80% by some analyses—implemented in interpretable Elisp rather than the C core. This contrasts with less extensible editors, as Elisp's allows seamless integration of configuration and code, fostering a ecosystem where self-modification underpins both personal tweaks and community packages.

User Interaction and Features

Command System and Keybindings

GNU Emacs invokes commands primarily through keyboard key sequences, which consist of one or more input events such as characters, function keys, or mouse actions that form a unit for executing an interactive function. These sequences are defined in keymaps, data structures that associate specific events with commands, allowing bindings to be organized hierarchically with prefix keys like C-x requiring subsequent input to complete the sequence. Complete keys, such as C-f for forward-character, directly execute a command, while prefixes like C-x or ESC lead to submaps listing available completions via help commands (e.g., C-h after a prefix). Modifier keys prefix the base key to form complex sequences: C- denotes (e.g., C-a for beginning-of-line), M- denotes (typically or entered via ESC followed by the key, e.g., ESC a for M-a), with additional supported modifiers including , Hyper, and , though and are most common. Default prefix keys include C-c (mode-specific), C-h (help), C-x (multi-purpose), C-x RET (coding systems), and others like C-x 4 for other-window operations, enabling a tree-like command structure without fixed length limits, typically spanning 1–4 events. The M-x sequence invokes the execute-extended-command function, allowing any command by name, which is essential for accessing unbound or rarely used functions. Key bindings are stored in global, major mode, and minor mode keymaps, with minor modes overriding major modes and globals providing defaults; conflicts are resolved by precedence order. Users can inspect bindings via C-h b (describe-bindings) or customize them in initialization files using Lisp, such as (global-set-key (kbd "C-c t") 'my-command), supporting remapping for platforms like Windows where defaults may conflict with system shortcuts. This system emphasizes keyboard efficiency over mouse input, with mouse events also mappable but secondary to key sequences for command execution.

Modes and Customization Mechanisms

GNU Emacs utilizes a hierarchical mode system to specialize its editing environment for diverse tasks. Major modes establish the fundamental behavior of a buffer, including syntax tables, keymaps, and indentation rules tailored to specific content types, such as programming languages or markup formats; for instance, c-mode handles C source files while texinfo-mode supports documentation writing. These modes are mutually exclusive, with each buffer maintaining precisely one active major mode, defaulting to fundamental-mode for unadorned text editing. Minor modes, in contrast, provide supplementary functionalities that can be enabled or disabled independently, permitting multiple instances to operate concurrently atop a major mode. They typically introduce global or buffer-local modifications, such as auto-fill-mode for dynamic line breaking during input or line-number-mode for displaying cursor position metrics in the mode line. Minor modes adhere to conventions ensuring compatibility across major modes, often indicated by an indicator in the mode line (e.g., "Fill") and toggled via commands like M-x auto-fill-mode. Customization mechanisms in Emacs leverage its Emacs Lisp interpreter for profound extensibility, allowing users to redefine variables, keybindings, and even core functions without recompiling the editor. User options—customizable variables—are declared with defcustom in Lisp packages, enabling adjustments via the M-x customize interface, which generates persistent settings saved to a custom-file (defaulting to ~/.emacs.d/custom.el as of Emacs 24.4). Direct Lisp code in the user's init.el or ~/.emacs file permits granular control, such as (global-set-key (kbd "C-c l") 'goto-line) to remap commands. Hooks serve as event-driven hooks for injecting custom code at predefined triggers, stored as lists of functions in variables like after-init-hook (post-startup) or mode-specific ones such as emacs-lisp-mode-hook. Major modes conventionally invoke their hook after setup, facilitating additions like (add-hook 'prog-mode-hook 'flycheck-mode) to enable linting universally for programming buffers. This system supports causal chaining of behaviors, where prior hooks can influence subsequent ones, though order must be managed explicitly via add-hook arguments. Additional mechanisms include for non-invasively wrapping functions (e.g., add-function since Emacs 25.1 for composable modifications) and local variables in headers, which set buffer-specific parameters like mode selection via modeline or .dir-locals.el for project-wide overrides. These tools underpin Emacs' self-modifying paradigm, where users evolve the editor through scripts rather than rigid configurations.

File and Buffer Management

In GNU Emacs, a serves as the fundamental unit for holding and editing text, functioning as an in-memory object that contains editable content such as text, listings, or other like evaluation scratch space. Buffers exist independently of , persisting until explicitly killed by the user or upon Emacs termination, which allows multiple buffers to remain active for concurrent editing sessions across different windows. Each editing session operates on the current buffer, displayed in the selected window, with the system tracking buffer-local variables including any associated name. Files are integrated into this model by "visiting" them, a process that loads the file's contents into a dedicated named after the , creating a modifiable copy separate from the on-disk version to enable efficient editing without immediate disk I/O. The find-file command initiates this, after which changes accrue in the until saved; save-buffer then writes the 's content back to the associated , while write-file saves to a specified new , potentially re-associating or dissociating the . Default keybindings include C-x C-s for save-buffer and C-x C-w for write-file, with Emacs distinguishing state from state to support features like auto-saving for . Buffer-file associations are maintained via internal variables, ensuring that revisiting the same selects or updates the existing rather than creating duplicates. Buffer management commands facilitate switching and organization; users can view the buffer list, select via switch-to-buffer, or kill unneeded buffers with M-x kill-buffer to free resources, as buffers consume memory up to platform limits (e.g., 2^61 - 2 bytes on 64-bit systems). This model supports workflows involving dozens of open buffers without repeated file reads, emphasizing buffers as the primary abstraction over direct file manipulation. Directory and multi-file operations are handled through Dired, a built-in mode invoked via C-x d that renders a directory listing—including subdirectories and remote paths—in a read-only for interactive management. Dired redefines keys for file actions: users navigate with standard Emacs motion commands, mark files for bulk operations like copying, moving, or deleting (e.g., via d to and x to execute), and visit selected files directly into editing . This integrates navigation with buffer-centric editing, allowing seamless transitions from directory browsing to content modification without leaving Emacs.

Documentation and Ecosystem Support

Official Manuals and Built-in Help

GNU Emacs provides a suite of official manuals published by the Free Software Foundation, distributed in formats including HTML, PDF, PostScript, and Texinfo-compiled Info files for in-Emacs viewing. The core GNU Emacs Manual serves as the primary user reference, covering text editing fundamentals, buffer management, modes, customization options, and command invocation, with detailed sections on entering and exiting Emacs, file handling, and basic keybindings. This manual, spanning hundreds of nodes in Info format, emphasizes Emacs's extensible design and includes guidance on accessing further documentation. The Emacs Lisp Reference Manual offers an exhaustive reference for Emacs Lisp (Elisp), the dialect powering Emacs's extensibility, documenting functions, variables, syntax, data structures, and internals like buffers and windows. It details over 1,000 built-in functions and macros, enabling developers to inspect and modify Emacs behavior programmatically. Complementary resources include An Introduction to Programming in Emacs Lisp, a tutorial introducing Elisp concepts through practical examples for novices, and the GNU Emacs FAQ, which addresses installation, configuration, and troubleshooting queries. Quick-reference cards summarize essential commands for efficient keyboard navigation. Emacs integrates these manuals into its built-in help system via the Info hypertext browser, accessible with C-h i, which navigates node-based documentation with cross-references and search capabilities. The prefix key C-h (or F1 on some systems) prefixes commands for interactive assistance, including C-h f to describe functions via their docstrings, C-h v for variables, C-h k for keybindings, and C-h ? for a help summary listing all options. Apropos searches (C-h a for commands, C-h S for symbols) index documentation by keywords, leveraging Elisp's self-documenting attributes where functions and variables store descriptive strings retrievable at runtime. This system ensures users can query context-sensitive help without external resources, reflecting Emacs's design as a self-documenting editor since its 1985 origins.

Package Management and Extensions

GNU Emacs incorporates a built-in via the package.el library, allowing users to discover, install, upgrade, and remove extensions interactively. This functionality debuted in Emacs 24.1, released on June 10, 2012. Commands such as package-list-packages display available packages with details like version, description, and dependencies, while package-install handles downloads and activation. Default configuration connects to GNU ELPA and NonGNU ELPA, archives curated by Emacs maintainers and hosted by the GNU Project. GNU ELPA features packages eligible for core Emacs integration, emphasizing stability and licensing compatibility, whereas NonGNU ELPA includes vetted extensions outside strict GNU criteria. Users can add third-party archives like MELPA, which automates builds from upstream repositories for over 2,000 packages as of recent counts, requiring Emacs 24.1 or newer with TLS for secure HTTPS access. MELPA's recipe-based system ensures timely updates but demands user vigilance for compatibility and security. Extensions, packaged as tarballs of Emacs Lisp code, extend core features including language-specific modes, version control interfaces like Magit, and document preparation tools such as AUCTeX. The use-package macro streamlines configuration by encapsulating installation, loading, binding, and setup in declarative forms, reducing boilerplate in initialization files and supporting for performance. Originally authored by John Wiegley, it integrates with package.el for dependency management. Package operations include automatic dependency resolution, optional GPG signature verification for authenticity, and bulk upgrades through package-menu-mark-upgrades. Byte-compilation occurs post-installation to optimize runtime efficiency, with packages stored in ~/.emacs.d/elpa by default. This ecosystem fosters extensibility while maintaining Emacs' self-contained environment.

Technical Performance and Portability

Performance Metrics and Bottlenecks

GNU Emacs performance is constrained by its as a -based editor, where much of the functionality relies on interpreted or byte-compiled Emacs code, resulting in execution speeds slower than natively compiled programs for equivalent tasks. Benchmarks on standard functions, such as those in the boyer , demonstrate that byte-compiled code can take seconds to minutes for intensive computations, with garbage collection () dominating runtime in memory-heavy scenarios. Native compilation, introduced experimentally in Emacs 27 and stabilized in Emacs 28 (released 2023), compiles to via libgccjit, yielding speedups of 2.3x to 42x over byte-code in a of 16 benchmarks including manipulations, traversals, and symbolic computations, though real-world gains average lower depending on workload. The GNU Emacs Reference Manual reports typical native-compiled code executing 2.5 to 5 times faster than interpreted equivalents, reducing latency in package loading and mode activation. Primary bottlenecks include GC pauses, which halt execution to reclaim memory and can introduce stutters lasting milliseconds to seconds during buffer edits or evaluations, exacerbated by high gc-cons-threshold values used to defer collections during startup. Emacs 30.1 (released July 2024) includes optimizations like optional disabling of GC mark tracing, improving GC throughput by approximately 5% at the cost of reduced debugging visibility. Redisplay, the process of updating the screen buffer, represents another choke point, particularly in windows or modes with heavy font-locking, overlays, or images, where incremental updates fail to scale linearly with buffer size, leading to perceptible delays on older hardware. Developers report that complex configurations with numerous packages amplify these issues, as Lisp evaluation overhead compounds during init sequences, though profiling tools like profiler-start and packages such as elisp-benchmarks enable measurement and mitigation via deferred loading. Startup time serves as a measurable , often ranging from 1 to 5 seconds in stock Emacs 29+ builds without optimizations, influenced by package autoloads and init file complexity; native compilation of core libraries can shave 20-50% off this by precompiling .eln files, but initial compilation on first use adds overhead. In daemon mode via emacs --daemon, effective startup drops below 0.1 seconds for clients using emacsclient, bypassing full initialization for most sessions. Large file handling exposes further limits, as the model—efficient for cursor movements but quadratic in worst-case modifications—combined with Lisp-driven parsing, slows navigation and searching in files exceeding 100 MB, prompting recommendations for external tools like ripgrep integration. Ongoing development focuses on these via Emacs development mailing lists, with empirical testing emphasizing reduced frequency and display optimizations over architectural overhauls.

Platform Compatibility and Adaptations

GNU Emacs exhibits broad platform compatibility, running natively on systems such as distributions, , , , and , where it leverages interfaces for process management, terminal interaction, and graphical display via the or . It also supports macOS through the () port, enabling integration with native elements like menubars and scrollbars, with universal binaries available for and architectures up to version 30.2 released in August 2025. Microsoft Windows is supported natively from version 22 onward, encompassing and later 9x releases alongside the NT lineage (including and 11), with executables like runemacs.exe for console-less graphical launches and compatibility with for enhanced behavior. Less conventional platforms include , (via terminal emulators or specialized builds), and legacy systems like and , where Emacs maintains core editing capabilities despite absent multitasking and advanced filesystem features. On , adaptations preserve international character set support equivalent to Unix implementations, using DOS-specific drivers for display and input while compensating for 8-bit limitations through (Multilingual Enhancement) extensions. Windows adaptations extend to emulating ACLs via security descriptors, ensuring consistent file permission handling across environments. Porting efforts underscore Emacs' adaptability, rooted in its C core and Emacs Lisp interpreter, which abstract hardware dependencies; however, non-Unix systems may encounter bottlenecks in subprocess invocation or signal handling due to divergent APIs, often mitigated by platform-specific modules like w32proc.el for Windows or NS-specific frame creation on macOS. Historical ports to and other mainframes demonstrate early extensibility, though modern maintenance prioritizes POSIX-compliant hosts for optimal performance.

Licensing and Distribution Model

GNU General Public License Details

GNU Emacs is distributed under the (GPL), specifically version 3 or any later version, as maintained by the (FSF). This licensing choice aligns with the GNU Project's commitment to , originating from the initial 1985 release of GNU Emacs under the GNU Emacs General Public License—a pioneering mechanism designed to ensure derivatives remained freely modifiable and distributable. The GPL v3, published on June 29, 2007, supersedes earlier versions for Emacs through its "or later" clause, incorporating updates to address evolving threats like hardware restrictions () and stronger patent protections. The GPL grants four fundamental freedoms: to run the program for any purpose; to study and modify its ; to redistribute exact copies; and to distribute modified versions, provided the same freedoms are preserved via . For GNU Emacs, this applies to its core implementation in C and Emacs Lisp, requiring that binary distributions include complete corresponding or written offers for it, valid for at least three years. Modifications must be clearly marked with notices of changes, and no additional restrictions beyond the GPL may be imposed. Additional provisions in GPLv3 relevant to Emacs include an explicit patent license from contributors, shielding users from patent litigation over the software, and prohibitions on conveying the program in ways that technologically restrict users' freedoms, such as locked hardware. The license explicitly states no warranty, providing the software "as is" without implied guarantees of merchantability or fitness for a particular purpose. Emacs' extensibility via Lisp code means that tightly integrated extensions or modifications forming a "combined work" must also adhere to these terms to avoid violating copyleft.

Implications for Modification and Redistribution

The GNU General Public License version 3 (GPLv3), under which GNU Emacs has been distributed since June 29, 2007, grants users the freedom to modify the software for personal or internal use without any obligation to release those changes publicly. This provision supports extensive customization, particularly through , allowing developers to adapt the editor's behavior, add features, or integrate it into workflows privately, as the GPL does not mandate disclosure of non-distributed modifications. However, the mechanism requires that any conveyed modified versions—whether alterations to the C core or integrated Lisp extensions—must be licensed under GPLv3 or a compatible license, preserving the four essential freedoms for downstream recipients. Redistribution of modified Emacs carries strict requirements to uphold these freedoms: distributors must provide the complete corresponding , including any information needed to generate binaries from it, and include all applicable notices, disclaimers of warranty, and the full GPLv3 text. Modified versions must be prominently marked with notices of changes, dates, and authors to avoid misattribution of defects to the original, and no additional restrictions beyond those in the GPL may be imposed. This ensures that enhancements, such as performance optimizations or new modes, remain accessible to the , but it prohibits relicensing under terms, which has historically deterred some entities from distributing customized Emacs binaries without open-sourcing their alterations. These terms have facilitated Emacs' evolution through community contributions while safeguarding against fragmentation into closed variants; for instance, any forked distribution must comply with GPLv3, enabling users to merge improvements back into the mainline if desired, though private forks can persist indefinitely without redistribution. The license's anti-tivoization clauses further imply that hardware vendors embedding modified Emacs must allow source-level modifications via user-supplied installation mechanisms, promoting long-term adaptability across platforms. Overall, GPLv3's structure aligns with Emacs' design philosophy, emphasizing perpetual openness over short-term proprietary gains.

Community Dynamics and Variants

The XEmacs Schism

The schism originated in 1991 when developers at , including , forked an early alpha version of GNU 19 to create Lucid Emacs, driven by frustrations with the centralized and slow development process under . This fork addressed perceived deficiencies in GNU Emacs's handling of graphical user interfaces and internationalization features, such as the multilingual support, which Lucid Emacs advanced more rapidly. In April 1992, Lucid Emacs 19.0 was released, marking a formal divergence from the GNU project. Key disagreements centered on organizational and technical philosophies: Stallman required signed assignment papers for contributions exceeding 10 lines of , a policy viewed by developers as a barrier to broad participation and incompatible with contributions from entities like wary of licensing risks. Stallman also opposed abstract structures in favor of direct and demanded dual C-level implementations for features, complicating maintenance and favoring political compromise over technical efficiency, according to Ben Wing, a prominent maintainer. These issues led to six or seven failed merge attempts initiated by the team, as Stallman prioritized control and principles over unification. In 1994, Lucid Emacs was renamed XEmacs under maintainers and Ben Wing, emphasizing a more open development model with broader commit access and focus on user-facing innovations like toolbars, drag-and-drop, and sound support. While Stallman conditionally agreed to incorporate some XEmacs code into GNU Emacs, the terms—enforcing strict GPL compliance and FSF oversight—proved unacceptable to the fork's developers, perpetuating the split. The schism highlighted tensions between rapid, community-driven evolution in and the stability-oriented, principle-enforcing approach in GNU Emacs, influencing divergent paths in ( for XEmacs versus for GNU) and feature prioritization.

Other Forks and Derivatives

Aquamacs is a fork of GNU Emacs optimized for macOS, initiated in 2005 by David Reitter to enhance integration with Apple-specific features such as native GUI elements, font rendering, and input methods. Unlike standard ports, Aquamacs maintains an independent source tree with extensive patches, diverging from upstream GNU Emacs to prioritize usability on macOS while retaining core Emacs functionality. Development continued under Reitter until 2019, after which Win Treese assumed maintenance; as of 2021, Reitter announced his step-down, noting its historical impact despite lagging behind recent GNU Emacs releases (e.g., Aquamacs 3.6 based on Emacs 25). Meadow represents a Windows-specific of , developed primarily for users with built-in multilingual support, including enhanced input methods and for CJK text handling not fully mature in early upstream versions. Originating as an extension around Emacs 20, Meadow incorporates Windows-native features like better integration and font support, while forking the codebase to address platform limitations in the . It remains available as a customized build, such as versions derived from Emacs 21.4 and later, targeted at environments requiring robust non-Latin script processing on Microsoft Windows. Experimental forks like Remacs seek architectural modernization by incrementally porting GNU Emacs's C core to , aiming for improved safety, concurrency, and performance without altering Elisp compatibility. Launched around 2017, Remacs focused on reimplementing non-Lisp components but remains incomplete and unmaintained as of , with efforts highlighting challenges in maintaining feature parity during language transitions. Similarly, emacs-ng explores enhancements such as asynchronous operations and modern plugin architectures, though it has seen limited adoption compared to the mainline project. These derivatives underscore tensions between innovation and the stability of GNU Emacs's mature, Lisp-centric design, often prioritizing niche goals over broad compatibility.

Reception, Criticisms, and Debates

Strengths and Empirical Advantages

GNU Emacs excels in extensibility due to its embedded Emacs Lisp interpreter, which permits users to modify core behaviors, define new commands, and integrate external tools at a fundamental level, far surpassing the scripting capabilities of many contemporary editors. This , originating from the need for users to redefine every and command, enables the of domain-specific extensions, such as turning Emacs into a full-fledged or personal information manager. A primary empirical advantage lies in productivity enhancements from packages like Org-mode, which facilitates structured , task scheduling, and , allowing seamless embedding of executable code blocks within documents for reproducible workflows in . Studies and practitioner reports highlight Org-mode's role in streamlining scientific and experimentation, where it supports tangle (code extraction) and weave (document generation) operations, reducing context-switching overhead compared to fragmented tools like separate notebooks or wikis. Performance metrics have improved markedly with the introduction of native compilation in Emacs 28, released on April 7, 2021, which compiles Emacs Lisp to , yielding startup times under one second on modern hardware and runtime speedups of up to 10-20 times for compute-intensive Lisp functions, making it viable for large-scale editing without sacrificing responsiveness. Benchmarks indicate Emacs now rivals or exceeds lighter editors like Vim in execution times for scripted operations, particularly after initial compilation caching. In comparative efficiency tests for academic and programming tasks, Emacs users demonstrated superior output rates, producing more text with fewer orthographical, typesetting, and coding errors than Vim users under timed conditions, attributable to Emacs's modal-agnostic and macro-recording facilities that automate repetitive edits. This aligns with its in specialized fields, where over 1,600 contributors have sustained since , fostering a vast of over 7,000 packages via repositories like MELPA, enabling tailored optimizations that empirical user retention—evident in consistent mentions in developer surveys—suggests yield long-term workflow efficiencies.

Key Criticisms and Limitations

One prominent criticism of GNU Emacs is its steep , stemming from non-intuitive keybindings that rely heavily on modifier chords such as Ctrl and Meta combinations, which differ markedly from standard graphical interfaces or other editors. This complexity is exacerbated by the editor's emphasis on deep customization via Emacs Lisp, requiring users to invest significant time in configuration before achieving productivity, unlike more immediately accessible alternatives. Developers accustomed to editors like Vim often highlight Emacs' modeless design as leading to frequent accidental inputs or cognitive overhead from memorizing extensive command sequences. Performance limitations include prolonged startup times, often several seconds even on modern hardware, compared to sub-second launches in lighter editors like Vim, due to initialization of environments and loaded packages. Memory usage is also higher, with Emacs typically consuming tens to hundreds of megabytes at idle depending on , attributed to its integrated runtime and extensible architecture, which can hinder deployment in resource-constrained environments such as embedded systems or remote servers. While optimizations like deferred package loading and garbage collection tweaks mitigate these issues, they underscore Emacs' foundational trade-offs for extensibility over minimalism. The editor's vast feature set, while a strength for power users, contributes to bloat and maintenance challenges; extensive customizations can lead to drift, issues across versions, and difficulties in collaborative editing where team members lack identical setups. , though comprehensive, is fragmented across manuals, Info files, and community resources, complicating without prior familiarity. Critics from adherents argue that Emacs violates "do one thing well" by aspiring to be an operating system substitute, resulting in redundant internal tools that overlap with external utilities.

Enduring Rivalries and Cultural Impact

The foremost enduring rivalry surrounding GNU Emacs centers on the "editor wars" with and its enhanced successor Vim, a debate tracing back to the late 1970s when developed for Unix systems in 1976, contrasting Emacs' origins under the same year. This schism highlights fundamental divergences: Emacs employs a modeless interface with deep extensibility, enabling it to function as an integrated environment for editing, debugging, and even running shells, whereas /Vim adopts a modal approach—separating insertion from command modes—for rapid, keyboard-centric navigation in minimal-resource settings. The contention escalated into "holy wars" on by 1985, with proponents clashing over learnability, performance, and philosophy; advocates praised its ubiquity and low overhead, while Emacs users extolled its adaptability, often emulating via modes like to bridge the gap. Though empirical usage data from developer surveys, such as Stack Overflow's annual polls through 2023, show Vim commanding higher adoption rates (around 25-30% versus Emacs' 5-10%), the rivalry endures in online forums and conferences, symbolizing broader tensions between minimalist efficiency and expansive tool-building. Hybrid solutions, including Vim emulation in Emacs or server-based integrations, have tempered outright antagonism, yet tribal loyalties persist, with some communities enforcing editor preferences in shared workflows as late as 2024 discussions on platforms like . Emacs' cultural impact permeates hacker ethos, epitomized by the aphorism "Emacs is a great operating system, lacking only a decent ," a quip originating in early net folklore and popularized by figures like to underscore its Lisp-driven expandability into a self-contained ecosystem. This perception fostered a of power users crafting bespoke extensions—such as Org-mode for and since 2003, or Magit for integration from 2008—elevating Emacs beyond mere editing to a for and automation in circles. Parodic institutions like the "Church of Emacs," with its GNU-hosted "Gospel" outlining sins against open-source purity (e.g., proprietary tools) and rituals of customization, reflect the quasi-religious devotion, blending humor with advocacy for user sovereignty since the 1990s. In broader hacker history, Emacs reinforced the GNU Project's 1985 manifesto ideals, influencing collaborative forking and modding practices that prefigured modern package managers, while memes and rituals (e.g., "M-x doctor" for interactive therapy since 1972's ELIZA port) embedded it in narratives of intellectual autonomy and anti-commercialism. Despite criticisms of its steep learning curve, this legacy sustains Emacs as a touchstone for evaluating tools on extensibility over immediacy, impacting debates in open-source development as of 2025.

Broader Influence

Shaping Modern Text Editors

GNU Emacs's extensibility model, implemented via —a dialect of integrated directly into the editor's core—enabled runtime modifications to commands, buffers, and interfaces, distinguishing it from rigid predecessors and establishing a blueprint for programmable editing environments. This design, rooted in Richard Stallman's 1981 description of Emacs as a system where users could redefine editing behaviors interactively, facilitated the development of specialized modes for tasks like code compilation, , and even non-editing functions such as handling, thereby expanding the editor's scope into a full-fledged productivity platform. By the release of GNU Emacs 1.0 on September 20, 1985, this architecture had already demonstrated practical viability, with users contributing extensions that addressed diverse workflows, a causal factor in its adoption within systems and beyond. Modern text editors reflect this influence through analogous features like plugin marketplaces and scripting support, which prioritize user-driven customization over monolithic designs. For example, Visual Studio Code's extension system, launched in 2015, supports over 20,000 extensions as of 2023, enabling similar integrations for language servers and version control, though constrained by rather than the editor's native runtime. Emacs's precedent of deep, Lisp-level hackability—allowing modifications to the editor's evaluation loop itself—has indirectly shaped expectations for editor longevity and adaptability, as evidenced by persistent demand for Emacs emulation in tools like and Neovim, where users import keybindings and macros to replicate its keyboard-centric, modal-alternative paradigm. Empirical persistence is seen in Emacs's survival amid shifting trends, with its model underscoring that true extensibility stems from embedding a within the editor, a principle underutilized in GUI-heavy successors but foundational to their plugin-driven evolutions.

Role in Software Development Practices

GNU Emacs facilitates software development through its extensible architecture, enabling integration of editing, debugging, compilation, and version control within a single interface. Developers leverage Emacs Lisp to create custom commands and modes that automate repetitive tasks, such as running tests or refactoring code, reducing reliance on external IDEs. This approach supports keyboard-driven workflows, minimizing mouse usage and context switches, which empirical studies on programmer productivity associate with faster task completion. Language-specific major modes provide , auto-completion, and error navigation for over 100 programming languages, including C, , and , directly within the editor. Built-in features like GUD (Grand Unified Debugger) allow stepping through code and inspecting variables interactively. Packages such as Magit deliver a interface to , supporting staging hunks, rebasing branches, and viewing diffs without command-line invocation, streamlining collaborative development. Org-mode extends Emacs into a tool for literate programming and project management, where code blocks can be executed, tangled into source files, and exported to , fostering reproducible and agile . In developer surveys, Emacs garners 4.2% usage among coders, trailing visual editors but retaining loyalty among those prioritizing over graphical conveniences. Its adoption persists in open-source projects and development, where extensibility aligns with iterative, script-heavy practices.

References

  1. [1]
    Index of /software/emacs
    **Summary of GNU Emacs from https://www.gnu.org/software/emacs/**
  2. [2]
    GNU Emacs - Guided Tour
    From within Emacs, you can interact with not just files and directories, but system utilities, compilers, debuggers, personal information managers, the web, ...
  3. [3]
    My Lisp Experiences and the Development of GNU Emacs
    My Lisp Experiences and the Development of GNU Emacs. Transcript of Richard Stallman's speech at the International Lisp Conference, 28 Oct 2002.
  4. [4]
    BYTE Interview with Richard Stallman - GNU Project - Free Software ...
    Stallman is widely known as the author of EMACS, a powerful text editor that he developed at the MIT Artificial Intelligence Laboratory. It is no coincidence ...
  5. [5]
    GNU Project - Free Software Foundation
    I began work on GNU Emacs in September 1984, and in early 1985 it was beginning to be usable. This enabled me to begin using Unix systems to do editing; having ...
  6. [6]
    GNU Emacs - Further information
    For those curious about Emacs history: Emacs was originally implemented in 1976 on the MIT AI Lab's Incompatible Timesharing System (ITS), as a collection of ...
  7. [7]
    XEmacs Internals Manual: 3. A History of Emacs
    It began in 1991 as Lucid Emacs, which was in turn derived from GNU Emacs, a program written by Richard Stallman of the Free Software Foundation. GNU Emacs ...3.1 Through Version 18 · 3.3 Lucid Emacs · 3.4 Gnu Emacs 19
  8. [8]
    The GNU Manifesto - GNU Project - Free Software Foundation
    The GNU Manifesto (which appears below) was written by Richard Stallman in 1985 to ask for support in developing the GNU operating system.
  9. [9]
    What was XEmacs? (GNU Emacs FAQ)
    Originally known as “Lucid Emacs”, XEmacs was forked from a prerelease version of Emacs 19. XEmacs last released a new version on January 30, 2009, which ...
  10. [10]
    GNU Emacs release dates
    Version 18.40 (a beta version) released on March 18, 1987. ... Version 18.41 (the first ``official'' release) released on March 22, 1987. ... Version 18.45 released ...
  11. [11]
    GNU Emacs Release History
    GNU Emacs Release History · 2025-08-14 - Emacs 30.2 released · 2025-02-23 - Emacs 30.1 released · 2024-06-22 - Emacs 29.4 released · 2024-03-24 - Emacs 29.3 ...
  12. [12]
    Emacs 27.1 released - GNU mailing lists
    Aug 11, 2020 · Emacs 27.1 has a wide variety of new features, including: - Built-in support for arbitrary-size integers - Text shaping with HarfBuzz - Native support for JSON ...
  13. [13]
    New in Emacs 30 (GNU Emacs FAQ) - GNU.org
    Numerous performance improvements, for example in parsing JSON, reading data from subprocesses, handling output from Eshell and in Shell mode, X selection ...
  14. [14]
    Introduction (GNU Emacs Lisp Reference Manual)
    However, Emacs Lisp is more than a mere extension language; it is a full computer programming language in its own right.
  15. [15]
    GNU Emacs - GNU Project
    Released Aug 14, 2025. Emacs 30.2 is a maintenance release. Emacs 30.1. Released Feb 23, 2025. Emacs 30.1 has a wide variety of new features ...Guided Tour · Download · Documentation & Support
  16. [16]
    Lisp History (GNU Emacs Lisp Reference Manual) - GNU.org
    Lisp (LISt Processing language) was first developed in the late 1950s at the Massachusetts Institute of Technology for research in artificial intelligence. The ...
  17. [17]
    EMACS: The Extensible, Customizable Display Editor - GNU.org
    Because it is written in Lisp, Multics EMACS is even more extensible than the original EMACS, and as a result it has accumulated even more powerful features.Missing: centric | Show results with:centric
  18. [18]
    Buffers (GNU Emacs Manual)
    The text you are editing in Emacs resides in an object called a buffer. Each time you visit a file, a buffer is used to hold the file's text.
  19. [19]
    Basic Window (GNU Emacs Manual) - GNU.org
    Each Emacs window displays one Emacs buffer at any time. A single buffer may appear in more than one window; if it does, any changes in its text are displayed ...
  20. [20]
    Help (GNU Emacs Manual)
    ### Summary of Emacs Help System
  21. [21]
    GNU Emacs Lisp Reference Manual
    You can write new code in Emacs Lisp and install it as an extension to the editor. However, Emacs Lisp is more than a mere extension language; it is a full ...
  22. [22]
    Programming in Emacs Lisp - Your .emacs File
    GNU Emacs is mostly written in Emacs Lisp; this means that by writing expressions in Emacs Lisp you can change or extend Emacs. Site-wide Init: You can ...
  23. [23]
    Key Sequences (GNU Emacs Lisp Reference Manual)
    A key sequence, or key for short, is a sequence of one or more input events that form a unit. Input events include characters, function keys, mouse actions, or ...
  24. [24]
    Keymaps (GNU Emacs Lisp Reference Manual)
    The command bindings of input events are recorded in data structures called keymaps. Each entry in a keymap associates (or binds) an individual event type, ...Missing: system | Show results with:system
  25. [25]
    Keys (GNU Emacs Manual)
    ### Summary: Invoking Commands via Keybindings in GNU Emacs
  26. [26]
    Modifier Keys (GNU Emacs Manual)
    Although only the Control and Meta modifier keys are commonly used, Emacs supports three other modifier keys. These are called Super , Hyper , and Alt . Few ...
  27. [27]
    User Input (GNU Emacs Manual)
    ### Summary of User Input Mechanisms in GNU Emacs
  28. [28]
    Help Summary (GNU Emacs Manual)
    Display all active key bindings; minor mode bindings first, then those of the major mode, then global bindings ( describe-bindings ). See Other Help Commands.<|separator|>
  29. [29]
    Init Rebinding (GNU Emacs Manual)
    If you have a set of key bindings that you like to use all the time, you can specify them in your initialization file by writing Lisp code. See The Emacs ...
  30. [30]
    Windows Keyboard (GNU Emacs Manual)
    Many key combinations (known as “keyboard shortcuts”) that have conventional uses in MS-Windows programs conflict with traditional Emacs key bindings. (These ...
  31. [31]
    Major Modes (GNU Emacs Lisp Reference Manual)
    Major modes specialize Emacs for editing or interacting with particular text types. Each buffer has one at a time, and the default is fundamental-mode.
  32. [32]
    Modes (GNU Emacs Manual)
    Major modes are mutually exclusive; each buffer has one and only one major mode at any time. Minor modes are optional features which you can turn on or off, not ...
  33. [33]
    Minor Modes (GNU Emacs Manual)
    A minor mode is an optional editing mode that alters the behavior of Emacs in some well-defined way. Unlike major modes, any number of minor modes can be in ...
  34. [34]
    Minor Mode Conventions (GNU Emacs Lisp Reference Manual)
    There are conventions for writing minor modes just as there are for major modes (see Major Modes). These conventions are described below.
  35. [35]
    Customization (GNU Emacs Manual)
    This chapter describes some simple methods to customize the behavior of Emacs. Apart from the methods described here, see X Options and Resources for ...
  36. [36]
    Variable Definitions (GNU Emacs Lisp Reference Manual)
    Customizable variables, also called user options, are global Lisp variables whose values can be set through the Customize interface.
  37. [37]
    Mode Hooks (GNU Emacs Lisp Reference Manual)
    Every major mode command should finish by running the mode-independent normal hook change-major-mode-after-body-hook , its mode hook, and the normal hook after- ...
  38. [38]
    Files (GNU Emacs Manual)
    ### Summary of File Handling in GNU Emacs
  39. [39]
    Dired (GNU Emacs Manual)
    ### Summary of Dired in GNU Emacs
  40. [40]
    GNU Emacs Manuals Online
    The following manuals for GNU Emacs are available from this page. Return to the GNU Emacs home page. Read other GNU manuals.GNU Emacs manual · Emacs Lisp Reference · Emacs Lisp
  41. [41]
    Top (GNU Emacs Manual)
    The Emacs Editor​​ Emacs is the advanced, extensible, customizable, self-documenting editor. This manual describes how to edit with Emacs and some of the ways to ...
  42. [42]
    GNU Emacs Lisp Reference Manual - GNU Project - Free Software Foundation (FSF)
    - **Description**: The GNU Emacs Lisp Reference Manual is a comprehensive guide to Emacs Lisp, the programming language used in GNU Emacs.
  43. [43]
  44. [44]
  45. [45]
  46. [46]
    Emacs 24.1 released - GNU mailing lists
    Jun 10, 2012 · GNU Emacs 24.1 has been released. It is available on the GNU ftp site at ftp.gnu.org/gnu/emacs/. See http://www.gnu.org/order/ftp.html for a list of mirrors.
  47. [47]
    Packages (GNU Emacs Manual)
    Each package is a separate Emacs Lisp program, sometimes including other components such as an Info manual. Emacs includes a facility that lets you easily ...
  48. [48]
    MELPA
    MELPA (Milkypostman's Emacs Lisp Package Archive). Up-to-date packages built on our servers from upstream source; Installable in any Emacs with 'package.el ...
  49. [49]
    melpa/melpa: Recipes and build machinery for the biggest ... - GitHub
    MELPA is a growing collection of package.el-compatible Emacs Lisp packages built automatically on our server from the upstream source code using simple recipes.
  50. [50]
    use-package User Manual - GNU.org
    use-package User Manual. The use-package macro allows you to set up package customization in your init file in a declarative way. It reduces the need for ...
  51. [51]
    A use-package declaration for simplifying your .emacs - GitHub
    Aug 23, 2025 · The use-package macro allows you to isolate package configuration in your .emacs file in a way that is both performance-oriented and, well, tidy.
  52. [52]
    Re: Some thoughts about Emacs performance - GNU mailing lists
    Feb 16, 2024 · You kindly mentioned the ancient 'boyer' benchmark. One must know about it that it has a bug, as far as truth rather than performance testing, ...An Emacs benchmarking suite (was: An idea, now that we have ...a benchmark suite for Emacs - GNU mailing listsMore results from lists.gnu.orgMissing: metrics | Show results with:metrics
  53. [53]
    [PDF] Bringing GNU Emacs to Native Code - arXiv
    Apr 6, 2020 · Native- compiled Elisp shows an increase of performance ranging from 2.3x up to 42x with respect to the equivalent byte-code, measured over a ...
  54. [54]
    Native Compilation (GNU Emacs Lisp Reference Manual)
    Native compilation in Emacs compiles Lisp code using libgccjit, resulting in code executed directly by the hardware, usually 2.5 to 5 times faster.
  55. [55]
    2023 - talks - emacs-gc-stats: Does garbage collection actually slow ...
    Dec 10, 2023 · Is Emacs responsiveness really affected by slow garbage collector? Should `gc-cons-threshold' be increased during startup? Or maybe during the ...Missing: redisplay | Show results with:redisplay
  56. [56]
    What's New in Emacs 30.1?
    New package 'which-key'. The 'which-key' package from GNU ELPA is now included in Emacs. It implements the global minor mode 'which-key-mode' that displays ...<|control11|><|separator|>
  57. [57]
    Improving the performance of Emacs's Display Engine?
    The obvious benefit here is that the user will get a smoother typing experience, especially on older machines where display updates were slow.Missing: metrics | Show results with:metrics
  58. [58]
    elisp-benchmarks - GNU ELPA
    In use for testing the Emacs Lisp implementation performance. To minimize CPU frequency bouncing effects and other sources of noise all benchmarks are repeated.Missing: metrics | Show results with:metrics
  59. [59]
    benchmarking - How do I measure performance of elisp code?
    Oct 1, 2014 · It measures the performance evaluating particular expressions. It is helpful in comparing performances within Emacs.How to measure the performance of the mode-line?Profiler/Benchmark Macro Like the `Time` in Common LispMore results from emacs.stackexchange.comMissing: GNU | Show results with:GNU
  60. [60]
    Emacs Startup Time Doesn't Matter - Bozhidar Batsov
    Apr 7, 2025 · Emacs startup time doesn't matter. 1 Why so? Because of how people normally use Emacs, compared to some other editors.Missing: benchmarks | Show results with:benchmarks
  61. [61]
    Re: Slow redisplay - GNU mailing lists
    Aug 26, 2019 · If you set garbage-collection-messages non-nil, do you see any GC messages when Emacs is lagging input? No there is not any garbage ...Slow redisplay - GNU mailing listsRe: "Significant Garbage Collection Improvement For Emacs"More results from lists.gnu.org
  62. [62]
    GNU Emacs download
    The main ones are: GNU, GNU/Linux, FreeBSD, NetBSD, OpenBSD, Haiku, macOS, MS Windows, Android, Solaris, and MS-DOS/FreeDOS. You can download GNU Emacs releases ...
  63. [63]
    GNU Emacs FAQ For MS Windows
    At time of writing, the latest version of GNU Emacs is version 30.2. Copyright © 2008, 2010–2025 Free Software Foundation, Inc. This list of frequently asked ...Missing: major | Show results with:major
  64. [64]
    MS-DOS and MULE (GNU Emacs Manual)
    Emacs on MS-DOS supports the same international character sets as it does on GNU, Unix and other platforms (see International Character Set Support).
  65. [65]
    Extended Attributes (GNU Emacs Lisp Reference Manual)
    The underlying ACL implementation is platform-specific; on GNU/Linux and BSD, Emacs uses the POSIX ACL interface, while on MS-Windows Emacs emulates the POSIX ...
  66. [66]
    System Portability (GNU Coding Standards) - GNU.org
    In the Unix world, “portability” refers to porting to different Unix versions. ... As for systems that are not like Unix, such as MS-DOS, Windows, VMS, MVS ...
  67. [67]
  68. [68]
    The History of the GNU General Public License - Free Software
    ... on GNU Emacs. GNU Emacs ... The GNU General Public License, version 2, and the GNU Library General Public License, version 2, were released in June 1991.
  69. [69]
    GPL (GNU Emacs Lisp Reference Manual)
    **Summary of GPL License for GNU Emacs**
  70. [70]
    Frequently Asked Questions about the GNU Licenses
    Many versions of Emacs have been made outside the GNU Project, but users can tell them apart. The GPL requires the maker of a version to place his or her name ...
  71. [71]
  72. [72]
    Emacs Timeline - jwz.org
    Mar 8, 1999 · 1986 GNU Emacs 18.24 beta (02-oct-86) | 1987 GNU Emacs 18.41 (22-mar-87) | GNU Emacs 18.45 (02-jun
  73. [73]
    XEmacs vs. GNU Emacs
    Mar 3, 2017 · As of GNU Emacs 22, XEmacs's GUI features (images, variable pitch fonts, widgets) are reported by some GNU Emacs users to be more efficient and usable than GNU ...
  74. [74]
    GNU Emacs and XEmacs Schism (2001) - ∑ Xah Code
    Many people look at the split between GNU Emacs and XEmacs and are convinced that the XEmacs team is being needlessly divisive and just needs to cooperate a bit ...Missing: fork | Show results with:fork
  75. [75]
    A Comparison of Xemacs and Gnu Emacs - Linux Journal
    Feb 1, 1997 · Richard Stallman agreed to incorporate the Xemacs code into Gnu Emacs, but the conditions he set were unacceptable to the Xemacs developers. A ...Missing: disagreement | Show results with:disagreement
  76. [76]
    Aquamacs Development
    Aquamacs Emacs was originally developed primarily by David Reitter. GNU Emacs is the work of Richard Stallman and many other developers, including Andrew Choi, ...
  77. [77]
    What is the difference between Aquamacs and other Mac versions of ...
    Sep 25, 2014 · GNU Emacs proper scrolls line-wise, which is very laggy and jumpy with trackpads. Emacs Mac Port uses pixel-based scrolling like other native OS ...install - Emacs on new Mac M1?How do you run Emacs on mac?More results from emacs.stackexchange.comMissing: adaptations | Show results with:adaptations
  78. [78]
    Aquamacs Emacs - GitHub
    Aquamacs Emacs started in 2005. Until 2019, it was maintained by David Reitter, david.reitter@gmail.com. Aquamacs is currently maintained by Win Treese, treese@ ...
  79. [79]
    Stepping Down as Aquamacs Maintainer - Google Groups
    Apr 3, 2021 · I have led the development of the Aquamacs variant of GNU Emacs since around 2004. It's been fun, and it had impact. That's the TLDR, but if you're interested, ...Thinking about Aquamacs 4.0Release of Aquamacs 4 alphaMore results from groups.google.comMissing: details | Show results with:details
  80. [80]
    Meadow, another extension to GNU Emacs for Windows - GitHub
    This directory tree holds version 21.4 of GNU Emacs, the extensible, customizable, self-documenting real-time display editor. This release was made to fix a ...
  81. [81]
    Emacs - blog.8-p.info
    I've been using Emacs for more than a decade. In the very beginning, I was using Meadow, which was Emacs 20's fork, for Windows, which supports Japanese and ...
  82. [82]
    remacs/remacs: Rust Emacs - GitHub
    If you are looking for a rust based emacs fork, you can take a look at emacs-ng. However this fork is not about replacing the C code base, but to provide ...
  83. [83]
    Remacs FAQ
    Apr 16, 2019 · Remacs is a fork of Emacs that aims to reimplement the Emacs core. Although most Emacs code is written in a dialect of Lisp, the interpreter ...
  84. [84]
    Why Rewriting Emacs Is Hard
    Jan 8, 2025 · GNU Emacs forks: emacs-ng · guilemacs (or lyrra/guilemacs); meadow · remacs · xemacs, originally lucid emacs. lineage: sxemacs. and according to ...
  85. [85]
    Remacs – A community-driven port of Emacs to Rust - Hacker News
    Jul 16, 2017 · Remacs has been able to reduce the amount of non-Elisp code in the editor needed to implement a number of different features.
  86. [86]
    Reproducible research with GNU Emacs and Org-mode
    This presentation illustrates how the GNU Emacs text editor provides an powerful integrated environment for reproducible research, effectively bypassing the ...<|separator|>
  87. [87]
    Teaching Data Science with Literate Programming Tools - MDPI
    This paper presents a case study on using Emacs and Org-mode for literate programming in undergraduate computer and data science courses.Missing: strengths | Show results with:strengths
  88. [88]
    Speed up Emacs with native elisp compilation
    Native compilation is ship-shape and Bristol fashion, and available in Emacs 28 and onwards. But what does that mean for you? A much faster Emacs experience!Missing: impact | Show results with:impact
  89. [89]
    Emacs Lisp native compiler, current status and future developments
    Dec 5, 2021 · In this talk I'll discuss the Emacs Lisp native compiler. This feature recently merged into the main Emacs development line allow for automatically compiling ...
  90. [90]
    An Efficiency Comparison of Text Editors Used in Academic ...
    Dec 19, 2014 · We show that Vim users were slower than Emacs users, wrote less text in the same amount of time, and produced more typesetting, orthographical, ...
  91. [91]
    Top (GNU Emacs Lisp Reference Manual)
    This is the GNU Emacs Lisp Reference Manual corresponding to Emacs version 30.2. Copyright © 1990–1996, 1998–2025 Free Software Foundation, Inc. Permission is ...
  92. [92]
    The Pros and Cons of Emacs - Irreal.org
    Jul 27, 2019 · High learning curve; The extensive customizability makes pair programming difficult; Documentation is scattered about and some of it is out of ...
  93. [93]
    What are the differences between Vim and Emacs? Which one is ...
    Sep 11, 2022 · Vim is very lightweight. It starts in less than a second and uses very little RAM. emacs is much heavier, it takes several seconds to start.What are the advantages and disadvantages between Emacs and ...What are the pros and cons of using Emacs, Vim, and Sublime Text ...More results from www.quora.comMissing: criticisms | Show results with:criticisms
  94. [94]
    Emacs vs Vim: Which Text Editor is Better in 2025? - MonoVM
    The biggest difference in the emacs vs vim comparison is that Vim uses modal editing while Emacs uses key combinations. Vim is lightweight and fast; Emacs is ...
  95. [95]
    Speed up Emacs Startup by Tweaking the GC Settings
    Mar 28, 2025 · A well-known Emacs performance optimization advice is to boost the garbage collector threshold (so GC collections happen less frequently).
  96. [96]
    Vim, Emacs and their forever war. Does it even matter any more?
    Mar 10, 2018 · GNU Emacs went on to become the most popular version of Emacs, as well as the most ported version. Bram Moolenaar began work on the Amiga ...
  97. [97]
    Oldest software rivalry: Emacs and Vi, two text editors used by ...
    May 9, 2014 · Both programs are text editors, for inputting and editing code, data files, raw HTML Web pages, and anything else. And they are mortal enemies.
  98. [98]
    Editor Wars | Hackaday
    Jul 26, 2016 · The best argument, in my opinion, for vi is that it is fairly lean and it is on just about every Unix-like system you'll ever encounter.
  99. [99]
    Emacs vs Vim Editor Wars - Debugger Space
    Feb 24, 2022 · Vi is lighter and faster than Emacs. · Emacs is more customizable than Vi. · Emacs can emulate Vi but not the other way around. · Emacs later ...
  100. [100]
    Modern IDEs are magic. Why are so many coders still using Vim and ...
    Nov 9, 2020 · The endless war between Vim and Emacs users has continued ad nauseam over the years. It's less a war at this point than a grumbling shuffle of ingrained habit.
  101. [101]
    Emacs standing alone on a Linux Kernel - Hacker News
    Apr 20, 2023 · I can't believe nobody posted this quote yet: "Emacs is a great operating system, lacking only a decent text editor". aidenn0 on April 21 ...
  102. [102]
    Origins and History of the Hackers, 1961-1995 - catb. Org
    The relationships between the Unix tradition, the hacker culture, and the open-source movement are subtle and complex. ... cultural identity for hackers.
  103. [103]
    Gospel - GNU Project - Free Software Foundation
    The Church of EMACS has Gods, Demigods, and Prophets. Sins include using proprietary software. Repentance involves fees for proprietary software and NDAs.
  104. [104]
    Vim vs. Nano vs. Emacs: Three sysadmins weigh in - Red Hat
    Jun 22, 2021 · GNU Emacs has all the usual features: Easy package installation ( package-list-packages ), easy theming ( customize-themes ), a GUI interface as ...4. Vim Is Intuitive · 5. Vim Is Flexible And... · Emacs - Seth Kenlon
  105. [105]
    2021 - talks - M-x Forever: Why Emacs will outlast text editor trends
    Dec 4, 2021 · In this talk, we'll take a look at why popular editors fade and the specific aspects of Emacs that will ensure it remains relevant regardless of mainstream ...
  106. [106]
    It's Magit! A Git Porcelain inside Emacs
    Magit is a complete text-based user interface to Git. It fills the glaring gap between the Git command-line interface and various GUIs.A visual walk-through · Magit User Manual · User Manual · Installation
  107. [107]
    Technology | 2024 Stack Overflow Developer Survey
    ... Emacs 4.2% Goland 3.3% Netbeans 2.9% RStudio 2.8% Qt Creator 2.7% Code ... On average, each user who is learning to code wants to try 12 other ...
  108. [108]
    What is Emacs? - Opensource.com
    Emacs is a text editor designed for POSIX operating systems and available on Linux, BSD, macOS, Windows, and more.What Is Gnu Emacs? · Features · Keyboard Bindings