C∀: Adding modern programming language features to C. (20th August 2018) - Moss, Aaron; Schluntz, Robert; Buhr, Peter A.
Summary: The C programming language is a foundational technology for modern computing with millions of lines of code implementing everything from hobby projects to commercial operating systems. This installation base and the programmers producing it represent a massive software engineering investment spanning decades and likely to continue for decades more. Nevertheless, C, which was first standardized almost 30 years ago, lacks many features that make programming in more modern languages safer and more productive. The goal of theC ∀ project (pronounced "C for all") is to create an extension of C that provides modern safety and productivity features while still ensuring strong backward compatibility with C and its programmers. Prior projects have attempted similar goals but failed to honor the C programming style; for instance, adding object‐oriented or functional programming with garbage collection is a nonstarter for many C developers. Specifically, C ∀ is designed to have an orthogonal feature set based closely on the C programming paradigm, so thatC ∀ features can be added incrementally to existing C code bases, and C programmers can learnC ∀ extensions on an as‐needed basis, preserving investment in existing code and programmers. This paper presents a quick tour ofC ∀ features, showing how their design avoids shortcomings of similar features in C and other C‐like languages. Experimental results are presented to validate several of the new features.