I am researching the development of a lisp compiler which targets embedded devices (16KB or so of RAM) and low level systems programming (i.e. Kernel modules), both of which necessitate complexity guarantees and access to low level constructs.
Even though I need these constructs, I don't want the language to be "low level", in that I want to provide the user with high level constructs which still deliver low level guarantees (I.e. Lisp macros, support for aspect oriented programming, logic or constraint solving, and functional paradigms, etc.).
My current train of thought is that I need to:
- Create a thin wrapper of s-expression syntax over C99
- Write macros that define higher levels of abstraction, while still exposing low level structs, pointers, etc.
- Feed resultant C99 code into gcc, and get the binary I will run
I want to know if my reasoning is sound on this - would the code generated by such a process be able to operate with such a small memory footprint? I don't intend the language to have a runtime component.