Other options like SBCL would allow this easily:
$ echo "(format t \"Hello\!~%\")" | cat - > /tmp/test.lisp
$ time sbcl --script /tmp/test.lisp
Hello!
real 0m0.014s
Executables are easily created, though they are not small in SBCL.
$ sbcl
This is SBCL 1.5.9, an implementation of ANSI Common Lisp.
More information about SBCL is available at <http://www.sbcl.org/>.
SBCL is free software, provided as is, with absolutely no warranty.
It is mostly in the public domain; some portions are provided under
BSD-style licenses. See the CREDITS and COPYING files in the
distribution for more information.
* (sb-ext:save-lisp-and-die "howfast"
:toplevel (lambda () (format t "Hello!~%"))
:executable t)
[undoing binding stack and other enclosing state... done]
[performing final GC... done]
[defragmenting immobile space... (fin,inst,fdefn,code,sym)=1026+935+18027+18435+25326... done]
[saving current Lisp image into howfast:
writing 0 bytes from the read-only space at 0x20000000
writing 432 bytes from the static space at 0x20100000
writing 26804224 bytes from the dynamic space at 0x1000000000
writing 1990656 bytes from the immobile space at 0x20300000
writing 11935744 bytes from the immobile space at 0x21b00000
done]
$ time ./howfast
Hello!
real 0m0.016s