HACKER Q&A
📣 danielEM

Who is developing a programming language that compiles to C?


What is your programming language and it's status? Can you share a link to its code?


  👤 thesuperbigfrog Accepted Answer ✓
Not my project, but Chicken Scheme is an awesome language that compiles to C:

https://www.call-cc.org/

Source download: https://code.call-cc.org/


👤 jhonsrid
The language with a rude name sometimes known as 'BF' compiles trivially to C (from C), for instance:

  #include 
  int main() {
      int c;
      printf("#include \nint main() {\nchar a[30000] = {0}; char *p = a;\n");
      while((c = getc(stdin)) != EOF) {
          switch(c) {
              case '>': printf("++p;\n"); break;
              case '<': printf("--p;\n"); break;
              case '+': printf("++*p;\n"); break;
              case '-': printf("--*p;\n"); break;
              case '.': printf("putchar(*p);\n"); break;
              case ',': printf("*p = getchar();\n"); break;
              case '[': printf("while (*p) {\n"); break;
              case ']': printf("}\n"); break;
          }
      }
      printf("return 0;}\n");
      return 0;
  }
(Though sorry to any BF fans if I've missed something in the implementation) ;-)

👤 stefanos82
Nim, Crystal, Nelua...just search for "transpilers to C" and you will get lots of examples.

👤 samuba
V compiles to C https://vlang.io/

👤 mathverse
Nim

👤 ingigauti
I'm creating a new language but it "compiles" to C# - plang.is

👤 rnvannatta
https://github.com/rnvannatta/vanity-scheme

I am currently making a r7rs scheme derivative that compiles to C. The lofty goal is parallel fibers.

It's in extreme early stages, and I don't expect anyone will use it other than me, but I already like it. The compiler has been self hosted for a few months now. It has a cool FFI that you can see in use in the demos folder. Working on adding header generation to the module system.

While Chicken Scheme is cool, I don't think it'll be parallel, and not in the way I want it to be, and I am willing to make a lot of compromises Chicken isn't to get there. As mentioned, I am willing to settle with fibers for parallelism, and heavily eschewing side effects, making changes from r7rs to get there. For example, there will be no dynamic-wind provided and parameter objects will have different, thread friendlier, semantics.

----

My main reason for choosing C as a transpile is that it's easier to lean on gcc and C11 than it is to write my own codegen, and LLVM is too unstable for me to handle. I started writing this in June 2022, and since then LLVM has had 3 backwards compatibility breaking major release and millions of lines of code changed.


👤 worthless-trash
Not me personally, but gnucobol compiles to C ( https://gnucobol.sourceforge.io/ )

👤 JaDogg
[delayed]

👤 nbenitezl
Vala - https://vala.dev/ compiles to C and is tailored to GNOME ecosystem.

👤 gsuuon
I have a toy language I play around with that's just in specifications stage. Not mine but an interesting compile-to-c language: https://github.com/koka-lang/koka. Functional, effects, no-GC.