Appearance
功能清单
分级规则
P0:没有它,语言无法作为真实原型闭环P1:能显著提高可用性和工程落地能力P2:高级能力和生态扩展,不应阻塞前面阶段
一、语言核心
| 功能 | 级别 | 说明 |
|---|---|---|
| 模块与包系统 | P0 | 文件到模块映射,支持 use 与包边界 |
| 基础类型与字面量 | P0 | 数值、字符串、布尔、字节、数组、切片 |
let / var | P0 | 默认不可变,显式可变 |
| 解构绑定 | P0 | 元组和数据解构的基础能力 |
struct / enum | P0 | 产品类型与代数数据类型 |
表达式导向 if / match | P0 | 统一分支求值模型 |
| 函数、方法、命名参数 | P0 | 保证日常 API 友好度 |
| 一等函数与高阶函数 | P0 | 函数可作为参数、返回值、字段和值 |
| 基于元组的多返回值 | P0 | 不单独发明多返回语法机制 |
| 闭包与捕获 | P0 | 支持捕获外部环境与 move 闭包 |
| 默认参数 | P1 | 改善配置密集 API |
data struct | P1 | 自动派生数据承载类型常见能力 |
| 泛型函数和类型 | P0 | 参数化抽象的基础 |
| trait / impl | P0 | 约束、复用和静态分发 |
| trait object | P1 | 受控动态分发 |
| 模式守卫 | P1 | 增强匹配表达力 |
| 扩展方法 | P1 | 改善领域 API 组织 |
| 实例方法引用语法糖 | P1 | 绑定 receiver 后直接形成函数值 |
| 用户自定义属性 | P2 | 仅在工具链模型稳定后引入 |
| 宏系统 | P2 | 避免 P0 复杂度爆炸 |
:= 便捷声明 | P2 | 当前不建议进入核心语言 |
二、类型系统与安全
| 功能 | 级别 | 说明 |
|---|---|---|
Option[T] / Result[T, E] | P0 | 错误和缺失值的统一载体 |
| 本地类型推断 | P0 | 降低样板但不牺牲可读性 |
| 公共 API 显式返回类型 | P0 | 文档和审查友好 |
| 穷尽性检查 | P0 | match 安全性基础 |
| 流敏感类型收窄 | P1 | Kotlin/TypeScript 风格 smart cast |
| 类型谓词 | P2 | 用户自定义收窄能力 |
satisfies 操作符 | P1 | 校验表达式满足目标类型且保留具体推断 |
Never 底类型 | P1 | 穷尽性和发散控制流分析 |
| 自动 trait 派生 | P1 | Eq、Hash、Debug 等 |
unsafe 边界 | P0 | FFI、原始指针、手工布局 |
基础效果标记 async / ffi | P0 | 明确危险与运行时边界 |
并发能力 trait Send / Sync | P0 | 数据竞争模型基础 |
| 更完整效果系统 | P2 | io、alloc、blocking 等 |
| 受控动态分发规则 | P1 | object safety 与诊断 |
三、内存与运行时
| 功能 | 级别 | 说明 |
|---|---|---|
| 默认值语义 | P0 | 压低别名复杂度 |
| 移动后使用检查 | P0 | 所有权安全基础 |
| 自动借用 | P0 | 把复杂留给编译器 |
| 非逃逸值栈分配 | P0 | 零成本基础能力 |
| 逃逸分析 | P1 | 降低堆分配与提升诊断 |
| 区域分配 | P1 | 为短生命周期对象优化 |
| 析构与 drop 语义 | P0 | 资源释放可预测 |
defer | P0 | 清理逻辑更直观 |
Shared / Weak | P1 | 图结构与共享只读模型 |
Mutex / RwLock / Atom | P0 | 并发共享容器 |
| 可选 arena / pool 库 | P1 | 性能调优场景 |
| 可选托管内存域 | P2 | 非核心运行时能力 |
四、并发与异步
| 功能 | 级别 | 说明 |
|---|---|---|
async fn / await | P0 | 基础异步抽象 |
spawn | P0 | 任务创建 |
select | P0 | 多路等待 |
| 取消上下文与原因 | P1 | 借鉴 Go context 的工程模型 |
| 结构化取消 | P1 | 避免异步泄漏 |
| async stream | P1 | 流式 I/O |
| actor 标准库 | P1 | 高层并发隔离 |
| tracing hooks | P1 | 可观测性接入 |
| executor 抽象 | P0 | 运行时不绑死 |
| 分布式 actor | P2 | 高级能力,不应前置 |
五、互操作与 ABI
| 功能 | 级别 | 说明 |
|---|---|---|
| C ABI 导入导出 | P0 | 最基础混编能力 |
| 原始指针与布局控制 | P0 | FFI 必需 |
| 头文件生成 | P1 | 对外暴露 Qlang API |
| C 头文件绑定生成 | P1 | 导入成熟 C 库 |
| 静态库 / 动态库链接 | P0 | 工程落地基础 |
| Rust 通过 C ABI 互操作 | P1 | 稳定而现实 |
| C++ shim 工作流 | P0 | 避免一开始啃最硬问题 |
| 直接 C++ 绑定生成 | P2 | 仅覆盖受控子集 |
| ABI 兼容诊断 | P1 | 减少边界事故 |
| FFI 安全包装生成 | P1 | 提升边界可用性 |
六、编译器与后端
| 功能 | 级别 | 说明 |
|---|---|---|
| lexer / parser | P0 | 前端入口 |
| AST / HIR / MIR | P0 | 清晰分层 |
| 名称解析 | P0 | 作用域和导入处理 |
| 类型检查 | P0 | 主语义阶段 |
| 所有权与借用检查 | P0 | 安全基础 |
| LLVM IR 生成 | P0 | 代码生成核心 |
| 对象文件与链接驱动 | P0 | 产物闭环 |
| 单态化 | P1 | 泛型代码生成 |
| 基础优化管线 | P1 | 常见性能收益 |
| 增量编译 | P1 | IDE 和中大型项目所需 |
| 交叉编译目标模型 | P1 | 多平台计划 |
| 非 LLVM 后端 | P2 | 后续扩展方向 |
七、诊断与开发体验
| 功能 | 级别 | 说明 |
|---|---|---|
| 精准 span | P0 | 所有工具的共同前提 |
| 错误码 | P0 | 稳定诊断接口 |
| fix-it 建议 | P1 | 真正现代化的报错体验 |
| 语义级 note / help | P0 | 降低学习成本 |
| 彩色终端输出 | P0 | 可读性基础 |
| JSON 诊断输出 | P1 | IDE、CI 和脚本集成 |
| 编译时间分析 | P1 | 性能调优工具 |
八、工具链
| 功能 | 级别 | 说明 |
|---|---|---|
ql build / run / check / test | P0 | 最小开发闭环 |
ql fmt | P0 | 风格统一 |
ql doc | P1 | 文档系统闭环 |
ql new / init | P1 | 项目初始化 |
ql bench | P1 | 性能回归 |
ql ffi | P1 | 生成桥接代码 |
| 工作区支持 | P0 | 多包工程必需 |
| 项目引用图 | P1 | 类似 project references 的依赖编译图 |
.qi 接口产物 | P1 | 公共 API 元数据输出 |
| profile 与优化等级 | P0 | debug/release/testing |
| lockfile | P1 | 可复现构建 |
| registry / publish | P2 | 生态扩展 |
九、LSP 与编辑器支持
| 功能 | 级别 | 说明 |
|---|---|---|
| diagnostics | P0 | 编辑器即时报错 |
| hover | P0 | 类型与文档提示 |
| go to definition | P0 | 基础导航 |
| find references | P0 | 重构支撑 |
| completion | P0 | 真实语义补全 |
| rename | P1 | 跨文件可靠重命名 |
| semantic tokens | P1 | 高质量高亮 |
| code actions | P1 | 自动导入、补齐 match 分支 |
| inlay hints | P1 | 推断可视化 |
| call hierarchy | P2 | 进阶导航 |
十、标准库
| 功能 | 级别 | 说明 |
|---|---|---|
core | P0 | 基础类型、迭代器、结果、比较 |
alloc | P0 | 容器与分配接口 |
io | P0 | 文件、流、错误 |
net | P1 | 套接字与网络基础 |
async | P1 | Future、task、channel |
ffi | P0 | 边界包装工具 |
test | P0 | 测试断言与 harness |
time | P1 | 时间与计时 |
process | P1 | 进程与环境 |
crypto | P2 | 需谨慎设计与审计 |
十一、质量与工程化
| 功能 | 级别 | 说明 |
|---|---|---|
| parser snapshot tests | P0 | 语法稳定性 |
| UI diagnostics tests | P0 | 报错回归 |
| codegen golden tests | P0 | 产物一致性 |
| FFI 集成测试 | P0 | 混编可信度 |
| LSP 场景测试 | P1 | 编辑器体验回归 |
| formatter stability tests | P0 | 格式化器可信度 |
| benchmark CI | P1 | 性能趋势观察 |
| 多平台 CI | P1 | Windows/Linux/macOS |
十二、明确延后
以下能力目前不应进入 P0:
- 宏系统
- 反射
- 直接全量 C++ 互操作
- 包注册中心
- 分布式 actor
- 非 LLVM 后端
- 复杂效果系统
延后不是放弃,而是保证主干先站稳。