Here is the new Carbon Copy, your periodic update on the Carbon language!
Carbon Copy is designed for those people who want a high-level view of what's happening on the project. If you'd like to subscribe, you can join anno...@carbon-lang.dev. Carbon Copy should arrive roughly (sometimes very roughly) every other month.
We continue to work on the toolchain, which is now available experimentally in the Compiler Explorer. https://carbon.compiler-explorer.com/
Although you can get nightly builds to run on your Linux host, this may be the fastest way to experiment with Carbon.
Compiler Explorer no longer uses the prototype interpreter (called the Carbon Explorer) since the toolchain is now far enough along, and is more representative of Carbon's current design.
Thanks to Matt Godbolt!
Looking back at 2024, Carbon has made great progress. We set out a number of ambitious goals in our roadmap and overall, we achieved the majority of what we set out for 2024.
A handful of highlights, among so many, from 2024:
The toolchain: This year, we started building the toolchain. It allows you to compile Carbon code and execute it, and nightly releases for Carbon are available.
Advent of Code: Although the toolchain is still experimental, it has enough support to solve Advent of Code 2024 in Carbon! Check out these thirteen solutions for 2024 challenges.
Variadics: Designing a variadics system with good ergonomics that can be definition-checked efficiently turned out to be a much deeper challenge than we anticipated, but after more than 2 years, it was merged on Dec. 10th, 2024. You can catch geoffromer@'s talk from CppNow here.[1]
Clang: We made strides in C++ interop by integrating Clang into the toolchain, such that both C++ and Carbon can be compiled.
VS Code integration: VS Code has experimental support for Carbon now via an extension.
Ahead in 2025
We have two areas of focus for 2025:
Get a major chunk of our C++ interop working. The Carbon experiment needs to show that C++ interop works, so C++ interop has always been part of the roadmap. It is also a way to make capabilities available to Carbon that may otherwise be farther out on the implementation list. Note: This is scoped to non-template C++ APIs.
Build a concrete and specific design for memory safety in Carbon. To understand memory safety in Carbon, we should illustrate exactly what it looks like to migrate existing unsafe C++ to Carbon, and then make it more safe by integrating memory safe parts of Carbon into it.
The addition of a safety design is a shift in our milestones for v0.1, and you can see the difference here. Both of these are fundamental parts of v0.1, and will take long enough that the earliest date for v0.1 is pushed out to the end of 2026. See all the proposed key results for 2025 in the new roadmap.
We could not have made it this far without our amazing community, and we look forward to working together this year. Stay tuned!
References:
https://github.com/carbon-language/carbon-lang/pull/4880: "Safety milestones and a 2025 roadmap"
https://github.com/carbon-language/carbon-lang/blob/trunk/proposals/p4880.md
https://github.com/carbon-language/carbon-lang/blob/trunk/proposals/p4880.md#retrospective-on-2024
https://github.com/carbon-language/carbon-lang/blob/trunk/docs/project/milestones.md
https://github.com/carbon-language/carbon-lang/blob/trunk/docs/project/roadmap.md
2024 version of the roadmap: https://github.com/carbon-language/carbon-lang/blob/10189bbb78db7b143a6d9d62797fc9698363fe4d/docs/project/roadmap.md
Approved & merged proposals since last newsletter:
Destructor syntax #5017
The Core.Array type for direct-storage immutably-sized buffers #4682
Safety milestones and a 2025 roadmap #4880
No predeclared identifiers #4864
Variadics #2240
New leads questions:
Precedence diagram is missing partial operator #5010
Out-of-line destructor syntax ambiguity #4999
Should it be valid to define a package named r#Core? #4908
What to do with impl Interface1 as Interface2? #4853
Syntax for implementing a single-function interfaces #4711
Declaration and definition of impls and their associated functions #4672
Blog post: Carbon is not a programming language (sort of) via Mond
Update from last issue:
(now with video) "The Carbon Language: Road to 0.1", NDC {TechTown} (video, slides)
If you want more current discussion, check out the weekly meeting notes from the Carbon Weekly Sync.
Don't forget to subscribe! You can join anno...@carbon-lang.dev. If you have comments or would like to contribute to future editions of Carbon Copy, please reach out. And, always, join us any way you can!
Buckminsterfullerene-ly yours,
Josh, Wolff, and the Carbon team