# 语言设计

本部分包含 Dujie 编译引擎的设计文档，面向编译器开发者和语言设计者。

## 文档约定

- 新的语言设计和语义细则先写在 `01.design`
- `00.guide` 只承接已经收敛、适合面向用户说明的内容
- 如果两边内容冲突，应先以 `01.design` 中的最新设计为准，再回写 `00.guide`

## 阅读顺序

第一次阅读当前语言规范时，建议优先按以下顺序进入：

<steps level="4">

#### [类型系统总纲](./09.type-system)

#### [函数与调用](./12.functions-and-calls)

#### [表达式与语句](./13.expressions-and-statements)

#### [模块系统](./14.module-system)

#### [渲染内建](./15.render-intrinsics)

</steps>

其余文档按主题补充阅读。

## 目录

### 现行规范

- [文档分层约定](./08.documentation-convention) - 设计文档和用户文档的职责边界
- [类型系统总纲](./09.type-system) - 类型系统的讨论边界、术语和拆分方式
- [泛型系统](./10.generics-system) - 泛型参数、约束和推导的独立设计文档
- [值语义与共享语义](./11.value-and-sharing-semantics) - 赋值、传参、返回和修改的语言级语义
- [函数与调用](./12.functions-and-calls) - 函数声明、参数模型、默认值和调用规则
- [表达式与语句](./13.expressions-and-statements) - 字面量、控制流、运算、推导边界和语句模型
- [模块系统](./14.module-system) - 模块、导入导出、路径规则和入口约束
- [渲染内建](./15.render-intrinsics) - `widget`、组件函数和 `main/element/text/fragment/comment`
- [Any 设计](./16.any-design) - `any` 的定位、边界、`is` 收窄和动态入口语义
- [内建类型表面](./17.built-in-types-surface) - 各内建类型公开的方法、属性和点调用边界
- [内建函数](./18.built-in-functions) - 当前对外可见的全局内建函数与构造形式
- [内建结构体与运行时类型](./19.built-in-structs-and-runtime-types) - 当前没有哪些公开内建结构体，以及运行时类型边界

### 实现补充

- [CST 特性](./01.cst-features) - 具体语法树的设计和特性
- [注释关联规则](./02.comment-association) - 注释如何关联到语法节点
- [注释保留](./05.comments) - CST 注释支持和 LSP 功能
- [错误处理](./03.error-handling) - 编译器错误处理机制
- [代码优化](./04.optimization) - 编译器实现层的优化草案

### 历史记录

- [结构体设计](./06.struct-design) - 历史实现探索：结构体的 Arc 包装方案
- [comparable 约束设计](./07.comparable-constraint) - 历史设计记录：旧的 comparable 约束方案
