summary refs log tree commit diff
path: root/gnu
diff options
context:
space:
mode:
authorGuillaume Le Vaillant <glv@posteo.net>2024-06-18 09:44:02 +0200
committerGuillaume Le Vaillant <glv@posteo.net>2024-06-18 09:44:02 +0200
commit2d5a7bfed5ccae6ce8adbef3ae1017d6ce8512be (patch)
treef9ad133c399fe9ad582c70e4483a32ce16efefd9 /gnu
parent569c213249186dd4173e952c008eec1af5d287cb (diff)
parent5abf9c0c6b9c3ac41c5203c7aa69d08f47924e04 (diff)
downloadguix-2d5a7bfed5ccae6ce8adbef3ae1017d6ce8512be.tar.gz
Merge branch 'lisp-team'
Change-Id: Ia9a07fff02b01b3470f7abe28bc05a0fd8737416
Diffstat (limited to 'gnu')
-rw-r--r--gnu/local.mk3
-rw-r--r--gnu/packages/lisp-xyz.scm69
-rw-r--r--gnu/packages/lisp.scm1992
-rw-r--r--gnu/packages/patches/sbcl-fast-generic-functions-fix-sbcl-2.4.patch99
-rw-r--r--gnu/packages/patches/sbcl-fix-ppc64-build.patch27
-rw-r--r--gnu/packages/patches/sbcl-fix-riscv-build.patch19
6 files changed, 1140 insertions, 1069 deletions
diff --git a/gnu/local.mk b/gnu/local.mk
index 83b7402b09..78f174fd12 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -2067,8 +2067,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/sbcl-burgled-batteries3-fix-signals.patch	\
   %D%/packages/patches/sbcl-clml-fix-types.patch		\
   %D%/packages/patches/sbcl-eazy-gnuplot-skip-path-check.patch	\
-  %D%/packages/patches/sbcl-fix-ppc64-build.patch		\
-  %D%/packages/patches/sbcl-fix-riscv-build.patch		\
+  %D%/packages/patches/sbcl-fast-generic-functions-fix-sbcl-2.4.patch	\
   %D%/packages/patches/sbcl-png-fix-sbcl-compatibility.patch	\
   %D%/packages/patches/scalapack-gcc-10-compilation.patch	\
   %D%/packages/patches/scheme48-tests.patch			\
