目录
目录README.md

Cz Programming Language

Cz 是一个结合了 Zig 的显式分配器、Erlang 的 Actor 隔离和 C3 的模块化的实验性编程语言。

核心特性

  • 显式分配器:所有内存分配都需要显式传入分配器
  • Actor 隔离:每个 Actor 拥有独立的堆和消息队列
  • 模块化:清晰的模块系统和命名空间
  • 无 GC:确定性内存管理,适合实时系统
  • 并发安全:通过消息传递避免数据竞争

.cz 文件格式 🆕

Cz 现在支持 .cz 文件格式!

// hello.cz - 真正的 Cz 语言文件
import std;
import cz.actor;

actor Greeter {
    name: string,
    
    receive {
        Greet => {
            std.debug.print("Hello, {s}!\n", .{self.name});
        },
    }
}

pub fn main() !void {
    var greeter = try actor.spawn(Greeter, allocator, "World");
    try greeter.send(.Greet);
}

编译 .cz 文件

czc hello.cz        # 编译为可执行文件
czc hello.cz -O3    # 优化编译

查看 .cz 文件格式文档 了解详情。

编译器架构 🆕

双后端支持

1. Zig 后端(默认)

czc hello.cz
  • .cz → .zig → LLVM → 机器码
  • 快速开发
  • 完整的 Zig 生态

2. LLVM 后端

czc hello.cz --llvm
  • .cz → LLVM IR → Clang → 机器码
  • 直接生成 LLVM IR
  • 使用 Clang 优化
  • 与 C/C++ 无缝互操作

3. Cranelift 后端(新增!⚡)

czc hello.cz --backend=cranelift
  • .cz → Cranelift IR → 机器码
  • 编译速度极快(比 LLVM 快 10-100x)
  • 适合开发模式和快速迭代
  • 良好的代码质量(80-90% LLVM 性能)

优化级别

czc -O0 hello.cz --llvm  # Debug
czc -O2 hello.cz --llvm  # Standard
czc -O3 hello.cz --llvm  # Aggressive
czc -Os hello.cz --llvm  # Size

生成 LLVM IR

czc hello.cz --emit=llvm-ir

查看 LLVM 后端文档编译器架构文档 了解详情。

MLIR-AIR 优化 🆕🔥

使用 MLIR 进行高级循环优化!

# 使用 MLIR 优化
czc matrix.cz --mlir --mlir-opt=aggressive

# 生成优化后的 MLIR
czc matrix.cz --emit=mlir-opt

优化技术

  • ✅ 循环融合(Loop Fusion)
  • ✅ 循环平铺(Loop Tiling)
  • ✅ 循环展开(Loop Unrolling)
  • ✅ 自动向量化(SIMD)
  • ✅ 自动并行化(多核)
  • ✅ 多面体优化(Polyhedral)

性能提升

  • 矩阵乘法:12.5x
  • 图像处理:16.7x
  • 科学计算:5-10x

查看 MLIR 优化文档 了解详情。

Cranelift 后端 🆕⚡

极速编译,快速迭代!

# 使用 Cranelift(编译快 10-20x)
czc main.cz --backend=cranelift -o main

# 开发模式(自动使用 Cranelift)
czc main.cz --mode=dev -o main

# 发布模式(自动使用 LLVM)
czc main.cz --mode=release -o main

性能对比

编译速度:
LLVM:      120s
Cranelift: 6s   (20x faster!)

运行性能:
LLVM:      100%
Cranelift: 80%  (足够好!)

优势

  • ⚡ 编译速度极快(10-20x)
  • 🔄 快速迭代开发
  • 💾 内存使用少
  • 🚀 完美的开发体验

查看 Cranelift 后端文档 了解详情。

Mold 高速链接器 🆕⚡

使用 Mold 加速链接!

# 使用 Mold 链接(3-10x 更快)
czc main.cz --use-mold

# 或指定链接器
czc main.cz --linker=mold

性能对比

GNU ld:  45s
LLD:     15s
Mold:    5s  (9x faster!)

优势

  • ⚡ 极快的链接速度
  • 🔄 并行链接
  • 💾 内存高效
  • 🚀 完美的开发体验

查看 Mold 链接器文档 了解详情。

快速开始

# 运行 Counter 示例
d:\zig\zig.exe build run

# 运行 Chat Room 示例
d:\zig\zig.exe build chat

# 运行 Exokernel 演示
d:\zig\zig.exe build exo

# 运行 DBOS 演示(数据库操作系统)
d:\zig\zig.exe build dbos

# 运行测试
d:\zig\zig.exe build test

模式匹配 (match-case) 🆕

Python 风格的模式匹配!

// 基础匹配
fn describe_number(n: i32) void {
    match n {
        0 => print("zero"),
        1 => print("one"),
        x if x < 0 => print("negative"),
        _ => print("other"),
    }
}

// 联合类型匹配
const Result = union(enum) {
    ok: i32,
    err: []const u8,
};

fn handle_result(result: Result) void {
    match result {
        .ok(value) => print("Success: {d}", value),
        .err(msg) => print("Error: {s}", msg),
    }
}

// Actor 消息匹配
actor Worker {
    receive {
        msg => match msg {
            .start => self.state = .running,
            .task(priority) if priority > 5 => self.process_urgent(),
            .task(_) => self.process_normal(),
            _ => print("Unknown"),
        },
    }
}

查看 模式匹配文档 了解详情。

语言示例

// 模块定义
module network.tcp;

import std.allocator;
import std.actor;

