Carbon (programming language)

Programming language designed for interoperability with C++

Carbon
A dark-gray circle with a white sans-serif letter "C" in the middle
Logo on Carbon's GitHub organization
FamilyC
Designed byGoogle
Typing disciplineStatic, nominative, partly inferred
Implementation languageC++
LicenseApache-2.0-with-LLVM-Exception
Filename extensions.carbon
Websitegithub.com/carbon-language
Influenced by
C++, Rust, Swift [citation needed]

Carbon is an experimental programming language designed for connectiveness with C++.[1] 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.[2][3][4] The language is expected to have an experimental MVP version 0.1 in 2025 and a production-ready version 1.0 after 2027.[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]

Example

The following shows how a program might be written in Carbon and C++:[12]

Carbon C++
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;
}
#include <numbers>
#include <print>
#include <span>
#include <stdfloat>
#include <vector>
// or: 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;
}

See also

  • iconComputer programming portal

References

  1. ^ "README". Retrieved 6 September 2023. It is designed around interoperability with C++ as well as large-scale adoption and migration for existing C++ codebases and developers.
  2. ^ "Scheduled events for Tuesday, July 19, 09:00 - 10:30". CppNorth, The Canadian C++ Conference, July 17–20, 2022. CppNorth. Retrieved 21 July 2022 – via Sched.com.
  3. ^ "Carbon Language: An experimental successor to C++ - Chandler Carruth - CppNorth 2022". CppNorth. 22 July 2022 – via YouTube.
  4. ^ Bradshaw, Kyle (19 July 2022). "Carbon, a new programming language from Google, aims to be C++ successor". 9to5Google.
  5. ^ Carbon Language: Roadmap, carbon-language, 11 January 2024, retrieved 18 January 2024
  6. ^ "Difficulties improving C++". carbon-language/carbon-lang repo. Google. 21 July 2022 – via GitHub.
  7. ^ Carruth, Chandler; Ross-Perkins, Jon; Riley, Matthew; Hummert, Sidney (23 July 2022). "Evolution and governance". carbon-language/carbon-lang repo. Google – via GitHub.
  8. ^ Illidge, Myles (21 July 2022). "Google's Carbon programming language aims to replace C++". MyBroadband.
  9. ^ Jackson, Joab (20 July 2022). "Google Launches Carbon, an Experimental Replacement for C++". The New Stack.
  10. ^ Mustafa, Onsa (20 July 2022). "Carbon, A New Programming Language from Google As A C++ Successor". PhoneWorld.
  11. ^ "carbon-lang/LICENSE". GitHub. 16 June 2020. Retrieved 24 July 2022.
  12. ^ "carbon-lang/docs/images/snippets.md at trunk · carbon-language/carbon-lang". GitHub. Retrieved 16 December 2023.
  • Carbon-language on GitHub
  • Carbon at the Compiler Explorer (godbolt)
  • v
  • t
  • e
Google free and open-source software
Software
Applications
Programming languages
  • Carbon
  • Dart
  • Go
  • Sawzall
Frameworks and
development tools
Operating systems
Related
  • v
  • t
  • e
Company
Divisions
People
Current
Former
Real estate
Design
Events
YouTube
Projects and
initiatives
Criticism
YouTube
Operating systems
Libraries/
frameworks
Platforms
Apigee
Tools
Search algorithms
Others
File formats
Entertainment
Play
YouTube
Communication
Search
Navigation
Business
and finance
Organization
and productivity
Docs Editors
Publishing
Education
Others
Chrome
Images and
photography
Hardware
Smartphones
Laptops and tablets
Wearables
Others
  • v
  • t
  • e
Advertising
Antitrust
Intellectual property
Privacy
Other
  • Category
Terms and phrases
Documentaries
Books
Popular culture
Others


Stub icon

This Google-related article is a stub. You can help Wikipedia by expanding it.

  • v
  • t
  • e