cl-all
2024-10-12
A script to evaluate expressions in multiple lisp implementations.
Upstream URL
Author
Yukari Hafner <shinmera@tymoon.eu>
Maintainer
Yukari Hafner <shinmera@tymoon.eu>
License
zlib
## About CL-ALL
This is a simple script to run a Lisp snippet in locally installed lisp implementations. Requires at least SBCL.
## How To
You can either build a fixed SBCL binary with ``make``, or symlink ``cl-all.lisp`` to ``cl-all``. Either way, once ``cl-all`` is in your path:
::
cl-all '(print :hi)'
cl-all sbcl ecl '(print "Oh man!")'
cl-all --print '"Oh man"'
cl-all --file "something.lisp"
echo ":stdin" | cl-all --print
::
You can also load this system into your SBCL session and use it from the comfort of the REPL:
:: common-lisp
(cl-all:eval-in-lisp :ecl "(print call-arguments-limit)")
::
## Example Output
::
$ cl-all --print call-arguments-limit
--> ABCL: 50
--> Allegro: 16384
--> CCL: 65536
--> CLisp: 4096
--> CMUCL: 536870911
--> ECL: 65536
--> MKCL: 2305843009213693951
--> SBCL: 4611686018427387903
::
## CLI Reference
::
cl-all (implementation | option | snippet)*
implementation:
The given implementation is run. If no implementations are
explicitly specified, all known and available implementations
are used. See -l for a list of available implementations.
option:
--print -p Causes the last form's value to be printed.
Will also trim extraneous whitespace from the
output.
--file -f Uses the given file as input.
--eval -e Evaluates the given expression.
--disassemble -d Compiles and prints the disassembly of the
expressions.
--no-rc -n Do not run implementation init files.
--lisps -l List all known and available implementations
and exit.
--help -h Show this usage prompt and exit.
-- All further arguments are used as tokens to be
evaluated, concatenated by spaces.
snippet:
A lisp snippet to be evaluated.
If no snippet, file, or eval option is given, the standard input is
used to read forms from. Forms are read until EOF is encountered
::
## Known Implementations
- ABCL
- Allegro
- CCL
- Clasp
- Clisp
- CMUCL
- ECL
- GCL
- JSCL
- MKCL
- SBCL