Amplifying C (2010)
&gt; The system introduces an &quot;amplification&quot; phase where s-expressions are transformed to C code before a traditional build system runs.<p>In other words, this is a compiler.<p>At this point I have to say what I always say: Don&#x27;t compile to C. You will spend forever eliminating undefined behavior, the debugging experience will be bad because you don&#x27;t have direct control over the DWARF DIEs, your compilation will be slower for no reason, you will not be able to add custom metadata to be consumed by optimization passes (for example, aliasing passes), you won&#x27;t have access to special instructions like LLVM add nuw&#x2F;nsw, etc.<p>Virtually all languages I know of that started out compiling to C stopped doing it at some point in their development, for one or more of the above reasons. Skip the major technical overhaul you&#x27;re going to inevitably have to do and just build LLVM IR from the beginning. The LLVM API is excellent, so it ends up being less work to begin with.