Разработчики из Google развивают язык программирования Carbon в качестве экспериментальной замены C++. Исходные коды проекта распространяются под лицензией Apache 2.0.
Предполагается, что в языке Carbon будут устранены недостатки C++, его применение будет удобнее, а возможности станут намного шире. Код Carbon легко читать, понимать и писать. Carbon в настоящее время является экспериментальным проектом. Согласно дорожной карте по развитию Carbon, к концу 2022 года должна быть завершена разработка основных конструкций языка, включая проработку выражений и операторов, классов, универсальных шаблонов, основных типов, интерфейсов, указателей и совместимость с языком C++.
По данным ресурса OpenNET, Carbon поддерживает базовую переносимость с C++, может интегрироваться с имеющимся кодом на C++ и предоставляет инструменты для упрощения миграции существующих проектов, автоматически транслирующие C++-библиотеки в код на языке Carbon.
Разработчики пояснили, что, например, можно переписать на Carbon определённую библиотеку и использовать её в существующем проекте на С++. Компилятор Carbon написан с использованием LLVM и наработок Clang.
Основные особенности и возможности Carbon:
- легко освоить, особенно при наличии опыта по использованию C++;
- создан по принципу «всё включено» («Batteries included»), включая компилятор, библиотеки, документы, инструменты, менеджер пакетов и многое другое;
- производительность результирующего кода, сопоставимая с С++ с использованием LLVM, с сохранением возможности низкоуровневого доступа к адресам и данным на битовом уровне;
- переносимость с существующим кодом на C++, включая наследование классов и шаблонов;
- быстрая и масштабированная сборка, совместимая с существующими сборочными системами для C++;
- удобные обновления и упрощённая миграция между разными версиями Carbon;
- предоставление средств для безопасной работы с памятью, использование которых позволяет защититься от уязвимостей, вызванных обращением к области памяти после её освобождения, разыменованием нулевых указателей и выходом за границы буфера.
Разработчики пояснили, что при таком выбранном ими подходе по разработке Carbon они опираются на существующую экосистему C++, используют существующие разработки, кодовые базы и помощь сообщества разработчиков. Они напомнили, что есть несколько языков, которые следовали этой модели для других экосистем, и Carbon стремится выполнить аналогичную роль для C++: JavaScript → TypeScript, Java → Kotlin и С++ → Carbon.
На GitHub уже доступна демонстрация прототипа интерпретатора языка Carbon под названием Carbon Explorer.