C∀ Programming Language

located at University of Waterloo

powered by Huawei

C∀ (C-for-all) is an open-source project extending ISO C with modern safety and productivity features, while still ensuring backwards compatibility with C and its programmers. C∀ is designed to have an orthogonal feature-set based closely on the C programming paradigm (non-object-oriented), and these features can be added incrementally to an existing C code-base, allowing programmers to learn C∀ on an as-needed basis. Traditional languages, Fortran 18 are Cobol 14, and Ada 12, like C∀, are taking an evolutionary approach, adding modern features and fixing problems within the framework of each language. Newer languages, D, Go, Java, and Rust are taking a revolutionary approach, generating new languages with no backwards compatibility requirement.

All of these languages have different syntax and semantics from C, only interoperate indirectly with C, and are not systems languages because of restrictive memory management or garbage collection. As a result, there is a significant learning curve to move to these languages, and C legacy-code must be rewritten. While C++, like C∀, takes an evolutionary approach to extending C, its complex and interdependent features (e.g., object oriented, templates) mean idiomatic C++ code is difficult to use from C, and C programmers must expend significant effort learning C++. Hence, rewriting and retraining costs for these languages (even C++) can be prohibitive for companies with a large C software-base. C∀ circumvents these problems with its backward compatibility requirement and orthogonal feature-set.

The result of this project is a language that is largely backwards compatible with C, but fixes many of the well known C problems while adding modern language-features. To achieve these goals requires a significant engineering exercise involving thinking inside the C box. Without extensions to C, it is unable to cope with the needs of modern programming problems and programmers, putting it in jeopardy. Considering the large body of existing C code and programmers, there is significant impetus to ensure C is transformed into a modern programming-language.

Mailing List (internal only)

Dashboard (internal only)

Bug Tracker (internal only)