Zig
Zig係一個命令式、通用、靜態型別、編譯嘅系統程式語言。[3] [4]用「強健性、最佳性以及可維護性」做核心理念。[5] [6]佢支援編譯嗰陣嘅泛型同埋反射、交叉編譯仲有手動記憶體管理。[7]目標為改進 C語言[8] [9],同時參考咗 Rust[10] [11]同其他語言。Zig 有好多低階程式設計嘅功能,例如緊緻結構(成員間冇填充嘅結構)、任意大小嘅整數[12]以及多指針型別。[13]
編程範式 | 多重編程範式:命令式、並行、程序式、函式 |
---|---|
設計者 | Andrew Kelley |
第一次出現 | 2016年2月8號[1] |
預覽版本 | 0.13.0[2]
|
類型系統 | 靜態、強、自動推導、結構化、泛型 |
系統平台 | x86-64、ARM、MIPS、IA-32、WebAssembly、RISC-V |
操作系統 | 跨平臺 |
軟件授權 | MIT許可證 |
副檔名 | .zig、.zir |
網站 | ziglang |
啟發語言 | |
C語言、C++、LLVM IR、Go、Rust、JavaScript |
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,
};
}
睇埋
編輯參考
編輯- ↑ Kelley, Andrew. "Introduction to the Zig Programming Language". andrewkelley.me. 原先內容歸檔喺2022-02-21. 喺8 November 2020搵到.
- ↑ "Release 0.13.0".
- ↑ "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搵到.
- ↑ "Tired of C? New programming language Zig aims to be more pragmatic and readable" (美國英文). 2017-10-19. 原先內容歸檔喺2021-11-25. 喺2020-04-22搵到.
- ↑ Yegulalp, Serdar (2016-08-29). "New challenger joins Rust to topple C language". InfoWorld (英文). 原先內容歸檔喺2021-11-25. 喺2020-02-11搵到.
- ↑ "Zig language and C". Sina Corp. 2020-07-12. 原先內容歸檔喺2021-11-25. 喺2020-08-12搵到.
- ↑ "The Zig Programming Language". ziglang.org. 原先內容歸檔喺2022-04-01. 喺2020-02-11搵到.
- ↑ "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搵到.
- ↑ "The Zig Programming Language". ziglang.org. 歸檔時間2020-02-14. 喺2020-02-11搵到.
{{cite web}}
: CS1 maint: bot: original URL status unknown (link) - ↑ Company, Sudo Null. "Sudo Null - IT News for you". SudoNull (英文). 原先內容歸檔喺2021-11-25. 喺2020-02-11搵到.
- ↑ Kelley, Andrew. "Unsafe Zig is Safer Than Unsafe Rust". andrewkelley.me. 原先內容歸檔喺2022-02-21. 喺2020-02-11搵到.
- ↑ 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搵到.
- ↑ "Documentation - The Zig Programming Language". ziglang.org. 原先內容歸檔喺2022-03-31. 喺2020-04-24搵到.
- ↑ "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搵到.
- ↑ "A Reply to _The Road to Zig 1.0_". www.gingerbill.org (英國英文). 2019-05-13. 原先內容歸檔喺2021-09-07. 喺2020-02-11搵到.
- ↑ ziglang/zig, Zig Programming Language, 2020-02-11, 原先內容歸檔喺2022-03-30, 喺2020-02-11搵到
- ↑ "0.6.0 Release Notes · The Zig Programming Language". ziglang.org. 原先內容歸檔喺2022-02-21. 喺2020-04-19搵到.
- ↑ "'zig cc': a Powerful Drop-In Replacement for GCC/Clang - Andrew Kelley". andrewkelley.me. 原先內容歸檔喺2022-03-17. 喺2021-05-28搵到.
- ↑ "Zig Makes Go Cross Compilation Just Work". DEV Community (英文). 原先內容歸檔喺2022-03-03. 喺2021-05-28搵到.
- ↑ "Jakub Konka on Twitter". Twitter (英文). 原先內容歸檔喺2021-12-01. 喺2021-05-28搵到.
- ↑ "Announcing the Zig Software Foundation ⚡ Zig Programming Language". ziglang.org. 原先內容歸檔喺2021-11-15. 喺2021-05-28搵到.
- ↑ "Sponsor ZSF ⚡ Zig Programming Language". ziglang.org. 原先內容歸檔喺2022-02-21. 喺2021-05-28搵到.