Steel Bank Common Lisp
Steel Bank Common Lisp (SBCL) è un implementazione libera del linguaggio di programmazione Common LISP. Deriva da un fork di CMUCL (Carnegie Mellon University Common Lisp) e condivide la maggior parte del codice con esso. Il motivo che ha spinto al fork era pulire il codice per permettere il supporto di nuovi sistemi e un mantenimento più semplice (la corrente principale di sviluppo di CMUCL tendeva invece ad aumentare il codice presente, senza grandi pulizie). Gli sviluppatori sperano che il progetto possa fornire un implementazione pienamente conforme agli standard del Common Lisp con l'elevata performance caratteristica di CMUCL, facile da estendere e da testare, e che sia portabile su altre piattaforme.
Il nome "Steel Bank Common Lisp" è un gioco di parole basato sul nome del progetto padre. Andrew Carnegie ha fatto la sua fortuna nell'industria del metallo (steel) e Andrew Mellon era un banchiere di successo.
Attualmente SBCL è sottoposto ad uno sviluppo più attivo e a release più frequenti che CMUCL.
Creare un eseguibile
SBCL può creare un unico file eseguibile lanciabile direttamente. Per fare ciò è sufficiente aprire una nuova sessione di SBCL, caricare tutto il codice che si vuole includere ed eseguire la funzione save-lisp-and-die:
federico@federico-linux:~$ sbcl This is SBCL 1.0.2, 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. * (load "code.lisp") T * (load "other code.lisp") T * (save-lisp-and-die "eseguibile.exe" :executable T ;; Nome dell'eseguibile :toplevel (lambda () ;; Funzione chiamata (my-package:main) ;; durante l'esecuzione. (sb-ext:quit))) ;; Esce al termine [undoing binding stack and other enclosing state... done] [saving current Lisp image into /home/federico/lisp/test/eseguibile.exe: writing 1912 bytes from the read-only space at 0x01000000 writing 1936 bytes from the static space at 0x05000000 writing 26513408 bytes from the dynamic space at 0x09000000 done]
Per lanciare l'eseguibile è sufficiente digitarne il percorso tramite console:
federico@federico-linux:~$ ./eseguibile.exe
In questo esempio viene creato un file eseguibile che può essere lanciato direttamente (ad esempio tramite console). Il file non contiene solamente il codice caricato tramite la funzione load, ma anche SBCL stesso: anche senza codice aggiuntivo, il nuovo file supera i 23 MB. Tuttavia, le elevate dimensioni dell'eseguibile possono essere ridotte comprimendolo in un archivio: nel nostro esempio, il file originale (23.8 MB) è stato compresso in un archivio ZIP arrivando ad occupare 7.7 MB. Comprimendolo invece in un archivio Bzip2 l'eseguibile arriva ad occupare solo 6.7 MB.
Collegamenti esterni
- (EN) SBCL homepage
- (EN) Planet SBCL - Lista aggiornata di commits, test, ecc.