Appearance
项目愿景
一句话目标
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”,而是下面这组组合问题:
- 系统级安全与高性能
- 工业级 FFI 与渐进式迁移
- 比传统系统语言更低的心智负担
- 从一开始就按完整工具链项目来设计
如果只能保留一个差异化判断,那就是:Qlang 不是把复杂度删除,而是把复杂度从用户侧转移到编译器和工具链侧。