新闻详情

新闻详情

首页 / 资讯中心 / 详情

Carbon 语言:C++ 替代路线上的系统编程实验,从 Hello 到 C++ 互操作的最短路径

发布时间:2026/9/2 12:43:32来源:尧图网络
Carbon 语言:C++ 替代路线上的系统编程实验,从 Hello 到 C++ 互操作的最短路径
Carbon 语言C 替代路线上的系统编程实验从 Hello 到 C 互操作的最短路径【免费下载链接】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团队里那套 C 代码库还要再维护十年你想看看有没有更省心的写法。Carbon 语言是 Google 主导的 C 替代方案走继任者路线不继承 C 的历史包袱但要能和存量 C 代码长期共存。目前它仍是 0.1 之前的实验项目工具链可用但别指望生产环境。它到底是什么值不值得看一句话定位Google 主导的实验性编程语言定位是 C 的继任者与 C 替代路径当前状态是 0.1 里程碑前的实验阶段版本号以仓库最新 release 为准。它值得看一眼的原因浓缩成几条LLVM 后端性能对标 C与 C 双向无缝互操作定义检查的现代泛型系统渐进式走向内存安全子集模块 import 取代头文件装好跑通验证Carbon 安装步骤只有一条最短路径源码构建。没有预编译的通用安装包可以装。LinuxUbuntu 为主的路径# 安装依赖Clang、LLD、libc sudo apt update sudo apt install clang libc-dev libcabi-dev lld # 拿源码仓库为只读参考clone 到本地再动 git clone https://gitcode.com/GitHub_Trending/ca/carbon-lang cd carbon-lang其他平台macOS、WSL 等以 docs/project/contribution_tools.md 里的依赖说明为准命令形态相同。构建工具链用仓库自带的 Bazel 封装脚本第一次构建会拉依赖耐心等待# 构建工具链并打印帮助验证构建成功 ./scripts/run_bazelisk.py run //toolchain -- help看到子命令用法说明compile、link、format、check 等就说明装好了。顺手验证一下能跑把 examples/hello_world.carbon 编译、链接、执行./scripts/run_bazelisk.py run //toolchain -- compile --outputhello.o examples/hello_world.carbon ./scripts/run_bazelisk.py run //toolchain -- link --outputhello hello.o ./hello预期输出就一行Hello world!。能打印出来环境就算通了。读第一份代码hello_world 整个文件的核心只有 5 行逐块拆开看import Core library io; fn Run() { Core.PrintStr(Hello world!\n); }import Core library io;导入标准库 Core 的 io 子模块文件从此可以调Core.PrintStr。fn Run()每个可执行模块约定用Run作入口替代 C 的main。函数体里Core.PrintStr是全限定调用模块边界决定你看不到别处的未导入名字。对照 Go 来看差异点就四个。import 是真模块不是头文件。没有声明/定义两份文件的问题也不存在 include 顺序import Core library io;Go 里import fmt之后用fmt.PrintlnCarbon 几乎同构只是模块来自Core。类型写在名字后面冒号分隔。和 Go 的var a int只差一个冒号var a: i32 0;Go 里a是intCarbon 里显式写i32位宽不靠平台决定。传址要显式写 ref不是隐式指针。Go 里要改外部变量就传*intCarbon 把会改你的实参写在参数表里fn Reset(ref counter: i32) { counter 0; }没写ref就是值拷贝调用方不会被改语义一眼可见。循环用for ... in绑定元素。和 Go 的range一个思路for (n: i32 in Core.Range(10)) { Core.PrintStr(n\n); }换个任务练手任务打印斐波那契数列前 10 项每项一行。思路一句话滚动两个变量每次输出当前值再往前推一格。import Core library io; fn Run() { var a: i32 0; var b: i32 1; for (i: i32 in Core.Range(10)) { Core.Print(a); var next: i32 a b; a b; b next; } }把它存成fib.carbon走和前面一样的三步./scripts/run_bazelisk.py run //toolchain -- compile --outputfib.o fib.carbon ./scripts/run_bazelisk.py run //toolchain -- link --outputfib fib.o ./fib预期输出0 1 1 2 3 5 8 13 21 34再往上看两步Carbon 泛型定义检查的泛型定义处就完成类型检查还支持可选的类型擦除比 C 模板的实例化报错路径清晰得多。设计文档在 docs/design/generics/。Carbon 与 C 互操作目标是双向调用C 侧继承、模板都能参与一个 C 库可以先迁 Carbon 而不带动周边。哲学文档在 docs/design/interoperability/。Bazel 构建整个工具链和示例都跑在 Bazel 上examples/里每个目录都有现成的 BUILD 文件可对照。工具链总览看 toolchain/docs/README.md。接着去哪语言规范docs/spec/README.md设计文档总入口docs/design/README.md可跑的示例目录examples/贡献入口CONTRIBUTING.mdCarbon 语言现在的定位就是 C 的继任者实验场。下一步很简单把examples/下任意一个.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),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

WSL 时间同步排障:睡眠回拨与时区漂移一次修好 2026/9/2 13:34:38

WSL 时间同步排障:睡眠回拨与时区漂移一次修好

WSL 时间同步排障:睡眠回拨与时区漂移一次修好 【免费下载链接】WSL Windows Subsystem for Linux 项目地址: https://gitcode.com/GitHub_Trending/ws/WSL 凌晨三点,CI 挂了。失败日志的时间戳是 02:57,你本地明明是 05:12——差出两…

阅读更多 →
3步自建网页监控服务:changedetection.io 部署与实战指南 2026/9/2 13:34:38

3步自建网页监控服务:changedetection.io 部署与实战指南

3步自建网页监控服务:changedetection.io 部署与实战指南 【免费下载链接】changedetection.io Best and simplest tool for website change detection, web page monitoring, and website change alerts. Perfect for tracking content changes, price drops, rest…

阅读更多 →
Obsidian + Codex 搭建本地知识库:AI 笔记整理与自动化工作流实战 2026/9/2 13:34:38

Obsidian + Codex 搭建本地知识库:AI 笔记整理与自动化工作流实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
happy-llm 从零构建大模型完整指南:手把手跑通预训练到微调全流程 2026/9/2 13:34:38

happy-llm 从零构建大模型完整指南:手把手跑通预训练到微调全流程

happy-llm 从零构建大模型完整指南:手把手跑通预训练到微调全流程 【免费下载链接】happy-llm 📚 从零开始构建大模型 项目地址: https://gitcode.com/GitHub_Trending/ha/happy-llm happy-llm 是 Datawhale 出品的「从零开始构建大模型」开源教程…

阅读更多 →
5 分钟看懂 raylib:从窗口到渲染的游戏图形库快速上手 2026/9/2 13:34:38

5 分钟看懂 raylib:从窗口到渲染的游戏图形库快速上手

5 分钟看懂 raylib:从窗口到渲染的游戏图形库快速上手 【免费下载链接】raylib A simple and easy-to-use library to enjoy videogames programming 项目地址: https://gitcode.com/GitHub_Trending/ra/raylib 一百行 C 代码,能开一个窗口、画出…

阅读更多 →
【unity shader】误打误撞做出来了一个简单全息投影shader。。。 2026/9/2 13:31:38

【unity shader】误打误撞做出来了一个简单全息投影shader。。。

(提示:只看代码请跳过这里) 情况是这样的。。。在学习一位大佬的全息shader时出了意外 大佬文章链接,作者:晨蓝fk 就算是将代码全部复制过来,也无法复原大佬原文图里的效果。 查了一下资料,可能是因为没有对ComputeScreenPos()函数返回值的结果做齐次除法运算?(该函数…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