Carbon Copy, Feb. 2024
Welcome to Carbon Copy, a periodic update on the Carbon language!
We know that there are folks excited about the Carbon language who may lack time to follow the day-to-day work on Discord or Github. Carbon Copy is designed for those people who want a high-level view of what's happening on the project. This issue is a little longer than future ones as we're starting from scratch.
If you'd like to subscribe, you can join announce@carbon-lang.dev. Carbon Copy should arrive roughly every other month.
Spotlight: Carbon goals and roadmap for 2024
As this is our first ever edition, and the first Carbon Copy of 2024, let's look back at 2023.
To borrow from the 2023 retrospective, our roadmap for 2023 focused on getting both the language and tools ready for evaluation.
We made fantastic progress on getting the language (design) ready by closing the most critical design gaps identified at the beginning of the year. While the tooling side made remarkable progress, it also started at a much earlier stage and so has a lot further to go.
We accepted many key proposals on topics such as values, variables, pointers, references, and inheritance. Here is some sample code illustrating some of these features[1]:
base class Base {
var b: i32;
}
class Derived {
extend base: Base;
var d: i32;
}
fn Make() -> Derived {
return {.base = {.b = 4}, .d = 7};
}
We also engaged more deeply with the C++ community, but it's clear we need a working compiler to further the conversation. This need for tooling is driving our 2024 priorities, with a potential v0.1 release in 2025. Get more details on our deliverables in the announcements below.
To see what v0.1 might include, check out "Defining the 0.1 language" and expected milestones.
Top announcements
Announcement: 2024 roadmap from #3564
- Objective for 2024: a working toolchain that supports C++ interop
- Building realistic Carbon code for interesting interop with C++
- Building realistic C++ code for interesting interop with Carbon
- The interop itself allows a single program mixing the two languages
- Key results for 2024
- Carbon's toolchain implements enough of the language to build realistic code
- Carbon's toolchain can build C++ code
- Carbon's toolchain works with existing, simple C++ build systems
- Carbon has a design and toolchain implementation of basic C++ interop
- Give talks at 2-3 conferences covering 3-4 different Carbon topics
Announcement: Focus implementation effort on the toolchain #3532
Talks and blogs from the team in 2023
Talks:
- Carbon’s Successor Strategy: From C++ interop to memory safety, C++Now
- Definition-Checked Generics (Part 1, Part 2), C++Now
- Modernizing Compiler Design for Carbon’s Toolchain, C++Now
Recent Carbon blog posts
- The little things #1: Access control - Coding in Old Entish
- Improving the user-facing Carbon Explorer output
- Summer of Code: Editor Integration
Top proposals and issues from 2023
- Variadics #2240
- Ranged-based for for user-defined types #1885
- Character literals #1964
- Values, variables, pointers, and references #2006
- Associated constant assignment versus equality #2173
- Pattern matching syntax and semantics #2188
- Assignment statements #2511
- Simplified package declaration for the
Mainpackage #2550 - Termination algorithm for impl selection #2687
- Consistent
classandinterfacesyntax #2760 - Functions, function types, and function calls #2875
- Checked generics calling templates #2153
- Name conflicts between base and derived classes #2355
Other notes
If you like this set of links, you'll love the weekly meeting notes, from the Carbon Weekly Sync.
Wrap-up
Don't forget to subscribe; you can join announce@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!