中文(简体)
为什么? |目标|状态 |开始使用 |加入我们
请参阅 CppNorth 的公告视频。请注意,Carbon 尚未准备好使用。
对应于这个Carbon代码:
您可以从 C++ 调用 Carbon,无需任何开销,反之亦然。这意味着您可以在应用程序中将单个 C++ 库迁移到 Carbon,或者在现有 C++ 投资的基础上编写新的 Carbon。例如:
阅读有关 Carbon 中的 C++ 互操作的更多信息。
除了 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 致力于营造一个人人都能做出贡献的热情和包容的环境。
您还可以直接:
您可以查看一些“首先要解决的问题” ,或者加入 Discord 上的#contributing-help频道。有关更多详细信息,请参阅我们完整的CONTRIBUTING文档。
#contributing-help
CONTRIBUTING