Kylix 是 Pascal 的现代化重构:双后端编译(Go 转译 + LLVM 原生)。
带类型推导、泛型、注解语法、KylixBoot Web 框架、WASM/WASI 支持,
以及完整 IDE 工具链 — Pascal 的清晰,Go 的速度,现代语言的力量。
program HelloBoot;
uses boot;
begin
boot.GET('/', procedure(req: TRequest; res: TResponse)
begin
var name := req.Param('name');
res.Send($"Hello, ${name}!");
end);
boot.Use(boot.Logger());
boot.Listen(':8080'); // 优雅停机内置
end.
核心特性
在保留 Pascal 清晰语法的基础上,注入现代语言的强大特性。从类型推断到泛型,从模式匹配到异步编程,Kylix 让 Pascal 焕发新生。
编译器自动推导变量类型,告别冗长的类型声明,让代码更简洁优雅。
var x := 42;
简洁的匿名函数语法,支持闭包捕获和高阶函数,函数式编程触手可及。
(x: Integer) -> x * x
类型参数声明,编写类型安全的通用代码。支持泛型类和泛型函数。
TList<T> / TPair<K, V>
强大的 match 表达式,支持多值匹配、通配符和 when 条件守卫。
match x { 0 => 'zero', _ => 'other' }
基于 Goroutine + Channel 的异步模型,享受 Go 级并发性能。
async function FetchData(): String
内置 HTTP 服务器、路由、中间件、JSON 处理,开箱即用。
app.get('/api/users', handler)
原生 map[K]V 字典类型,自动初始化,高效键值存储。
var m: map[String]Integer;
Discriminated Union — 类型安全的联合类型,编译为 Go interface + struct。
variant IntLit: Integer; StrLit: String; end
完整的面向对象支持:继承、多态、属性、构造/析构函数。
class Dog inherits Animal
现代字符串插值语法,表达式直接嵌入字符串。
$"Hello, ${name}!"
try/except/finally + ON 子句类型化异常捕获。
on E: Exception do WriteLn(E.Message)
函数支持元组返回,解构赋值一步到位。
function Div(a,b: Real): (Real, Boolean)
[Attribute] 元数据语法,附加到类、类型、函数、字段,驱动声明式 API。
[Controller('/api/users')]
Spring Boot 式 Web 框架:路由 + DI 容器 + 中间件 + 优雅停机,开箱即用。
uses boot; boot.GET(...)
绕过 Go 工具链,直接 AST → LLVM IR → 原生二进制。支持 --llvm-opt=N 优化。
kylix build --backend=llvm
编译到 WebAssembly(浏览器 / Node.js)或 WASI(Wasmtime、Cloudflare Workers)。
kylix build --wasm --tinygo
kylix add / publish 管理依赖,支持 git + 本地路径 + 嵌套依赖 + lockfile。
kylix add github.com/user/pkg
BuildCache 增量编译(55× 提速),goroutine 并行编译 + 死代码消除。
kylix build (增量自动启用)
错误代码体系 KLX001–499、"你是否想用?" 建议、错误恢复,支持中英双语。
KYLIX_LANG=zh kylix check
kylix test 自动发现 Test*,bench --mem,doc 提取代码示例。
Setup / Teardown / --filter
LSP(增量同步 + 跨文件 rename)、REPL(Tab 补全 + :type)、Delve 调试器、VS Code 扩展。
kylix lsp / repl / debug
Kylix 编译器用 Kylix 自己写:7 个 .klx 源文件可重新编译自身。
token / lexer / parser / generator
v3.1.0 亮点
2026-06-23 发布。KylixBoot 框架(路由 + DI + 中间件)、[Attribute] 注解语法、LLVM 数组与优化选项,以及 5 个关键编译器修复(KLX-C01..C05)。
顶层和类体内均可使用 [Name] 和 [Name(args)],附加到 ClassDecl / TypeDecl / FunctionDecl / VarDecl,是声明式 API 的基础。
[Controller], [Inject], [Entity]
~700 行核心运行时,23 个单元测试。Router(含路径参数)、Server(含优雅停机)、DI 容器(Singleton/Transient)、内置中间件(Logger/Recover/CORS/Auth/RateLimit/RequestID)。
boot.GET / boot.Use / boot.Listen
静态数组 array[1..N] of T → alloca [N x T],动态数组 array of T → slice 结构体。Pascal 1-based 自动转 LLVM 0-based。
kylix build --backend=llvm --llvm-opt=2
KLX-C01:var p: TClass 生成 *TClass。KLX-C02:单引号 ${...} 正确插值。KLX-C03:lambda 返回类型保留。KLX-C04:match codegen。KLX-C05:uses 模块符号注入 program。
KLX-C01..C05 全部修复
转译对比
Kylix 将 Pascal 源码编译为干净、可读、可直接运行的 Go 代码。没有黑魔法,没有运行时依赖。LLVM 后端则直接生成原生二进制。
program WebApp;
uses web;
var app: TServer;
begin
app := web.createServer(8080);
app.get('/hello',
procedure(req: TRequest; res: TResponse)
begin
res.json(record
message := 'Hello, Kylix!';
end);
end);
app.listen();
end.
package main
import "kylix/stdlib"
var app *stdlib.TServer
func main() {
app = stdlib.CreateServer(8080)
app.Get("/hello",
func(req *stdlib.TRequest, res *stdlib.TResponse) {
res.Json(struct {
Message string
}{Message: "Hello, Kylix!"})
})
app.Listen()
}
KylixBoot 框架
KylixBoot 把路由、依赖注入、中间件、优雅停机封装成一站式框架。23 单元测试、~700 行运行时,uses boot 即可使用。
program Quick;
uses boot;
begin
boot.GET('/users/:id',
procedure(req: TRequest; res: TResponse)
begin
res.JSON(record
id := req.Param('id');
name := 'Alice';
end);
end);
boot.POST('/users',
procedure(req: TRequest; res: TResponse)
begin
res.Status(201).JSON(req.Body());
end);
// 内置中间件
boot.Use(boot.Logger());
boot.Use(boot.Recover());
boot.Use(boot.CORS());
boot.Use(boot.RateLimit(100, 60));
// 优雅停机内置 (SIGTERM/SIGINT)
boot.Listen(':8080');
end.
[Controller('/api/users')]
type
TUserController = class
[Inject]
UserRepo: TUserRepository;
[Get('/')]
function ListUsers(req: TRequest): TResponse;
begin
result := req.JSON(UserRepo.FindAll());
end;
[Post('/'), Authenticated]
function CreateUser(req: TRequest): TResponse;
begin
var user := req.Body<TUser>();
UserRepo.Save(user);
result := req.Created(user);
end;
end;
[Entity('users')]
type
TUser = class
[Column('id'), PrimaryKey]
Id: Integer;
[Required, Email]
Email: String;
end;
快速开始
一分钟内从安装到运行你的第一个 Kylix 程序。
从 GitHub 克隆仓库,一条命令构建编译器。
使用 kylix new 创建项目模板,自动生成配置和入口文件。
kylix run 一键编译并运行,即刻看到结果。
# 1. 克隆 & 构建
git clone https://github.com/astra-zhao/kylix.git
cd kylix && go build -o kylix cmd/kylix/main.go
# 2. 创建项目
./kylix new myapp && cd myapp
# 3. 运行
./kylix run
# → Hello, Kylix World!
CLI 工具链
从创建项目到编译运行,再到测试、文档、调试、包管理、跨平台编译——一个 CLI 搞定全流程,支持中英双语错误信息。
# 项目脚手架
kylix new myapp # 创建新项目 (含 kylix.toml)
# 编译 & 运行
kylix build # 编译项目或文件 (Go 后端,默认增量)
kylix build --backend=llvm # LLVM 原生后端 (绕过 Go 工具链)
kylix build --backend=llvm --llvm-opt=2 # LLVM -O2 优化
kylix build --wasm # WebAssembly (~3 MB,Go 标准)
kylix build --wasm --tinygo # WebAssembly (~30 KB,TinyGo)
kylix build --wasi # WASI (Wasmtime / Cloudflare Workers)
kylix build --target=darwin/arm64 # 交叉编译 (5 个原生目标)
kylix run # 编译 + 运行
kylix run --keep # 保留生成的 .go 文件
# 代码质量
kylix check # 项目级类型检查 (跨文件)
kylix fmt # 代码格式化
kylix fmt -w file.klx # 原地格式化
kylix test # 运行测试 (*_test.klx, Setup/Teardown)
kylix test --filter Add # 按名称过滤
kylix bench # 性能基准测试
kylix bench --mem # 含内存分配统计
kylix doc # 生成 Markdown 文档 (含代码示例)
# 调试 & 交互
kylix debug # 启动 Delve 调试器
kylix repl # 交互式 REPL (Tab 补全 + :type + :load)
kylix lsp # LSP 服务 (增量同步 + 跨文件 rename)
# 包管理
kylix add github.com/user/pkg # 添加依赖 (git / 本地路径)
kylix install # 安装锁定的依赖
kylix remove pkg # 移除依赖
kylix publish # 发布到包注册中心
# 信息 & 国际化
kylix version # 显示版本
kylix help # 帮助
KYLIX_LANG=zh kylix check # 切换中文错误信息
编译后端
Kylix 源代码可以编译到 5 种平台:Go 二进制、LLVM 原生、WebAssembly、WASI 和自举编译器。所有目标共享同一个 AST 与类型系统。
Pascal → Go 源码 → 原生二进制。利用 Go 内置的交叉编译,目标机器无需安装运行时。
kylix build --target=linux/arm64
AST → LLVM IR → 目标文件 → 原生二进制。绕过 Go 工具链,支持 -O0/O1/O2/O3 优化。M2 Phase 1 已完成数组 + 优化。
kylix build --backend=llvm --llvm-opt=3
编译到 wasm 在浏览器或 Node.js 运行。Go 标准(~3 MB)或 TinyGo(~30 KB)二选一。
kylix build --wasm --tinygo
Wasmtime、Wasmer、Cloudflare Workers 跨平台执行。完整的 stdin/stdout/env/args 支持。
kylix build --wasi main.klx
7 个 .klx 源文件可重新编译自身。Diff 验证:Go 参考实现 vs Kylix 自举 — 语义等价。
token / lexer / parser / generator
Registry 服务端(REST API + htmx 前端)。kylix publish 发布,kylix add 安装。即将部署到 packages.kylix.top。
SQLite / PostgreSQL 存储
# 同一份 hello.klx,五种目标
kylix build hello.klx # Go → 本地原生
kylix build --target=darwin/arm64 hello.klx # → macOS Apple Silicon
kylix build --target=linux/amd64 hello.klx # → Linux x86-64
kylix build --target=windows/amd64 hello.klx # → Windows x86-64
kylix build --backend=llvm --llvm-opt=2 hello.klx # LLVM 原生 (-O2)
kylix build --wasm --tinygo hello.klx # WebAssembly (TinyGo ~30 KB)
kylix build --wasi hello.klx # WASI (Wasmtime)
标准库
从 Web 框架到 ORM,从 LLVM 系统接口到正则表达式 — 全部由 LSP 自动补全。其中 7 个模块(strutil、mathutil、arrayutil、collections、jsonutil、regex、datetime、httpclient、wasi)是纯 Kylix 实现,证明语言的自举能力。
KylixBoot:路由 + DI + 中间件
uses bootHTTP 服务器、路由、中间件
uses webMySQL / PostgreSQL / SQLite + QueryBuilder
uses orm模板引擎、布局、片段
uses template依赖注入容器 (Singleton/Transient/Scoped)
uses container环境变量 + 多源自动配置
uses autoconfigCORS / Auth / RateLimit / RequestID / Logger
uses middleware请求数据校验流式 API
uses validationHTTP 客户端,自定义 Header
uses httpclientWASI 系统接口(Wasmtime / Workers)
uses wasi文件 I/O、目录、路径工具
uses sysutilJSON 编解码、类型安全访问(纯 Kylix)
uses jsonutil日期运算、格式化、解析(纯 Kylix)
uses datetime正则匹配、查找、替换(纯 Kylix)
uses regexReverse / StartsWith / PadLeft …(纯 Kylix)
uses strutilPow / Gcd / IsPrime / Factorial(纯 Kylix)
uses mathutilSum / IndexOf / TIntList(纯 Kylix)
uses arrayutil迭代器、构建器、Result<T,E>(纯 Kylix)
uses iter文档与教程
34 个教程示例 + 8 个分模块的指南文档。无论你是 Pascal 老兵、Go 工程师还是新手,都能快速上手。
从 Hello World 到注解、KylixBoot、声明式 OOP — 32/34 通过
1 分钟从安装到第一个程序
安装指南、19 个 CLI 命令、项目结构、FAQ
架构、Pratt parser、Go/LLVM 后端、贡献指南
路由、中间件、REST API、KylixBoot
MySQL/PostgreSQL/SQLite、QueryBuilder、迁移
Layout、Partial、自定义函数、View 渲染
fmt / repl / lsp / test / bench / doc 通俗解释
v3.2 自动装配 + ORM 注解;v4.0 完全脱离 Go
v1.0 → v3.1 完整版本史,含 KLX-C01..C05 修复
项目总览、特性、stdlib 使用范例
源码、Issue、Pull Request、Discussions