ARN

Carbon language aims to be a better C++

Experimental successor to C++ strives for C++ performance and compatibility while avoiding its technical debt and ‘extreme difficulty’ to improve.

Is it time for a successor to the stalwart C++ language? A group of developers at Google and other organisations believe it is.

The group is behind an experimental language called Carbon, which offers interoperability with C++ while overcoming purported difficulties in improving the legacy language. 

Carbon attempts to overcome these obstacles by starting over with solid language foundations such as modern generics, a simple syntax, and modular code organisation while avoiding the “decades of technical debt” of C or C++. However, they emphasise that Carbon is not ready for use.

The developers of Carbon acknowledge that C++ remains the dominant programming language for building performance-critical software and has massive and growing code bases and investments. Carbon presents a successor approach rather than an evolution and is intended to enable migration for existing C++ code bases and C++ developers.

Carbon was the subject of a presentation last week at the CppNorth conference in Toronto. Resources for Carbon can be accessed from the project’s GitHub repo. Project developers list the following requirements for a C++ successor, stressing that their approach can be built on top of the C++ ecosystem:

  • Matching C++ in performance
  • Seamless, bidirectional interoperability with C++
  • A gentle learning curve
  • Comparable expressivity
  • Scalable migration

Carbon is intended to be as analogous to C++ as TypeScript is to JavaScript and Kotlin is to Java. The designers intend for Carbon to support performance-critical software, software and language evolution, and have code that is safe and easy to read and write. 

Practical safety and testing mechanisms and fast and scalable development also are goals. Explicit non-goals include having a stable ABI (application binary interface) for the entire language and library and perfect backward or forward compatibility.

At present, there is no working Carbon compiler or toolchain but developers can examine a demo interpreter for the language. Developers can participate in a design discussion forum on GitHub. An open source project structure, governance model, and evolution process also are core aspects of Carbon.