# Carbon language ## **The Carbon Language project is an experiment exploring a future direction for the C++ programming language.**

Carbon goals | Carbon and C++ | Take a look | Join us

Quicksort code in Carbon. Follow the link to read more.
**Fast and works with C++**
- Performance matching C++ using LLVM, with low-level access to bits and addresses - Interoperate with your existing C++ code, from inheritance to templates - Fast and scalable builds that work with your existing C++ build systems **Modern and evolving** - Solid language foundations that are easy to learn, especially if you have used C++ - Easy, tool-based upgrades between Carbon versions - Safer fundamentals, and an incremental path towards a memory-safe subset **Welcoming open-source community** - Clear goals and priorities with robust governance - Community that works to be welcoming, inclusive, and friendly - Batteries-included approach: compiler, libraries, docs, tools, package manager, and more ## Carbon goals We believe Carbon must support: 1. Performance-critical software 2. Software and language evolution 3. Code that is easy to read, understand, and write 4. Practical safety and testing mechanisms 5. Fast and scalable development 6. Modern OS platforms, hardware architectures, and environments 7. Interoperability with and migration from existing C++ code Many languages share these goals, and they can often be addressed independently in a language's design. For the Carbon project, they are prioritized in that order to help make clear what tradeoffs we intend to make. Read the [language overview](docs/design/) for more on the language design itself, and the [goals](docs/project/goals.md) for more on these values. ## Carbon and C++ If you're already a C++ developer, Carbon should have a short learning curve. It is built out of a consistent set of language constructs that should feel familiar. C++ code like this: A snippet of C++ code. Follow the link to read it. can be mechanically transformed to Carbon, like so: A snippet of converted Carbon code. Follow the link to read it. without loss of performance or readability. Yet, translating C++ to Carbon isn't necessary; you can call Carbon from C++ without overhead and the other way around. You can port your library to Carbon, or write new Carbon on top of your existing C++ investment. Carbon won't add a sea of dependencies or slow down your performance-critical code. For example: A snippet of mixed Carbon and C++ code. Follow the link to read it. In terms of safety, any language that can seamlessly call C++ will not be perfectly safe in every dimension. However, Carbon's design encourages you to use safe constructs where possible. Ultimately, C++ carries a significant historical legacy, including around ABI stability, that constrains its evolution. Carbon is an attempt to set a new direction for C++ developers that allows for fast development, flexibility, and delight without sacrificing performance, interoperability, and familiarity. Read more about [C++ interop in Carbon](docs/design/interoperability/philosophy_and_goals.md). ## Take a look Learn more about Carbon's design: - [Project goals](docs/project/goals.md) - [Language overview](docs/design/) - [Executable semantics](executable_semantics/) ## Join us Carbon is committed to a welcoming and inclusive environment where everyone can contribute. - To watch for major release announcements, subscribe to [our Carbon release post on GitHub](https://github.com/carbon-language/carbon-lang/discussions/1020) and [star carbon-lang](https://github.com/carbon-language/carbon-lang). - To join the design discussion, join our [our Github forum](https://github.com/carbon-language/carbon-lang/discussions). - See our [code of conduct](CODE_OF_CONDUCT.md) and [contributing guidelines](CONTRIBUTING.md) for information about the Carbon development community. - We discuss Carbon on Discord; a public link will be forthcoming.