.carbon
Carbon is an experimental programming language designed for connectiveness with C++.[2] The project is open-source and was started at Google. Google engineer Chandler Carruth first introduced Carbon at the CppNorth conference in Toronto in July 2022. He stated that Carbon was created to be a C++ successor.[3][1][4] The language is expected to have an experimental MVP version 0.1 in late 2026 at the earliest and a production-ready version 1.0 after 2028.[5]
The language intends to fix several perceived shortcomings of C++[6] but otherwise provides a similar feature set. The main goals of the language are readability and "bi-directional interoperability" (which allows the user to include C++ code in the Carbon file), as opposed to using a new language like Rust, that, whilst being influenced by C++, is not two-way compatible with C++ programs. Changes to the language will be decided by the Carbon leads.[7][8][9][10]
Carbon's documents, design, implementation, and related tools are hosted on GitHub under the Apache-2.0 license with LLVM Exceptions.[11]
The following shows how a program might be written in Carbon and C++:[12]
package Geometry; import Math; class Circle { var r: f32; } fn PrintTotalArea(circles: Slice(Circle)) { var area: f32 = 0; for (c: Circle in circles) { area += Math.Pi * c.r * c.r; } Print("Total area: {0}", area); } fn Main() -> i32 { // A dynamically sized array, like `std::vector`. var circles: Array(Circle) = ({.r = 1.0}, {.r = 2.0}); // Implicitly converts `Array` to `Slice`. PrintTotalArea(circles); return 0; }
import std; struct Circle { std::float32_t r; }; void PrintTotalArea(std::span<Circle> circles) { std::float32_t area = 0; for (const Circle& c : circles) { area += std::numbers::pi * c.r * c.r; } std::print("Total area: {}\n", area); } int main() { std::vector<Circle> circles{{.r = 1.0}, {.r = 2.0}}; // Implicitly converts `vector` to `span`. PrintTotalArea(circles); return 0; }
It is designed around interoperability with C++ as well as large-scale adoption and migration for existing C++ codebases and developers.
This Google-related article is a stub. You can help Wikipedia by expanding it.