Author is thinking correctly. It’s very similar to strategy I gave Jeffrey Rogers in a reproducible builds thread:
I also wrote of an integrated stack of languages that mostly subset or superset on each other to help with reducing fragmentation, bootstrapping trust, eliminating abstraction gap issues, and so on. Quite a few benefits. Detailed proposal was here:
The assembly to LISP to scripting link in first one is easiest route. Build constructs that emulate C functions into it. Then, literally hand-port a small, C compiler to that language. If it compiles, you’re done if you just want simple C without much worries about other factors. If you want top-notch, you’ll have to port LLVM or GCC to it or modify them enough to compile with small, C compiler. I thought about just getting all the older versions in source to compile early one with bootstrapping compiler, then use that to compile a later one, and so on until you get modern one. Then, back that shit up on multiple, write-once/only media so you don’t repeat the process. ;)
Alternatively, just bootstrap the code itself in the Oberon system as it’s open-source, well-documented, safe language, and simple compiler. The odds Oberon is subversive are incredibly slim. Likewise with Scheme’s implemented in textbooks and such.