十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Carbon Language 2024 路线图:从实验设计转向可用工具链与 C++ 互操作(含 2023 年度回顾)

Carbon Language 2024 路线图:从实验设计转向可用工具链与 C++ 互操作(含 2023 年度回顾) Carbon Language 2024 路线图从实验设计转向可用工具链与 C 互操作含 2023 年度回顾【免费下载链接】carbon-langCarbon Languages main repository: documents, design, implementation, and related tools. (NOTE: Carbon Language is experimental; see README)项目地址: https://gitcode.com/GitHub_Trending/ca/carbon-lang本文基于 Carbon Language 官方提案 proposals/p003564-roadmap-for-2024-and-a-retrospective-for-2023.md 整理。该提案宣布 Carbon 在 2024 年将重心从让语言与工具就绪、供外界评估转向实现一个可工作的 Carbon 工具链并打通 Carbon ↔ C 双向互操作。读者读完本文可以完整掌握 2024 路线图的四大目标、2023 年度关键结果的达成情况以及这些规划在仓库源码与后续路线图中的落地证据。提案摘要2024 的关键词是实现2024 年路线图提案的核心主张只有一句话打造一个可工作的 Carbon 工具链并使其支持 Carbon ↔ C 互操作。与往年相比这一年显著更强调实现而非设计。提案明确解释了这一转变的动因外部关注者在尝试评估或参与 Carbon 时越来越被缺乏实现支持所阻塞——无论是语言特性language features还是编译器功能compiler functionality都处于空缺状态经过数年的推进Carbon 的设计已经足够成熟足以支撑这种规模的实现工作因此现在是采取更聚焦路线图的合适时机。换句话说2024 年不再以设计是否完整为第一优先而是以能否用真实编译器编译出真实程序为验收标准。2024 年四大目标详解提案为 2024 年提出了四个相互依赖的目标它们共同构成了从语言实现到互操作落地再到社区共建的完整链条目标内容本质1在工具链中实现足够的 Carbon 语言构建起互操作中Carbon 一侧的有意义代码编译器本体能力2教会工具链借助 Clang编译足够的 C 代码构建起互操作中C 一侧的有意义代码复用 Clang 前端3实现 Carbon 与 C 代码之间的互操作本身双向桥接机制4将上述工作的方方面面分享给更广泛的 Carbon、C 与开源社区社区建设这四个目标之间存在严格的依赖关系目标 1 是目标 3 的前提Carbon 侧必须能产出可链接的真实代码目标 2 是目标 3 的另一半C 侧由 Clang 承担而目标 4 贯穿始终。提案特别强调2024 年的路线图远比起往年更侧重实现这种取舍本身也是对外界反馈的回应人们评估 Carbon 时最需要看到的是能跑起来的东西。与项目里程碑的关系为什么聚焦0.1 语言要理解这份路线图的价值坐标需要回到项目里程碑体系 docs/project/milestones.md。提案提到的 0.1 语言 MVP 里程碑 是 Carbon 供 C 用户开始严肃评估的第一个可交付物其核心要求包括语言侧包、库、导入、命名空间等代码组织特性用户自定义类型、继承含虚派发、运算符重载、sum types、泛型checked generics 与集成模板函数重载、控制流、match、错误处理等互操作侧从 Carbon 调用 C 函数/类型、向 C 导出 Carbon 函数/类型、导入 C 模板、异常处理策略配置、基础类型与字符串/容器类型的透明映射等项目侧一个能即插即用地充当 Clang C 工具链、支持最常见 Make/CMake 构建系统、并在 Windows/macOS/Linux 上可安装运行的 Carbon 工具链以及详细的 memory safety 策略。2024 路线图正是为补齐项目侧这一块而设。里程碑文档中还有一个重要观察0.1 标准库应大量借助 C 标准库通过互操作因此互操作不只是锦上添花而是 0.1 里程碑得以成立的基础设施。这与提案将互操作列为年度核心目标完全一致。2023 年度回顾为评估而准备的一年提案对 2023 年的总结是执行得非常出色但结果喜忧参半。2023 路线图的主题是让语言和工具都为评估做好准备并在 C 社区建立支撑评估的语境。逐项来看语言设计fantastic 的进展2023 年在语言设计就绪上取得了显著进展建立了 里程碑定义为项目提供了跨年度的方向锚点关闭了年初时设计中最关键的一批缺口剩余缺口要么风险更低、要么接近完成、要么真的需要互操作才能有效探索。换句话说到 2023 年底设计层面已不再构成项目的主要瓶颈——这正是 2024 年可以放手去做的前提。工具链进展巨大但任重道远提案承认工具侧同样取得了巨大进展但还有很长的路要走并明确工具链成为 2024 年的焦点。这一判断在仓库中得到了延续——proposals/p003532-focus-implementation-effort-on-the-toolchain.md 提议将接下来 12 年的实现精力全部集中在工具链上Explorer 的代码将保留、可构建、通过基础测试作为语言特性探索的基线不再优先扩展 Explorer 的特性覆盖停止对其大规模 fuzzing 与测试扩充长期来看考虑在工具链的Semantics IR之上重建 Explorer 的抽象机语义执行能力。从当前仓库的目录结构可以印证这一转型已经落地仓库顶层已不存在 Explorer 代码目录取而代之的是体量庞大的 toolchain 目录内含 lex、parse、check、sem_ir、lower、driver、codegen、diagnostics 等完整编译器管线模块。提案中工具链正快速成熟、其核心架构经受住了考验的表述与这一目录结构相互印证。社区参与工具缺失成为瓶颈2023 年 Carbon 团队与 C 社区在技术底层问题上进行了更深入的互动但反馈表明在拥有远更完整的工具之前外部社区的深度参与难以加深更难以扩展到更大规模的社区。这一剩余工作量巨大 工具成为外部参与的瓶颈的组合直接驱动了 2024 年的优先级排序。2023 年关键结果逐项盘点提案将 2023 年的关键结果key results逐一拆解如下明确定义评估用 MVP即 0.1 语言—— ✅ 完成对应 milestone-01完整设计覆盖 0.1 语言必需特性—— 高风险、非互操作特性基本完成其余特性为工具链与互操作让路被搁置到次要位置在 Carbon Explorer 中完整实现 0.1 语言—— 存在微妙之处只需完成足以验证设计内聚性与行为的设计验证量。团队认为 Explorer 在 2023 年达到了这一目标随后 全面转向工具链因此该项在某种意义上因构造而完成能构建最小混合 C/Carbon 程序的工具链—— 未完成。正如 2023 路线图所预告的团队本就没指望在年底前完成它这项任务顺理成章地成为 2024 年的核心焦点在 23 场会议上做 34 个不同主题的演讲—— 只到达 1 场会议但覆盖了 3 个以上主题团队希望工具链更完整后能有更多适合更多会议的主题。提案对 2023 年的整体定调是2023 年相当了不起我们达成了项目过去一年中一些最重要的里程碑。仓库中的实证互操作的真实形态2024 路线图目标 3 所说的互操作本身在仓库中可以找到具体的、可编译的例证。位于 examples/interop/cpp/ 下的示例展示了互操作在代码层面的真实形态。以 examples/interop/cpp/hello_world.carbon 为例Carbon 通过import Cpp library语法直接引入 C 标准库头文件然后像调用本地函数一样调用putchar、puts、write甚至直接使用Cpp.std.cout 流式输出import Cpp library cstdio; import Cpp library iostream; import Cpp library string_view; import Cpp library unistd.h; fn HelloStdio() { Cpp.puts(Cpp.std.data(Hello world!\0)); } fn HelloIostreams() { Cpp.std.cout Hello world!\n; }代码中的 TODO 注释如u8应隐式转换为i32、需要变参函数支持、需要字符串字面量到const char*的转换等恰好呼应了路线图中剩余缺口要么风险更低、要么几乎完成的表述——它们都是互操作成熟度提升过程中仍在逐步补齐的细节。更复杂的 examples/interop/cpp/socket.carbon 展示了用 Carbon 借助 POSIX 网络 APIsocket/bind/listen/accept/read实现一个监听 8081 端口的 TCP 回显服务包括通过import Cpp inline ...内联注入 C 代码来绕过htons宏限制、以及用unsafe as完成sockaddr_in6*到sockaddr*的类型转换。这两个文件均通过 examples/interop/cpp/BUILD 中的carbon_binary规则构建是工具链能在现实构建系统中编译互操作代码的直接证据。此外examples/advent2024/ 目录下积累的 15 天 Advent of Code 解答也印证了提案发布之后工具链能力的快速爬升——这正是 2024 路线图目标 1Carbon 侧能构建有意义代码的延续性成果。从 2024 看后续路线图的连续性虽然本提案本身只规划到 2024 年但它的四个目标在仓库后续文档中得到了清晰承接。当前版本的路由图 docs/project/roadmap.md 将 2025 年目标定义为C 互操作演示 内存安全设计访问大部分非模板 C API从 Carbon 侧在 C 中访问非泛型 Carbon API更新并细化 safety 策略设计基于编译期类型系统的 temporal时域与 mutation变更内存安全。而 proposals/p004880-safety-milestones-and-a-2025-roadmap.md 在对 2024 年的回顾中确认了本提案目标的落地情况Clang 已集成进工具链、首个 C 头文件导入已落地、Core.Int泛型整数类型替代了硬编码的i32、团队在 C/LLVM 会议上做了 5 场演讲加 1 场小组讨论。这些事实表明p003564 提出的聚焦实现的 2024确实成为项目加速的转折点。结语一份为能跑起来而写的路线图p003564提案虽然篇幅精炼却是 Carbon 项目策略史上的关键转折它把项目从设计驱动的探索期推进到实现驱动的工具链期并将 C 互操作确立为 0.1 里程碑乃至整个实验成败的支点。理解这份提案就能理解为什么当前仓库中 toolchain/ 占据了绝对的主体地位、为什么互操作示例被单独陈列在 examples/interop/cpp/、以及为什么后续路线图始终围绕互操作 内存安全双主线展开。对于想要评估 Carbon 现状或参与贡献的开发者这份 2024 路线图与 2023 回顾提供了最准确的出发点它回答了Carbon 现在在做什么以及为什么这么做。【免费下载链接】carbon-langCarbon Languages main repository: documents, design, implementation, and related tools. (NOTE: Carbon Language is experimental; see README)项目地址: https://gitcode.com/GitHub_Trending/ca/carbon-lang创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表