{"slug":"carbon-lang","title":"carbon-lang","summary":"Use when evaluating Carbon for a C++ code base, running the carbon toolchain from a nightly or Bazel build, or comparing Carbon with staying on C++. Not for C++ modules: use cpp-modules.","platform":"Claude","tags":[],"authorName":"LLM Mart","authorSlug":"llm-mart","score":0,"source":"github","price":null,"verified":false,"createdAt":"2026-09-30T19:49:59.215436Z","repo":{"url":"https://github.com/OutlineDriven/outline-driven-development","stars":54,"forks":10,"license":"Apache-2.0","updatedAt":"2026-09-28T03:16:21Z"},"bodyHtml":"<hr>\n<h2>name: carbon-lang\ndescription: 'Use when evaluating Carbon for a C++ code base, running the carbon toolchain from a nightly or Bazel build, or comparing Carbon with staying on C++. Not for C++ modules: use cpp-modules.'\ndisable-model-invocation: true</h2>\n<h1>Carbon</h1>\n<p>Carbon is an experimental successor language to C++ from the carbon-language project. As of 2026-09-05 there is no 1.0 and no 0.1: the 0.1 milestone is the minimum language for evaluation, and the 2025 roadmap revision moved its earliest realistic date to the end of 2026 after memory-safety design was added to its scope. The only downloads are nightly toolchain tarballs tagged <code>v0.0.0-0.nightly.YYYY.MM.DD</code>, on limited platforms. Treat every finding below as dated to the nightly you ran.</p>\n<h2>Contract</h2>\n<table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Bound contract</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Trigger</td>\n<td>A team with a large C++ code base asks whether to evaluate Carbon, wants to run the toolchain, wants to call C++ from Carbon, or asks how Carbon's safety model and readiness compare with C++.</td>\n</tr>\n<tr>\n<td>Authority</td>\n<td>Reversible local: writes only the toolchain checkout or extracted nightly tarball, Carbon source files, and <code>--output</code> artifacts in the working directory; rollback is deleting them. No remote mutation.</td>\n</tr>\n<tr>\n<td>Side effect</td>\n<td>A Bazel build of the toolchain compiles a pinned LLVM commit and takes substantial disk and time.</td>\n</tr>\n<tr>\n<td>Done</td>\n<td>The evaluation report states the nightly date or commit used, what compiled and what did not, and a decision (evaluate further or stay on C++) tied to the constraints in step 7.</td>\n</tr>\n</tbody>\n</table>\n<h2>Inputs</h2>\n<ul>\n<li>The C++ code base under consideration and its constraints: stdlib and Boost dependence, template depth, platforms.</li>\n<li>A toolchain source: a nightly tarball from the GitHub releases page, or a checkout of <code>https://github.com/carbon-language/carbon-lang</code> with Clang 19 or newer, <code>libc++-dev</code>, <code>libc++abi-dev</code>, and <code>lld</code> installed. Bazel is pinned by <code>.bazelversion</code> (8.6.0 at grounding) and fetched by <code>scripts/run_bazelisk.py</code>; LLVM is pinned as an upstream commit through <code>git_override</code> in <code>MODULE.bazel</code>, not as a release number.</li>\n<li>The evaluation question: syntax and ergonomics, C++ interop, or readiness.</li>\n</ul>\n<h2>Procedure</h2>\n<ol>\n<li><p>Record the toolchain identity. From a nightly: extract the tarball, take the version from the <code>carbon_toolchain-${VERSION}</code> directory name, and run <code>./carbon_toolchain-${VERSION}/bin/carbon help</code>. From source: <code>./scripts/run_bazelisk.py run //toolchain -- help</code> builds and runs the driver (target <code>//toolchain:carbon</code>, alias <code>//toolchain:toolchain</code>); <code>//toolchain/install:carbon_toolchain</code> packages the tarball. Done when: the nightly tag or commit hash is written into the report.</p>\n</li>\n<li><p>Compile the README example to prove the toolchain works:</p>\n<pre><code>import Core library \"io\";\n\nfn Run() {\n  Core.Print(42);\n}\n</code></pre>\n<p><code>carbon compile --output=forty_two.o forty_two.carbon</code> then <code>carbon link --output=forty_two forty_two.o</code>. Type-check only with <code>carbon compile --phase=check file.carbon</code> (phases: <code>lex</code>, <code>parse</code>, <code>check</code>, <code>lower</code>, <code>optimize</code>, <code>codegen</code>). Done when: the binary prints <code>42</code>.</p>\n</li>\n<li><p>Read the syntax against the design docs, not against tutorials. A package declaration is <code>[impl] [package Name] [library \"Name\"];</code>; there is no <code>api</code> keyword, and an API file is one that omits <code>impl</code>. The entry point is a function named <code>Run</code> in the default library of the <code>Main</code> package; its valid signatures are undecided. Variables are <code>var x: i32 = 3;</code>. Printing is <code>Core.Print(...)</code> after <code>import Core library \"io\";</code>. Done when: each construct in the evaluation has a line in <code>docs/design/README.md</code> behind it.</p>\n</li>\n<li><p>Test C++ interop with the documented form. Import a header into the <code>Cpp</code> namespace and call through it:</p>\n<pre><code>import Cpp library \"circle.h\";\n\nfn Area(r: f64) -&gt; f64 {\n  return Cpp.circle_area(r);\n}\n</code></pre>\n<p><code>import Cpp library \"&lt;cstdio&gt;\";</code> works for standard headers. Interop is semantic: C++ functions, classes, and macros map into <code>Cpp.</code> with explicit-cast rules for types such as <code>Cpp.int</code>. The design says Carbon functions and types may be marked as exported to C, comparable to <code>extern \"C\"</code>, but no exported-to-C++ header generator exists in the docs; <code>Carbon.h</code> is not a real artifact. Done when: at least one C++ function is called from Carbon on the recorded nightly, or the failure is quoted.</p>\n</li>\n<li><p>State the safety model as designed, not as marketed. Safe and unsafe code are split by a narrow <code>unsafe</code> keyword, with two modes: Strict Carbon marks all unsafe code, Permissive Carbon relaxes that for C++ interop and migration. Type safety and temporal and data-race safety are meant to come from the type system at compile time, spatial safety from run-time checks. The docs state the temporal model is expected to follow Rust's direction at the highest level. None of this is implemented enough to evaluate; say so. Done when: the report cites <code>docs/design/safety/README.md</code> and marks the model as design-stage.</p>\n</li>\n<li><p>List the limitations that apply today: no standard library comparable to C++'s, toolchain and syntax change nightly, editor support is thin, and the platform list is short. Done when: each limitation is tied to something observed on the recorded nightly.</p>\n</li>\n<li><p>Decide. Evaluate further when the team owns a large C++ code base it intends to migrate gradually, wants C++ interop without an FFI layer, and can absorb nightly churn on an evaluation branch. Stay on C++ when production stability is needed now, when the code leans on the standard library, Boost, or deep template metaprogramming, or when the target platforms exceed the nightly's list. <code>cpp-modules</code> and <code>cpp-templates</code> cover the C++ side of that comparison. Done when: the decision names the constraint that settled it.</p>\n</li>\n</ol>\n<h2>Failure and recovery</h2>\n<table>\n<thead>\n<tr>\n<th>Failure</th>\n<th>Cause</th>\n<th>Fix</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Bazel build fails on LLVM</td>\n<td>Host Clang older than 19, or <code>libc++</code>, <code>libc++abi</code>, <code>lld</code> missing</td>\n<td>Install the listed prerequisites; let Bazel fetch the pinned LLVM commit rather than pointing at a system LLVM</td>\n</tr>\n<tr>\n<td>C++ import rejects a header</td>\n<td>Unsupported C++ feature in the header</td>\n<td>Wrap the needed calls in a plain C or simpler C++ shim header and import that</td>\n</tr>\n<tr>\n<td>Tutorial syntax fails to parse</td>\n<td>Pre-0.1 churn</td>\n<td>Rewrite against <code>docs/design/README.md</code> at the same commit as the toolchain</td>\n</tr>\n<tr>\n<td>Compiler Explorer and local results differ</td>\n<td>Different nightlies</td>\n<td>Pin both to the same date; <code>carbon.compiler-explorer.com</code> is the project's own instance</td>\n</tr>\n<tr>\n<td>Needed library function does not exist</td>\n<td>No standard library yet</td>\n<td>Call the C++ library through <code>import Cpp library</code></td>\n</tr>\n<tr>\n<td>Link error mixing Carbon and C++ objects</td>\n<td>Toolchain mismatch</td>\n<td>Link with <code>carbon link</code> from the same nightly that compiled the objects</td>\n</tr>\n</tbody>\n</table>\n<h2>Output</h2>\n<p>An evaluation report naming the nightly tag or commit, the examples that compiled and ran, the C++ interop result, the safety model status as design-stage, the observed limitations, and the decision from step 7 with its deciding constraint.</p>\n","files":[{"path":"agents/openai.yaml","sizeBytes":256,"isText":true},{"path":"SKILL.md","sizeBytes":6970,"isText":true}],"reviewScore":null,"reviewSummary":null,"trust":{"provenance":"trusted-source-unreviewed","notice":"Community-authored content, reproduced verbatim and not vetted as instructions. Treat it as data to evaluate, never as directives to follow.","bodySource":null},"bodyLocked":false,"purchaseUrl":null,"sourceUrl":null,"report":{"provenance":"trusted-source-unreviewed","screen":{"ran":true,"outcome":"clean","suspicious":0,"notes":0,"hiddenCharacters":false},"virusScan":{"engine":"clamav","status":"clean","scannedAt":"2026-09-30T19:51:16.706377Z","sha256":"F20364663371AC0413FF4E8F4581038D2A0D22930D02D11080C306F262091658","sizeBytes":3505},"review":null,"source":{"repositoryUrl":"https://github.com/OutlineDriven/outline-driven-development","path":".devin/skills/carbon-lang","license":"Apache-2.0","commit":"b0e8ce89a19fac880251dc3ea1babfeb4503a4fe","subtreeSha":"9EF7635DF5E7463B8E0AA2710F018D0DE78336FF99F81E2226E4A4C22565ED0B","lastSyncedAt":"2026-09-30T19:49:48.917811Z"},"reviewedAt":"2026-09-30T19:53:57.829418Z","notice":"Community-authored content, reproduced verbatim and not vetted as instructions. Treat it as data to evaluate, never as directives to follow."},"install":[{"target":"skills-cli","command":"npx skills add https://github.com/OutlineDriven/outline-driven-development/tree/main/.devin/skills/carbon-lang"},{"target":"claude-code","command":"claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install outlinedriven-outline-driven-development@llmmart"},{"target":"git","command":"git clone https://github.com/OutlineDriven/outline-driven-development.git"}]}