Jump to content

SLIME

From Wikipedia, the free encyclopedia
SLIME
Original authorEric Marsden
DevelopersLuke Gorrie and Helmut Eller
Initial releasemid-2003
Stable release
2.31[1] Edit this on Wikidata / 2 December 2024; 11 months ago (2 December 2024)
Repository
Operating systemLinux, Solaris, FreeBSD, NetBSD, OpenBSD, Mac OS X, Microsoft Windows
Available inEmacs Lisp, Common Lisp
TypeSource code editor
LicensePublic domain software,[2] portions in GPL v2, LGPL, BSD
Websitecommon-lisp.net/project/slime/

SLIME, the Superior Lisp Interaction Mode for Emacs, is an Emacs mode for developing Common Lisp applications. SLIME originates in an Emacs mode called SLIM written by Eric Marsden. It is developed as an open-source public domain software[2] project by Luke Gorrie and Helmut Eller. Over 100 Lisp developers have contributed code to SLIME since the project was started in 2003.

SLIME follows a client-server architecture, using a backend called Swank that is loaded into Common Lisp. In that regard, it is similar to the Language Server Protocol, which it predates. Some Common Lisp editors use a LSP client for Common Lisp.[3]

SLIME works with the main Common Lisp implementations, such as:

Other programming languages can leverage SLIME with an editor plugin, or have plugins inspired by SLIME:

Features

[edit]

SLIME offers an experience of an Integrated Development Environment. Once SLIME is loaded into the editor and the Swank back-end loaded into the running Common Lisp image, it is to be noted that all interactions are made live, interactively, effectively "talking" to the running program and adding features incrementally.

SLIME provides:

  • code completion.
  • code compilation (compile the function at point, a region, a file, a project).
  • compilation notes highlighted in source buffer and gathered in a dedicated buffer.
  • code evaluation.
  • documentation lookup.
  • an interactive object inspector.
  • definition finding.
  • a powerful interactive debugger, which lets the programmer inspect the call stack, fix and recompile a function while the debugger is open and execution is paused, then resume execution from any point in the stack.
  • the use of restarts in the debugger.
  • a stepper.
  • macro expansion,
  • automatic macro indentation.
  • cross references: find who calls a function or macro, who sets a symbol, who depends on a symbol, who references one, who specializes a method, who macroexpands a macro.
  • manipulating objects through "presentations".
  • automatic export of symbols
  • calling the function at point in the REPL.
  • shortcut commands (print the current working directory, find and install a Quicklisp package, etc.).
  • a trace facility.
  • disassembly commands.

Remote use

[edit]

SLIME, paired with the Swank back-end, allows to connect to a running Lisp program on another machine.[12]

This allows a programmer to inspect the running program, change parameters, or even to load and compile new code, effectively upgrading the system with no down-time.

References

[edit]
  1. ^ "[NonGNU ELPA] Slime version 2.31". 2 December 2024. Retrieved 6 December 2024.
  2. ^ a b Slime on github.com "License SLIME is free software. All files, unless explicitly stated otherwise, are public domain."
  3. ^ The Alive extension for VSCode: https://github.com/nobody-famous/alive-lsp/
  4. ^ CIDER is originally based on Slime: https://docs.cider.mx/cider/
  5. ^ "swank-js". GitHub. Retrieved 2025-03-05.
  6. ^ https://github.com/slime/slime/blob/master/contrib/slime-scheme.el
  7. ^ https://www.nongnu.org/geiser/
  8. ^ https://github.com/slime/slime/blob/master/contrib/swank-kawa.scm
  9. ^ "swankr". Archived from the original on 2011-03-04. Retrieved 2012-09-11.
  10. ^ "slime/contrib/swank.rb at master · slime/slime". GitHub. Retrieved 2025-03-05.
  11. ^ https://github.com/slime/slime/blob/master/contrib/swank-mit-scheme.scm
  12. ^ https://slime.common-lisp.dev/doc/html/Connecting-to-a-remote-lisp.html#Connecting-to-a-remote-lisp
[edit]