Почему? | Цели | Статус | Начало работы | Присоединяйтесь к нам
Посмотрите наше рекламное видео от CppNorth. Обратите внимание, что Carbon не готов к использованию.
соответствует этому углеродному коду:
Вы можете вызвать Carbon из C++ без дополнительных затрат и наоборот. Это означает, что вы переносите одну библиотеку C++ в Carbon внутри приложения или пишете новую библиотеку Carbon поверх существующих инвестиций в C++. Например:
Узнайте больше о взаимодействии C++ в Carbon.
Помимо совместимости между Carbon и C++, мы также планируем поддерживать инструменты миграции, которые автоматически преобразуют идиоматический код C++ в код Carbon, чтобы помочь вам переключить существующую кодовую базу C++ на Carbon.
Carbon предоставляет современную систему обобщений с проверенными определениями, но при этом поддерживает дополнительные шаблоны для беспрепятственного взаимодействия с C++ . Проверенные дженерики предоставляют несколько преимуществ по сравнению с шаблонами C++:
Не жертвуя этими преимуществами, дженерики Carbon поддерживают специализацию , гарантируя, что они могут полностью удовлетворить критически важные для производительности случаи использования шаблонов C++. Более подробную информацию о дженериках Carbon см. в их дизайне.
Помимо простого и мощного взаимодействия с C++, шаблоны Carbon можно ограничивать и постепенно переносить в проверенные универсальные шаблоны с высокой степенью детализации и плавным путем эволюции.
Безопасность, и особенно безопасность памяти, остается ключевой проблемой для C++, и именно ее необходимо решить в языке-преемнике. Нашим первоначальным приоритетом и целью является немедленное решение важных, легко висящих задач в сфере безопасности:
Как только мы сможем перенести код в Carbon, у нас будет упрощенный язык с пространством для добавления любых необходимых аннотаций или функций, а также инфраструктура, такая как дженерики, для поддержки более безопасных шаблонов проектирования. В долгосрочной перспективе мы будем опираться на это, чтобы ввести безопасное подмножество Carbon . Это будет большая и сложная задача, и ее не будет в проекте 0.1. Тем временем мы внимательно наблюдаем и учимся на попытках добавить в C++ семантику, безопасную для памяти, например, жизненные аннотации в стиле Rust.
Чтобы сразу опробовать Carbon в своем браузере, вы можете использовать демо-интерпретатор Carbon на сайте Carbon.compiler-explorer.com.
Мы разрабатываем традиционную цепочку инструментов для Carbon, которая может компилировать и связывать программы. Однако Carbon по-прежнему является ранним экспериментальным проектом, поэтому у нас есть только очень экспериментальные ночные выпуски набора инструментов Carbon, доступные для загрузки, и только на ограниченных платформах. Если вы используете последнюю версию Ubuntu Linux или аналогичную версию (Debian, WSL и т. д.), вы можете опробовать их, перейдя на нашу страницу выпусков и загрузив последний tar-файл ночной цепочки инструментов: carbon_toolchain-0.0.0-0.nightly.YYYY.MM.DD.tar.gz
. Тогда вы можете попробовать:
# A variable with the nightly version from yesterday:
VERSION= " $( date -d yesterday +0.0.0-0.nightly.%Y.%m.%d ) "
# Get the release
wget https://github.com/carbon-language/carbon-lang/releases/download/v ${VERSION} /carbon_toolchain- ${VERSION} .tar.gz
# Unpack the toolchain:
tar -xvf carbon_toolchain- ${VERSION} .tar.gz
# Create a simple Carbon source file:
echo " fn Run() { Core.Print(42); } " > forty_two.carbon
# Compile to an object file:
./carbon_toolchain- ${VERSION} /bin/carbon compile
--output=forty_two.o forty_two.carbon
# Install minimal system libraries used for linking. Note that installing `gcc`
# or `g++` for compiling C/C++ code with GCC will also be sufficient, these are
# just the specific system libraries Carbon linking still uses.
sudo apt install libgcc-11-dev
# Link to an executable:
./carbon_toolchain- ${VERSION} /bin/carbon link
--output=forty_two forty_two.o
# Run it:
./forty_two
Напоминаем, что набор инструментов все еще находится на ранней стадии разработки, и многие вещи еще не работают. Пожалуйста, воздержитесь от регистрации большого количества ошибок: мы знаем, что многие части этого еще не работают или могут не работать на всех системах. Мы ожидаем, что выпуски будут гораздо более надежными и надежными, и вы сможете их опробовать, когда мы достигнем рубежа 0,1.
Если вы хотите создать набор инструментов Carbon самостоятельно или думаете о внесении исправлений или улучшений в Carbon, вам необходимо установить наши зависимости сборки (Clang, LLD, libc++) и просмотреть репозиторий Carbon. Например, в Debian или Ubuntu:
# Update apt.
sudo apt update
# Install tools.
sudo apt install
clang
libc++-dev
libc++abi-dev
lld
# Download Carbon's code.
$ git clone https://github.com/carbon-language/carbon-lang
$ cd carbon-lang
Затем вы можете опробовать нашу набор инструментов, в которой есть компилятор Carbon на очень ранней стадии:
# Build and run the toolchain's help to get documentation on the command line.
$ ./scripts/run_bazelisk.py run //toolchain -- help
Полные инструкции, включая установку зависимостей на различных платформах, см. в документации по нашим инструментам для участия.
Узнайте больше о проекте Carbon:
Выступления сообщества, посвященные углероду:
Нам бы хотелось, чтобы люди присоединились к нам и внесли свой вклад в проект. Carbon стремится создать гостеприимную и инклюзивную среду, в которой каждый может внести свой вклад.
Вы также можете напрямую:
Вы можете ознакомиться с некоторыми «хорошими первыми задачами» или присоединиться к каналу #contributing-help
в Discord. Более подробную информацию можно найти в нашей полной документации CONTRIBUTING
.