versiones tipos sistemas sistema resumen quien que primer operativos operativo nombre los historia funciones existen español creo lisp common-lisp sbcl

lisp - tipos - ¿Cómo puedo ejecutar el código SBCL bajo un sistema operativo similar a Unix de una manera conveniente?



tipos de sistemas operativos y sus funciones (2)

(Respuesta de David James :)

Vamos a hacer dos comandos en nuestro sistema: uno para compilar por lotes el código Lisp y el otro para ejecutar fácilmente el código Lisp:

Usando su editor favorito, abra un archivo llamado sbcl.compile . El contenido debe ser:

#!/bin/bash sbcl --noinform --eval "(compile-file /"$1/")" --eval "(quit)" > /dev/null

Ahora para compilar los archivos Lisp usa:

# sbcl.compile hello.lisp

Esto creará un archivo hello.fasl .

Ahora para ejecutar fácilmente estos archivos, creamos un nuevo comando. Usando su editor favorito, abra un archivo llamado sbcl.run . El contenido debe ser:

#!/bin/bash sbcl --noinform --load "$1" --quit --end-toplevel-options "$@"

Ahora puede invocar sbcl.run hello.fasl para ejecutar el código nativo.

# sbcl.run hello.fasl

Los detalles se describen en el manual de SBCL: Cómo iniciar SBCL

(David James escribió la pregunta y una respuesta. Lo editaré para cumplir con los estándares de Stackoverflow).

Usando SBCL puedes compilar código Lisp a código de máquina.

Al igual que Java, .net, C ++ e incluso C, necesitará el tiempo de ejecución. Así que hay dos formas de compilar el código Common Lisp.

Lo primero es hacer binarios enormes que se explican en la documentación de SBCL. No se necesita SBCL en la máquina de destino.

La otra forma es más flexible, que es crear un código de máquina en formato fasl (FASt Load). El tiempo de ejecución de SBCL es necesario en la máquina de destino.

¿Cómo funciona la segunda forma en un sistema operativo similar a Unix?


Otra opción es agregar al tiempo de ejecución todos los paquetes / funciones / marcos que comúnmente usa, y luego guardar este estado como un nuevo archivo central, y usarlo como su núcleo predeterminado mientras continúa con el desarrollo. Por lo general, encuentro que los fasls son más problemáticos de lo que valen, especialmente porque lisp tiene la capacidad de guardar el estado en un archivo central estilo VM. Acabo de actualizar gradualmente el núcleo a medida que avanza el desarrollo. Y reconstruir / actualizar el núcleo utilizando GNU Make.