C∀ (C-for-all) Home Page

C∀ is a language design extending ISO C. The purpose of the project is to engineer modern language features into C in an evolutionary rather than revolutionary way. Java is an example of the revolutionary approach of modernizing C/C++, resulting in a new language rather than an extension of its descendents. C++, Fortran 95 and Cobol 9X are examples of the evolutionary approach where modern language features are added and problems fixed within the framework of an existing language.

The goal of this project is to produce a largely backwards compatible version of C containing many modern language features and fixing some of the well known C problems. Without continued development of the language, C will be unable to cope with the needs of modern programming problems and programmers; as a result, it will fade into disuse. Considering the large body of existing C code and programmers, there is a significant impetus to ensure C is transformed into a modern programming language.

This project differs from C++ in 2 ways:

  1. C++ largely extended the C language, and did not address existing problems. (Two problems addressed were changing the type of character literals from int to char and making the type of an enumerator the type of its enumeration.) C∀ fixes several existing design problems in C.
  2. C++ extended the C type-system using an object-oriented approach with templates. C∀ extends the C type-system using overloading, parametric polymorphism, and type generators. The C∀ type-system is more powerful and flexible, allowing great reuse potential.

C∀ Team



C∀: Some Details

Language Design Issues

Warning: The issues sections document thoughts about ongoing research. It records working ideas and does not necessarily represent a set of complete, well-formed ideas. It also represents the opinions of each member of the Cforall group, not the group as a whole.


C∀ Grammar



Valid XHTML 1.0 Strict