Project C² (See squared) aims to build a simple lightweight C-style programming language for near-hardware system development - written in C# and using GNU GAS as a back-end.

Syntax is to be influenced by C# and C++. Bringing the best of both worlds in terms of power, performance and safety.

C² will make a terrific beginner's language thanks to it C#-like core paradigm.

The assembled output of the compiler is going to be binary compatible with C/C++.

Here are some key points summarized:

  • System programming language
  • Unmanaged - directly compiled into machine code
  • Object-oriented at its core: Classes, Methods, Properties, Fields. Delegates, Events and Interfaces.
  • C# syntax
  • Objects as values by default.
  • Reference-counted pointers (^).
  • Unsafe context: Standard pointers (*), arithmetics and manual memory management.

Some other goals:

  • Object-oriented runtime library - modeled on the .NET Base Class Library (BCL).
  • Binary compatibility with C/C++.
  • Interoperability with C/C++.

 To be explored in a possible future:

  • A bootstrapped compiler - written in the language itself. Enabling more advanced tooling.
  • Features from C#: Enumerable generators, Extension methods, Async etc.
  • IL metadata interface - to describe the code as well as permit dynamic linking and interoperability with .NET.
  • Other back-ends.

Development

Roadmap

  1. Prototype/Proof-of-concept in C# (In Progress)
    1. Turing-completeness
  2. C² compiler - built in C#
    1. Basic libraries
  3. C² compiler - built in C²

Latest version

Check the develop branch for the latest version.

Participation

Do you want to contribute? Please, join the Discussion and start coding!

Last edited Jun 16, 2014 at 5:57 PM by RobertSundstrom, version 30