Zig 是一种通用的编程语言和工具链,用于维护健壮高效可重用的软件。

立即开始 最新版本:  0.13.0
文档 变化

⚡ 一种简单的语言

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

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

⚡ 编译期代码执行

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

  • 编译期调用任意函数。
  • 在没有运行时开销的情况下,将类型作为值进行操作。
  • 编译期模拟目标架构。

⚡ 用 Zig 维护代码

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

  • 将 Zig 作为一个零依赖的,支持开箱即用交叉编译的 C/C++ 编译器。
  • 利用 zig build 在所有平台上创建一个一致的开发环境。
  • 在 C/C++ 项目中添加一个 Zig 编译单元,跨语言 LTO 默认启用。

深入了解

更多示例

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

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

    var list = std.ArrayList(u32).init(ally);
    // 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 的人,该项目对开源社区而不是公司股东负责。特别地,这些好心人以每月 200 美元或更高的金额赞助了 Zig:

  • José M Rico
  • drfuchs
  • Kirk Scheibelhut
  • Mitchell Hashimoto
  • Bun
  • Huly® Platform™
  • Stevie Hryciw
  • Karrick McDermott
  • Joran Dirk Greef
  • bfredl
  • Simon A. Nielsen Knights
  • Emi Gutekanst
  • Derek Collison
  • Paul Harrington
  • Clark Gaebel
  • Marcus Eagan
  • Ken Chilton
  • Will Manning
  • Spiral
  • Alex Mackenzie at Tapestry VC
  • Alok Parlikar
  • Keygen
  • 本表单每日更新。