编译器 CLI 使用¶
link compile 命令用于将 Link 源代码编译为原生可执行文件。
命令语法¶
选项¶
| 选项 | 说明 | 默认值 |
|---|---|---|
-o <path> |
输出路径 | 输入文件名(不含扩展名) |
--backend <type> |
代码生成后端: c / llvm / python / py / wasm |
c |
--emit-c |
生成 C 代码(C 后端) | 否 |
--emit-ir |
生成 LLVM IR(LLVM 后端) | 否 |
--opt-level <N> |
优化等级(0-3) | 2 |
-g |
包含调试信息 | 否 |
--no-link |
不链接(仅生成目标文件) | 否 |
--no-borrow-check |
禁用借用检查器 | 否 |
使用示例¶
基本编译¶
指定输出路径¶
生成 C 代码¶
生成 LLVM IR¶
优化等级¶
调试信息¶
不链接(仅生成目标文件)¶
生成 Python 代码¶
生成 WASM WAT 代码¶
禁用借用检查器¶
后端选择¶
C 后端(默认)¶
特点: - 跨平台支持好 - 依赖系统 C 编译器 - 支持 struct/enum/list/match 等高级特性
LLVM 后端¶
特点:
- 需要安装 LLVM
- 通过 --features llvm-backend 启用
- 支持更多优化通道
- 当前功能较少(基础类型、函数、控制流)
Python 后端¶
特点: - 生成可读的 Python 代码 - 无需额外依赖,直接用 Python 解释器运行 - 适合快速原型开发和脚本场景 - 支持 struct/enum/match/stream/async 等高级特性
WASM 后端¶
特点:
- 生成 WAT(WebAssembly Text Format)格式代码
- 可通过 wat2wasm 等工具编译为 .wasm 二进制
- 支持导入导出函数
- 适合 Web 端和嵌入式场景
优化等级¶
| 等级 | 说明 |
|---|---|
| O0 | 无优化,编译最快,适合调试 |
| O1 | 基础优化,平衡编译时间和运行性能 |
| O2 | 默认优化,全面优化 |
| O3 | 最高优化,可能增加编译时间 |
调试信息¶
使用 -g 选项可以生成调试信息:
- C 后端: 添加
#line指令 - LLVM 后端: 添加调试元数据
环境要求¶
C 后端¶
- Windows: 需要 MSVC (
cl) 在 PATH 中 - Linux/macOS: 需要 GCC/Clang (
cc) 在 PATH 中
LLVM 后端¶
- 需要系统安装 LLVM(通过
--features llvm-backend启用)
借用检查器¶
Link v0.2.0 内置了借用检查器,在编译时自动执行,用于保证内存安全:
- 所有权跟踪:每个值有且仅有一个所有者
- 移动语义:赋值和传参默认移动所有权
- Copy 类型:基础类型默认 Copy,不移动所有权
- 借用规则:不可变借用可多个,可变借用只能一个
- use-after-move 检测:编译时报告使用已移动值的错误
可通过 --no-borrow-check 选项禁用借用检查器(不推荐)。
详细说明请参考 借用检查器文档。
编译优化¶
Link 编译器支持多种编译优化,在 --opt-level 大于等于 1 时启用:
常量折叠¶
编译期对常量表达式进行求值,减少运行时计算:
死代码消除¶
移除永远不会执行的代码分支:
LSP 语言服务器¶
link lsp 命令启动 LSP 语言服务器,为编辑器提供智能支持:
支持的功能:
- 诊断:实时语法和类型错误提示
- 补全:代码自动补全
- 悬停:悬停显示类型和文档
- 跳转:跳转到定义位置
- 符号大纲:文档符号列表
VS Code 配置¶
在 VS Code 中安装 Link 语言扩展后,会自动启动 link lsp。
游戏后端¶
link game 命令用于运行游戏后端域类型的程序:
功能特性:
- domain 语法:声明式定义游戏域
- WebSocket:内置 WebSocket 服务器
- 房间系统:玩家匹配与房间管理
- 帧同步:确定性帧同步机制