Skip to content

Qlang给程序员简单,把复杂留给编译器

一门独立设计的编译型语言;当前编译器用 Rust 实现,但语言表面、语义与工程目标不以 Rust 为模板。

当前结论

这个仓库已经不是“只有设计稿的预研空壳”,而是一个真实在推进的语言与工具链仓库。当前编译器主实现使用 Rust,但 Qlang 的语言身份、语法方向、类型系统和工程目标以语言设计文档为准,而不是以 Rust 语法或 Rust 生态习惯为准;活跃主线仍是保守推进的 Phase 7:async、runtime、task-handle lowering 与互操作。

当前文档给出四类结论:

  • Qlang 的语言定位、设计原则与核心语法方向
  • 类型系统、内存模型、并发模型与 FFI 方案
  • 编译器、LSP、格式化器、文档系统与仓库结构
  • 细化到阶段出口标准的功能清单与执行路线图

当前实现状态可以概括为:

  • Phase 1 到 Phase 6 的基础能力已经落地
  • Phase 7 已建立最小 runtime/executor、task-handle 类型面、共享 runtime hook ABI skeleton,以及受控的 async library/program build 子集
  • 当前真实支持面与未支持边界已集中收口到 当前支持基线
  • 历史长文与逐轮记录已迁移到 路线图归档,当前入口页只保留可依赖结论
  • executable smoke harness 当前锁定 60 个 sync 示例与 222 个 async 示例;这两个数字已按目录与测试代码重新核对
  • sync/async tuple assignment executable surface 现也已覆盖 same-file const / static item 名与 same-file use ... as ... alias 驱动的元组索引写入

建议先看:

核心判断

  1. 对开发者最友好的系统级语言,不应该把复杂度直接外露成一堆生命周期标注、模板噪声和脚手架样板。
  2. 真正难的工作应该由编译器承担,包括所有权推断、逃逸分析、区域分配、诊断建议和增量分析。
  3. 混编不是附加功能,而是语言能否在真实工程中落地的核心能力,所以 ABI、链接、绑定生成和调试体验必须前置设计。
  4. 语言规范、编译器架构、工具链和文档站必须一起设计;先写编译器再补工具链,后面一定返工。

语言边界

  • Qlang 不是 Rust 方言,也不是“更简单的 Rust”。
  • Rust 目前只是编译器与工具链的宿主实现语言,以及当前互操作路径之一。
  • Qlang 的语法、类型系统、并发模型和互操作边界,统一以 /design//vision 下的文档为准。
  • 如果某项实现或文档让 Qlang 在视觉、语义或叙事上看起来像 Rust 子集,应优先修正文档与实现,而不是继续沿错误方向累积。

Qlang research repository