C.impl means “Simple”. The aim is to achieve a close C90 specification functional implementation.
There have been countless number of books and other online and offline introductory and informational material already written on the topic of the C language. Repeating all that material here would be pointless, so I will present the C.impl capabilities only in a brief form.
First, C.impl is written in the way so it is a pure “execution-in-place” interpreter – there is no conversion from source into a tokenised stream, and the entire process runs in a single pass. While there is an execution speed penalty to this, a benefit is the possibility to run sources directly from a read-only memory.
An additional important detail to the fact C.impl is an interpreter – since there is no compilation and linking process, there is no pre-processor. The support for pre-processor commands in the source is reduced to only #include for inclusion of libraries.
//-style source commentaries are supported in the source, along with the standard /* … */ model.
C.impl distinguishes and supports both pointer to constant (eg. const char *) and constant pointer (eg. char const *).
One other important difference between C.impl and the C compilers, is that while main() function is supported and acted on properly, in C.impl it is not required, and if missing, program execution starts from the first source line. Hence, C.impl code may be executed outside of any function body.