diff --git a/gnu/packages/lisp-xyz.scm b/gnu/packages/lisp-xyz.scm
index 5c798b98b0..174c65399b 100644
--- a/gnu/packages/lisp-xyz.scm
+++ b/gnu/packages/lisp-xyz.scm
@@ -5625,8 +5625,8 @@ Common Lisp via Gobject Introspection.")
 ;;   (sbcl-package->ecl-package sbcl-cl-gltf))
 
 (define-public sbcl-cl-gobject-introspection
-  (let ((commit "83beec4492948b52aae4d4152200de5d5c7ac3e9")
-        (revision "3"))
+  (let ((commit "4908a84c16349929b309c50409815ff81fb9b3c4")
+        (revision "4"))
     (package
       (name "sbcl-cl-gobject-introspection")
       (version (git-version "0.3" revision commit))
@@ -5639,7 +5639,7 @@ Common Lisp via Gobject Introspection.")
                (commit commit)))
          (file-name (git-file-name "cl-gobject-introspection" version))
          (sha256
-          (base32 "0xwmj4b3whz12i474g54krp1v6h0fpvsx8lgwpk6rkli9xc71wc3"))))
+          (base32 "0iw8fciydh9bi2svq30hi029df16arpspk0mjzh0cm1c6kjm9dcj"))))
       (build-system asdf-build-system/sbcl)
       (inputs
        (list glib
@@ -14701,7 +14701,9 @@ basic everyday functions and macros.")
                (commit commit)))
          (file-name (git-file-name "cl-fast-generic-functions" version))
          (sha256
-          (base32 "16hf9bi2p5s77p3m3aqsihcd9iicqjhhxxpsarjv93c41qs54yad"))))
+          (base32 "16hf9bi2p5s77p3m3aqsihcd9iicqjhhxxpsarjv93c41qs54yad"))
+         (patches
+          (search-patches "sbcl-fast-generic-functions-fix-sbcl-2.4.patch"))))
       (build-system asdf-build-system/sbcl)
       (inputs
        (list sbcl-closer-mop
@@ -15652,28 +15654,35 @@ of the files and the line numbers where they were found.")
   (sbcl-package->ecl-package sbcl-formgrep))
 
 (define-public sbcl-fset
-  (let ((commit "6d2f9ded8934d2b42f2571a0ba5bda091037d852")
+  (let ((commit "a75a4ec713277780d9e15bfaa486b56949142d35")
         (revision "1"))
     (package
       (name "sbcl-fset")
-      (version (git-version "1.3.2" revision commit))
+      (version (git-version "1.3.3" revision commit))
       (source
        (origin
          (method git-fetch)
          (uri (git-reference
                (url "https://github.com/slburson/fset")
                (commit commit)))
-         (file-name (git-file-name name version))
+         (file-name (git-file-name "cl-fset" version))
          (sha256
-          (base32
-           "127acblwrbqicx47h6sgvknz1cqyfn8p4xkhkn1m7hxh8w5gk1zy"))
+          (base32 "0bah0z8zrcykvnbi2wcdlbx902r818xg5dvd3384wf75kr2ccxvv"))
          (snippet '(begin
                      ;; Remove obsolete copy of system definition.
-                     (delete-file "Code/fset.asd")
-                     #t))))
+                     (delete-file "Code/fset.asd")))))
       (build-system asdf-build-system/sbcl)
       (inputs
        (list sbcl-misc-extensions sbcl-mt19937 sbcl-named-readtables))
+      (arguments
+       (list #:phases
+             #~(modify-phases %standard-phases
+                 (add-after 'unpack 'fix-build
+                   (lambda _
+                     ;; Fix for SBCL > 2.4.4
+                     (substitute* "Code/port.lisp"
+                       (("sb-ext::once-only")
+                        "sb-int:once-only")))))))
       (synopsis "Functional set-theoretic collections library")
       (description
        "FSet is a functional set-theoretic collections library for Common Lisp.
@@ -19987,6 +19996,14 @@ can be useful for games, 3D, and GL in general.")
          (sha256
           (base32 "15wrjbr2js6j67c1dd4p2qxj49q9iqv1lhb7cwdcwpn79crr39gf"))))
       (build-system asdf-build-system/sbcl)
+      (arguments
+       ;; FIXME: A test fails with:
+       ;;   The assertion
+       ;;   (EQUAL (MULTIPLE-VALUE-LIST (MAXPC:GET-INPUT-POSITION))
+       ;;          '(7 2 2))
+       ;;   failed with
+       ;;   (MULTIPLE-VALUE-LIST (MAXPC:GET-INPUT-POSITION)) = (7).
+       (list #:tests? #f))
       (home-page "https://mr.gy/software/maxpc/api.html")
       (synopsis
        "Library for writing parsers and lexers based on combinatory parsing")
@@ -25331,8 +25348,8 @@ only.")
   (sbcl-package->ecl-package sbcl-sb-cga))
 
 (define-public sbcl-schemeish
-  (let ((commit "dff57bafae5d0cffa104c8fdc4146502f32d7f85")
-        (revision "1"))
+  (let ((commit "872ea3dc3f2ea8438388b5e7660acd9446c49948")
+        (revision "2"))
     (package
       (name "sbcl-schemeish")
       (version (git-version "0.0.1" revision commit))
@@ -25342,12 +25359,22 @@ only.")
          (uri (git-reference
                (url "https://github.com/chebert/schemeish")
                (commit commit)))
-         (file-name (git-file-name name version))
+         (file-name (git-file-name "cl-schemeish" version))
          (sha256
-          (base32 "0q9b07spmhg1b576cnnacvkf7zr3mab2rdydfylbn92y9mms9vyj"))))
+          (base32 "08lbrmsamfpva83l1ap33gp8ff99v0l2dyyidjgwdchmbdgq3gqf"))))
       (build-system asdf-build-system/sbcl)
       (inputs
-       (list sbcl-trivial-arguments))
+       (list sbcl-trivial-arguments sbcl-trivial-cltl2))
+      (arguments
+       (list #:phases
+             #~(modify-phases %standard-phases
+                 (add-after 'unpack 'fix-build
+                   (lambda _
+                     ;; To fix the warning:
+                     ;; Argument of type (INTEGER 1 1) cannot be used as a keyword.
+                     (substitute* "src/arities.lisp"
+                       (("1 2 3 4 5 6 7 8")
+                        ":a1 :a2 :a3 :a4 :a5 :a6 :a7 :a8")))))))
       (synopsis "Scheme style syntax/macros/functions for Common Lisp")
       (description
        "Schemeish implements several useful Scheme constructs for Common Lisp.
@@ -26801,6 +26828,10 @@ using the latest algorithms.")
        (list sbcl-fiveam))
       (inputs
        (list sbcl-alexandria sbcl-introspect-environment))
+      (arguments
+       ;; FIXME: Tests fail with:
+       ;;   Unable to compile test syntax-layer-test define-specialization/name.
+       (list #:tests? #f))
       (home-page "https://github.com/markcox80/specialization-store")
       (synopsis "Different type of generic function for Common Lisp")
       (description
@@ -26813,11 +26844,7 @@ function.")
   (sbcl-package->cl-source-package sbcl-specialization-store))
 
 (define-public ecl-specialization-store
-  (package
-    (inherit (sbcl-package->ecl-package sbcl-specialization-store))
-    (arguments
-     ;; TODO: Find why the tests get stuck forever; disable them for now.
-     `(#:tests? #f))))
+  (sbcl-package->ecl-package sbcl-specialization-store))
 
 (define-public sbcl-specialized-function
   (let ((commit "5e2b04432bdf728496e6ff7227f210f845af7247")
diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm
index 6bf93d83c7..d4ad7fd495 100644
--- a/gnu/packages/lisp.scm
+++ b/gnu/packages/lisp.scm
@@ -106,10 +106,271 @@
   #:use-module (ice-9 match)
   #:use-module (srfi srfi-1))
 
+(define-public buildapp
+  (package
+    (name "buildapp")
+    (version "1.5.6")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/xach/buildapp")
+             (commit (string-append "release-" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "020ipjfqa3l8skd97cj5kq837wgpj28ygfxnkv64cnjrlbnzh161"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     (list sbcl))
+    (arguments
+     `(#:tests? #f
+       #:make-flags
+       (list (string-append "DESTDIR=" (assoc-ref %outputs "out")))
+       #:strip-binaries? #f
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (add-after 'unpack 'set-home
+           (lambda _
+             (setenv "HOME" "/tmp")
+             #t))
+         (add-before 'install 'create-target-directory
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((bin (string-append (assoc-ref outputs "out") "/bin")))
+               (mkdir-p bin)
+               #t))))))
+    (home-page "https://www.xach.com/lisp/buildapp/")
+    (synopsis "Makes easy to build application executables with SBCL")
+    (description
+     "Buildapp is an application for SBCL or CCL that configures and saves an
+executable Common Lisp image.  It is similar to cl-launch and hu.dwim.build.")
+    (license license:bsd-2)))
+
+(define-public carp
+  ;; Release 0.5.5 does not support GHC 9.2.
+  (let ((commit "339722325ec607091f6035866ebedea2b69080fe")
+        (revision "1"))
+    (package
+      (name "carp")
+      (version (git-version "0.5.5" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/carp-lang/Carp")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0w0j3imi4270dsmrh96spsc9xllsk5rrh817l80q1nyay9p53xwd"))))
+      (build-system haskell-build-system)
+      (arguments
+       (list #:phases
+             #~(modify-phases %standard-phases
+                 ;; Carp looks inside the sources checkout to know where to
+                 ;; find its core libraries and other files.
+                 ;; Carp emits C code and tries to compile it with an external
+                 ;; C compiler. On Linux it defaults to Clang.
+                 (add-after 'install 'wrap-programs
+                   (lambda* (#:key inputs #:allow-other-keys)
+                     (define (wrap-carp-program program)
+                       (wrap-program (string-append
+                                      #$output "/bin/" program)
+                         `("CARP_DIR" prefix
+                           (#$(package-source this-package)))
+                         `("PATH" prefix
+                           ,(list (dirname
+                                   (search-input-file inputs "bin/clang"))
+                                  (dirname
+                                   (search-input-file inputs "bin/ld"))))
+                         `("C_INCLUDE_PATH" prefix
+                           ,(list (dirname
+                                   (search-input-directory
+                                    inputs "include/linux"))
+                                  (dirname
+                                   (search-input-file
+                                    inputs "include/stdlib.h"))))))
+
+                     (for-each wrap-carp-program
+                               (list "carp"
+                                     "carp-header-parse")))))))
+      (inputs
+       (list bash-minimal
+             clang
+             ghc-blaze-markup
+             ghc-blaze-html
+             ghc-split
+             ghc-ansi-terminal
+             ghc-cmark
+             ghc-edit-distance
+             ghc-hashable
+             ghc-open-browser
+             ghc-optparse-applicative))
+      (native-inputs
+       (list ghc-hunit))
+      (home-page "https://carp-lang.org/")
+      (synopsis "Statically typed Lisp without a garbage collector")
+      (description
+       "@code{carp} is a Lisp-like programming language that compiles to
+C.  It features inferred static typing, macros, automatic memory
+management without a garbage collector, a REPL, and straightforward
+integration with code written in C.")
+      (license license:asl2.0))))
+
+(define-public ccl
+  ;; Warning: according to upstream, CCL is not bootstrappable.
+  ;; See https://github.com/Clozure/ccl/issues/222 from 2019-09-02:
+  ;;
+  ;;     "As far as I know, there is no way to build CCL without an existing
+  ;;     running CCL image. It was bootstrapped back in 1986 or so as
+  ;;     Macintosh Common Lisp, by Gary Byers, I believe, who is no longer on
+  ;;     the planet to tell us the story. It SHOULD be possible to port the
+  ;;     CCL compiler to portable Common Lisp, so that ANY lisp could build
+  ;;     it, as is the case for SBCL, but I know of no attempt to do so."
+  (package
+    (name "ccl")
+    ;; XXX When updating this package, check whether we can simply append
+    ;; VERSION to the ccl-bootstrap URL again, instead of per architecture.
+    (version "1.12.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/Clozure/ccl/")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name "ccl" version))
+              (sha256
+               (base32
+                "1zz291lvsrr7pps8wfl2kdxsnzjngqi4v3mil14pga4r5zanmsi7"))))
+    (build-system gnu-build-system)
+    ;; CCL consists of a "lisp kernel" and "heap image", both of which are
+    ;; shipped in precompiled form in source tarballs.  The former is a C
+    ;; program which we can rebuild from scratch, but the latter cannot be
+    ;; generated without an already working copy of CCL, and is platform
+    ;; dependent, so we need to fetch the correct tarball for the platform.
+    (inputs
+     `(("ccl-bootstrap"
+        ,(origin
+           (method url-fetch)
+           (uri (string-append
+                 "https://github.com/Clozure/ccl/releases/download/v"
+                 (match (%current-system)
+                   ("armhf-linux" "1.12/linuxarm")
+                   ;; XXX: This source only works on x86, but provide it as a
+                   ;; catch-all to prevent errors when querying this package
+                   ;; on unsupported platforms.
+                   (_ "1.12.1/linuxx86"))
+                 ".tar.gz"))
+           (sha256
+            (base32
+             (match (%current-system)
+               ("armhf-linux"
+                "0x4bjx6cxsjvxyagijhlvmc7jkyxifdvz5q5zvz37028va65243c")
+               (_ "0ll017ajcfsyx8f7zsy4394y8xxvz40iz0gcsmznp0n3mf0xi67c"))))))))
+    (native-inputs
+     (list cl-asdf m4))
+    (arguments
+     `(#:tests? #f                      ;no 'check' target
+       #:modules ((ice-9 match)
+                  (srfi srfi-26)
+                  (guix build utils)
+                  (guix build gnu-build-system))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'unpack-image
+           (lambda* (#:key inputs #:allow-other-keys)
+             (invoke "tar" "xzvf" (assoc-ref inputs "ccl-bootstrap"))))
+         (add-after 'unpack 'replace-asdf
+           ;; Use system ASDF instead of bundled one.
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let* ((cl-asdf (assoc-ref inputs "cl-asdf"))
+                    (guix-asdf (string-append
+                                cl-asdf
+                                "/share/common-lisp/source/asdf/asdf.lisp"))
+                    (contrib-asdf "tools/asdf.lisp"))
+               (delete-file contrib-asdf)
+               (copy-file guix-asdf contrib-asdf))))
+         (delete 'configure)
+         (add-before 'build 'pre-build
+           ;; Enter the source directory for the current platform's lisp
+           ;; kernel, and run 'make clean' to remove the precompiled one.
+           (lambda* (#:key system #:allow-other-keys)
+             (substitute* "lisp-kernel/m4macros.m4"
+               (("/bin/pwd") (which "pwd")))
+             (chdir (string-append
+                     "lisp-kernel/"
+                     (match system
+                       ("i686-linux" "linuxx8632")
+                       ("x86_64-linux" "linuxx8664")
+                       ("armhf-linux" "linuxarm")
+                       (_ (string-append "unknown system: " system)))))
+             (substitute* '("Makefile")
+               (("/bin/rm") "rm"))
+             (setenv "CC" "gcc")
+             (invoke "make" "clean")))
+         ;; XXX Do we need to recompile the heap image as well for Guix?
+         ;; For now just use the one we already got in the tarball.
+         (replace 'install
+           (lambda* (#:key outputs inputs system #:allow-other-keys)
+             ;; The lisp kernel built by running 'make' in lisp-kernel/$system
+             ;; is put back into the original directory, so go back.  The heap
+             ;; image is there as well.
+             (chdir "../..")
+             (let* ((out (assoc-ref outputs "out"))
+                    (libdir (string-append out "/lib/"))
+                    (bindir (string-append out "/bin/"))
+                    (wrapper (string-append bindir "ccl"))
+                    (bash (assoc-ref inputs "bash"))
+                    (kernel
+                     (match system
+                       ("i686-linux" "lx86cl")
+                       ("x86_64-linux" "lx86cl64")
+                       ("armhf-linux" "armcl")
+                       ;; Unlikely to work, but try it anyway...
+                       (_ system)))
+                    (heap (string-append kernel ".image")))
+               (install-file kernel libdir)
+               (install-file heap libdir)
+
+               (let ((dirs `("lib" "library" "examples" "tools" "objc-bridge"
+                             ,@(match system
+                                 ("x86_64-linux"
+                                  '("x86-headers64"))
+                                 ("i686-linux"
+                                  '("x86-headers"))
+                                 (_ '())))))
+                 (for-each copy-recursively
+                           dirs
+                           (map (cut string-append libdir <>) dirs)))
+
+               (mkdir-p bindir)
+               (with-output-to-file wrapper
+                 (lambda ()
+                   (display
+                    (string-append
+                     "#!" bash "/bin/sh\n"
+                     "export CCL_DEFAULT_DIRECTORY=" libdir "\n"
+                     "exec -a \"$0\" " libdir kernel " \"$@\"\n"))))
+               (chmod wrapper #o755))
+             #t)))))
+    (native-search-paths
+     (list (search-path-specification
+            (variable "XDG_DATA_DIRS")
+            (files '("share")))
+           (search-path-specification
+            (variable "XDG_CONFIG_DIRS")
+            (files '("etc")))))
+    (supported-systems '("i686-linux" "x86_64-linux" "armhf-linux"))
+    (home-page "https://ccl.clozure.com/")
+    (synopsis "Common Lisp implementation")
+    (description "Clozure CL (often called CCL for short) is a Common Lisp
+implementation featuring fast compilation speed, native threads, a precise,
+generational, compacting garbage collector, and a convenient foreign-function
+interface.")
+    (license license:asl2.0)))
+
 (define-public cl-asdf
   (package
     (name "cl-asdf")
-    (version "3.3.5")
+    (version "3.3.7")
     (source
      (origin
        (method url-fetch)
@@ -117,7 +378,7 @@
         (string-append "https://common-lisp.net/project/asdf/archives/asdf-"
                        version ".lisp"))
        (sha256
-        (base32 "1mydyrii3f0aig1q5admj6hyf59vjn4a5x1q8hqgh483987ilz6h"))))
+        (base32 "12dirg0qaq2rk8s11z7nnw793l94ysqna9mbqy8a0cx6bqiqykl7"))))
     (build-system trivial-build-system)
     (native-inputs
      `(("config-patch" ,@(search-patches "cl-asdf-config-directories.patch"))
@@ -149,6 +410,276 @@ Definition Facility.")
     ;; MIT License
     (license license:expat)))
 
+(define-public clisp
+  (package
+    (name "clisp")
+    (version "2.49-92")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://gitlab.com/gnu-clisp/clisp")
+             (commit "clisp-2.49.92-2018-02-18")))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0k2dmgl0miz3767iks4p0mvp6xw0ysyxhjpklyh11j010rmh6hqb"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     (list cl-asdf))
+    (inputs (list libffcall ncurses readline libsigsegv))
+    (arguments
+     `(#:configure-flags '(,@(if (string-prefix? "armhf-linux"
+                                                 (or (%current-system)
+                                                     (%current-target-system)))
+                                 '("CFLAGS=-falign-functions=4")
+                                 '())
+                           ,@(if (target-x86-64?)
+                                 '("--enable-portability"
+                                   "--with-threads=POSIX_THREADS")
+                                 '())
+                            "--with-dynamic-ffi"
+                            "--with-dynamic-modules"
+                            "--with-ffcall"
+                            "--with-readline"
+                            "--with-sigsegv"
+                            "--with-module=asdf"
+                            "--with-module=rawsock")
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-sh-and-pwd
+           (lambda _
+             ;; The package is very messy with its references to "/bin/sh" and
+             ;; some other absolute paths to traditional tools.  These appear in
+             ;; many places where our automatic patching misses them.  Therefore
+             ;; we do the following, in this early (post-unpack) phase, to solve
+             ;; the problem from its root.
+             (substitute* '("src/clisp-link.in"
+                            "src/unix.d"
+                            "src/makemake.in")
+               (("/bin/sh") (which "sh")))
+             (substitute* (find-files "." "configure|Makefile")
+               (("/bin/sh") "sh"))
+             (substitute* '("src/clisp-link.in")
+               (("/bin/pwd") "pwd"))
+             #t))
+         (add-after 'unpack 'replace-asdf
+           ;; Use system ASDF instead of bundled one.
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let* ((cl-asdf (assoc-ref inputs "cl-asdf"))
+                    (guix-asdf (string-append
+                                cl-asdf
+                                "/share/common-lisp/source/asdf/asdf.lisp"))
+                    (contrib-asdf "modules/asdf/asdf.lisp"))
+               (delete-file contrib-asdf)
+               (copy-file guix-asdf contrib-asdf)))))))
+    (native-search-paths
+     (list (search-path-specification
+            (variable "XDG_DATA_DIRS")
+            (files '("share")))
+           (search-path-specification
+            (variable "XDG_CONFIG_DIRS")
+            (files '("etc")))))
+    (home-page "https://clisp.sourceforge.io/")
+    (synopsis "Common Lisp implementation")
+    (description
+     "GNU CLISP is an implementation of ANSI Common Lisp.  Common Lisp is a
+high-level, object-oriented functional programming language.  CLISP includes
+an interpreter, a compiler, a debugger, and much more.")
+    (license license:gpl2+)))
+
+(define-public confusion-mdl
+  (let* ((commit "12a055581fc262225272df43287dae48281900f5"))
+    (package
+      (name "confusion-mdl")
+      (version "0.2")
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url (string-append "https://gitlab.com/emacsomancer/" name))
+                      (commit commit)))
+                (sha256
+                 (base32
+                  "1zi8kflzvwqg97ha1sa5xjisbjs5z1mvbpa772vfxiv5ksnpxp0d"))
+                (file-name (git-file-name name version))))
+      (build-system gnu-build-system)
+      (arguments
+       `(#:tests? #f                    ; there are no tests
+         #:phases
+         (modify-phases %standard-phases
+           (delete 'configure)
+           (replace 'build
+             (lambda* (#:key (make-flags '()) #:allow-other-keys)
+               (apply invoke "make" "CC=gcc" make-flags)))
+           (replace 'install
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let* ((out (assoc-ref outputs "out"))
+                      (bin (string-append out "/bin")))
+                 (install-file "mdli" bin)
+                 #t))))))
+      (native-inputs
+       (list perl))
+      (inputs
+       (list libgc))
+      (synopsis "Interpreter for the MIT Design Language (MDL)")
+      (description "MDL (the MIT Design Language) is a descendant of Lisp.  It
+was originally developed in 1971 on the PDP-10 computer under the Incompatible
+Timesharing System (ITS) to provide high level language support for the
+Dynamic Modeling Group at MIT's Project MAC.  Infocom built the original
+PDP-10 Zork in MDL and their later ZIL (Zork Implementation Language) was
+based on a subset of MDL.  Confusion is a MDL interpreter that works just well
+enough to play the original mainframe Zork all the way through.")
+      (home-page "http://www.russotto.net/git/mrussotto/confusion/src/master/src/README")
+      (license license:gpl3+))))
+
+(define-public ecl
+  (package
+    (name "ecl")
+    (version "24.5.10")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://ecl.common-lisp.dev/static/files/release/"
+             name "-" version ".tgz"))
+       (sha256
+        (base32 "0av2prf474cg0glr37fgsfb4w0dxfg38pykb72ay9q3132xnbsp4"))))
+    (build-system gnu-build-system)
+    ;; src/configure uses 'which' to confirm the existence of 'gzip'.
+    (native-inputs
+     (list cl-asdf which texinfo))
+    (inputs (list bash-minimal))
+    ;; When ECL is embedded in a program that wants to use Common Lisp as an
+    ;; extension language, libgmp, libatomic-ops, libgc and libffi must be
+    ;; present when compiling the program because they are required by ECL's
+    ;; header file.
+    ;; Therefore we put these libraries in 'propagated-inputs' instead
+    ;; of 'inputs'.
+    (propagated-inputs
+     (list gmp libatomic-ops libgc libffi))
+    (arguments
+     `(#:configure-flags '("--without-rt")
+       #:parallel-tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         ;; FIXME: As of version 20.4.24, we pass 17995 tests and fail 7.
+         ;; 2-3 tests may be due to FHS assumptions.
+         (delete 'check)
+         (add-after 'unpack 'replace-asdf
+           ;; Use system ASDF instead of bundled one.
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let* ((cl-asdf (assoc-ref inputs "cl-asdf"))
+                    (guix-asdf (string-append
+                                cl-asdf
+                                "/share/common-lisp/source/asdf/asdf.lisp"))
+                    (contrib-asdf "contrib/asdf/asdf.lisp"))
+               (copy-file guix-asdf contrib-asdf))))
+         (add-after 'install 'remove-build-stamp
+           (lambda* (#:key outputs #:allow-other-keys)
+             (delete-file (string-append (assoc-ref outputs "out")
+                                         "/lib/ecl-" ,version "/build-stamp"))))
+         (add-after 'remove-build-stamp 'wrap
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let* ((ecl (assoc-ref outputs "out"))
+                    (input-path (lambda (lib path)
+                                  (string-append
+                                   (assoc-ref inputs lib) path)))
+                    (libraries '("gmp" "libatomic-ops" "libgc" "libffi" "libc"))
+                    (binaries  '("gcc" "ld-wrapper" "binutils"))
+                    (library-directories
+                     (map (lambda (lib) (input-path lib "/lib"))
+                          libraries)))
+               (wrap-program (string-append ecl "/bin/ecl")
+                 `("PATH" prefix
+                   ,(map (lambda (binary)
+                           (input-path binary "/bin"))
+                         binaries))
+                 `("CPATH" suffix
+                   ,(map (lambda (lib)
+                           (input-path lib "/include"))
+                         `("kernel-headers" ,@libraries)))
+                 `("LIBRARY_PATH" suffix ,library-directories)
+                 `("LD_LIBRARY_PATH" suffix ,library-directories)))))
+         (add-after 'wrap 'check (assoc-ref %standard-phases 'check))
+         (add-before 'check 'fix-path-to-ecl
+           (lambda _
+             (substitute* "build/tests/Makefile"
+               (("\\$\\{exec_prefix\\}/") "")))))))
+    (native-search-paths
+     (list (search-path-specification
+            (variable "XDG_DATA_DIRS")
+            (files '("share")))
+           (search-path-specification
+            (variable "XDG_CONFIG_DIRS")
+            (files '("etc")))))
+    (home-page "https://ecl.common-lisp.dev/")
+    (synopsis "Embeddable Common Lisp")
+    (supported-systems (delete "i586-gnu" %supported-systems))
+    (description "ECL is an implementation of the Common Lisp language as
+defined by the ANSI X3J13 specification.  Its most relevant features are: a
+bytecode compiler and interpreter, being able to compile Common Lisp with any
+C/C++ compiler, being able to build standalone executables and libraries, and
+supporting ASDF, Sockets, Gray streams, MOP, and other useful components.")
+    ;; Note that the file "Copyright" points to some files and directories
+    ;; which aren't under the lgpl2.1+ and instead contain many different,
+    ;; non-copyleft licenses.
+    ;; See https://common-lisp.net/project/ecl/posts/ECL-license.html.
+    (license license:lgpl2.1+)))
+
+(define-public eisl
+  (package
+    (name "eisl")
+    (version "3.90")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/sasagawa888/eisl")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1c4gy7ys6kk6hw4px8rdrw3nj81jm6cvhx0nnzi7jbbzhbapm3n1"))))
+    (build-system gnu-build-system)
+    (inputs
+     (list bash-minimal freeglut gdbm libiconv ncurses tcl tk))
+    (native-inputs
+     (list cppcheck))
+    (arguments
+     (list #:make-flags
+           #~(list (string-append "PREFIX=" #$output)
+                   (string-append "CC=" #$(cc-for-target)))
+           #:phases
+           #~(modify-phases %standard-phases
+               (add-after 'unpack 'fix-paths
+                 (lambda* (#:key inputs #:allow-other-keys)
+                   (substitute* "library/compiler.lsp"
+                     (("\"cc ")
+                      "\"gcc "))
+                   (substitute* "library/tcltk.lsp"
+                     (("include <tcl/tcl\\.h>")
+                      "include <tcl.h>")
+                     (("c-option \"-ltcl -ltk\" linux")
+                      "c-option \"-ltcl8.6 -ltk8.6\" linux"))))
+               (delete 'configure)
+               (add-after 'install 'wrap
+                 (lambda* (#:key inputs #:allow-other-keys)
+                   (wrap-program (string-append #$output "/bin/eisl")
+                     `("PATH" prefix
+                       ,(map (lambda (bin)
+                               (string-append (assoc-ref inputs bin) "/bin"))
+                             '("binutils" "coreutils" "gcc" "ld-wrapper")))
+                     `("LIBRARY_PATH" suffix
+                       ,(map (lambda (lib)
+                               (string-append (assoc-ref inputs lib) "/lib"))
+                             '("libc")))))))))
+    (home-page "https://github.com/sasagawa888/eisl")
+    (synopsis "Implementation of ISLisp")
+    (description "Easy ISLISP (eisl) is an implementation of ISLisp which
+includes a compiler as well as an interpreter.")
+    (license (list license:bsd-2 ;; documents/license.txt
+                   license:expat ;; cii/LICENSE
+                   license:gpl2+ ;; nana/gdb/test.c and others under nana/
+                   license:bsd-3)))) ;; bench/*
+
 (define-public gcl
   (package
     (name "gcl")
@@ -269,192 +800,486 @@ stratified garbage collection strategy, a source-level debugger and a built-in
 interface to the Tk widget system.")
     (license license:lgpl2.0+)))
 
-(define-public ecl
+(define-public janet
   (package
-    (name "ecl")
-    (version "23.9.9")
+    (name "janet")
+    (version "1.33.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://ecl.common-lisp.dev/static/files/release/"
-             name "-" version ".tgz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/janet-lang/janet")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32 "107q6gmxlsya4yv38r1x1axrgyyfgdrfkkz97zfp64bcrasdl6y5"))))
+        (base32 "16wgljca7hp29fz5p2dnvy2cbscjx4imf85rhjwc1jkgdjswjxli"))))
     (build-system gnu-build-system)
-    ;; src/configure uses 'which' to confirm the existence of 'gzip'.
-    (native-inputs
-     (list cl-asdf which texinfo))
-    (inputs (list bash-minimal))
-    ;; When ECL is embedded in a program that wants to use Common Lisp as an
-    ;; extension language, libgmp, libatomic-ops, libgc and libffi must be
-    ;; present when compiling the program because they are required by ECL's
-    ;; header file.
-    ;; Therefore we put these libraries in 'propagated-inputs' instead
-    ;; of 'inputs'.
-    (propagated-inputs
-     (list gmp libatomic-ops libgc libffi))
     (arguments
-     `(#:configure-flags '("--without-rt")
-       #:parallel-tests? #f
+     (list #:make-flags
+           #~(list
+              (string-append "DESTDIR=" #$output)
+              (string-append "PREFIX=")
+              (string-append "CC=" #$(cc-for-target)))
+           #:test-target "test"
+           #:phases
+           #~(modify-phases %standard-phases
+               (delete 'configure))))
+    (home-page "https://janet-lang.org/")
+    (synopsis "Functional, imperative and embeddable programming language")
+    (description
+     "Janet is a functional and imperative programming language.  It can be
+used for rapid prototyping, dynamic systems, and other domains where dynamic
+languages shine.  You can also add Janet scripting to an application by
+embedding a single C file and two headers.  It can be easily ported to new
+platforms.  The entire language (core library, interpreter, compiler,
+assembler, PEG) is less than 1MB.")
+    (license license:expat)))
+
+(define-public lisp-repl-core-dumper
+  (package
+    (name "lisp-repl-core-dumper")
+    (version "0.8.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://gitlab.com/ambrevar/lisp-repl-core-dumper.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "04c12gi5izpkv8ha98z9qdkbmyrsq6ga060adrx53da8z31gnhk1"))))
+    (build-system copy-build-system)
+    (arguments
+     '(#:install-plan
+       '(("lisp-repl-core-dumper" "bin/"))
        #:phases
        (modify-phases %standard-phases
-         ;; FIXME: As of version 20.4.24, we pass 17995 tests and fail 7.
-         ;; 2-3 tests may be due to FHS assumptions.
-         (delete 'check)
-         (add-after 'unpack 'replace-asdf
-           ;; Use system ASDF instead of bundled one.
+         (add-before 'install 'fix-utils-path
            (lambda* (#:key inputs #:allow-other-keys)
-             (let* ((cl-asdf (assoc-ref inputs "cl-asdf"))
-                    (guix-asdf (string-append
-                                cl-asdf
-                                "/share/common-lisp/source/asdf/asdf.lisp"))
-                    (contrib-asdf "contrib/asdf/asdf.lisp"))
-               (copy-file guix-asdf contrib-asdf))))
-         (add-after 'install 'remove-build-stamp
-           (lambda* (#:key outputs #:allow-other-keys)
-             (delete-file (string-append (assoc-ref outputs "out")
-                                         "/lib/ecl-" ,version "/build-stamp"))))
-         (add-after 'remove-build-stamp 'wrap
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let* ((ecl (assoc-ref outputs "out"))
-                    (input-path (lambda (lib path)
-                                  (string-append
-                                   (assoc-ref inputs lib) path)))
-                    (libraries '("gmp" "libatomic-ops" "libgc" "libffi" "libc"))
-                    (binaries  '("gcc" "ld-wrapper" "binutils"))
-                    (library-directories
-                     (map (lambda (lib) (input-path lib "/lib"))
-                          libraries)))
+             (let* ((cat (search-input-file inputs "/bin/cat"))
+                    (paste (search-input-file inputs "/bin/paste"))
+                    (sort (search-input-file inputs "/bin/sort"))
+                    (basename (search-input-file inputs "/bin/basename"))
+                    (sed (search-input-file inputs "/bin/sed")))
+               (substitute* "lisp-repl-core-dumper"
+                 (("\\$\\(basename") (string-append "$(" basename))
+                 (("\\<cat\\>") cat)
+                 (("\\<paste\\>") paste)
+                 (("\\<sed\\>") sed)
+                 (("\\<sort\\>") sort))))))))
+    (inputs
+     `(("coreutils" ,coreutils-minimal)
+       ("sed" ,sed)))
+    (home-page "https://gitlab.com/ambrevar/lisp-repl-core-dumper")
+    (synopsis "Generate REPL-optimized Lisp cores on demand")
+    (description
+     "This tool generates Lisp images that can embed the provided systems
+and make for REPLs that start blazing fast.
 
-               (wrap-program (string-append ecl "/bin/ecl")
-                 `("PATH" prefix
-                   ,(map (lambda (binary)
-                           (input-path binary "/bin"))
-                         binaries))
-                 `("CPATH" suffix
-                   ,(map (lambda (lib)
-                           (input-path lib "/include"))
-                         `("kernel-headers" ,@libraries)))
-                 `("LIBRARY_PATH" suffix ,library-directories)
-                 `("LD_LIBRARY_PATH" suffix ,library-directories)))))
-         (add-after 'wrap 'check (assoc-ref %standard-phases 'check))
-         (add-before 'check 'fix-path-to-ecl
-           (lambda _
-             (substitute* "build/tests/Makefile"
-               (("\\$\\{exec_prefix\\}/") "")))))))
-    (native-search-paths
-     (list (search-path-specification
-            (variable "XDG_DATA_DIRS")
-            (files '("share")))
-           (search-path-specification
-            (variable "XDG_CONFIG_DIRS")
-            (files '("etc")))))
-    (home-page "https://ecl.common-lisp.dev/")
-    (synopsis "Embeddable Common Lisp")
-    (supported-systems (delete "i586-gnu" %supported-systems))
-    (description "ECL is an implementation of the Common Lisp language as
-defined by the ANSI X3J13 specification.  Its most relevant features are: a
-bytecode compiler and interpreter, being able to compile Common Lisp with any
-C/C++ compiler, being able to build standalone executables and libraries, and
-supporting ASDF, Sockets, Gray streams, MOP, and other useful components.")
-    ;; Note that the file "Copyright" points to some files and directories
-    ;; which aren't under the lgpl2.1+ and instead contain many different,
-    ;; non-copyleft licenses.
-    ;; See https://common-lisp.net/project/ecl/posts/ECL-license.html.
+@itemize
+@item It’s portable and should work with any compiler.
+@item It works for any REPL.
+@item It allows you to include arbitrary libraries.
+@end itemize\n")
+    (license license:gpl3+)))
+
+(define-public lush2
+  (package
+    (name "lush2")
+    (version "2.0.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://sourceforge/lush/lush2/lush-"
+                           version ".tar.gz"))
+       (modules '((guix build utils)))
+       (snippet
+        '(begin
+           (substitute* "src/unix.c"
+             (("\\{ \"LUSH_DATE\", __DATE__ \\},") "")
+             (("\\{ \"LUSH_TIME\", __TIME__ \\},") ""))
+           (substitute* "src/main.c"
+             (("\" \\(built \" __DATE__ \"\\)\"") ""))
+           #t))
+       (sha256
+        (base32
+         "02pkfn3nqdkm9fm44911dbcz0v3r0l53vygj8xigl6id5g3iwi4k"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(;; We have to add these LIBS so that they are found.
+       #:configure-flags (list "LIBS=-lz"
+                               "X_EXTRA_LIBS=-lfontconfig"
+                               "--with-x")
+       #:tests? #f)) ; No make check.
+    (native-inputs (list intltool))
+    (inputs
+     `(("alsa-lib" ,alsa-lib)
+       ("sdl" ,sdl)
+       ("sdl-image" ,sdl-image)
+       ("sdl-mixer" ,sdl-mixer)
+       ("sdl-net" ,sdl-net)
+       ("sdl-ttf" ,sdl-ttf)
+       ("libxft" ,libxft)
+       ("fontconfig" ,fontconfig)
+       ("gsl" ,gsl)
+       ("openblas" ,openblas)
+       ("glu" ,glu)
+       ("mesa" ,mesa)
+       ("mesa-utils" ,mesa-utils)
+       ("binutils" ,binutils)
+       ("libiberty" ,libiberty)
+       ("readline" ,readline)
+       ("zlib" ,zlib)
+       ("gettext-minimal" ,gettext-minimal)))
+    (synopsis "Lisp Universal Shell")
+    (description
+     "Lush is an object-oriented Lisp interpreter/compiler with features
+designed to please people who want to prototype large numerical
+applications.  Lush includes an extensive library of
+vector/matrix/tensor manipulation, numerous numerical libraries
+(including GSL, LAPACK, and BLAS), a set of graphic functions, a
+simple GUI toolkit, and interfaces to various graphic and multimedia
+libraries such as OpenGL, SDL, Video4Linux, and ALSA (video/audio
+grabbing), and others.  Lush is an ideal frontend script language for
+programming projects written in C or other languages.  Lush also has
+libraries for Machine Learning, Neural Nets and statistical estimation.")
+    (home-page "https://lush.sourceforge.net/")
     (license license:lgpl2.1+)))
 
-(define-public clisp
+(define picolisp32
   (package
-    (name "clisp")
-    (version "2.49-92")
+    (name "picolisp32")
+    (version "19.12")
     (source
      (origin
-       (method git-fetch)
-       (uri (git-reference
-             (url "https://gitlab.com/gnu-clisp/clisp")
-             (commit "clisp-2.49.92-2018-02-18")))
-       (file-name (git-file-name name version))
+       (method url-fetch)
+       (uri (string-append "https://software-lab.de/picoLisp-" version ".tgz"))
        (sha256
-        (base32 "0k2dmgl0miz3767iks4p0mvp6xw0ysyxhjpklyh11j010rmh6hqb"))))
+        (base32 "10np0mhihr47r3201617zccrvzpkhdl1jwvz7zimk8kxpriydq2j"))
+       (modules '((guix build utils)))
+       (snippet '(begin
+                   ;; Delete the pre-compiled jar file.
+                   (delete-file "ersatz/picolisp.jar")
+                   #t))))
     (build-system gnu-build-system)
-    (native-inputs
-     (list cl-asdf))
-    (inputs (list libffcall ncurses readline libsigsegv))
+    (inputs
+     `(("openssl" ,openssl)))
     (arguments
-     `(#:configure-flags '(,@(if (string-prefix? "armhf-linux"
-                                                 (or (%current-system)
-                                                     (%current-target-system)))
-                                 '("CFLAGS=-falign-functions=4")
-                                 '())
-                           ,@(if (target-x86-64?)
-                                 '("--enable-portability"
-                                   "--with-threads=POSIX_THREADS")
-                                 '())
-                            "--with-dynamic-ffi"
-                            "--with-dynamic-modules"
-                            "--with-ffcall"
-                            "--with-readline"
-                            "--with-sigsegv"
-                            "--with-module=asdf"
-                            "--with-module=rawsock")
+     `(#:system ,(match (%current-system)
+                   ((or "armhf-linux" "aarch64-linux")
+                    "armhf-linux")
+                   (_
+                    "i686-linux"))
        #:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'patch-sh-and-pwd
+         (delete 'configure)
+         (add-after 'unpack 'fix-paths
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (shebang-line (string-append
+                                   "#!" out "/bin/picolisp "
+                                   out "/lib/picolisp/lib.l")))
+               (substitute* '("bin/pil"
+                              "bin/pilIndent"
+                              "bin/pilPretty"
+                              "bin/psh"
+                              "bin/replica"
+                              "bin/vip"
+                              "bin/watchdog"
+                              "games/xchess"
+                              "misc/bigtest"
+                              "misc/calc"
+                              "misc/chat"
+                              "misc/mailing"
+                              "src/mkVers")
+                 (("#\\!bin/picolisp lib.l")
+                  shebang-line)
+                 (("#\\!\\.\\./bin/picolisp \\.\\./lib.l")
+                  shebang-line)
+                 (("#\\!/usr/bin/picolisp /usr/lib/picolisp/lib.l")
+                  shebang-line)))
+             #t))
+         (add-after 'fix-paths 'make-build-reproducible
            (lambda _
-             ;; The package is very messy with its references to "/bin/sh" and
-             ;; some other absolute paths to traditional tools.  These appear in
-             ;; many places where our automatic patching misses them.  Therefore
-             ;; we do the following, in this early (post-unpack) phase, to solve
-             ;; the problem from its root.
-             (substitute* '("src/clisp-link.in"
-                            "src/unix.d"
-                            "src/makemake.in")
-               (("/bin/sh") (which "sh")))
-             (substitute* (find-files "." "configure|Makefile")
-               (("/bin/sh") "sh"))
-             (substitute* '("src/clisp-link.in")
-               (("/bin/pwd") "pwd"))
+             (substitute* "src64/lib/asm.l"
+               (("\\(prinl \"/\\* \" \\(datSym \\(date\\)\\) \" \\*/\\)")
+                ""))
              #t))
-         (add-after 'unpack 'replace-asdf
-           ;; Use system ASDF instead of bundled one.
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let* ((cl-asdf (assoc-ref inputs "cl-asdf"))
-                    (guix-asdf (string-append
-                                cl-asdf
-                                "/share/common-lisp/source/asdf/asdf.lisp"))
-                    (contrib-asdf "modules/asdf/asdf.lisp"))
-               (delete-file contrib-asdf)
-               (copy-file guix-asdf contrib-asdf)))))))
-    (native-search-paths
-     (list (search-path-specification
-            (variable "XDG_DATA_DIRS")
-            (files '("share")))
-           (search-path-specification
-            (variable "XDG_CONFIG_DIRS")
-            (files '("etc")))))
-    (home-page "https://clisp.sourceforge.io/")
-    (synopsis "Common Lisp implementation")
+         (add-after 'make-build-reproducible 'fix-permissions
+           (lambda _
+             (for-each make-file-writable
+                       '("doc/family.tgz"
+                         "doc/family64.tgz"
+                         "lib/map"
+                         "src64/tags"))
+             #t))
+         (replace 'build
+           (lambda _
+             (invoke "make" "-C" "src" "picolisp" "tools" "gate")))
+         (add-before 'check 'set-home-for-tests
+           (lambda _
+             (setenv "HOME" "/tmp")
+             #t))
+         (replace 'check
+           (lambda _
+             (invoke "./pil" "test/lib.l" "-bye" "+")))
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (bin (string-append out "/bin"))
+                    (man (string-append out "/share/man"))
+                    (picolisp (string-append out "/lib/picolisp")))
+               (copy-recursively "man" man)
+               (copy-recursively "." picolisp)
+               (for-each (lambda (name)
+                           (let ((path (string-append picolisp "/" name)))
+                             (delete-file-recursively path)))
+                         '("CHANGES" "COPYING" "CREDITS" "cygwin"
+                           "INSTALL" "man" "pil" "README" "src" "src64"
+                           "test"))
+               (mkdir-p bin)
+               (symlink (string-append picolisp "/bin/picolisp")
+                        (string-append bin "/picolisp"))
+               (symlink (string-append picolisp "/bin/pil")
+                        (string-append bin "/pil")))
+             #t)))))
+    (synopsis "Interpreter for the PicoLisp programming language")
     (description
-     "GNU CLISP is an implementation of ANSI Common Lisp.  Common Lisp is a
-high-level, object-oriented functional programming language.  CLISP includes
-an interpreter, a compiler, a debugger, and much more.")
-    (license license:gpl2+)))
+     "PicoLisp is a programming language, or really a programming system,
+including a built-in database engine and a GUI system.")
+    (home-page "https://picolisp.com/wiki/?home")
+    (license license:expat)))
+
+(define-public picolisp
+  (match (%current-system)
+    ((or "aarch64-linux" "x86_64-linux")
+     (package
+       ;; Use the 32-bit picolisp to generate the assembly files required by
+       ;; the 64-bit picolisp.
+       (inherit picolisp32)
+       (name "picolisp")
+       (native-inputs
+        (list picolisp32 which))
+       (arguments
+        (substitute-keyword-arguments (package-arguments picolisp32)
+          ((#:system _ "") (%current-system))
+          ((#:phases phases)
+           `(modify-phases ,phases
+              (delete 'fix-paths)
+              (add-before 'build 'fix-paths
+                ;; This must run after the other shebang-patching phases,
+                ;; or they will override our changes.
+                (lambda* (#:key inputs outputs #:allow-other-keys)
+                  (let* ((picolisp32 (assoc-ref inputs "picolisp32"))
+                         (out (assoc-ref outputs "out"))
+                         (shebang-line (string-append
+                                        "#!" out "/bin/picolisp "
+                                        out "/lib/picolisp/lib.l")))
+                    (substitute* '("bin/pil"
+                                   "bin/pilIndent"
+                                   "bin/pilPretty"
+                                   "bin/psh"
+                                   "bin/replica"
+                                   "bin/vip"
+                                   "bin/watchdog"
+                                   "games/xchess"
+                                   "misc/bigtest"
+                                   "misc/calc"
+                                   "misc/chat"
+                                   "misc/mailing"
+                                   "src/mkVers")
+                      (("#\\!.*picolisp32.*/bin/picolisp .*lib\\.l")
+                       shebang-line))
+                    (substitute* "src64/mkAsm"
+                      (("/usr/bin/")
+                       (string-append picolisp32 "/bin/"))))
+                  #t))
+              (replace 'build
+                (lambda _
+                  (invoke "make" "-C" "src" "tools" "gate")
+                  (invoke "make" "-C" "src64" "CC=gcc" "picolisp")))))))))
+    (_
+     (package
+       (inherit picolisp32)
+       (name "picolisp")))))
+
+(define-public roswell
+  (package
+   (name "roswell")
+   (version "23.10.14.114")
+   (home-page "https://github.com/roswell/roswell")
+   (source
+    (origin
+     (method git-fetch)
+     (uri (git-reference
+           (url "https://github.com/roswell/roswell")
+           (commit (string-append "v" version))))
+     (file-name (git-file-name name version))
+     (sha256
+      (base32 "05w5sjh1bfy2wnblc09cb9qs8h7hxkx5hcqlbgpn7md32b0m4h7g"))))
+   (build-system gnu-build-system)
+   (arguments
+    (list #:configure-flags #~(list (string-append "--prefix=" #$output))
+          #:tests? #f))
+   (native-inputs
+    (list autoconf automake intltool))
+   (inputs
+    (list curl))
+   (propagated-inputs
+    ;; Has to be propagated in order to be found during setup.
+    (list gnu-make patchelf))
+   (synopsis "Common Lisp implementation manager, launcher, and more")
+   (description
+    "Roswell started out as a command-line tool with the aim to make
+installing and managing Common Lisp implementations really simple and easy.
+Roswell has now evolved into a full-stack environment for Common Lisp
+development, and has many features that makes it easy to test, share, and
+distribute your Lisp applications.
+
+Roswell is still in beta.  Despite this, the basic interfaces are stable and
+not likely to change.")
+   (license license:expat)))
+
+(define-public s7-bootstrap
+  ;; Need s7-bootstrap to build libc_s7.so (for the REPL) and run tests
+  (let ((commit "23a64facfac06c4bc23a7de8f04691c55f88bd40") ;no releases
+        (revision "0"))
+    (hidden-package
+     (package
+       (name "s7-bootstrap")
+       (version (git-version "24.1" revision commit))
+       (source (origin
+                 (method git-fetch)
+                 (uri (git-reference
+                       (url "https://cm-gitlab.stanford.edu/bil/s7.git")
+                       (commit commit)))
+                 (file-name (git-file-name name version))
+                 (sha256
+                  (base32
+                   "0fiw8lb7rswglixvn271la2q2hgwszrf2ckykhr6jjxdvmb9a7d0"))
+                 (patches (search-patches "s7-flint-3.patch"))))
+       (build-system gnu-build-system)
+       (arguments
+        (list #:tests? #f ;no tests in bootstrap
+              #:phases #~(modify-phases %standard-phases
+                           (delete 'configure) ;no configure
+                           (replace 'build
+                             (lambda _
+                               ;; using build commands from s7 home page
+                               (display "[BUILD] repl\n")
+                               (invoke #$(cc-for-target) "s7.c" "-o" "repl"
+                                       "-I." "-O2" "-g"
+                                       "-DWITH_MAIN"
+                                       (string-append
+                                        "-DS7_LOAD_PATH=\""
+                                        #$output "/share/s7/scm\"")
+                                       "-ldl" "-lm"
+                                       "-Wl,-export-dynamic")
+                               (display "[BUILD] nrepl\n")
+                               (invoke #$(cc-for-target) "s7.c" "-o" "nrepl"
+                                       "-I." "-O2" "-g"
+                                       "-DWITH_MAIN" "-DWITH_NOTCURSES"
+                                       (string-append
+                                        "-DS7_LOAD_PATH=\""
+                                        #$output "/share/s7/scm\"")
+                                       "-ldl" "-lm" "-lnotcurses-core"
+                                       "-Wl,-export-dynamic")
+                               (display "[BUILD] libarb_s7.so\n")
+                               (invoke #$(cc-for-target) "libarb_s7.c"
+                                       "-I." "-O2" "-g"
+                                       "-shared" "-o" "libarb_s7.so"
+                                       "-lflint" "-lmpc" "-fPIC")
+                               (display "[BUILD] libnotcurses_s7.so\n")
+                               (invoke #$(cc-for-target) "notcurses_s7.c"
+                                       "-I." "-O2" "-g"
+                                       "-shared" "-o" "libnotcurses_s7.so"
+                                       "-lnotcurses-core" "-fPIC")
+                               ;; Need s7.o and ffitest for tests
+                               (display "[BUILD] s7.o\n")
+                               (invoke #$(cc-for-target) "-c" "s7.c" "-o"
+                                       "s7.o" "-I." "-O2"  "-ldl" "-lm")
+                               (display "[BUILD] ffitest\n")
+                               (invoke #$(cc-for-target) "-o" "ffitest"
+                                       "ffitest.c" "-g2" "s7.o" "-lm" "-I."
+                                       "-ldl" "-Wl,-export-dynamic")))
+                           (add-before 'check 'install-scm
+                             ;; scm files need to be installed before testing
+                             (lambda _
+                               (for-each (lambda (x)
+                                           (install-file
+                                            x (string-append
+                                               #$output "/share/s7/scm/")))
+                                         (find-files "." "\\.scm"))))
+                           (replace 'install
+                             (lambda _
+                               (let ((bin (string-append #$output "/bin"))
+                                     (share (string-append #$output
+                                                           "/share/s7/"))
+                                     (doc (string-append #$output
+                                                         "/share/doc/s7/"))
+                                     (lib (string-append #$output "/lib"))
+                                     (inc (string-append #$output "/include/")))
+                                 (install-file "repl" bin)
+                                 (install-file "nrepl" bin)
+                                 (install-file "ffitest" bin)
+                                 (install-file "libarb_s7.so" lib)
+                                 (install-file "libnotcurses_s7.so" lib)
+                                 (install-file "s7.c" share)
+                                 (install-file "s7.h" inc)
+                                 (install-file "s7.html" doc)))))))
+       (inputs (list flint mpc notcurses))
+       (home-page "https://ccrma.stanford.edu/software/snd/snd/s7.html")
+       (synopsis "Scheme interpreter intended as an extension language")
+       (description
+        "s7 is a Scheme interpreter intended as an extension language for
+other applications.  It exists as just two files, @code{s7.c} and @code{s7.h},
+that may be copied into the source tree of another application.  There are no
+libraries, no run-time init files, and no configuration scripts.  It can also
+be built as a stand-alone REPL interpreter.")
+       (license license:bsd-0)))))
+
+(define-public s7
+  (package
+    (inherit s7-bootstrap)
+    (name "s7")
+    (arguments
+     (substitute-keyword-arguments
+       (strip-keyword-arguments
+         '(#:tests?)
+         (package-arguments s7-bootstrap))
+       ((#:phases phases)
+        #~(modify-phases #$phases
+            (add-after 'unpack 'patch
+              (lambda _
+                (substitute* "s7.c"
+                  (("libc_s7.so")
+                   (string-append #$output "/lib/libc_s7.so")))))
+            (add-after 'build 'build-full
+              (lambda _
+                (invoke "repl" "./libc.scm")))
+            (replace 'check
+              (lambda* (#:key tests? #:allow-other-keys)
+                (when tests?
+                  (invoke "repl" "./s7test.scm"))))
+            (add-after 'install 'install-full
+              (lambda _
+                (install-file "libc_s7.so"
+                              (string-append #$output "/lib/"))
+                (delete-file (string-append #$output "/bin/ffitest"))))))))
+    (native-inputs (list s7-bootstrap))
+    (properties (alist-delete 'hidden? (package-properties s7-bootstrap)))))
 
 (define-public sbcl
   (package
     (name "sbcl")
-    (version "2.4.0")
+    (version "2.4.5")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://sourceforge/sbcl/sbcl/" version "/sbcl-"
                            version "-source.tar.bz2"))
        (sha256
-        (base32 "0xhpdnsg8idzxkn20iw8gd2rk470d7vc22vrp5clq9fj117vgn43"))
-       ;; TODO: Remove these patches when updating to sbcl > 2.4.0.
-       (patches (search-patches "sbcl-fix-ppc64-build.patch"
-                                "sbcl-fix-riscv-build.patch"))
+        (base32 "1lbvb9rzlkl3h8s75i2js4dnmgxmvs41jxjb5dj0f603r688xxjd"))
        (modules '((guix build utils)))
        (snippet
         '(begin
@@ -497,7 +1322,8 @@ an interpreter, a compiler, a debugger, and much more.")
            (texlive-updmap.cfg (list texlive-texinfo))
            which))
     (inputs
-     (list gmp                          ; for sb-gmp
+     (list bash-minimal
+           gmp                          ; for sb-gmp
            mpfr                         ; for sb-mpfr
            (list zstd "lib")))
     (arguments
@@ -532,8 +1358,7 @@ an interpreter, a compiler, a debugger, and much more.")
                                 cl-asdf
                                 "/share/common-lisp/source/asdf/asdf.lisp"))
                     (contrib-asdf "contrib/asdf/asdf.lisp"))
-               (copy-file guix-asdf contrib-asdf))
-             #t))
+               (copy-file guix-asdf contrib-asdf))))
          (add-before 'build 'patch-unix-tool-paths
            (lambda* (#:key outputs inputs #:allow-other-keys)
              (let ((out (assoc-ref outputs "out"))
@@ -579,17 +1404,17 @@ an interpreter, a compiler, a debugger, and much more.")
                  (("\\(deftest pwent\\.[12]" all)
                   (string-append "#+nil ;disabled by Guix\n" all))
                  (("\\(deftest grent\\.[12]" all)
-                  (string-append "#+nil ;disabled by Guix\n" all))))
-             #t))
+                  (string-append "#+nil ;disabled by Guix\n" all))))))
          (add-before 'build 'fix-contrib-library-path
            (lambda* (#:key inputs #:allow-other-keys)
              (let ((gmp (assoc-ref inputs "gmp"))
                    (mpfr (assoc-ref inputs "mpfr")))
                (substitute* '("contrib/sb-gmp/gmp.lisp")
-                 (("\"libgmp\\.so") (string-append "\"" gmp "/lib/libgmp.so")))
+                 (("\"libgmp\\.so")
+                  (string-append "\"" gmp "/lib/libgmp.so")))
                (substitute* '("contrib/sb-mpfr/mpfr.lisp")
-                 (("\"libmpfr\\.so") (string-append "\"" mpfr "/lib/libmpfr.so"))))
-             #t))
+                 (("\"libmpfr\\.so")
+                  (string-append "\"" mpfr "/lib/libmpfr.so"))))))
          (replace 'build
            (lambda* (#:key outputs #:allow-other-keys)
              (setenv "CC" "gcc")
@@ -635,8 +1460,7 @@ an interpreter, a compiler, a debugger, and much more.")
                  (lambda ()
                    (display
                     (string-append "(sb-ext:set-sbcl-source-location \""
-                                   source-dir "\")") )))
-               #t)))
+                                   source-dir "\")") ))))))
          (add-after 'install 'remove-coreutils-references
            ;; They are only useful on non-Linux, non-SBCL.
            (lambda* (#:key outputs #:allow-other-keys)
@@ -650,14 +1474,12 @@ an interpreter, a compiler, a debugger, and much more.")
                   "(\"/usr/bin/env\""))
                (substitute* (string-append share-dir "contrib/asdf/uiop.lisp")
                  (("\\(\".*/usr/bin/env\"")
-                  "(\"/usr/bin/env\""))
-               #t)))
+                  "(\"/usr/bin/env\"")))))
          (add-after 'install 'install-shared-library
            (lambda* (#:key outputs #:allow-other-keys)
              (let* ((out (assoc-ref outputs "out"))
                     (lib-dir (string-append out "/lib")))
-               (install-file "src/runtime/libsbcl.so" lib-dir)
-               #t)))
+               (install-file "src/runtime/libsbcl.so" lib-dir))))
          (add-after 'install 'install-doc
            (lambda* (#:key outputs #:allow-other-keys)
              (let* ((out (assoc-ref outputs "out"))
@@ -668,8 +1490,7 @@ an interpreter, a compiler, a debugger, and much more.")
                (mkdir-p new-doc/sbcl-dir)
                (copy-recursively (string-append old-doc-dir "/sbcl")
                                  new-doc/sbcl-dir)
-               (delete-file-recursively old-doc-dir)
-               #t))))
+               (delete-file-recursively old-doc-dir)))))
        ;; No 'check' target, though "make.sh" (build phase) runs tests.
        #:tests? #f))
     (native-search-paths
@@ -691,264 +1512,6 @@ statistical profiler, a code coverage tool, and many other extensions.")
     (license (list license:public-domain license:bsd-2
                    (license:x11-style "file://src/code/loop.lisp")))))
 
-(define-public ccl
-  ;; Warning: according to upstream, CCL is not bootstrappable.
-  ;; See https://github.com/Clozure/ccl/issues/222 from 2019-09-02:
-  ;;
-  ;;     "As far as I know, there is no way to build CCL without an existing
-  ;;     running CCL image. It was bootstrapped back in 1986 or so as
-  ;;     Macintosh Common Lisp, by Gary Byers, I believe, who is no longer on
-  ;;     the planet to tell us the story. It SHOULD be possible to port the
-  ;;     CCL compiler to portable Common Lisp, so that ANY lisp could build
-  ;;     it, as is the case for SBCL, but I know of no attempt to do so."
-  (package
-    (name "ccl")
-    ;; XXX When updating this package, check whether we can simply append
-    ;; VERSION to the ccl-bootstrap URL again, instead of per architecture.
-    (version "1.12.1")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                    (url "https://github.com/Clozure/ccl/")
-                    (commit (string-append "v" version))))
-              (file-name (git-file-name "ccl" version))
-              (sha256
-               (base32
-                "1zz291lvsrr7pps8wfl2kdxsnzjngqi4v3mil14pga4r5zanmsi7"))))
-    (build-system gnu-build-system)
-    ;; CCL consists of a "lisp kernel" and "heap image", both of which are
-    ;; shipped in precompiled form in source tarballs.  The former is a C
-    ;; program which we can rebuild from scratch, but the latter cannot be
-    ;; generated without an already working copy of CCL, and is platform
-    ;; dependent, so we need to fetch the correct tarball for the platform.
-    (inputs
-     `(("ccl-bootstrap"
-        ,(origin
-           (method url-fetch)
-           (uri (string-append
-                 "https://github.com/Clozure/ccl/releases/download/v"
-                 (match (%current-system)
-                   ("armhf-linux" "1.12/linuxarm")
-                   ;; XXX: This source only works on x86, but provide it as a
-                   ;; catch-all to prevent errors when querying this package
-                   ;; on unsupported platforms.
-                   (_ "1.12.1/linuxx86"))
-                 ".tar.gz"))
-           (sha256
-            (base32
-             (match (%current-system)
-               ("armhf-linux"
-                "0x4bjx6cxsjvxyagijhlvmc7jkyxifdvz5q5zvz37028va65243c")
-               (_ "0ll017ajcfsyx8f7zsy4394y8xxvz40iz0gcsmznp0n3mf0xi67c"))))))))
-    (native-inputs
-     (list cl-asdf m4))
-    (arguments
-     `(#:tests? #f                      ;no 'check' target
-       #:modules ((ice-9 match)
-                  (srfi srfi-26)
-                  (guix build utils)
-                  (guix build gnu-build-system))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'unpack-image
-           (lambda* (#:key inputs #:allow-other-keys)
-             (invoke "tar" "xzvf" (assoc-ref inputs "ccl-bootstrap"))))
-         (add-after 'unpack 'replace-asdf
-           ;; Use system ASDF instead of bundled one.
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let* ((cl-asdf (assoc-ref inputs "cl-asdf"))
-                    (guix-asdf (string-append
-                                cl-asdf
-                                "/share/common-lisp/source/asdf/asdf.lisp"))
-                    (contrib-asdf "tools/asdf.lisp"))
-               (delete-file contrib-asdf)
-               (copy-file guix-asdf contrib-asdf))))
-         (delete 'configure)
-         (add-before 'build 'pre-build
-           ;; Enter the source directory for the current platform's lisp
-           ;; kernel, and run 'make clean' to remove the precompiled one.
-           (lambda* (#:key system #:allow-other-keys)
-             (substitute* "lisp-kernel/m4macros.m4"
-               (("/bin/pwd") (which "pwd")))
-             (chdir (string-append
-                     "lisp-kernel/"
-                     (match system
-                       ("i686-linux" "linuxx8632")
-                       ("x86_64-linux" "linuxx8664")
-                       ("armhf-linux" "linuxarm")
-                       (_ (string-append "unknown system: " system)))))
-             (substitute* '("Makefile")
-               (("/bin/rm") "rm"))
-             (setenv "CC" "gcc")
-             (invoke "make" "clean")))
-         ;; XXX Do we need to recompile the heap image as well for Guix?
-         ;; For now just use the one we already got in the tarball.
-         (replace 'install
-           (lambda* (#:key outputs inputs system #:allow-other-keys)
-             ;; The lisp kernel built by running 'make' in lisp-kernel/$system
-             ;; is put back into the original directory, so go back.  The heap
-             ;; image is there as well.
-             (chdir "../..")
-             (let* ((out (assoc-ref outputs "out"))
-                    (libdir (string-append out "/lib/"))
-                    (bindir (string-append out "/bin/"))
-                    (wrapper (string-append bindir "ccl"))
-                    (bash (assoc-ref inputs "bash"))
-                    (kernel
-                     (match system
-                       ("i686-linux" "lx86cl")
-                       ("x86_64-linux" "lx86cl64")
-                       ("armhf-linux" "armcl")
-                       ;; Unlikely to work, but try it anyway...
-                       (_ system)))
-                    (heap (string-append kernel ".image")))
-               (install-file kernel libdir)
-               (install-file heap libdir)
-
-               (let ((dirs `("lib" "library" "examples" "tools" "objc-bridge"
-                             ,@(match system
-                                 ("x86_64-linux"
-                                  '("x86-headers64"))
-                                 ("i686-linux"
-                                  '("x86-headers"))
-                                 (_ '())))))
-                 (for-each copy-recursively
-                           dirs
-                           (map (cut string-append libdir <>) dirs)))
-
-               (mkdir-p bindir)
-               (with-output-to-file wrapper
-                 (lambda ()
-                   (display
-                    (string-append
-                     "#!" bash "/bin/sh\n"
-                     "export CCL_DEFAULT_DIRECTORY=" libdir "\n"
-                     "exec -a \"$0\" " libdir kernel " \"$@\"\n"))))
-               (chmod wrapper #o755))
-             #t)))))
-    (native-search-paths
-     (list (search-path-specification
-            (variable "XDG_DATA_DIRS")
-            (files '("share")))
-           (search-path-specification
-            (variable "XDG_CONFIG_DIRS")
-            (files '("etc")))))
-    (supported-systems '("i686-linux" "x86_64-linux" "armhf-linux"))
-    (home-page "https://ccl.clozure.com/")
-    (synopsis "Common Lisp implementation")
-    (description "Clozure CL (often called CCL for short) is a Common Lisp
-implementation featuring fast compilation speed, native threads, a precise,
-generational, compacting garbage collector, and a convenient foreign-function
-interface.")
-    (license license:asl2.0)))
-
-(define-public lush2
-  (package
-    (name "lush2")
-    (version "2.0.1")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (string-append "mirror://sourceforge/lush/lush2/lush-"
-                           version ".tar.gz"))
-       (modules '((guix build utils)))
-       (snippet
-        '(begin
-           (substitute* "src/unix.c"
-             (("\\{ \"LUSH_DATE\", __DATE__ \\},") "")
-             (("\\{ \"LUSH_TIME\", __TIME__ \\},") ""))
-           (substitute* "src/main.c"
-             (("\" \\(built \" __DATE__ \"\\)\"") ""))
-           #t))
-       (sha256
-        (base32
-         "02pkfn3nqdkm9fm44911dbcz0v3r0l53vygj8xigl6id5g3iwi4k"))))
-    (build-system gnu-build-system)
-    (arguments
-     `(;; We have to add these LIBS so that they are found.
-       #:configure-flags (list "LIBS=-lz"
-                               "X_EXTRA_LIBS=-lfontconfig"
-                               "--with-x")
-       #:tests? #f)) ; No make check.
-    (native-inputs (list intltool))
-    (inputs
-     `(("alsa-lib" ,alsa-lib)
-       ("sdl" ,sdl)
-       ("sdl-image" ,sdl-image)
-       ("sdl-mixer" ,sdl-mixer)
-       ("sdl-net" ,sdl-net)
-       ("sdl-ttf" ,sdl-ttf)
-       ("libxft" ,libxft)
-       ("fontconfig" ,fontconfig)
-       ("gsl" ,gsl)
-       ("openblas" ,openblas)
-       ("glu" ,glu)
-       ("mesa" ,mesa)
-       ("mesa-utils" ,mesa-utils)
-       ("binutils" ,binutils)
-       ("libiberty" ,libiberty)
-       ("readline" ,readline)
-       ("zlib" ,zlib)
-       ("gettext-minimal" ,gettext-minimal)))
-    (synopsis "Lisp Universal Shell")
-    (description
-     "Lush is an object-oriented Lisp interpreter/compiler with features
-designed to please people who want to prototype large numerical
-applications.  Lush includes an extensive library of
-vector/matrix/tensor manipulation, numerous numerical libraries
-(including GSL, LAPACK, and BLAS), a set of graphic functions, a
-simple GUI toolkit, and interfaces to various graphic and multimedia
-libraries such as OpenGL, SDL, Video4Linux, and ALSA (video/audio
-grabbing), and others.  Lush is an ideal frontend script language for
-programming projects written in C or other languages.  Lush also has
-libraries for Machine Learning, Neural Nets and statistical estimation.")
-    (home-page "https://lush.sourceforge.net/")
-    (license license:lgpl2.1+)))
-
-(define-public confusion-mdl
-  (let* ((commit "12a055581fc262225272df43287dae48281900f5"))
-    (package
-      (name "confusion-mdl")
-      (version "0.2")
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url (string-append "https://gitlab.com/emacsomancer/" name))
-                      (commit commit)))
-                (sha256
-                 (base32
-                  "1zi8kflzvwqg97ha1sa5xjisbjs5z1mvbpa772vfxiv5ksnpxp0d"))
-                (file-name (git-file-name name version))))
-      (build-system gnu-build-system)
-      (arguments
-       `(#:tests? #f                    ; there are no tests
-         #:phases
-         (modify-phases %standard-phases
-           (delete 'configure)
-           (replace 'build
-             (lambda* (#:key (make-flags '()) #:allow-other-keys)
-               (apply invoke "make" "CC=gcc" make-flags)))
-           (replace 'install
-             (lambda* (#:key outputs #:allow-other-keys)
-               (let* ((out (assoc-ref outputs "out"))
-                      (bin (string-append out "/bin")))
-                 (install-file "mdli" bin)
-                 #t))))))
-      (native-inputs
-       (list perl))
-      (inputs
-       (list libgc))
-      (synopsis "Interpreter for the MIT Design Language (MDL)")
-      (description "MDL (the MIT Design Language) is a descendant of Lisp.  It
-was originally developed in 1971 on the PDP-10 computer under the Incompatible
-Timesharing System (ITS) to provide high level language support for the
-Dynamic Modeling Group at MIT's Project MAC.  Infocom built the original
-PDP-10 Zork in MDL and their later ZIL (Zork Implementation Language) was
-based on a subset of MDL.  Confusion is a MDL interpreter that works just well
-enough to play the original mainframe Zork all the way through.")
-      (home-page "http://www.russotto.net/git/mrussotto/confusion/src/master/src/README")
-      (license license:gpl3+))))
-
 (define man-for-txr
   (let ((commit "dfbf19b9a96474b8c1bacac85e43605e5691ceb2")
         ;; Number of additional commits since the last tag (see the output of
@@ -1084,574 +1647,3 @@ command line, to data scanning and extracting scripts, to full application
 development in a wide-range of areas.")
     (home-page "https://www.nongnu.org/txr/")
     (license license:bsd-2)))
-
-(define picolisp32
-  (package
-    (name "picolisp32")
-    (version "19.12")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (string-append "https://software-lab.de/picoLisp-" version ".tgz"))
-       (sha256
-        (base32 "10np0mhihr47r3201617zccrvzpkhdl1jwvz7zimk8kxpriydq2j"))
-       (modules '((guix build utils)))
-       (snippet '(begin
-                   ;; Delete the pre-compiled jar file.
-                   (delete-file "ersatz/picolisp.jar")
-                   #t))))
-    (build-system gnu-build-system)
-    (inputs
-     `(("openssl" ,openssl)))
-    (arguments
-     `(#:system ,(match (%current-system)
-                   ((or "armhf-linux" "aarch64-linux")
-                    "armhf-linux")
-                   (_
-                    "i686-linux"))
-       #:phases
-       (modify-phases %standard-phases
-         (delete 'configure)
-         (add-after 'unpack 'fix-paths
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (shebang-line (string-append
-                                   "#!" out "/bin/picolisp "
-                                   out "/lib/picolisp/lib.l")))
-               (substitute* '("bin/pil"
-                              "bin/pilIndent"
-                              "bin/pilPretty"
-                              "bin/psh"
-                              "bin/replica"
-                              "bin/vip"
-                              "bin/watchdog"
-                              "games/xchess"
-                              "misc/bigtest"
-                              "misc/calc"
-                              "misc/chat"
-                              "misc/mailing"
-                              "src/mkVers")
-                 (("#\\!bin/picolisp lib.l")
-                  shebang-line)
-                 (("#\\!\\.\\./bin/picolisp \\.\\./lib.l")
-                  shebang-line)
-                 (("#\\!/usr/bin/picolisp /usr/lib/picolisp/lib.l")
-                  shebang-line)))
-             #t))
-         (add-after 'fix-paths 'make-build-reproducible
-           (lambda _
-             (substitute* "src64/lib/asm.l"
-               (("\\(prinl \"/\\* \" \\(datSym \\(date\\)\\) \" \\*/\\)")
-                ""))
-             #t))
-         (add-after 'make-build-reproducible 'fix-permissions
-           (lambda _
-             (for-each make-file-writable
-                       '("doc/family.tgz"
-                         "doc/family64.tgz"
-                         "lib/map"
-                         "src64/tags"))
-             #t))
-         (replace 'build
-           (lambda _
-             (invoke "make" "-C" "src" "picolisp" "tools" "gate")))
-         (add-before 'check 'set-home-for-tests
-           (lambda _
-             (setenv "HOME" "/tmp")
-             #t))
-         (replace 'check
-           (lambda _
-             (invoke "./pil" "test/lib.l" "-bye" "+")))
-         (replace 'install
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (bin (string-append out "/bin"))
-                    (man (string-append out "/share/man"))
-                    (picolisp (string-append out "/lib/picolisp")))
-               (copy-recursively "man" man)
-               (copy-recursively "." picolisp)
-               (for-each (lambda (name)
-                           (let ((path (string-append picolisp "/" name)))
-                             (delete-file-recursively path)))
-                         '("CHANGES" "COPYING" "CREDITS" "cygwin"
-                           "INSTALL" "man" "pil" "README" "src" "src64"
-                           "test"))
-               (mkdir-p bin)
-               (symlink (string-append picolisp "/bin/picolisp")
-                        (string-append bin "/picolisp"))
-               (symlink (string-append picolisp "/bin/pil")
-                        (string-append bin "/pil")))
-             #t)))))
-    (synopsis "Interpreter for the PicoLisp programming language")
-    (description
-     "PicoLisp is a programming language, or really a programming system,
-including a built-in database engine and a GUI system.")
-    (home-page "https://picolisp.com/wiki/?home")
-    (license license:expat)))
-
-(define-public picolisp
-  (match (%current-system)
-    ((or "aarch64-linux" "x86_64-linux")
-     (package
-       ;; Use the 32-bit picolisp to generate the assembly files required by
-       ;; the 64-bit picolisp.
-       (inherit picolisp32)
-       (name "picolisp")
-       (native-inputs
-        (list picolisp32 which))
-       (arguments
-        (substitute-keyword-arguments (package-arguments picolisp32)
-          ((#:system _ "") (%current-system))
-          ((#:phases phases)
-           `(modify-phases ,phases
-              (delete 'fix-paths)
-              (add-before 'build 'fix-paths
-                ;; This must run after the other shebang-patching phases,
-                ;; or they will override our changes.
-                (lambda* (#:key inputs outputs #:allow-other-keys)
-                  (let* ((picolisp32 (assoc-ref inputs "picolisp32"))
-                         (out (assoc-ref outputs "out"))
-                         (shebang-line (string-append
-                                        "#!" out "/bin/picolisp "
-                                        out "/lib/picolisp/lib.l")))
-                    (substitute* '("bin/pil"
-                                   "bin/pilIndent"
-                                   "bin/pilPretty"
-                                   "bin/psh"
-                                   "bin/replica"
-                                   "bin/vip"
-                                   "bin/watchdog"
-                                   "games/xchess"
-                                   "misc/bigtest"
-                                   "misc/calc"
-                                   "misc/chat"
-                                   "misc/mailing"
-                                   "src/mkVers")
-                      (("#\\!.*picolisp32.*/bin/picolisp .*lib\\.l")
-                       shebang-line))
-                    (substitute* "src64/mkAsm"
-                      (("/usr/bin/")
-                       (string-append picolisp32 "/bin/"))))
-                  #t))
-              (replace 'build
-                (lambda _
-                  (invoke "make" "-C" "src" "tools" "gate")
-                  (invoke "make" "-C" "src64" "CC=gcc" "picolisp")))))))))
-    (_
-     (package
-       (inherit picolisp32)
-       (name "picolisp")))))
-
-(define-public janet
-  (package
-    (name "janet")
-    (version "1.33.0")
-    (source
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-             (url "https://github.com/janet-lang/janet")
-             (commit (string-append "v" version))))
-       (file-name (git-file-name name version))
-       (sha256
-        (base32 "16wgljca7hp29fz5p2dnvy2cbscjx4imf85rhjwc1jkgdjswjxli"))))
-    (build-system gnu-build-system)
-    (arguments
-     (list #:make-flags
-           #~(list
-              (string-append "DESTDIR=" #$output)
-              (string-append "PREFIX=")
-              (string-append "CC=" #$(cc-for-target)))
-           #:test-target "test"
-           #:phases
-           #~(modify-phases %standard-phases
-               (delete 'configure))))
-    (home-page "https://janet-lang.org/")
-    (synopsis "Functional, imperative and embeddable programming language")
-    (description
-     "Janet is a functional and imperative programming language.  It can be
-used for rapid prototyping, dynamic systems, and other domains where dynamic
-languages shine.  You can also add Janet scripting to an application by
-embedding a single C file and two headers.  It can be easily ported to new
-platforms.  The entire language (core library, interpreter, compiler,
-assembler, PEG) is less than 1MB.")
-    (license license:expat)))
-
-(define-public carp
-  ;; Release 0.5.5 does not support GHC 9.2.
-  (let ((commit "339722325ec607091f6035866ebedea2b69080fe")
-        (revision "1"))
-    (package
-      (name "carp")
-      (version (git-version "0.5.5" revision commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://github.com/carp-lang/Carp")
-                      (commit commit)))
-                (file-name (git-file-name name version))
-                (sha256
-                 (base32
-                  "0w0j3imi4270dsmrh96spsc9xllsk5rrh817l80q1nyay9p53xwd"))))
-      (build-system haskell-build-system)
-      (arguments
-       (list #:phases
-             #~(modify-phases %standard-phases
-                 ;; Carp looks inside the sources checkout to know where to
-                 ;; find its core libraries and other files.
-                 ;; Carp emits C code and tries to compile it with an external
-                 ;; C compiler. On Linux it defaults to Clang.
-                 (add-after 'install 'wrap-programs
-                   (lambda* (#:key inputs #:allow-other-keys)
-                     (define (wrap-carp-program program)
-                       (wrap-program (string-append
-                                      #$output "/bin/" program)
-                         `("CARP_DIR" prefix
-                           (#$(package-source this-package)))
-                         `("PATH" prefix
-                           ,(list (dirname
-                                   (search-input-file inputs "bin/clang"))
-                                  (dirname
-                                   (search-input-file inputs "bin/ld"))))
-                         `("C_INCLUDE_PATH" prefix
-                           ,(list (dirname
-                                   (search-input-directory
-                                    inputs "include/linux"))
-                                  (dirname
-                                   (search-input-file
-                                    inputs "include/stdlib.h"))))))
-
-                     (for-each wrap-carp-program
-                               (list "carp"
-                                     "carp-header-parse")))))))
-      (inputs
-       (list bash-minimal
-             clang
-             ghc-blaze-markup
-             ghc-blaze-html
-             ghc-split
-             ghc-ansi-terminal
-             ghc-cmark
-             ghc-edit-distance
-             ghc-hashable
-             ghc-open-browser
-             ghc-optparse-applicative))
-      (native-inputs
-       (list ghc-hunit))
-      (home-page "https://carp-lang.org/")
-      (synopsis "Statically typed Lisp without a garbage collector")
-      (description
-       "@code{carp} is a Lisp-like programming language that compiles to
-C.  It features inferred static typing, macros, automatic memory
-management without a garbage collector, a REPL, and straightforward
-integration with code written in C.")
-      (license license:asl2.0))))
-
-(define-public lisp-repl-core-dumper
-  (package
-    (name "lisp-repl-core-dumper")
-    (version "0.8.0")
-    (source
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-             (url "https://gitlab.com/ambrevar/lisp-repl-core-dumper.git")
-             (commit version)))
-       (file-name (git-file-name name version))
-       (sha256
-        (base32 "04c12gi5izpkv8ha98z9qdkbmyrsq6ga060adrx53da8z31gnhk1"))))
-    (build-system copy-build-system)
-    (arguments
-     '(#:install-plan
-       '(("lisp-repl-core-dumper" "bin/"))
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'install 'fix-utils-path
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let* ((cat (search-input-file inputs "/bin/cat"))
-                    (paste (search-input-file inputs "/bin/paste"))
-                    (sort (search-input-file inputs "/bin/sort"))
-                    (basename (search-input-file inputs "/bin/basename"))
-                    (sed (search-input-file inputs "/bin/sed")))
-               (substitute* "lisp-repl-core-dumper"
-                 (("\\$\\(basename") (string-append "$(" basename))
-                 (("\\<cat\\>") cat)
-                 (("\\<paste\\>") paste)
-                 (("\\<sed\\>") sed)
-                 (("\\<sort\\>") sort))))))))
-    (inputs
-     `(("coreutils" ,coreutils-minimal)
-       ("sed" ,sed)))
-    (home-page "https://gitlab.com/ambrevar/lisp-repl-core-dumper")
-    (synopsis "Generate REPL-optimized Lisp cores on demand")
-    (description
-     "This tool generates Lisp images that can embed the provided systems
-and make for REPLs that start blazing fast.
-
-@itemize
-@item It’s portable and should work with any compiler.
-@item It works for any REPL.
-@item It allows you to include arbitrary libraries.
-@end itemize\n")
-    (license license:gpl3+)))
-
-(define-public buildapp
-  (package
-    (name "buildapp")
-    (version "1.5.6")
-    (source
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-             (url "https://github.com/xach/buildapp")
-             (commit (string-append "release-" version))))
-       (file-name (git-file-name name version))
-       (sha256
-        (base32 "020ipjfqa3l8skd97cj5kq837wgpj28ygfxnkv64cnjrlbnzh161"))))
-    (build-system gnu-build-system)
-    (native-inputs
-     (list sbcl))
-    (arguments
-     `(#:tests? #f
-       #:make-flags
-       (list (string-append "DESTDIR=" (assoc-ref %outputs "out")))
-       #:strip-binaries? #f
-       #:phases
-       (modify-phases %standard-phases
-         (delete 'configure)
-         (add-after 'unpack 'set-home
-           (lambda _
-             (setenv "HOME" "/tmp")
-             #t))
-         (add-before 'install 'create-target-directory
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((bin (string-append (assoc-ref outputs "out") "/bin")))
-               (mkdir-p bin)
-               #t))))))
-    (home-page "https://www.xach.com/lisp/buildapp/")
-    (synopsis "Makes easy to build application executables with SBCL")
-    (description
-     "Buildapp is an application for SBCL or CCL that configures and saves an
-executable Common Lisp image.  It is similar to cl-launch and hu.dwim.build.")
-    (license license:bsd-2)))
-
-(define-public eisl
-  (package
-    (name "eisl")
-    (version "3.50")
-    (source
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-             (url "https://github.com/sasagawa888/eisl")
-             (commit (string-append "v" version))))
-       (file-name (git-file-name name version))
-       (sha256
-        (base32 "18alxwpvkcjfm63bc5kp6nn8351fl0p0ccxc8j9a7nb3fmg4fvyb"))))
-    (build-system gnu-build-system)
-    (inputs
-     (list bash-minimal freeglut gdbm libiconv ncurses tcl tk))
-    (native-inputs
-     (list cppcheck))
-    (arguments
-     (list #:make-flags
-           #~(list (string-append "PREFIX=" #$output)
-                   (string-append "CC=" #$(cc-for-target)))
-           #:phases
-           #~(modify-phases %standard-phases
-               (add-after 'unpack 'fix-paths
-                 (lambda* (#:key inputs #:allow-other-keys)
-                   (substitute* "library/compiler.lsp"
-                     (("\"cc ")
-                      "\"gcc "))
-                   (substitute* "library/tcltk.lsp"
-                     (("include <tcl/tcl\\.h>")
-                      "include <tcl.h>")
-                     (("c-option \"-ltcl -ltk\" linux")
-                      "c-option \"-ltcl8.6 -ltk8.6\" linux"))))
-               (delete 'configure)
-               (add-after 'install 'wrap
-                 (lambda* (#:key inputs #:allow-other-keys)
-                   (wrap-program (string-append #$output "/bin/eisl")
-                     `("PATH" prefix
-                       ,(map (lambda (bin)
-                               (string-append (assoc-ref inputs bin) "/bin"))
-                             '("binutils" "coreutils" "gcc" "ld-wrapper")))
-                     `("LIBRARY_PATH" suffix
-                       ,(map (lambda (lib)
-                               (string-append (assoc-ref inputs lib) "/lib"))
-                             '("libc")))))))))
-    (home-page "https://github.com/sasagawa888/eisl")
-    (synopsis "Implementation of ISLisp")
-    (description "Easy ISLISP (eisl) is an implementation of ISLisp which
-includes a compiler as well as an interpreter.")
-    (license (list license:bsd-2 ;; documents/license.txt
-                   license:expat ;; cii/LICENSE
-                   license:gpl2+ ;; nana/gdb/test.c and others under nana/
-                   license:bsd-3)))) ;; bench/*
-
-(define-public s7-bootstrap
-  ;; Need s7-bootstrap to build libc_s7.so (for the REPL) and run tests
-  (let ((commit "23a64facfac06c4bc23a7de8f04691c55f88bd40") ;no releases
-        (revision "0"))
-    (hidden-package
-     (package
-       (name "s7-bootstrap")
-       (version (git-version "24.1" revision commit))
-       (source (origin
-                 (method git-fetch)
-                 (uri (git-reference
-                       (url "https://cm-gitlab.stanford.edu/bil/s7.git")
-                       (commit commit)))
-                 (file-name (git-file-name name version))
-                 (sha256
-                  (base32
-                   "0fiw8lb7rswglixvn271la2q2hgwszrf2ckykhr6jjxdvmb9a7d0"))
-                 (patches (search-patches "s7-flint-3.patch"))))
-       (build-system gnu-build-system)
-       (arguments
-        (list #:tests? #f ;no tests in bootstrap
-              #:phases #~(modify-phases %standard-phases
-                           (delete 'configure) ;no configure
-                           (replace 'build
-                             (lambda _
-                               ;; using build commands from s7 home page
-                               (display "[BUILD] repl\n")
-                               (invoke #$(cc-for-target) "s7.c" "-o" "repl"
-                                       "-I." "-O2" "-g"
-                                       "-DWITH_MAIN"
-                                       (string-append
-                                        "-DS7_LOAD_PATH=\""
-                                        #$output "/share/s7/scm\"")
-                                       "-ldl" "-lm"
-                                       "-Wl,-export-dynamic")
-                               (display "[BUILD] nrepl\n")
-                               (invoke #$(cc-for-target) "s7.c" "-o" "nrepl"
-                                       "-I." "-O2" "-g"
-                                       "-DWITH_MAIN" "-DWITH_NOTCURSES"
-                                       (string-append
-                                        "-DS7_LOAD_PATH=\""
-                                        #$output "/share/s7/scm\"")
-                                       "-ldl" "-lm" "-lnotcurses-core"
-                                       "-Wl,-export-dynamic")
-                               (display "[BUILD] libarb_s7.so\n")
-                               (invoke #$(cc-for-target) "libarb_s7.c"
-                                       "-I." "-O2" "-g"
-                                       "-shared" "-o" "libarb_s7.so"
-                                       "-lflint" "-lmpc" "-fPIC")
-                               (display "[BUILD] libnotcurses_s7.so\n")
-                               (invoke #$(cc-for-target) "notcurses_s7.c"
-                                       "-I." "-O2" "-g"
-                                       "-shared" "-o" "libnotcurses_s7.so"
-                                       "-lnotcurses-core" "-fPIC")
-                               ;; Need s7.o and ffitest for tests
-                               (display "[BUILD] s7.o\n")
-                               (invoke #$(cc-for-target) "-c" "s7.c" "-o"
-                                       "s7.o" "-I." "-O2"  "-ldl" "-lm")
-                               (display "[BUILD] ffitest\n")
-                               (invoke #$(cc-for-target) "-o" "ffitest"
-                                       "ffitest.c" "-g2" "s7.o" "-lm" "-I."
-                                       "-ldl" "-Wl,-export-dynamic")))
-                           (add-before 'check 'install-scm
-                             ;; scm files need to be installed before testing
-                             (lambda _
-                               (for-each (lambda (x)
-                                           (install-file
-                                            x (string-append
-                                               #$output "/share/s7/scm/")))
-                                         (find-files "." "\\.scm"))))
-                           (replace 'install
-                             (lambda _
-                               (let ((bin (string-append #$output "/bin"))
-                                     (share (string-append #$output
-                                                           "/share/s7/"))
-                                     (doc (string-append #$output
-                                                         "/share/doc/s7/"))
-                                     (lib (string-append #$output "/lib"))
-                                     (inc (string-append #$output "/include/")))
-                                 (install-file "repl" bin)
-                                 (install-file "nrepl" bin)
-                                 (install-file "ffitest" bin)
-                                 (install-file "libarb_s7.so" lib)
-                                 (install-file "libnotcurses_s7.so" lib)
-                                 (install-file "s7.c" share)
-                                 (install-file "s7.h" inc)
-                                 (install-file "s7.html" doc)))))))
-       (inputs (list flint mpc notcurses))
-       (home-page "https://ccrma.stanford.edu/software/snd/snd/s7.html")
-       (synopsis "Scheme interpreter intended as an extension language")
-       (description
-        "s7 is a Scheme interpreter intended as an extension language for
-other applications.  It exists as just two files, @code{s7.c} and @code{s7.h},
-that may be copied into the source tree of another application.  There are no
-libraries, no run-time init files, and no configuration scripts.  It can also
-be built as a stand-alone REPL interpreter.")
-       (license license:bsd-0)))))
-
-(define-public s7
-  (package
-    (inherit s7-bootstrap)
-    (name "s7")
-    (arguments
-     (substitute-keyword-arguments
-       (strip-keyword-arguments
-         '(#:tests?)
-         (package-arguments s7-bootstrap))
-       ((#:phases phases)
-        #~(modify-phases #$phases
-            (add-after 'unpack 'patch
-              (lambda _
-                (substitute* "s7.c"
-                  (("libc_s7.so")
-                   (string-append #$output "/lib/libc_s7.so")))))
-            (add-after 'build 'build-full
-              (lambda _
-                (invoke "repl" "./libc.scm")))
-            (replace 'check
-              (lambda* (#:key tests? #:allow-other-keys)
-                (when tests?
-                  (invoke "repl" "./s7test.scm"))))
-            (add-after 'install 'install-full
-              (lambda _
-                (install-file "libc_s7.so"
-                              (string-append #$output "/lib/"))
-                (delete-file (string-append #$output "/bin/ffitest"))))))))
-    (native-inputs (list s7-bootstrap))
-    (properties (alist-delete 'hidden? (package-properties s7-bootstrap)))))
-
-(define-public roswell
-  (package
-   (name "roswell")
-   (version "23.10.14.114")
-   (home-page "https://github.com/roswell/roswell")
-   (source
-    (origin
-     (method git-fetch)
-     (uri (git-reference
-           (url "https://github.com/roswell/roswell")
-           (commit (string-append "v" version))))
-     (file-name (git-file-name name version))
-     (sha256
-      (base32 "05w5sjh1bfy2wnblc09cb9qs8h7hxkx5hcqlbgpn7md32b0m4h7g"))))
-   (build-system gnu-build-system)
-   (arguments
-    (list #:configure-flags #~(list (string-append "--prefix=" #$output))
-          #:tests? #f))
-   (native-inputs
-    (list autoconf automake intltool))
-   (inputs
-    (list curl))
-   (propagated-inputs
-    ;; Has to be propagated in order to be found during setup.
-    (list gnu-make patchelf))
-   (synopsis "Common Lisp implementation manager, launcher, and more")
-   (description
-    "Roswell started out as a command-line tool with the aim to make
-installing and managing Common Lisp implementations really simple and easy.
-Roswell has now evolved into a full-stack environment for Common Lisp
-development, and has many features that makes it easy to test, share, and
-distribute your Lisp applications.
-
-Roswell is still in beta.  Despite this, the basic interfaces are stable and
-not likely to change.")
-   (license license:expat)))
diff --git a/gnu/packages/patches/sbcl-fast-generic-functions-fix-sbcl-2.4.patch b/gnu/packages/patches/sbcl-fast-generic-functions-fix-sbcl-2.4.patch
new file mode 100644
index 0000000000..d8b30f24a3
--- /dev/null
+++ b/gnu/packages/patches/sbcl-fast-generic-functions-fix-sbcl-2.4.patch
@@ -0,0 +1,99 @@
+From f8bfa4d8ce6b831058935c793e9d9180a46e4171 Mon Sep 17 00:00:00 2001
+From: ajberkley <ajberkley@gmail.com>
+Date: Mon, 27 May 2024 14:21:22 -0700
+Subject: [PATCH 1/2] Fix to work with SBCL 2.4.0 and later
+
+---
+ code/expand-effective-method-body.lisp | 54 +++++++++++++-------------
+ 1 file changed, 28 insertions(+), 26 deletions(-)
+
+diff --git a/code/expand-effective-method-body.lisp b/code/expand-effective-method-body.lisp
+index c00c1b0..68c0b08 100644
+--- a/code/expand-effective-method-body.lisp
++++ b/code/expand-effective-method-body.lisp
+@@ -2,35 +2,37 @@
+ 
+ (defun expand-effective-method-body
+     (effective-method generic-function lambda-list)
+-  (trivial-macroexpand-all:macroexpand-all
+-   `(let ((.gf. #',(generic-function-name generic-function)))
+-      (declare (ignorable .gf.))
+-      #+sbcl(declare (sb-ext:disable-package-locks common-lisp:call-method))
+-      #+sbcl(declare (sb-ext:disable-package-locks common-lisp:make-method))
+-      #+sbcl(declare (sb-ext:disable-package-locks sb-pcl::check-applicable-keywords))
+-      #+sbcl(declare (sb-ext:disable-package-locks sb-pcl::%no-primary-method))
+-      (macrolet
+-          (;; SBCL introduces explicit keyword argument checking into
+-           ;; the effective method.  Since we do our own checking, we
+-           ;; can safely disable it.  However, we touch the relevant
+-           ;; variables to prevent unused variable warnings.
+-           #+sbcl
+-           (sb-pcl::check-applicable-keywords (&rest args)
+-             (declare (ignore args))
+-             `(progn sb-pcl::.valid-keys. sb-pcl::.keyargs-start. (values)))
+-           ;; SBCL introduces a magic form to report when there are no
+-           ;; primary methods.  The problem is that this form contains a
+-           ;; reference to the literal generic function, which is not an
+-           ;; externalizable object.  Our solution is to replace it with
+-           ;; something portable.
+-           #+sbcl
+-           (sb-pcl::%no-primary-method (&rest args)
+-             (declare (ignore args))
+-             `(apply #'no-primary-method .gf. ,@',(lambda-list-apply-arguments lambda-list))))
++  (let ((%no-primary-method (find-symbol "%NO-PRIMARY-METHOD" :sb-pcl)))
++    (trivial-macroexpand-all:macroexpand-all
++     `(let ((.gf. #',(generic-function-name generic-function)))
++        (declare (ignorable .gf.))
++        #+sbcl(declare (sb-ext:disable-package-locks common-lisp:call-method))
++        #+sbcl(declare (sb-ext:disable-package-locks common-lisp:make-method))
++        #+sbcl(declare (sb-ext:disable-package-locks sb-pcl::check-applicable-keywords))
++        #+sbcl(declare (sb-ext:disable-package-locks ,%no-primary-method))
++        (macrolet
++            (;; SBCL introduces explicit keyword argument checking into
++             ;; the effective method.  Since we do our own checking, we
++             ;; can safely disable it.  However, we touch the relevant
++             ;; variables to prevent unused variable warnings.
++             #+sbcl
++             (sb-pcl::check-applicable-keywords (&rest args)
++               (declare (ignore args))
++               `(progn sb-pcl::.valid-keys. sb-pcl::.keyargs-start. (values)))
++             ;; SBCL introduces a magic form to report when there are no
++             ;; primary methods.  The problem is that this form contains a
++             ;; reference to the literal generic function, which is not an
++             ;; externalizable object.  Our solution is to replace it with
++             ;; something portable.
++             #+sbcl
++             ,(when %no-primary-method
++                `(,%no-primary-method (&rest args)
++                     (declare (ignore args))
++                     `(apply #'no-primary-method .gf. ,@',(lambda-list-apply-arguments lambda-list)))))
+         ,(wrap-in-call-method-macrolet
+           effective-method
+           generic-function
+-          lambda-list)))))
++          lambda-list))))))
+ 
+ (defun wrap-in-call-method-macrolet (form generic-function lambda-list)
+   `(macrolet ((call-method (method &optional next-methods)
+
+From 01baf2bc9157762029de11ab64429999fa7a58da Mon Sep 17 00:00:00 2001
+From: ajberkley <ajberkley@gmail.com>
+Date: Mon, 27 May 2024 14:37:58 -0700
+Subject: [PATCH 2/2] Fix for SBCL
+
+---
+ code/sbcl.lisp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/code/sbcl.lisp b/code/sbcl.lisp
+index 9e206a8..b97c00a 100644
+--- a/code/sbcl.lisp
++++ b/code/sbcl.lisp
+@@ -13,6 +13,6 @@
+                        (prototypes static-call-signature-prototypes))
+           static-call-signature
+         (eval
+-         `(sb-c:deftransform ,name ((&rest args) (,@types &rest *))
++         `(sb-c:deftransform ,name ((&rest args) (,@types &rest t))
+             (or (optimize-function-call #',name ',static-call-signature)
+                 (sb-c::give-up-ir1-transform))))))))
diff --git a/gnu/packages/patches/sbcl-fix-ppc64-build.patch b/gnu/packages/patches/sbcl-fix-ppc64-build.patch
deleted file mode 100644
index a7d4d9a21e..0000000000
--- a/gnu/packages/patches/sbcl-fix-ppc64-build.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-commit 255f3ead060129aa097b62f10d054cdc4997a431
-Author: Douglas Katzman <dougk@google.com>
-Date:   Mon Jan 1 23:59:50 2024 -0500
-
-    Fix ppc64 failure-to-build (from a few weeks ago)
-    
-    Git rev 7354472bb5 caused NIL to get a bogus widetag.
-
-diff --git a/make-target-2-load.lisp b/make-target-2-load.lisp
-index 6571ec27d..daef942ea 100644
---- a/make-target-2-load.lisp
-+++ b/make-target-2-load.lisp
-@@ -339,7 +339,13 @@ Please check that all strings which were not recognizable to the compiler
- 
- 
-   (do-all-symbols (symbol)
--    (sb-kernel:logior-header-bits symbol sb-vm::+symbol-initial-core+)
-+    ;; Don't futz with the header of static symbols.
-+    ;; Technically LOGIOR-HEADER-BITS can only be used on an OTHER-POINTER-LOWTAG
-+    ;; objects, so modifying NIL should not ever work, but it's especially wrong
-+    ;; on ppc64 where OTHER- and LIST- pointer lowtags are 10 bytes apart instead
-+    ;; of 8, so this was making a random alteration to the header.
-+    (unless (eq (heap-allocated-p symbol) :static)
-+      (sb-kernel:logior-header-bits symbol sb-vm::+symbol-initial-core+))
- 
-     ;; A symbol whose INFO slot underwent any kind of manipulation
-     ;; such that it now has neither properties nor globaldb info,
diff --git a/gnu/packages/patches/sbcl-fix-riscv-build.patch b/gnu/packages/patches/sbcl-fix-riscv-build.patch
deleted file mode 100644
index 3e01ee6579..0000000000
--- a/gnu/packages/patches/sbcl-fix-riscv-build.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-commit b286d92af7468164c155c70d38213211b296fdfe
-Author: Douglas Katzman <dougk@google.com>
-Date:   Wed Jan 10 11:46:55 2024 -0500
-
-    Fix riscv build
-
-diff --git a/src/compiler/riscv/float.lisp b/src/compiler/riscv/float.lisp
-index ce46d24ac..a16380293 100644
---- a/src/compiler/riscv/float.lisp
-+++ b/src/compiler/riscv/float.lisp
-@@ -578,7 +578,7 @@
-   (:results (res :scs (double-reg)))
-   (:arg-types signed-num)
-   (:result-types double-float)
--  (:translate make-double-float)
-+  (:translate %make-double-float)
-   (:policy :fast-safe)
-   (:generator 2
-     (inst fmvx-> :double res bits)))