Articulo de referencia

Lenguaje común de CMU

CMUCL es una implementación gratuita de Common Lisp , desarrollada originalmente en la Universidad Carnegie Mellon . CMUCL funciona en la mayoría de plataformas similares a Unix...

CMUCL es una implementación gratuita de Common Lisp , desarrollada originalmente en la Universidad Carnegie Mellon .

CMUCL funciona en la mayoría de plataformas similares a Unix , incluidas Linux y BSD ; también existe una versión experimental para Windows . Steel Bank Common Lisp se deriva de CMUCL. Scieneer Common Lisp fue un derivado comercial de CMUCL.

Historia

La primera implementación es anterior a Common Lisp y fue parte de Spice Lisp , alrededor de 1980. En 1985, Rob MacLachlan comenzó a reescribir el compilador a lo que se convertiría en el compilador Python y CMUCL se trasladó a estaciones de trabajo Unix como IBM PC RT, MIPS y SPARC. Las primeras versiones de CMUCL no admitían la arquitectura x86 de Intel debido a la falta de registros. CMUCL separaba estrictamente los tipos de datos etiquetados y los inmediatos, y el recolector de basura se basaría en saber que la mitad de los registros de la CPU solo podían contener tipos etiquetados y la otra mitad solo tipos no etiquetados. Esto no dejaba suficientes registros para un backend de Python.

Después de que CMU cancelara el proyecto (a favor de una implementación de Dylan que utilizara parte de la base del compilador de CMUCL), un grupo de voluntarios se hizo cargo del mantenimiento. En 1996, este grupo estaba realizando lanzamientos regulares en su propia infraestructura.

Casi al mismo tiempo se completó un port a la arquitectura x86 de Intel, primero ejecutándose en FreeBSD y luego en Linux . El problema de la falta de registros se resolvió con un nuevo recolector de basura conservador. Este nuevo recolector de basura acepta cualquier valor de cualquier tipo en los registros y trata cualquier cosa que pueda ser un puntero como un puntero con el propósito de no recolectar o mover su objetivo.

Compilador y otras unidades de ejecución de código

  • CMUCL cuenta con un intérprete que se utiliza principalmente para REPL , pero puede usarse para una carga más rápida de archivos Lisp que no necesitan compilación.
  • Una máquina para interpretar bytecode compacto (que puede emitirse desde el compilador). Esto rara vez se utiliza en la actualidad, pero era popular en las primeras versiones de CMUCL porque los tamaños de las imágenes se redujeron drásticamente en una época en la que el ancho de banda de descarga en Internet era bajo.
  • Un compilador de código nativo llamado "Python" (que no debe confundirse con el lenguaje de programación Python ). Si el código fuente de Common Lisp se ha escrito con las declaraciones adecuadas y se organiza teniendo en cuenta la velocidad, el compilador de Python genera código que está casi libre de sobrecarga en comparación con el código compilado a partir de lenguajes como C++. Algunas ineficiencias, como las interfaces de llamada de función y la falta de matrices sin punteros de tipos de datos definidos por el usuario, están dictadas por el estándar Common Lisp y aún necesitan ser solucionadas (por ejemplo, incorporando más y usando macros para crear construcciones que parezcan estructuras definidas por el usuario pero que en realidad accedan a campos en matrices especializadas preasignadas). El compilador de Python también presenta potentes inferencias de tipo , que ayudan al programador a escribir código sin sobrecarga al inferir tipos automáticamente o emitir sugerencias sobre oportunidades de optimización perdidas.

Características

Véase también

Referencias

  1. ^ "Inicio · Wiki · cmucl / cmucl · GitLab".
  • Página de inicio de CMUCL
Retrieved from "https://en.wikipedia.org/w/index.php?title=CMU_Common_Lisp&oldid=1166413335"