加载中...
Andrew Kelley于2016年创建的系统级编程语言,目标是成为比C更安全、更可控的C替代品。无隐式内存分配、comptime编译期执行、和C的无缝互操作是其核心特性,Bun JavaScript运行时用Zig编写。

| 类型 | 编译型、静态类型、无GC |
| 发布年份 | 2016年(首次公开) |
| 开发者 | Andrew Kelley;Zig Software Foundation |
Zig的核心设计原则之一是没有隐藏的控制流:没有运算符重载、没有析构函数(值被释放时不触发隐式代码)、没有异常(只有错误联合类型)。Zig程序员看到的代码行为就是实际发生的行为,调试时没有「这个操作还触发了什么」的意外。
内存分配在Zig里是显式的:标准库的大多数数据结构接受一个Allocator参数,开发者决定用什么分配策略(堆分配器、arena分配器、固定缓冲区分配器)。这让内存使用完全透明,也让单元测试可以用测试专用分配器检测内存泄漏。[1]
comptime是Zig最独特的特性:在编译期执行任意Zig代码,用于泛型(没有模板语法,直接写comptime参数)、条件编译、编译期断言。一个泛型栈写成fn Stack(comptime T: type) type { ... },返回一个类型——泛型就是返回类型的函数,没有特殊语法。
Zig可以直接@import C头文件,调用C函数不需要绑定代码,Zig代码也可以导出C ABI函数供C调用。这让Zig成为出色的「胶水层」——可以用Zig逐函数替换C代码库,而不是一次性重写整个项目。Bun(高性能JavaScript运行时,2022年发布)和TigerBeetle(金融数据库)是最知名的Zig生产应用。

| 类型 | 编译型、静态类型、无GC |
| 发布年份 | 2016年(首次公开) |
| 开发者 | Andrew Kelley;Zig Software Foundation |
登录 后参与讨论
暂无讨论,来发表第一条评论吧