Русский
Почему? | Цели | Статус | Начало работы | Присоединяйтесь к нам
Посмотрите наше рекламное видео от 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 . Тогда вы можете попробовать:
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 .
#contributing-help
CONTRIBUTING