# Kaula_language_compiler
**Repository Path**: ClaudyFlow/kaula
## Basic Information
- **Project Name**: Kaula_language_compiler
- **Description**: Kaula语言是一款以C为基础开发的现代编程语言
- **Primary Language**: C
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 2
- **Created**: 2026-09-10
- **Last Updated**: 2026-09-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Kaula 编程语言

**更现代、更好用的 C**
[](LICENSE)
[](https://go.dev/)
[](https://en.wikipedia.org/wiki/C_(programming_language))
> **Multi-language Support**:如需阅读英文或其他语言的文档,推荐使用 [docs/tools/translate.py](docs/tools/translate.py) 生成本地化文档方便阅读。Supported languages: English, 日本語, 한국어, Deutsch, Français, Español, Русский.
---
## Kaula 是什么
Kaula 是一门**静态类型的系统级编程语言**,编译到 C,由 Clang 生成原生代码。
核心设计目标:**用更简单的语法,获得接近 Rust 的安全保证**——通过 SOR(Sub-structural Ownership)在编译期消除数据竞争和悬垂指针,而不引入运行时开销。
---
## 快速开始
### 安装
```bash
# 构建编译器
python toolkit_build.py
# 或手动构建
cd compiler && go build -o ../bin/kaulac ./cmd/kaulac/
```
依赖:Python 3.8+、Go 1.21+、LLVM-mingw 或 MSVC(Windows)/ Clang(Linux/macOS)
### Hello World
```kaula
import std.io
fn main() {
println("Hello, Kaula!")
}
```
### 编译运行
```bash
# 基本编译
kaulac main.kl
# 启用调试符号
kaulac --debug main.kl
# Release 模式
kaulac --release main.kl
# 查看版本
kaulac --version
# 输出: kaulac v1.0.42 (26.8.23-master-67ffac3, sor-oxide)
```
---
## 版本号
Kaula 使用双版本号系统:
| 类型 | 格式 | 示例 | 说明 |
|------|------|------|------|
| **发布版本** | `v1.0.x` | `v1.0.42` | x = 自 v1.0 以来的提交次数 |
| **快照版本** | `YY.M.DD-branch-hash` | `26.8.23-master-67ffac3` | 构建时自动生成 |
版本号自动生成:
```bash
# 查看当前版本
python scripts/version.py
# 输出: kaulac v1.0.42 (26.8.23-master-67ffac3, sor-oxide)
# 更新 version.json(构建时自动调用)
python scripts/version.py --update
# 仅输出快照版本
python scripts/version.py --snapshot
# 输出: 26.8.23-master-67ffac3
# 仅输出发布版本
python scripts/version.py --release
# 输出: v1.0.42
```
详见 [docs/tools/versioning.md](docs/tools/versioning.md)。
---
## 包管理
### 添加第三方库
```bash
# 从 Git 仓库添加
kaulac pkg add https://github.com/nicbarker/clay.git
# 从本地路径添加
kaulac pkg add ../my-kaula-lib --name mylib
# 列出已安装的包
kaulac pkg list
```
### 项目依赖
在 `kaula.json` 中声明依赖:
```json
{
"dependencies": {
"webview": "0.12",
"clay": "^1.0",
"mylib": {
"git": "https://github.com/user/repo.git",
"tag": "v1.0.0"
}
},
"registry": "https://gitee.com/kaula-universe"
}
```
支持两种依赖格式:
- **版本约束**:简单字符串(如 `"0.12"` 或 `"^1.0"`),从注册表下载
- **Git 仓库**:对象格式,指定 git URL、标签、分支或 commit
```bash
# 拉取依赖
kaulac pkg fetch
# 更新依赖
kaulac pkg update
# 查看锁状态
kaulac pkg lock
```
### 本地路径覆盖
用本地目录覆盖远程依赖,适合开发调试:
```json
{
"patches": {
"mylib": { "path": "../mylib-dev" }
}
}
```
### 离线/在线模式
```bash
# CI/CD 中使用离线模式(缓存未命中则报错)
kaulac --offline main.kl
# 强制联网刷新依赖
kaulac --online main.kl
```
详见 [docs/tools/package-management.md](docs/tools/package-management.md)。
---
## 工作空间
多包项目管理:
```bash
# 初始化工作空间
kaulac workspace init packages/core packages/utils app
# 列出成员
kaulac workspace list
# 构建所有成员
kaulac workspace build
# 运行测试
kaulac workspace test
```
在 `kaula.json` 中配置:
```json
{
"workspace": {
"members": ["packages/core", "packages/utils", "app"],
"shared_deps": {
"testing": "^1.0"
}
}
}
```
---
## 调试支持
### DWARF 调试符号
```bash
# 生成调试符号
kaulac --debug main.kl
# 完整调试(含类型信息)
kaulac --debug --debug-level full main.kl
# 配合 GDB 调试
gdb ./main
(gdb) source tools/debug/kaula_pretty_printers.py
(gdb) break main.kl:10
(gdb) run
```
### LLDB 支持
```bash
lldb ./main
(lldb) command script import tools/debug/kaula_lldb_formatters.py
(lldb) breakpoint set --file main.kl --line 10
(lldb) run
```
### 源码映射
```bash
# 生成源码映射文件
kaulac --debug --sourcemap main.kl
```
详见 [docs/tools/debugging.md](docs/tools/debugging.md)。
---
## 代码格式化
```bash
# 格式化文件(输出到 stdout)
kaulac fmt file main.kl
# 格式化并写回原文件
kaulac fmt file main.kl --write
# 批量格式化
kaulac fmt file main.kl utils.kl --write
# 检查文件是否已格式化
kaulac fmt check main.kl
```
格式化特性:
- 4 空格缩进
- Import 自动排序(`std.*` 优先)
- 二元表达式括号保留(基于优先级)
- 支持所有 Kaula 语法结构
详见 [docs/tools/formatter.md](docs/tools/formatter.md)。
---
## 编译选项
| 选项 | 说明 |
|------|------|
| `--opt ` | 优化级别 O0/O1/O2/O3 |
| `--release` | Release 模式(-O3) |
| `--sor` | 启用 SOR 所有权分析 |
| `--debug` | 生成 DWARF 调试符号 |
| `--debug-level ` | 调试级别:line-tables/full |
| `--sourcemap` | 生成源码映射 |
| `--freestanding` | 裸机模式 |
| `--no-cache` | 禁用增量编译 |
| `--offline` | 强制离线模式 |
| `--online` | 强制在线模式 |
| `--verbose` | 详细输出 |
### 配置文件
```bash
# 生成默认配置
kaulac --init
```
`kaula.json` 完整示例:
```json
{
"opt_level": "O3",
"release": true,
"debug": true,
"debug_level": "full",
"sourcemap": true,
"dependencies": {
"webview": "0.12"
},
"patches": {
"webview": { "path": "../webview-dev" }
},
"workspace": {
"members": ["packages/core", "app"]
}
}
```
详见 [docs/build-config.md](docs/build-config.md)。
---
## 标准库
62 个模块,800+ 函数,覆盖从系统编程到 Web 开发:
| 分类 | 模块 |
|------|------|
| **内存** | memory(KMM V4 per-thread heap 作用域分配器,比 malloc 快 2-20x)、bitset |
| **容器** | container(Vector/LinkedList/HashMap/Stack)、deque、heap、trie、graph |
| **字符串** | string、regex、unicode、template |
| **I/O** | io、fs、path |
| **并发** | concurrent(线程/锁/原子/线程池/Channel/Future)、async、parallel |
| **网络** | net、web、ssh、tls |
| **序列化** | json、toml、xml、protobuf、msgpack、serialize |
| **数学** | math、cmath、decimal、random |
| **编码** | encoding、crypto、compress、archive |
| **系统** | system、subprocess、cli、time、datetime、calendar |
| **类型** | option、traits、base、error |
| **运行时** | vo、prefix、task、format、logging、testing |
| **Freestanding** | freestanding.base、freestanding.memory、freestanding.string、freestanding.math、freestanding.io(无依赖,弱符号,裸机/托管双环境) |
---
## 第三方库(pkglib)
**放库即用、零配置**:把任意 C/C++ 库源码目录放进 `pkglib/`,`import` 即可直接调用。
```kaula
import stb_image // C 库
fn main() {
void* img = stbi_load("texture.png", &width, &height, &channels, 4)
stbi_image_free(img)
}
```
特性:
- **自动分析**:Clang 解析头文件生成 JSON 配置
- **自动桥接**:C++ 头自动生成 `*_kbridge.h/.cpp`
- **自动构建**:编译静态库 `lib.a`
- **自愈合并**:重新分析保留人工链接项
---
## KMM V4 内存管理
基于 per-thread heap + bump allocation + scope-based reclamation 的高性能内存分配器。
### 性能对比
| 场景 | KMM V4 | malloc/free | 加速比 |
|------|--------|-------------|--------|
| 16B 小对象分配+回收 | 51.8 ms | 634.3 ms | **12.2x** |
| 64B 对象分配+回收 | 65.9 ms | 661.5 ms | **10.0x** |
| 纯分配吞吐量(64B, 1M 次) | 3.5 ms | 72.7 ms | **20.5x** |
### 设计特点
- **Per-Thread Heap**:每个线程从全局池批量获取内存块,无锁
- **Bump Allocation**:分配即指针推进,O(1) 复杂度
- **Scope-based Reclamation**:作用域退出批量回收,无需逐个 free
---
## 项目结构
```
kaula/
├── compiler/ # 编译器(Go 实现)
│ ├── cmd/kaulac/ # 编译器 CLI
│ ├── version.json # 版本数据源
│ └── internal/
│ ├── lexer/ # 词法分析
│ ├── parser/ # 语法分析(递归下降)
│ ├── sema/ # 语义分析(两遍、泛型、SOR)
│ ├── codegen/ # C 代码生成 + 源码映射
│ ├── sor/ # SOR 所有权分析引擎
│ ├── formatter/ # 代码格式化器
│ ├── pkgcmd/ # 包管理命令
│ ├── pkgmgr/ # 包管理核心(解析、构建、锁)
│ ├── workspace/ # 工作空间管理
│ ├── config/ # 配置加载
│ ├── stdlib/ # 标准库配置
│ └── version/ # 版本信息读取
├── src/ # 运行时系统(C 实现)
│ ├── kaula.h # 跨平台头文件
│ ├── kmm_scoped_allocator_v4.h # KMM V4 内存管理
│ └── ...
├── std/ # 标准库(C 实现,62 个模块)
├── pkglib/ # 第三方库
├── scripts/
│ └── version.py # 版本号生成工具
├── tools/debug/ # GDB/LLDB 调试工具
│ ├── kaula_pretty_printers.py
│ └── kaula_lldb_formatters.py
└── docs/ # 详细文档
├── tools/
│ ├── kaulac.md # 命令行参考
│ ├── package-management.md # 包管理文档
│ ├── debugging.md # 调试文档
│ ├── formatter.md # 格式化文档
│ └── versioning.md # 版本号管理文档
└── build-config.md # 配置文件文档
```
---
## 文档
| 文档 | 说明 |
|------|------|
| [docs/tools/kaulac.md](docs/tools/kaulac.md) | 命令行工具完整参考 |
| [docs/tools/package-management.md](docs/tools/package-management.md) | 包管理指南 |
| [docs/tools/debugging.md](docs/tools/debugging.md) | 调试支持文档 |
| [docs/tools/formatter.md](docs/tools/formatter.md) | 代码格式化文档 |
| [docs/tools/versioning.md](docs/tools/versioning.md) | 版本号管理文档 |
| [docs/build-config.md](docs/build-config.md) | 配置文件参考 |
| [docs/tools/translate.py](docs/tools/translate.py) | 多语言翻译脚本 |
### 多语言文档
使用翻译脚本生成本地化文档:
```bash
# 生成英文版
python docs/tools/translate.py --lang en
# 生成日文版
python docs/tools/translate.py --lang ja
# 生成所有支持语言
python docs/tools/translate.py --all
# 指定输入目录和输出目录
python docs/tools/translate.py --lang en --input docs --output docs/en
```
支持语言:`zh`(中文,默认)、`en`(英文)、`ja`(日文)、`ko`(韩文)、`de`(德文)、`fr`(法文)
---
## 许可证
[Apache License 2.0](LICENSE),附带 [Kaula Exceptions](LICENSE#kaula-exceptions-to-the-apache-20-license)