summaryrefslogtreecommitdiff
path: root/gnu/packages/lisp.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/lisp.scm')
-rw-r--r--gnu/packages/lisp.scm161
1 files changed, 141 insertions, 20 deletions
diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm
index 34edea41de..65fc1a58cd 100644
--- a/gnu/packages/lisp.scm
+++ b/gnu/packages/lisp.scm
@@ -113,7 +113,7 @@
(build-system gnu-build-system)
(arguments
`(#:parallel-build? #f ; The build system seems not to be thread safe.
- #:tests? #f ; There does not seem to be make check or anything similar.
+ #:test-target "ansi-tests/test_results"
#:configure-flags '("--enable-ansi") ; required for use by the maxima package
#:make-flags (list
(string-append "GCL_CC=" (assoc-ref %build-inputs "gcc")
@@ -327,14 +327,14 @@ an interpreter, a compiler, a debugger, and much more.")
(define-public sbcl
(package
(name "sbcl")
- (version "1.5.5")
+ (version "1.5.6")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/sbcl/sbcl/" version "/sbcl-"
version "-source.tar.bz2"))
(sha256
- (base32 "1qmapk2hyxxqd3ajiqacz4isij0ibx7gn10n8dbmq33gm3kgliyb"))
+ (base32 "10z43dc29p7s8dl3jixklhmzqfp7gcm3fccjdfd36qqhyfxqxx3a"))
(modules '((guix build utils)))
(snippet
;; Add sbcl-bundle-systems to 'default-system-source-registry'.
@@ -353,11 +353,21 @@ an interpreter, a compiler, a debugger, and much more.")
;; ABCL (recent versions only)
;; CLISP (only some versions: 2.44.1 is OK, 2.47 is not)
;; XCL
- ;; CCL seems ideal then, but it unfortunately only builds reliably
- ;; on some architectures.
+ ;;
+ ;; From NEWS:
+ ;; * build enhancement: new host quirks mechanism, support for building under
+ ;; ABCL and ECL (as well as CCL, CMUCL, CLISP and SBCL itself)
+ ;;
+ ;; CCL is not bootstrappable so it won't do. CLISP 2.49 seems to work.
+ ;; ECL too. ECL builds SBCL about 20% slower than CLISP. As of
+ ;; 2019-09-05, ECL was last updated in 2016 while CLISP was last update
+ ;; in 2010.
+ ;;
+ ;; For now we stick to CLISP for all systems. We keep the `match' in to
+ ;; make it easier to change the host compiler for various architectures.
`(,@(match (%current-system)
((or "x86_64-linux" "i686-linux")
- `(("ccl" ,ccl)))
+ `(("clisp" ,clisp)))
(_
`(("clisp" ,clisp))))
("which" ,which)
@@ -428,7 +438,7 @@ an interpreter, a compiler, a debugger, and much more.")
(setenv "CC" "gcc")
(invoke "sh" "make.sh" ,@(match (%current-system)
((or "x86_64-linux" "i686-linux")
- `("ccl"))
+ `("clisp"))
(_
`("clisp")))
(string-append "--prefix="
@@ -488,6 +498,15 @@ statistical profiler, a code coverage tool, and many other extensions.")
(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")
(version "1.11.5")
@@ -710,10 +729,44 @@ portable between implementations.")
(define-public ecl-alexandria
(sbcl-package->ecl-package sbcl-alexandria))
+(define-public sbcl-net.didierverna.asdf-flv
+ (package
+ (name "sbcl-net.didierverna.asdf-flv")
+ (version "2.1")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/didierverna/asdf-flv")
+ (commit (string-append "version-" version))))
+ (file-name (git-file-name "asdf-flv" version))
+ (sha256
+ (base32 "1fi2y4baxan103jbg4idjddzihy03kwnj2mzbwrknw4d4x7xlgwj"))))
+ (build-system asdf-build-system/sbcl)
+ (synopsis "Common Lisp ASDF extension to provide support for file-local variables")
+ (description "ASDF-FLV provides support for file-local variables through
+ASDF. A file-local variable behaves like @code{*PACKAGE*} and
+@code{*READTABLE*} with respect to @code{LOAD} and @code{COMPILE-FILE}: a new
+dynamic binding is created before processing the file, so that any
+modification to the variable becomes essentially file-local.
+
+In order to make one or several variables file-local, use the macros
+@code{SET-FILE-LOCAL-VARIABLE(S)}.")
+ (home-page "https://www.lrde.epita.fr/~didier/software/lisp/misc.php#asdf-flv")
+ (license (license:non-copyleft
+ "https://www.gnu.org/prep/maintain/html_node/License-Notices-for-Other-Files.html"
+ "GNU All-Permissive License"))))
+
+(define-public cl-net.didierverna.asdf-flv
+ (sbcl-package->cl-source-package sbcl-net.didierverna.asdf-flv))
+
+(define-public ecl-net.didierverna.asdf-flv
+ (sbcl-package->ecl-package sbcl-net.didierverna.asdf-flv))
+
(define-public sbcl-fiveam
(package
(name "sbcl-fiveam")
- (version "1.2")
+ (version "1.4.1")
(source
(origin
(method git-fetch)
@@ -722,8 +775,11 @@ portable between implementations.")
(commit (string-append "v" version))))
(file-name (git-file-name "fiveam" version))
(sha256
- (base32 "1yx9716mk8pq9076q6cjx4c9lyax3amiccy37sh0913k2x8gsm4l"))))
- (inputs `(("alexandria" ,sbcl-alexandria)))
+ (base32 "1q3d38pwafnwnw42clq0f8g5xw7pbzr287jl9jsqmb1vb0n1vrli"))))
+ (inputs
+ `(("alexandria" ,sbcl-alexandria)
+ ("net.didierverna.asdf-flv" ,sbcl-net.didierverna.asdf-flv)
+ ("trivial-backtrace" ,sbcl-trivial-backtrace)))
(build-system asdf-build-system/sbcl)
(synopsis "Common Lisp testing framework")
(description "FiveAM is a simple (as far as writing and running tests
@@ -2175,7 +2231,7 @@ also be supported.")
(define-public sbcl-ironclad
(package
(name "sbcl-ironclad")
- (version "0.42")
+ (version "0.46")
(source
(origin
(method git-fetch)
@@ -2184,14 +2240,15 @@ also be supported.")
(commit (string-append "v" version))))
(sha256
(base32
- "1wjcb9vpybxjrmch7f7s78a5abxmnknbd4fl49dl5lz8a3fc8vf0"))
- (file-name (string-append "ironblad" version "-checkout"))))
+ "1s391awi2lsl7m1dbjirgpkm4p9p8wd076pakgvsvpn1rrznisnd"))
+ (file-name (git-file-name name version))))
(build-system asdf-build-system/sbcl)
(native-inputs
;; Tests only.
`(("rt" ,sbcl-rt)))
(inputs
- `(("flexi-streams" ,sbcl-flexi-streams)
+ `(("bordeaux-threads" ,sbcl-bordeaux-threads)
+ ("flexi-streams" ,sbcl-flexi-streams)
("nibbles" ,sbcl-nibbles)))
(synopsis "Cryptographic toolkit written in Common Lisp")
(description
@@ -5337,17 +5394,18 @@ port within a range.")
(define-public txr
(package
(name "txr")
- (version "223")
+ (version "224")
(source
(origin
- (method url-fetch)
- (uri (string-append "http://www.kylheku.com/cgit/txr/snapshot/txr-"
- version
- ".tar.bz2"))
+ (method git-fetch)
+ (uri (git-reference
+ (url "http://www.kylheku.com/git/txr/")
+ (commit (string-append "txr-" version))))
+ (file-name (git-file-name name version))
(patches (search-patches "txr-shell.patch"))
(sha256
(base32
- "0109q8idqggba3kx58dpm5ccfpdrki68npkcxm18p5ga24611fcv"))))
+ "1036k71f6mffy9rjwzmhr5nnp1n0wzb0rqvilpzvb8jc5yxv0810"))))
(build-system gnu-build-system)
(arguments
'(#:configure-flags '("cc=gcc")
@@ -6740,3 +6798,66 @@ power of CXML is available when necessary.")
(description "This is a Common Lisp library that allows to publish D-Bus
objects as well as send and notify other objects connected to a bus.")
(license license:bsd-2))))
+
+(define-public sbcl-cl-hooks
+ (let ((commit "5b638083f3b4f1221a52631d9c8a0a265565cac7")
+ (revision "1"))
+ (package
+ (name "sbcl-cl-hooks")
+ (build-system asdf-build-system/sbcl)
+ (version (git-version "0.2.1" revision commit))
+ (home-page "https://github.com/scymtym/architecture.hooks")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url home-page)
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0bg3l0a28lw5gqqjp6p6b5nhwqk46sgkb7184w5qbfngw1hk8x9y"))))
+ (inputs
+ `(("alexandria" ,sbcl-alexandria)
+ ("let-plus" ,sbcl-let-plus)
+ ("trivial-garbage" ,sbcl-trivial-garbage)
+ ("closer-mop" ,sbcl-closer-mop)))
+ (native-inputs
+ `(("fiveam" ,sbcl-fiveam)))
+ (synopsis "Hooks extension point mechanism (as in Emacs) for Common Lisp")
+ (description "A hook, in the present context, is a certain kind of
+extension point in a program that allows interleaving the execution of
+arbitrary code with the execution of a the program without introducing any
+coupling between the two. Hooks are used extensively in the extensible editor
+Emacs.
+
+In the Common LISP Object System (CLOS), a similar kind of extensibility is
+possible using the flexible multi-method dispatch mechanism. It may even seem
+that the concept of hooks does not provide any benefits over the possibilites
+of CLOS. However, there are some differences:
+
+@itemize
+
+@item There can be only one method for each combination of specializers and
+qualifiers. As a result this kind of extension point cannot be used by
+multiple extensions independently.
+@item Removing code previously attached via a @code{:before}, @code{:after} or
+@code{:around} method can be cumbersome.
+@item There could be other or even multiple extension points besides @code{:before}
+and @code{:after} in a single method.
+@item Attaching codes to individual objects using eql specializers can be
+cumbersome.
+@item Introspection of code attached a particular extension point is
+cumbersome since this requires enumerating and inspecting the methods of a
+generic function.
+@end itemize
+
+This library tries to complement some of these weaknesses of method-based
+extension-points via the concept of hooks.")
+ (license license:llgpl))))
+
+(define-public cl-hooks
+ (sbcl-package->cl-source-package sbcl-cl-hooks))
+
+(define-public ecl-cl-hooks
+ (sbcl-package->ecl-package sbcl-cl-hooks))