The Carbon project is meant to develop a compiler for a strict, strongly-typed functional programming language similar to OCaml or SML. Among the goals of the projects are:

  • Implementing a functional programming language that is open to other programming languages, and that does not hinder the integration of code written in different langauges with tedious and error-prone bindings.
  • Obtaining a compiler that works as nicely as possible with the development tools of the GNU family (compilers, linkers, assemblers, profilers, debuggers, configuration tools, lexers and parsers generators).
  • Experimenting the compilation and the use of features, such as type classes, not available in OCaml. In general, Carbon aims at being simpler than OCaml, and by being easily coupled with other languages it should favor multi-language development rather than trying to be a all-in-one language. OCaml is being used in the early stages of the development until the compiler will be able to bootstrap itself.
  • Designing a clean and well-structured compiler that is easily understandable and modifiable, especially for didactical purposes.
  • Last but not least, having fun coding a complex compiler.

At this stage the Carbon compiler outputs C code (using some of the GCC C extensions) but other possibilities will be taken into account for the future, in particular:

The runtime system currently makes use of the Boehm garbage collector.

Have fun with Carbon!