Having worked on another language that targetted the C language, and having 
looked at that time for a LLVM backend, the most problematic thing with the C 
backend was when the C code had errors and failed to compile. You get C errors 
that are difficult to trace back to the original code.

However, as user of Nim, I never felt this way. The C backend must be strong 
enough that it appears completely transparent. As a matter of fact, I had 
forgotten that Nim did not compile to native code because it's so well 
integrated.

Other reasons why you would like to avoid targetting C directly would be to 
link to symbols that are reserved keywords in C (and would not compile), or to 
use other low level features that C does not give access to: specific memory 
layouts, use of registers, ... 

Reply via email to