2011-03-30 15 views
20

¿Existen compiladores Lisp de código abierto adecuados para aplicaciones integradas en tiempo real? Es decir. con la recolección de basura incrementales, manejo de la memoria personalizable, de pequeño tamaño, etc.Lisp en plataformas integradas

Editar:

para aclarar, por "compilador" me refería a código nativo, no intérprete de código de bytes (aunque las implementaciones de interpretación sugeridos para microcontroladores son interesantes para ¡siendo mucho más pequeño de lo que creí posible!).

+1

He tenido éxito ejecutando un colector de basura al otro mundo al final de cada ciclo de PLC, en una plataforma muy pequeña (64kb de código combinado y espacio de datos). En cualquier sistema en tiempo real, existe un concepto de ciclo de control/procesamiento, y puede ejecutar el recopilador en cada ciclo, ya sea una colección completa o incremental. –

+0

Una locura y algo no práctico, pero divertido que he hecho: Vamos a ejecutar Lisp en un microcontrolador: http://dmitryfrank.com/articles/lisp_on_mcu –

Respuesta

13

Existen algunas implementaciones que compilan el código C, p. ECL (Common Lisp incrustable). También hay un muy reciente library que compila un subconjunto de Common Lisp a un subconjunto de C++ para el Arduino.

Ha mencionado "en tiempo real" de forma despreocupada, pero obtener trucos en tiempo real con la recolección de basura no es trivial. Existen colectores de basura en tiempo real, pero todavía no conozco ninguna implementación de Lisp que los use.

+2

Por "tiempo real" no me refiero a algo tan cronometrando la necesidad de una recolección de basura concurrente libre de bloqueos, pero la posibilidad de configurar con qué frecuencia y durante cuánto tiempo se permite ejecutar un recolector de basura incremental, o idealmente poder llamarla manualmente donde sé que el código estará esperando de todos modos. En resumen, algo más predecible que detener el programa al azar durante períodos de tiempo no especificados. :) – absence

17

Eche un vistazo a Picobit y code, que es un esquema para microcontroladores. También existe el tinyscheme, pero no sé qué tan adecuado es incorporarlo a procesadores más pequeños.

7

También hay Hedgehog Lisp de Oliotalo, con licencia bajo LGPLv2.1, con biblioteca estándar licenciada bajo BSD.