Skip to content

项目愿景

一句话目标

Qlang 是一门基于 LLVM 的编译型语言,面向系统软件、基础设施、服务端、高性能工具和需要长期维护的大型工程。它的目标不是成为“又一门语法新奇的语言”,而是成为一门在工程上真正好用的语言:

  • 让业务和系统代码都写得顺手
  • 让安全和性能默认成立,而不是靠纪律
  • 让和 C、C++、Rust 的协作足够现实
  • 让编译器、LSP、格式化器、文档和构建工具从一开始就是一套系统

目标用户

  • 想要比 C/C++ 更安全,但又不愿意接受 GC 停顿的团队
  • 喜欢 Rust 的可靠性,但希望降低上手成本和语法仪式感的开发者
  • 需要大量调用 C 接口、复用现有原生库、逐步替换旧系统的工程团队
  • 需要稳定工具链、明确诊断、可持续重构能力的长期项目

设计主张

1. 对程序员简单

Qlang 的第一原则不是“语言理论完整性”,而是“写代码的人不需要时时刻刻和编译器角力”。因此它会选择:

  • 默认不可空,避免空引用渗透
  • 默认不可变,让可变性变成显式行为
  • 默认值语义,减少别名问题
  • 本地类型推断,减少重复样板
  • Result/?、模式匹配和代数数据类型,统一错误与分支处理

2. 对编译器复杂

语义上的复杂度,尽量由编译器承担,包括但不限于:

  • 自动借用与移动推断
  • 生命周期和区域的隐式求解
  • 逃逸分析与栈/堆放置决策
  • 跨模块增量分析
  • 强诊断、修复建议和语义级重构支撑

3. 混编是第一等能力

现实世界里,不存在一门新语言从零开始重写所有基础设施。Qlang 必须从第一天就假定自己处在一个异构系统里,因此会把以下内容视为核心设计,而不是未来补丁:

  • 稳定 C ABI
  • 头文件和绑定生成
  • 链接模型、符号可见性和构建集成
  • FFI 安全边界与 unsafe 约束
  • 针对 Rust 和 C++ 的渐进式互操作策略

明确的非目标

  • 第一阶段不追求覆盖所有元编程能力
  • 第一阶段不追求直接支持完整 C++ 模板生态
  • 第一阶段不设计重型宏系统
  • 第一阶段不支持多后端虚拟机运行时
  • 第一阶段不引入必须依赖 GC 的语言核心

关键差异化

Qlang 想解决的不是“怎么再造一个 Rust/Swift/Kotlin”,而是下面这组组合问题:

  1. 系统级安全与高性能
  2. 工业级 FFI 与渐进式迁移
  3. 比传统系统语言更低的心智负担
  4. 从一开始就按完整工具链项目来设计

如果只能保留一个差异化判断,那就是:Qlang 不是把复杂度删除,而是把复杂度从用户侧转移到编译器和工具链侧。

Qlang research repository