Zig 0.13

Zig 系统编程

无隐藏控制流,无隐藏内存分配——Zig 是比 C 更简单的系统语言,comptime 让元编程优雅可控

无隐藏控制流
comptime元编程
C互操作
手动内存管理
10 核心章节
0.13 Zig 最新版
Bun TigerBeetle 用Zig构建

为什么学 Zig?

Zig 由 Andrew Kelley 于 2015 年创建,目标是成为一门比 C 更好的 C——更简单、更安全、更可预测。不同于 Rust 用复杂的借用检查器来保证内存安全,Zig 选择了另一条路:保持语言本身极度简洁,将控制权完全交给程序员,同时通过编译期计算(comptime)提供强大的元编程能力。

Zig 的核心哲学是"无隐藏控制流":没有隐式内存分配,没有运算符重载,没有异常,没有宏(用 comptime 代替)。你看到的代码就是实际执行的代码,没有任何"魔法"在背后运行。这使得 Zig 代码极其可预测,非常适合系统编程、嵌入式开发和性能敏感场景。

著名的 JavaScript 运行时 Bun 和数据库 TigerBeetle 都用 Zig 构建,证明了其工业级可用性。

核心特性

Zig 重新定义了简洁系统编程的边界

🚫

无 GC

没有垃圾回收器,内存由程序员通过 Allocator 接口显式管理,性能完全可预测。

comptime

编译期计算取代宏和模板,泛型通过 comptime 类型参数实现,简洁而强大。

🛡️

错误处理

error sets 和错误联合类型 !T,强制处理所有错误路径,无异常机制。

🔗

C互操作

一行 @cImport 即可使用任意 C 库,zig cc 可替代 gcc/clang 作为 C 编译器。

🌐

交叉编译

内置支持交叉编译到数百种目标平台,无需额外工具链配置。

🔨

构建系统

build.zig 用 Zig 代码描述构建步骤,取代 Makefile/CMake,强类型且可扩展。

课程目录

系统性掌握 Zig,从哲学到实战

Chapter 01

Zig 哲学:无隐藏控制流与显式设计

Andrew Kelley 创建背景,对比 C/Rust/Go 的设计哲学,安装配置,Hello World,zig 工具链命令。

zig build zig run 哲学
Chapter 02

基础语法:变量、类型与控制流

const/var 声明,整数与浮点类型,bool/void,类型推断,if/while/for/switch,块表达式,undefined。

const var 控制流
Chapter 03

内存管理:Allocator 接口设计

Allocator 接口原理,通用分配器,ArenaAllocator,FixedBufferAllocator,defer 释放,内存泄漏检测。

Allocator defer 内存
Chapter 04

错误处理:error sets 与 try/catch

error 关键字,错误联合类型 !T,try 传播,catch 捕获,anyerror,errdefer,测试错误路径。

error try errdefer
Chapter 05

结构体、枚举与联合类型

struct 定义与方法,元组结构体,enum 与标签值,union(enum) 标记联合,extern struct,packed struct。

struct enum union
Chapter 06

指针与切片:安全的底层操作

单元素指针 *T,多元素指针 [*]T,切片 []T,可选指针,ptrCast,sentinel-terminated 切片,内存对齐。

*T []T 切片
Chapter 07

comptime:编译期计算与元编程

comptime 关键字,comptime 参数与块,泛型实现,@TypeOf/@typeInfo,类型反射,编译期断言。

comptime 泛型 反射
Chapter 08

构建系统:build.zig 详解

build.zig 结构,添加可执行文件/库/测试,依赖管理 build.zig.zon,交叉编译,自定义构建步骤。

build.zig zon 交叉编译
Chapter 09

C 互操作:调用与封装 C 库

@cImport/@cInclude,C 类型映射,链接 C 库,extern fn,调用 libcurl 示例,zig cc 替代 gcc。

@cImport linkLibC zig cc
Chapter 10

实战:构建 HTTP 服务器

std.net TCP server,HTTP 请求解析,路由设计,响应生成,std.Thread 并发,httpz 库集成,性能测试。

std.net HTTP 并发