// Actor 定义
actor TcpServer {
    port: u16,
    connections: List(Connection),
    
    // 初始化时指定分配器
    pub fn init(alloc: Allocator, port: u16) !Self {
        return Self{
            .port = port,
            .connections = try List(Connection).init(alloc),
        };
    }
    
    // 消息处理
    receive {
        Connect(addr: Address) => {
            const conn = try self.connect(addr);
            try self.connections.append(conn);
        },
        
        Disconnect(id: u32) => {
            self.connections.remove(id);
        },
    }
}

// 使用
pub fn main() !void {
    var gpa = std.heap.GeneralPurposeAllocator(.{}){};
    defer _ = gpa.deinit();
    
    const alloc = gpa.allocator();
    
    // 创建 Actor
    var server = try actor.spawn(TcpServer, alloc, .{8080});
    defer server.stop();
    
    // 发送消息
    try server.send(.{ .Connect = addr });
}

项目结构

CZ/
├── src/
│   ├── runtime/      # Cz 运行时
│   ├── actor/        # Actor 系统实现
│   ├── allocator/    # 分配器抽象
│   └── std/          # 标准库
├── examples/         # 示例代码
└── build.zig         # 构建脚本

设计理念

Cz 的设计目标是创建一个适合构建高性能、高可靠性系统的语言:

  1. 显式优于隐式:内存分配、错误处理都是显式的
  2. 隔离优于共享:Actor 之间不共享内存
  3. 消息优于锁:通过消息传递实现并发
  4. 编译时优于运行时:尽可能在编译时发现错误

操作系统开发 🆕

Cz 现在可以用于操作系统开发!

查看 OS 开发指南Exokernel 设计 了解详情。

核心能力

  • ✅ Freestanding 模式(裸机运行)
  • ✅ 硬件抽象层(VGA、串口、定时器)
  • ✅ 内核 Actor 调度器
  • ✅ 物理内存管理
  • ✅ Actor 独立内存池
  • Exokernel 架构(新增!)

Exokernel 示例

// 注册多个 LibOS
var kernel = try Exokernel.init(allocator, 16 * 1024 * 1024);
_ = kernel.register_libos("BatchOS", batch_os_main);
_ = kernel.register_libos("RTOS", rtos_main);
_ = kernel.register_libos("DatabaseOS", db_main);

// 能力系统保护资源
const cap = kernel.syscall_alloc_page(libos_id);

适用场景

  • Exokernel(极致性能和灵活性)
  • 微内核操作系统
  • 嵌入式 RTOS
  • IoT 设备固件
  • 教学用 OS
  • 高性能数据库系统

DBOS - Database Operating System 🆕🔥

基于 Asterinas 框内核架构的数据库操作系统!

查看 DBOS 架构文档 了解详情。

核心创新

  • Cz Exokernel 作为可信基(TCB ~1000 行)
  • Safe Rust DBMS 作为安全部分(100% Safe Rust)
  • ✅ 零拷贝 I/O
  • ✅ 自定义内存管理
  • ✅ 极致性能 + 极致安全

架构

Applications (SQL)
    ↓
Safe Rust DBMS (Untrusted)
    ↓
Cz Exokernel (TCB - Trusted)
    ↓
Hardware

运行演示:

d:\zig\zig.exe build dbos

czpm - 包管理器 🆕

现代化的包管理器,结合 Cargo 和 pnpm 的优点!

查看 czpm 文档 了解详情。

核心特性

  • TOML 配置package.cz
  • 硬链接(节省磁盘空间)
  • Workspace(Monorepo 支持)
  • 内容寻址(基于哈希)
  • 快速安装(比 npm 快 10x)

使用示例

# 创建项目
czpm init my-project

# 添加依赖
czpm add actor-runtime@1.0.0

# 安装(使用硬链接)
czpm install

# 构建和运行
czpm build
czpm run

与其他语言对比

想知道 Cz 与 Zig、C3、Nim、Rust、V 的区别?

查看 语言对比文档 了解详细对比。

Cz 的独特优势

  • ✅ 唯一内置 Actor 模型的系统语言
  • ✅ 唯一支持 Exokernel 的语言
  • ✅ 唯一有 DBOS 框架的语言
  • ✅ 唯一使用硬链接的包管理器

🚀 快速实用化计划 🆕

目标:3 个月内让 Cz 可以实际使用!

查看 实用化行动计划 了解详情。

核心策略

  1. 转译到 Zig(不从零实现编译器)
  2. 包装 Zig std(不重复造轮)
  3. 复用现有工具(不全部自己做)

时间表

Month 1:编译器可用

  • ✅ 词法/语法分析器(已完成骨架)
  • 🔄 Actor 语法转换
  • 🔄 基础测试

Month 2:标准库完整

  • ⏳ 文件 I/O
  • ⏳ TCP 网络
  • ⏳ JSON 解析
  • ⏳ HashMap/HashSet

Month 3:工具链就绪

  • ⏳ czpm(包管理)
  • ⏳ czfmt(格式化)
  • ⏳ 基础 LSP

立即开始

# 构建编译器
cd czc
zig build

# 测试示例
zig build run -- ../examples/simple.cz -o simple
./simple

查看 实施指南 开始贡献!

自举计划(长期)

Cz 也在规划自举(Self-Hosting)!

查看 自举计划文档 了解详情。

时间表:18 个月实现完全自举(在实用化之后)

开发状态

🚧 实验阶段 - 核心功能已实现:

  • ✅ Actor 运行时
  • ✅ 消息传递
  • ✅ 内存管理
  • ✅ OS 开发支持
  • ✅ Exokernel 架构
  • ✅ DBOS 框架
  • ✅ czpm 包管理器
  • ✅ .cz 文件格式
  • 🔄 自举编译器(进行中)
关于

Cz是一个结合了 Zig 的显式分配器、Erlang 的 Actor 隔离和 C3 的模块化的实验性编程语言。

27.0 MB
邀请码