Zig係一個命令式通用靜態型別編譯嘅系統程式語言。[3] [4]用「強健性、最佳性以及可維護性」做核心理念。[5] [6]佢支援編譯嗰陣嘅泛型同埋反射、交叉編譯仲有手動記憶體管理。[7]目標為改進 C語言[8] [9],同時參考咗 Rust[10] [11]同其他語言。Zig 有好多低階程式設計嘅功能,例如緊緻結構(成員間冇填充嘅結構)、任意大小嘅整數[12]以及多指針型別。[13]

Zig
編程範式多重編程範式命令式並行程序式函式
設計者Andrew Kelley
第一次出現2016年2月8號, 8年之前 (2016-02-08)[1]
預覽版本
0.13.0[2] 喺維基數據度改
類型系統靜態自動推導、結構化、泛型
系統平台x86-64ARMMIPSIA-32WebAssemblyRISC-V
操作系統跨平臺
軟件授權MIT許可證
副檔名.zig、.zir
網站ziglang.org
啟發語言
C語言C++LLVM IRGoRustJavaScript

Zig 最初嘅編譯器係用 Zig 同埋 C++ 編寫而成,用 LLVM 13[14]為後端[15] [16]。呢個編譯器用咗 MIT許可證 授權。Zig 編譯器同埋 Clang 類似,可以編譯 C 同埋 C++(用「zig cc」同埋「zig c++」指令)[17],都為唔同嘅平台提供咗標頭檔,包括 C標準函式庫C++標準函式庫,因此 Zig 嘅 cc 同埋 c++ 子命令可以直接做交叉編譯器[18][19]

Zig 嘅開發由 Zig 軟件基金會(ZSF)資助,呢間資金會係一間非營利公司,由 Andrew Kelley 擔任總裁,亦都有請全職員工,同時接受捐款。[20] [21] [22]

例子

編輯

Hello World

編輯
const std = @import("std");

pub fn main() !void {
    const stdout = std.io.getStdOut().writer();
    try stdout.print("Hello, {}!\n", .{"world"});
}

鏈結串列

編輯
pub fn main() void {
    var node = LinkedList(i32).Node {
        .prev = null,
        .next = null,
        .data = 1234,
    };

    var list = LinkedList(i32) {
        .first = &node,
        .last = &node,
        .len = 1,
    };
}

fn LinkedList(comptime T: type) type {
    return struct {
        pub const Node = struct {
            prev: ?*Node,
            next: ?*Node,
            data: T,
        };

        first: ?*Node,
        last:  ?*Node,
        len:   usize,
    };
}

睇埋

編輯

參考

編輯
  1. Kelley, Andrew. "Introduction to the Zig Programming Language". andrewkelley.me. 原先內容歸檔喺2022-02-21. 喺8 November 2020搵到.
  2. "Release 0.13.0".
  3. "Zig has all the elegant simplicity of C, minus all the ways to shoot yourself in the foot". JAXenter (美國英文). 2017-10-31. 原先內容歸檔喺2021-11-25. 喺2020-02-11搵到.
  4. "Tired of C? New programming language Zig aims to be more pragmatic and readable" (美國英文). 2017-10-19. 原先內容歸檔喺2021-11-25. 喺2020-04-22搵到.
  5. Yegulalp, Serdar (2016-08-29). "New challenger joins Rust to topple C language". InfoWorld (英文). 原先內容歸檔喺2021-11-25. 喺2020-02-11搵到.
  6. "Zig language and C". Sina Corp. 2020-07-12. 原先內容歸檔喺2021-11-25. 喺2020-08-12搵到.
  7. "The Zig Programming Language". ziglang.org. 原先內容歸檔喺2022-04-01. 喺2020-02-11搵到.
  8. "Mozilla's Observatory, the Zig programming language, and uSens' VR/AR SDK—SD Times news digest: Aug. 29, 2016". SD Times (美國英文). 2016-08-29. 原先內容歸檔喺2021-11-25. 喺2020-02-11搵到.
  9. "The Zig Programming Language". ziglang.org. 歸檔時間2020-02-14. 喺2020-02-11搵到.{{cite web}}: CS1 maint: bot: original URL status unknown (link)
  10. Company, Sudo Null. "Sudo Null - IT News for you". SudoNull (英文). 原先內容歸檔喺2021-11-25. 喺2020-02-11搵到.
  11. Kelley, Andrew. "Unsafe Zig is Safer Than Unsafe Rust". andrewkelley.me. 原先內容歸檔喺2022-02-21. 喺2020-02-11搵到.
  12. Tim Anderson 24 Apr 2020 at 09:50. "Keen to go _ExtInt? LLVM Clang compiler adds support for custom width integers". www.theregister.co.uk (英文). 原先內容歸檔喺2020-05-15. 喺2020-04-24搵到.
  13. "Documentation - The Zig Programming Language". ziglang.org. 原先內容歸檔喺2022-03-31. 喺2020-04-24搵到.
  14. "SD Times news digest: C++20 concepts in Visual Studio 2010 version 16.3, Bootstrap to drop IE support, and Zig 0.60 released". SD Times (美國英文). 2020-04-14. 原先內容歸檔喺2021-11-25. 喺2020-04-19搵到.
  15. "A Reply to _The Road to Zig 1.0_". www.gingerbill.org (英國英文). 2019-05-13. 原先內容歸檔喺2021-09-07. 喺2020-02-11搵到.
  16. ziglang/zig, Zig Programming Language, 2020-02-11, 原先內容歸檔喺2022-03-30, 喺2020-02-11搵到
  17. "0.6.0 Release Notes · The Zig Programming Language". ziglang.org. 原先內容歸檔喺2022-02-21. 喺2020-04-19搵到.
  18. "'zig cc': a Powerful Drop-In Replacement for GCC/Clang - Andrew Kelley". andrewkelley.me. 原先內容歸檔喺2022-03-17. 喺2021-05-28搵到.
  19. "Zig Makes Go Cross Compilation Just Work". DEV Community (英文). 原先內容歸檔喺2022-03-03. 喺2021-05-28搵到.
  20. "Jakub Konka on Twitter". Twitter (英文). 原先內容歸檔喺2021-12-01. 喺2021-05-28搵到.
  21. "Announcing the Zig Software Foundation ⚡ Zig Programming Language". ziglang.org. 原先內容歸檔喺2021-11-15. 喺2021-05-28搵到.
  22. "Sponsor ZSF ⚡ Zig Programming Language". ziglang.org. 原先內容歸檔喺2022-02-21. 喺2021-05-28搵到.

出面網頁

編輯