Project Prometheus is about writing a lisp interpreter that will sit inside my game engine (engine might be the wrong word to use here, as it is rather tiny). As the interpreter sits inside the engine, the goal is to have a live development environment, where the game/application will be programmed in lisp while the game/application is running.
So far, I have thought about several core components that must be part of the whole system:
The interpreter itself, with all the necessary compiler stages. It must accept valid lisp syntax and transform it into a form that the system can interpret at runtime.
The idea is to have most of the core components running in lisp, but I still need a very tiny interop layer for doing basic interaction with the underlying system.
A live development environment must be setup. Maybe I can see if I can hook emacs directly into the system somehow. In this regard,
I am also thinking that perhaps I should do away with files as well as the concept of a compilation unit entirely. If I work at function level, then the engine can store an internal database with the textual representation of all functions. Functions will then be injected into the engine and database when they are saved, and can be retrieved live as well. This is still very much a brainstorming stage, though having a big directory of files to compile seem very clunky to me, and goes against the idea of live development.

Leave a comment