* SLIME News                                -*- mode: outline; coding: utf-8 -*-
* 2.32 (December 2025)
** M-. for local variables bind by defun, multiple-value-bind
** Completion uses the default emacs interface. Allowing company mode to work.
   (slime-fuzzy needs (setq slime-fuzzy-default-completion-ui t)
** CL implementations compatibility improvements.

* 2.31 (December 2024)
** The REPL now runs on the main thread.
** inferior-lisp output is shown in the REPL.
** Added M-x sldb-inspect-restart and M-x sldb-inspect-frame-function

* 2.30 (April 2024)
** Better I/O performance
** Macroexpand for macrolet

* 2.29.1 (January 2024)
** Compatibility with older Emacs versions
** Type error in utf8-encode

* 2.29 (January 2024)
** Core
*** Loading the system "swank" with ASDF produces compilation artifacts
** ABCL
*** Fix missing source position from string buffer location
** CLASP
*** Add interface to debug stepper
*** Update xref implementation
*** Close temp file before compile-file
*** Fix detection of serve-event module
** Boring bug fixes

* 2.28 (January 2023)
** Operations that produce a lot of output can be interrupted more easily. 
** Improved compatibility with implementations and newer Emacs versions.
** abcl
*** Fix inspector failure for openjdk16+ Java fields

* 2.27 (January 2022)
** Mostly improved compatibility with different implementations and bug fixes.

* 2.26.1 (December 2020)
** SBCL compatibility

* 2.26 (August 2020)
** Fix copying presentations

* 2.25 (June 2020)
** Core
*** slime-connect takes additional arguments for open-network-stream
** slime-asdf
*** Removed code problematic for non-SMP Lispworks
** slime-fancy
*** Now loaded by default
*** Include slime-indentation
** slime-repl
*** New option: slime-repl-history-use-mark
*** Tweaked slime-repl-inputed-output-face for dark backgrounds
** slime-selector
*** Add prefix argument for opening window in another window
** slime-package-fu
*** Handle UIOP:DEFINE-PACKAGE
** ABCL backend
Numerous additions, including
*** Better able to inspect call arguments
*** Dramatic improvements in inspecting Java objects
*** Enable goto source location to find definitions in JAR archives
*** FIND-DEFINITIONS include symbols and specials defined in Java
** Clasp backend
*** Improved source locations
*** Implemented profiling via metering.lisp
** SBCL backend
*** Discard auto-generated DEFGENERICs from find-definitions

* 2.24 (May 2019)
*** Minor improvements.

* 2.23 (December 2018)
*** Improved compatibility with different versions of Emacs, SBCL, Clasp, Allegro.
*** Bug fixes

* 2.22 (July 2018)
*** Improved compatibility with Emacs 26

* 2.21 (June 2018)
*** Improved compatibility with Emacs 26
*** Mezzano support

* 2.20 (August 2017)
** Core
*** More secure handling of ~/.slime-secret
** SBCL backend
*** Compatibility with the latest SBCL and older SBCL.
** ECL backend
*** Numerous enhancements

* 2.19 (February 2017)
** Core
*** Function `create-server` now accepts optional `interface` argument.
Swank will bind the PORT on this interface. By default, interface is 127.0.0.1.
This argument can be used, for example, to bind swank on IPv6 interface "::1".
** SBCL backend
*** Now swank can be bound to IPv6 interface and can work on IPv6-only machines.
*** Compatibility with the latest SBCL

* 2.18 (May 2016)
*** Mostly bug fixes and compatibility with newer implementations

* 2.17 (February 2016)
** Contribs
*** New contrib, slime-macrostep, for more advanced in-place macroexpansion.
*** New contrib, slime-quicklisp.

* 2.16 (January 2016)
*** Auto-completion now supports package-local nicknames on SBCL and ABCL.
*** Bug fixes and updates for newer implementations.

* 2.15 (August 2015)
** Core
*** Completions are now displayed with `completion-at-point'.
The new variable `slime-completion-at-point-functions' should now be
used to customize completion.  The old variable
`slime-complete-symbol-function' still works, but it is considered
obsolete and will be removed eventually.

** SBCL backend
*** M-. can locate forms within PROGN/MACROLET/etc. Needs SBCL 1.2.15 

* 2.14 (June 2015)
** Core
*** Rationals are displayed in the echo area as floats too
*** Some of SLDB's faces now have MORE COLOR
*** Clicking with mouse-1 within inspector does things
As do mouse-6 and mouse-7. (Thanks to Attila Lendvai.)

** slime-c-p-c (Compound Prefix Completion)
*** Now takes a better guess at symbol case (issue #233)

** slime-fancy
*** slime-mdot-fu is now enabled by default

** SBCL backend
*** Now able to jump to ir1-translators, declaims and alien types
*** Various updates supporting SBCL 1.2.12

** ABCL backend
*** Fixed inspection of frame-locals in the debugger
(Thanks to Mark Evenson.)

* 2.13 (March 2015)

** Core
*** slime-cycle-connections has been deprecated
It has been replaced by slime-next-connection and
slime-prev-connection. A shortcut for the latter has been added to
slime-selector.

** slime-mdot-fu
The slime-mdot-fu contrib has been brought back to life. (Thanks to Charles
Zhang. Issues #8, #231 and #232.)

** slime-typeout-frame
The slime-typeout-frame contrib has been restored. (Issue #221.)

** SBCL backend
*** Fixed xrefs coming from C-c C-c
Issue #227.

** CMUCL, SBCL and SCL backends
*** Better support for custom readtables
Functionality that depends on SWANK's source-path-parser, such as
`slime-find-definition', now works properly in face of custom
readtables by honoring SWANK:*READTABLE-ALIST*. (Thanks to Gábor
Melis. PR #244.)

** Kawa backend
*** Updated for Kawa version 2.0

* 2.12 (January 2015)

** Core
A couple of regressions introduced in version 2.10 were fixed.

*** slime-compile-buffer (C-c C-k) no longer tries to save every buffer
*** slime-autodoc-mode doesn't spam the minibuffer anymore

** SWANK
*** CREATE-SERVER provides interactive restarts when port is taken
Thanks to Adlai Chandrasekhar. (PR #204.)

** slime-fuzzy
New variable *FUZZY-DUPLICATE-SYMBOL-FILTER* allows customization of
how symbols accessible from multiple packages should be
canonicalized. Defaults to :NEAREST-PACKAGE, a departure from the
previous default behaviour which is still available using
:HOME-PACKAGE. The new behaviour expands "ui:e-l" to
"uiop:ensure-list" rather than "uiop/utility:ensure-list". Consult the
manual for other options and other details.

Thanks to Ivan Shvedunov. (PR #205.)

* 2.11 (December 2014)

** MELPA is now an officially supported installation method
Various bugs involving installation and upgrading via package.el were
fixed. See the README for more details. (Issues #125, #195, #208.)

** Core
*** Compilation via the xref buffer now works again

** slime-repl / slime-presentations
Only text to the left of the cursor should limit the scope of history
navigation. Fixed a long-standing bug that violated this when
slime-presentations was enabled. (Thanks to Ivan Shvedunov. PR #207.)

** slime-package-fu
Now handles strings as symbol designators, is mindful of trailing
whitespace and properly handles an :export clause immediately
following the package name. (Thanks to Leo Liu. PR #145.)

** slime-indentation
The edge case handling described in slime-cl-indent.el:958 have been
has been restored.

** Allegro CL backend
Support for mlisp was restored. It had been broken by the previous
release. (Reported by Alexandre Rademaker. Issue #209.)

** New experimental SWANK backend for MLWorks

** SWANK
swank-listener-hooks was restored. (Thanks to Ivan Shvedunov. PR #210.)

* 2.10.1 (October 2014)

*** The SWANK-BACKEND nickname has been added to the SWANK/BACKEND package
This should ease the migration of external projects that depend on the
SWANK-BACKEND package. However, note that SWANK/BACKEND (as well as
the other SWANK/* packages) are internal packages. Please refer to
Conium <http://www.cliki.net/conium> for a project that purports to
offer a stable API for debugger- and compiler-related tasks in Common
Lisp.

* 2.10 (October 2014)

** Core
*** The SWANK-BACKEND package has been renamed to SWANK/BACKEND
Furthermore, implementations of the SWANK-BACKEND interface have
individual packages such as SWANK/SBCL, SWANK/CCL, etc. Other packages
such as SWANK-RPC, SWANK-GRAY have likewise had their hyphens turned
into slashes.

*** slime-compile-file is now aware of compilation-ask-about-save
When set to nil, SLIME will save modified buffers without asking.
compilation-save-buffers-predicate can be used to customize which
buffers should be automatically saved.

** slime-repl
*** Clearing REPL output no longer deletes the prompt (issue #183)

** slime-autodoc
This contrib has been rewritten. Please report any regressions you may
find.

** ABCL backend
*** Inspecting CLOS objects works properly again
*** SLDB frame arguments have become inspectable

** SBCL backend
*** Source locations involving the #. reader macro
The aforementioned mechanism was adapted to recent changes in the
internals of the SBCL reader.

*** Breakage involving recent versions of SBCL on Windows was fixed (issue #192)
We no longer assume SB-SYS:ENABLE-INTERRUPT exists on Windows SBCL.

** MKCL backend
New backend for ManKai Common Lisp.

** CMUCL backend
*** Support for versions prior to 20c has been removed

** MIT Scheme backend
*** Updated and now requires MIT Scheme 9.2

* 2.9 (August 2014)

** Core
*** Various display-related bugfixes

** CMUCL
*** M-. now works on condition classes

* 2.8 (July 2014)

** Core

*** Inspector fixes and improvements for SBCL.

** Contribs
*** Kawa backend supports Kawa 1.14.

* 2.7 (June 2014)

** Core
*** SWANK now tries harder to send double-floats to Emacs

** Allegro CL Backend
*** Added implementation for FUNCTION-NAME and FIND-SOURCE-LOCATION interfaces
Notably, this means that pressing "." in the SLIME inspector now works
on Allegro CL. (Thanks to Gábor Melis.)

* 2.6 (May 2014)

** Core

*** *print-readably* bound to nil when displaying condition messages

*** Issue #144: Removed nicknames and short package names
The STD nickname for SWANK-TRACE-DIALOG was removed. MONITOR was
renamed to SWANK-MONITOR and its nickname MON removed.

*** Issues #135, #154: slime-to-lisp-filename used more pervasively
Now used for the both the port-file and loader file when announced
from Emacs to the lisp backend. Allows a user-written
`slime-to-lisp-filename-function' that supports Cygwin lisps with
non-Cygwin Emacsen or vice-versa. See #135 for an example of such a
function.

*** Issue #155: Stale SLDB buffers are now properly removed
Indirect exits from an SLDB buffer that was not selected in a window
would leave a stale buffer behind, leading to an inconsistent state
and unexpected errors.

** Contribs

*** Issue #139: Restored "copy to REPL" for slime-presentations
`slime-copy-presentation-at-point-to-repl' will copy a presentation to
the REPL, place it at point, and _not_ set *, ** and ***. This
behaviour restored after refactorings of "copy to REPL" behaviour of
previous versions.

*** Issue #140: Improvements in the "copy to REPL" behaviour
With or without the slime-presentations contrib, M-RET will
copy/return values to REPL from both Inspector and SLDB buffers,
setting *, ** and *** . If the slime-presentations contrib is enabled,
the returned part will be an interactive presentation. The protocol
for copying down parts to REPL has been reworked to not assume a CL
backend .

*** Now supports more CLHS references: :type, :system-class, :ansi-cl

*** Issue #133: Fixed links to the SBCL manual

** Backend improvements

*** SBCL

**** `slime-set-default-directory' now calls chdir
This propagates its effects to subprocesses.

* 2.5 (April 2014)

** Backend improvements

*** Clozure CL

**** `slime-set-default-directory' now calls chdir
This propagates its effects to subprocesses.

*** Allegro CL

**** swank-compile-string no longer binds *default-pathname-defaults*
This was inconsistent with the behaviour of other backends and caused
strange issues with SYS:TEMPORARY-DIRECTORY.

**** Improved source file recording
Whenever possible interactive definition compilation is mapped to the
actual source file rather than the buffer name to avoid breakage when
the the buffer name changes or is closed.

** SLIME Trace Dialog

*** (Un)Tracing a definition automatically updates the trace status

** slime-repl

*** Inspecting * in REPL no longer inspects ** (issue #137)

** slime-autodoc

*** Multiline arglists in `slime-autodoc' no longer imply a newline (issue #7)

** Core Bugfixes

*** SWANK port file name defined in more portable fashion
Bug reported by Mirko Vukovic on slime-devel.

*** inferior-lisp-program can now hold paths with spaces (issue #116)

* 2.4 (March 2014)

** New contrib SLIME Trace Dialog included in `slime-fancy'
Interactive interface to tracing functions and methods. See manual for
details.

** New contrib `slime-fancy-trace', included in `slime-fancy'
If your implementation allows it, trace complex method signatures,
labels, etc...

** New options in `slime-cl-indent.el' used by the `slime-indentation' contrib
New variables are `lisp-loop-body-forms-indentation' and
`lisp-loop-body-forms-indentation'.

** New command `sldb-copy-down-to-repl' bound to M-RET in debugger
Copies the frame variable under point to the REPL, much as
`slime-inspector-copy-down-to-repl' does.

** New command `slime-delete-package'

** UTF8 encoding
SLIME now uses only UTF8 to encode strings on the wire.  Customization
variables like `slime-net-coding-system' or `swank:*coding-system*' are
now useless.

** Setup recipe
In preparation for a more decentralized approach to SLIME contribs,
the setup recipe has been slightly changed, hopefully in a backwards
compatible way. Calling `slime-setup' is no longer required. Instead,
the `slime-contribs' variable can be customized with a list of
contribs to be loaded when `M-x slime' is first executed. See section
`8.1 Loading Contrib Packages' of the SLIME Manual for more details.

** Bugfixes and stability improvements since the move to Github

*** Issue #9: new REPL output respectes existing REPL results or presentations.

*** Issue #17: TAB no longer freezes the REPL in "read-mode"

*** Issue #42: compiles on Emacs 24

*** Issue #43: `just-one-space' no longer breaks REPL

*** Issue #34: "Error in timer" error when starting slime on emacs24

*** Printing conditions is now a bit safer in the debugger (git:bafeb86)

*** Fix undo behavior in the REPL (git:af354d7)
Previously, undo would obliterate previous prompts.

*** Fix REPL type-ahead behaviour when presentations active (git:38a1826)
Input typed before your lisp responds is appended to the result when it arrives.

*** Fix package and dir synch when no process buffer (git:dc88935)
Sometimes process buffer has been killed, but connection is still active.

*** M-p on any part of the REPL buffer no longer errors (git:dc88935)

*** slime-presentations can be enabled in inspector (git:647c3c3, 2f57b34)
Set `slime-inspector-insert-ispec-function' to
`slime-presentation-inspector-insert-ispec' to use them.

*** M-. on a presentation on the REPL now longer errors
This happened when `slime-presentations' was enabled, either by itself
or by `slime-fancy'.

*** M-. on the first position of a *slime-apropos* buffer no longer fails.
This happened with the `slime-fancy-inspector.el' contrib.

*** RET on no part in *inspector* buffer no longer errors

*** slime-repsentations properly recognized when at very beginning of buffer
Fix by Attila Lendvai

*** Avoid loading `swank-asdf.lisp' if there's a good chance it will break SWANK
`swank-asdf.lisp' aborts the connection if it finds an old ASDF version.

*** In ABCL, `slime-describe-function' now works for both macros and functions.

** SLIME builds on Travis CI
See https://travis-ci.org/slime/slime for the build status and history.

** Testing framework refactored to use ERT
`def-slime-test' creates regular ERT tests. `define-slime-ert-test' is
a lighter convenience macro which automatically sets some tags for the
new tests.

** Top-level Makefile
For hackers or users using the latest version, there is now a
top-level Makefile. Use "make help" to learn about targets.

** Moved to Github
SLIME now lives in Github. The documentation and the README.md file
were updated. HACKING was renamed to CONTRIBUTING.md and updated with
Github specific instructions.

** Bugfixes and stability improvements
Since the last release and before move to Github, many bugfixes and
other changes were commited, too many to list here. See Changelog for
details.

* 2.3 (October 2011)

** REPL no longer loaded by default
SLIME has a REPL which communicates exclusively over SLIME's socket.
This REPL is no longer loaded by default.  The default REPL is now the
one by the Lisp implementation in the *inferior-lisp* buffer.  The
simplest way to enable the old REPL is:

  (slime-setup '(slime-repl))

** Precise source tracking in Clozure CL
Recent versions of the CCL compiler support source-location tracking.
This makes the sldb-show-source command much more useful and M-. works
better too.

** Environment variables for Lisp process
slime-lisp-implementations can be used to specify a list of strings to
augment the process environment of the Lisp process.  E.g.:

    (sbcl-cvs
     ("/home/me/sbcl-cvs/src/runtime/sbcl"
      "--core" "/home/me/sbcl-cvs/output/sbcl.core")
     :env ("SBCL_HOME=/home/me/sbcl-cvs/contrib/"))

* 2.1

** Removed Features
Some of the more esoteric features, like presentations or fuzzy
completion, are no longer enabled by default.  A new directory
"contrib/" contains the code for these packages.  To use them, you
must make some changes to your ~/.emacs.  For details see, section
"Contributed Packages" in the manual.

** Stepper
Juho Snellman implemented stepping commands for SBCL.

** Completions
SLIME can now complete keywords and character names (like #\newline).

* 2.0 (April 2006)

** In-place macro expansion
Marco Baringer wrote a new minor mode to incrementally expand macros.

** Improved arglist display
SLIME now recognizes `make-instance' calls and displays the correct
arglist if the classname is present.  Similarly, for `defmethod' forms
SLIME displays the arguments of the generic function.

** Persistent REPL history
SLIME now saves the command history from REPL buffers in a file and
reloads it for newly created REPL buffers.

** Scieneer Common Lisp
Douglas Crosher added support for Scieneer Common Lisp.

** SBCL
Various improvements to make SLIME work well with current SBCL versions.

** Corman Common Lisp
Espen Wiborg added support for Corman Common Lisp.

** Presentations
A new feature which associates objects in Lisp with their textual
represetation in Emacs.  The text is clickable and operations on the
associated object can be invoked from a pop-up menu.

** Security
SLIME has now a simple authentication mechanism: if the file
~/.slime-secret exists we verify that Emacs and Lisp can access it.
Since both parties have access to the same file system, we assume that
we can trust each other.

* 1.2 (March 2005)

** New inspector
The lisp side now returns a specially formated list of "things" to
format which are then passed to emacs and rendered in the inspector
buffer. Things can be either text, recursivly inspectable values, or
functions to call. The new inspector has much better support CLOS
objects and methods.

** Unicode
It's now possible to send non-ascii characters to Emacs, if the
communication channel is configured properly.  See the variable
`slime-net-coding-system'.

** Arglist lookup while debugging
Previously, arglist lookup was disabled while debugging.  This
restriction was removed. 

** Extended tracing command
It's now possible to trace individual a single methods or all methods
of a generic function.  Also tracing can be restricted to situations
in which the traced function is called from a specific function.

** M-x slime-browse-classes
A simple class browser was added.

** FASL files
The fasl files for different Lisp/OS/hardware combinations are now
placed in different directories.

** Many other small improvements and bugfixes

* 1.0 (September 2004)

** slime-interrupt
The default key binding for slime-interrupt is now C-c C-b.

** sldb-inspect-condition
In SLDB 'C' is now bound to sldb-inspect-condition.

** More Menus
SLDB and the REPL have now pull-down menus.

** Global debugger hook.
A new configurable *global-debugger* to control whether
swank-debugger-hook should be installed globally is available. True by
default.

** When you call sldb-eval-in-frame with a prefix argument, the result is 
now inserted in the REPL buffer.

** Compile function
For Allegro M-. works now for functions compiled with C-c C-c.

** slime-edit-definition
Better support for Allegro: works now for different type of
definitions not only. So M-. now works for e.g. classes in Allegro.

** SBCL 0.8.13
SBCL 0.8.12 is no longer supported.  Support for 0.8.12 was broken for
for some time now.

* 1.0 beta (August 2004)

** autodoc global variables
The slime-autodoc-mode will now automatically show the value of a
global variable at point.

** Customize group
The customize group is expanded and better-organised.

** slime-interactive-eval
Interactive-eval commands now print their results to the REPL when
given a prefix argument.

** slime-conservative-indentation
New Elisp variable. Non-nil means that we exclude def* and with-* from
indentation-learning. The default is t.

** (slime-setup)
New function to streamline setup in ~/.emacs

** Modeline package
The package name in the modeline is now updated on an idle timer. The
message should now be more meaningful when moving around in files
containing multiple IN-PACKAGE forms.

** XREF bugfix
The XREF commands did not find symbols in the right package.

** REPL prompt
The package name in the REPL's prompt is now abbreviated to the last
`.'-delimited token, e.g. MY.COMPANY.PACKAGE would be PACKAGE. This
can be disabled by setting SWANK::*AUTO-ABBREVIATE-DOTTED-PACKAGES* to
NIL.

** CMUCL source cache
The source cache is now populated on `first-change-hook'. This makes
M-. work accurately in more file modification scenarios.

** SBCL compiler errors
Detect compiler errors and make some noise. Previously certain
problems (e.g. reader-errors) could slip by quietly.

* 1.0 alpha (June 2004)

The first preview release of SLIME.

