Steel Bank Common Lisp

linguaggio di programmazione
Versione del 28 nov 2007 alle 16:27 di KiaBot (discussione | contributi) (robot: Wikilink giorno/mese in minuscolo.)

Template:Infobox Software

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


  Portale Software libero: accedi alle voci di Wikipedia che trattano di Software libero