Using C would tie the run-time/compiled implimentation to specific set of platforms/hardware. aka each hardware platform would have it's own specific compiled C quirks/issues to deal with. aka big endian / little endian; 16/32 bit; etc.
A virutal machine is typically what is used when not targeting an actual machine/hardware. aka runtime environment.
Transpiling the language to java or webassembly would provide for wider range of hardware/platform support without requiring specific knowlege compiled C platform quirks -- big endian/little endian machine. Although, transpiling to awk with system() & named pipes/netcat, perl, javascript, and/or creating an excell 16 bit cpu[7]/virtual pc could work too.
"1st class"[0] concept implies there are no restrictions on where given language construct/concept can be used. for example: which side of the assignment operator a programming language concept/construct can be used.
"type inference"[1] is typically an interpreted/virtual machine language feature. aka C++ run time type inference (rtti) is done via instance of a virtual machine.
namespace / scoping is important aspect of modularity / avoiding code coloring issues / automatic translation between formats / 'reactivity'[2]
XL[3], oils/ysh[4], unicorn[5]/unicorn.js[6], awkgo[8], pawk[9] might be of interest.
Would suggest using ' JS/Ocaml/Rust' implimented/running under python (and/or bindings to ocaml/rust).
A related example/demo of this approach would be awk running under go[8] or python[9].
This approach would make it bit easier to experiement with doing modifications/customizations/extensions to 'js/ocaml/rust'.
Permits leveraging things that have already been written. aka editors/debuggers/graphics libraries etc.
Instead of going the 'super' environment, gawk extentions/additions to awk take the extend the 'sub-environment' direction[10] via extensions support for c/c++