Zig 是一种通用编程语言和工具链,旨在维护健壮最优可重用的软件。

开始使用 最新版本:  0.14.1
文档 更新日志

⚡ 一门简洁的语言

专注于调试你的应用程序,而不是调试你的编程语言知识。

  • 没有隐藏的控制流。
  • 没有隐藏的内存分配。
  • 没有预处理器,没有宏。

⚡ 编译时(Comptime)

一种基于编译时代码执行和惰性求值的元编程新方法。

  • 在编译时调用任何函数。
  • 将类型作为值进行操作,而无运行时开销。
  • Comptime 模拟目标架构。

⚡ 使用 Zig 进行维护

逐步改进你的 C/C++/Zig 代码库。

  • 将 Zig 用作零依赖、即插即用的 C/C++ 编译器,开箱即用支持交叉编译。
  • 利用 zig build 在所有平台上创建一致的开发环境。
  • 向 C/C++ 项目添加 Zig 编译单元,将丰富的标准库暴露给你的 C/C++ 代码。

完整概述

更多代码示例

index.zig
const std = @import("std");
const parseInt = std.fmt.parseInt;

test "parse integers" {
    const input = "123 67 89,99";
    const gpa = std.testing.allocator;

    var list = std.ArrayList(u32).init(gpa);
    // Ensure the list is freed at scope exit.
    // Try commenting out this line!
    defer list.deinit();

    var it = std.mem.tokenizeAny(u8, input, " ,");
    while (it.next()) |num| {
        const n = try parseInt(u32, num, 10);
        try list.append(n);
    }

    const expected = [_]u32{ 123, 67, 89, 99 };

    for (expected, list.items) |exp, actual| {
        try std.testing.expectEqual(exp, actual);
    }
}
Shell
$ zig test index.zig
1/1 index.test.parse integers...OK
All 1 tests passed.

Zig 社区是去中心化的

任何人都可以自由创建和维护自己的社区聚集空间。
没有“官方”或“非官方”的概念,但每个聚集地都有自己的管理员和规则。

主要开发

Zig 仓库位于 https://github.com/ziglang/zig,我们也在那里托管问题跟踪器并讨论提案。
贡献者需遵守 Zig 的 行为准则

Zig 软件基金会

ZSF 是一个 501(c)(3) 非营利性公司。

Zig 软件基金会是由 Zig 创始人 Andrew Kelley 于 2020 年成立的非营利性公司,旨在支持该语言的开发。目前,ZSF 能够以有竞争力的报酬向少数核心贡献者提供有偿工作。我们希望将来能将此机会扩展到更多的核心贡献者。

Zig 软件基金会由捐赠支持。

了解更多

企业赞助商

以下公司为 Zig 软件基金会提供了直接的财政支持。

GitHub 赞助者

感谢赞助 Zig 的人们,该项目对开源社区负责,而非企业股东。特别是,以下杰出人士每月赞助 Zig 200 美元或更多:

  • José M Rico
  • drfuchs
  • Kirk Scheibelhut
  • Bun
  • Huly® Platform™
  • marximimus
  • Stevie Hryciw
  • Karrick McDermott
  • Joran Dirk Greef
  • bfredl
  • Emi
  • Derek Collison
  • Paul Harrington
  • Clark Gaebel
  • Marcus Eagan
  • Ken Chilton
  • Will Manning
  • Spiral
  • Alok Parlikar
  • Numan
  • 本节每日更新。