目录
目录README.md

AZ编程语言

一种现代系统编程语言,结合C3和Zig的优点

License Version

快速入门 | 当前状态 | 模块系统 | 现代化特性

语言对比: AZ vs C3 | AZ vs Zig

✨ 核心特性

  • 🎯 C3风格错误处理 - 使用Result类型而不是异常
  • 🚀 现代语法 - 简洁清晰,易于学习
  • 🔒 类型安全 - 静态类型系统,编译时检查
  • 高性能 - 基于LLVM,编译为高效的机器码
  • 🛠️ 系统编程 - 适合操作系统和底层开发
  • 🌏 中英文支持 - 支持中英文标识符和关键字
  • 🔧 LLVM技术栈 - 使用MLIR和LLVM IR
  • 📦 模块化设计 - 类似C3的模块系统,配合chim包管理器
  • 🧠 双内存管理模型 - 显式内存管理(Zig风格)与自动垃圾回收(ZGC风格)
  • 🧩 语法风格语义绑定 - 大括号语法表示显式内存管理,Python缩进语法表示GC管理
  • 🎭 Actor并发模型 - 基于Microsoft Orleans的Virtual Actor模型实现

🧠 双内存管理模型

AZ语言的一大创新是提供了两种内存管理方式,开发者可以根据需求选择:

显式内存管理(Zig风格)

使用大括号语法表示需要显式管理内存的代码:

// 显式内存管理 - 类似Zig
pub struct ArrayList<T> {
    vec: Vec<T>
}

impl ArrayList<T> {
    /// 释放ArrayList的内存(显式内存管理)
    pub fn drop(self: *ArrayList<T>) void {
        self.vec.drop();
    }
}

自动垃圾回收(ZGC风格)

使用Python缩进风格表示由垃圾收集器自动管理内存的代码:

// 自动垃圾回收 - 类似ZGC
pub struct ArrayList<T>:
    vec: Vec<T>

impl ArrayList<T>:
    /// 在GC管理模式下,无需手动释放内存
    # 内存由垃圾收集器自动管理

🎭 Actor并发模型

AZ语言实现了基于Microsoft Orleans的Virtual Actor模型,提供了简单而强大的并发编程模型:

// 定义消息类型
struct IncrementMessage {}
struct GetCountMessage {}

impl Message for IncrementMessage {}
impl Message for GetCountMessage {}

// 定义Actor
struct CounterActor {
    id: ActorId,
    count: int
}

impl Actor for CounterActor {
    fn handle_message(self: *Self, message: *Message) Result<void, Error> {
        match message {
            case IncrementMessage => 
                self.count = self.count + 1;
            case GetCountMessage => 
                // 返回当前计数
        }
        return Result.Ok(void);
    }
    
    fn get_id(self: *Self) ActorId {
        return self.id;
    }
    
    fn on_activate(self: *Self) Result<void, Error> {
        self.count = 0;
        return Result.Ok(void);
    }
    
    fn on_deactivate(self: *Self) Result<void, Error> {
        return Result.Ok(void);
    }
}

// 创建Actor系统
let system = actor.create_system();

// 创建Actor引用
let actor_id = actor.new_actor_id("counter1");
let actor_ref = actor.actor_of<CounterActor>(&system, actor_id);

// 发送消息
let message = IncrementMessage{};
actor.send(&system, actor_ref, &message);

🌍 中英文混合编程

AZ语言的一大特色是支持中英文混合编程,开发者可以自由选择使用中文或英文标识符:

// 英文命名
let userName = "张三";
fn calculateSum(a: int, b: int) int {
    return a + b;
}

// 中文命名
let 用户名称 = "张三";
fn 计算总和(甲: int, 乙: int) int {
    return 甲 + 乙;
}

🚀 快速开始

Hello World

创建 hello.az 文件:

import std.io;

fn main() int {
    println("Hello, AZ!");
    return 0;
}

运行程序:

# 编译并运行
az cl compile hello.az -o hello
./hello

📊 当前状态

✅ v0.1.0 - Bootstrap版本(已完成)

  • Bootstrap编译器(Python实现)
  • 词法分析器
  • 语法分析器
  • 基本语义分析
  • 解释执行器
  • C3风格的错误处理
  • 基本语法支持(变量、函数、控制流)
  • 示例程序和文档

✅ v0.2.5 - C++前端(已完成)

  • C++编译器框架
  • 完整的词法分析器(C++,支持多编码)
  • 完整的语法分析器(C++)
  • 完整的语义分析器(C++)
  • 类型系统
  • 符号表管理
  • 类型推导
  • AST定义
  • C3风格Result类型(C++)

✅ v0.3.0 - MLIR后端(已完成)

  • MLIR-AIR Dialect框架
  • MLIR生成器(MLIRGen)
  • MLIR降级到LLVM IR
  • LLVM后端实现
  • 优化器(Optimizer)
  • 代码生成器(CodeGenerator)
  • 链接器(Linker)
  • 调试信息生成(DebugInfo)
  • JIT编译器(JIT)
  • 编译缓存(Cache)
  • 结构体和枚举
  • 模式匹配(match语句)
  • for循环
  • 数组和切片

✅ v0.4.0 - 工具链完善(已完成)

  • 完整的编译器驱动程序
  • 多种输出格式支持
  • 丰富的优化选项
  • 目标平台支持
  • 高级链接选项
  • 目标管理器
  • 静态库和共享库支持

✅ v0.5.0 - 完整实现(已完成)

  • MLIR-AIR Dialect完整实现
  • LLVM IR完整生成
  • lld链接器完整集成
  • lldb调试器集成
  • 编译时执行(comptime)
  • 所有权系统
  • AZGC垃圾回收器
  • 标准库
  • 包管理器(az mod)

📦 核心模块

标准库模块

  • std.io - 输入输出
  • std.string - 字符串处理
  • std.math - 数学运算
  • std.fs - 文件系统操作
  • std.collections - 集合类型
  • std.net - 网络编程
  • std.async - 异步编程
  • std.actor - Actor模型

az mod包管理器

az mod是AZ语言的官方包管理器,提供高效的依赖管理和workspace支持:

# 创建新项目
az mod init my-project

# 添加依赖
az mod add std@1.0.0

# 安装依赖
az mod install

# 构建项目
az mod build

📖 文档

🤝 贡献

欢迎贡献代码、报告问题或提出建议!

  1. Fork本项目: https://github.com/JuSanSuiYuan/az
  2. 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 开启Pull Request

📝 许可证

本项目采用木兰宽松许可证2.0(Mulan Permissive License,Version 2)。详见 LICENSE 文件。

用AZ,写出更安全、更高效的系统代码

Made with ❤️ by JuSanSuiYuan

⭐ Star | 🐛 Report Bug | 💡 Request Feature

关于

Az是一门现代化系统编程语言,融合了C3的模块化设计、Zig的编译时执行(comptime)和反射机制、Python式简洁语法

1.3 MB
邀请码
    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

©Copyright 2023 CCF 开源发展委员会
Powered by Trustie& IntelliDE 京ICP备13000930号