本文将深入探讨Zig的特点、学习方法以及它能够实现的功能。 Zig是一种系统级编程语言,它旨在提供简单、安全和高效的编程体验。Zig的设计目标是兼具现代语言的特性和传统低级语言的控制能力。 Zig适用于开发底层的软件,如操作系统、编译器和嵌入式系统。要学习Zig,你可以阅读官方文档、浏览示例代码、参与练习项目,并积极参与Zig社区的讨论。 官方文档提供了对语言特性、语法和标准库的详细介绍,是学习Zig的重要资源。 示例代码:浏览Zig的示例代码库,这些代码可以帮助你理解如何使用Zig编写实际的程序。 练习项目:尝试用 Zig编写一些小项目或参与开源项目。通过实际动手编写代码,你可以更好地理解和掌握Zig的编程技巧。 社区支持:加入Zig的社区,例如访问官方论坛或参与在线讨论。 源码: https://github.com/ziglang/zig Zig的应用领域 Zig适用于各种系统级开发任务,包括操作系统、驱动程序、编译器、嵌入式系统和网络协议栈等。
用 Zig 实现 yes 命令 起因是看到一篇文章[1],作者介绍了如何用 Rust 优化 yes 命令,第一个 buffer 的版本还比较好懂,第二个复用 buffer 的就没有那么直接了。 想了下用 Zig 实现会是怎么样? (out.writer()); while ((try f.write(output)) > 0) { _ = try f.write("\n"); } } 编译运行 zig build-exe yes.zig -Drelease-safe .
站在2026年的视角,Zig和Hare虽然都瞄准“现代系统编程”,但两者的前景和定位已出现显著分野:Zig正在从“黑马”蜕变为“主流基建语言”,而Hare则更偏向于“极客方向的利基工具”。 Zig:迈向主流的“C语言继任者”Zig目前正处于爆发前夜,前景被广泛看好,核心在于它解决了C/C++生态的痛点,而非另起炉灶。工业级应用趋势明显:Zig已不再局限于实验阶段。 独特的生态位:C/C++编译器:Zig不仅能编译自身,还能作为C/C++的编译器使用,并自带交叉编译工具链。 2026年学习Zig的ROI(投资回报率)较高,因为其语法和语义已趋于稳定。前景判断:Zig极有可能在未来3-5年内成为系统级编程的“新基准”,尤其是在资源受限的边缘计算和追求极致性能的后端服务领域。 前景判断:Hare会是一个优秀的“第二语言”,用于编写高质量的Unix哲学工具,但它不太可能撼动C或Zig在核心基础设施中的地位。
正如 Zig 创始人 Andrew Kelley 所言,Zig 是「生成机器码的领域特定语言(DSL)」。 Zig 强烈偏好显式资源管理。 对 Zig 而言,Rust 已扮演「现代 ML」角色,这迫使 Zig 更需要专业化。 语义明确:我最担忧 Zig 关于别名、来源、可变性和自引用等问题的语义。 自包含流程:Zig 让我强烈共鸣的价值观是偏好低依赖、自包含的流程。理想情况下只需获取 ./zig 二进制即可开始。当前最佳实践是将特定版本 ./zig 打包进项目(而非使用系统级 zig)。 希望 Zig 提供标准脚本(get_zig.sh/get_zig.bat)或小型可移植二进制文件,让项目能直接内置,使贡献体验完全本地化和自包含: ./get_zig.sh . /zig build 自动化扩展:有了 ./zig 后,可用它驱动更多自动化。虽然已有 ./zig build,但软件开发不止于构建。
最后,文章总结了ZIG的优点和未来发展前景。 引言: 随着技术的不断发展和项目需求的多样性,新的编程语言层出不穷。在这些新兴语言中,ZIG因其独特的目标和特点而备受关注。 ZIG语言的目标是提供高性能、简洁性和模块化,同时避免许多其他语言的常见错误和陷阱。 性能 ZIG语言追求高性能,其设计旨在与C和C++的执行速度相匹配。 如果你对ZIG感兴趣,可以访问官方网站或者参与开源社区,一起为ZIG的发展贡献力量。 总结: ZIG是一种新兴的编程语言,其设计目标是提供高性能、简洁性和模块化,并避免常见错误和陷阱。 /Regular-Expressions-in-Zig/ [8] Zig Build System: https://en.liujiacai.net/2023/04/13/zig-build-system You: HTTP Client: https://zig.news/nameless/coming-soon-to-a-zig-near-you-http-client-5b81 [16] Zig
Zig 的吉祥物“零号(Zero the Ziguana)” 编程语言专家曾对 Zig 编程语言的创造者 Andrew Kelley 说,在编译时运行代码是个蠢主意。 尽管如此,Kelley 还是去实现了这个想法,而多年以后,这个蠢主意已经成为了 Zig 的招牌。这一特征在 Zig 中用关键字 comptime 标识,代表需要在编译时运行的代码或者是需要的变量。 Andrew Kelley 为避免依赖 C 的宏,专门设计了 Zig。可以说,Zig 存在的原因本质上就是 Andrew 想用 C 编程,但又不想折腾宏这类烦人的东西。 让我们再看看 Zig 对这类问题的解决方案。先在 Zig 中定义一个泛型 maxiumum 函数,用 anytype 和 @TypeOf(a) 替代 i32 类型参数。 请注意,Zig 不是动态编程语言,在用不同参数类型调用 maximum 时,Zig 的编译情况也会不同。a 和 b 的类型依旧会在编译时决定,而非运行时。
上文中我们介绍了Zig语言得爬虫的有些优劣势,想必大家对于自身项目选择那种语言做爬虫应该有些思路了,今天我将使用Zig的标准库来构建一个简单的高并发爬虫模板。 由于Zig的异步机制和标准库中的http模块,我们可以实现一个基于事件循环的爬虫。 以下是使用 Zig 实现高并发爬虫的简洁模板,结合协程(async/await)和连接池技术实现高效并发请求:const std = @import("std");const Allocator = std.mem.Allocator ;每个URL在独立轻量级线程中执行3、资源自动清理:defer req.deinit(); // 确保请求关闭defer allocator.free(body); // 确保内存释放利用Zig
Zig语言最为目前新兴语言,正是热度不断上升的阶段。我们知道Zig 作为一门以高性能、底层控制为核心的系统编程语言,它在爬虫开发中具备独特优势,尤其适合需要极致性能、精细内存管理或嵌入式部署的场景。 今天我利用我所学的知识综合分析下Zig的优劣势,如有不对望各位指点:一、Zig 用于爬虫的核心优势1、、高性能与低开销 Zig 生成的二进制文件极小(可缩至 4KB),运行时无垃圾回收(GC)开销,适合高并发爬取 三、适用场景分析场景Zig 适用性说明高频爬取+低延迟⭐⭐⭐⭐⭐如实时监控网站,Zig 性能碾压 Python/Go嵌入式爬虫⭐⭐⭐⭐无 OS 依赖,适合硬件设备数据采集增量替换 C 爬虫⭐⭐⭐⭐无缝调用 如果大家在追求开发效率,Go/Python 更优;若深耕系统级控制,Zig 是值得投资的潜力语言,尤其在替代 C 的演进路径上优势显著。具体选择那种语言得根据自身项目需求来决定。
Ghostty 是一款快速、功能丰富且跨平台的终端仿真器,使用平台原生 UI 和 GPU 加速。它的独特之处在于结合了速度、功能和原生 UI,而无需在这三者之间做出妥协。Ghostty 的目标是推动终端仿真器的现代化,提供丰富的交互式应用程序功能。
近期,Zig 编程语言的基金会(The Zig Software Foundation)已宣布退出 GitHub,原因是其领导层认为这个代码共享平台的服务正在衰退。 就在上周,Zig 软件基金会主席兼首席开发人员 Andrew Kelly 宣布,Zig 项目将迁移到非营利性 Git 托管服务 Codeberg。 在 Zig 的 CI 运行机器上,我们观察到有多个这样的进程运行了数百小时,悄无声息地拖垮了两个 runner 服务,并持续了数周。” 尽管 Kelly 事后为他激烈的措词道了歉,但 Zig 并非唯一公开与 GitHub 分道扬镳的软件项目。 参考链接: https://www.theregister.com/2025/12/02/zig_quits_github_microsoft_ai_obsession/
Zig 在这三门语言里,Zig 最新、也最不成熟。 写下这些文字时,Zig 还停留在 0.14 版本。它的标准库几乎没有文档,学习它最靠谱的方法往往是直接去读源码。 到了 Zig,你要亲手、显式地分配每一个字节(Zig 是手动内存管理)。 Zig 鼓励的正是这种做法。 很多人似乎都困惑[6],既然已经有 Rust,为什么还需要 Zig? 差别并不只是 Zig 更简单。 我认为更重要的差异在于,Zig 希望你从代码里剔除更多面向对象的思维方式。 Zig 身上有一种好玩、带点“颠覆”的气质。 我也希望它能尽快发布稳定版,尽管 Zig 团队眼下的优先事项似乎是重写他们的所有依赖[7]。也不是没可能:在看到 Zig 1.0 之前,他们先把 Linux 内核也重写一遍。
附本文工程的代码仓库:git@github.com:JanYork/zig-group-chat.git 第 1 章|Zig 的由来与历史 Zig 为什么会出现? 第 3 章|Zig 基本语法速览 让我们快速扫盲 Zig 的基础语法,为后面的实战做准备。 常用命令: zig run main.zig:编译并直接运行。 zig build-exe main.zig:编译生成可执行文件。 zig build:使用内置构建系统(读取 build.zig)。 交叉编译(Zig 的杀手锏): # 在 Mac 上编译 Linux 程序,无需安装任何额外工具 zig build-exe main.zig -target x86_64-linux 第 5 章|网络编程基础 第 11 章|项目收尾与展望 11.1 如何运行 在项目根目录下: zig build-exe server.zig zig build-exe client.zig 开启一个终端运行 .
libreddit.spike.codes/r/rust/comments/rgyss8/an_code_editor_written_in_rust_by_the_atom_devs/ Rust有什么是Zig Reddit 上有个讨论很有意思,同属于更好的C的类型的语言,Zig提供了很多有趣的设计思路,甚至于Rust语言团队也需要从中吸取经验,用以改进Rust,这部分讨论收录在这里: 我还没有深入研究过Zig Rust有什么是Zig所没有的? 高赞回复: Rust有什么是Zig所没有的? 编写代码时不需要经常考虑内存管理问题的能力。 Zig让内存管理变得非常明确,比如强迫你处理分配失败的情况,这很好......但是,这并不是我在PC平台上做游戏时真正要处理的问题。 而且这还没有触及多线程的问题 Read More: https://libreddit.spike.codes/r/rust/comments/rlj9zl/what_do_you_think_about_zig
为什么 Zig 能做到这样,而 Clang 却不能?Clang 和 Zig 之间主要的差异是什么? 我们开始使用 Zig,将 zig cc 整合到我们的 Go 代码库中。 Uber 自 2022 年 4 月以来一直在运行 Zig 生成的二进制文件,因此我们对 Zig 信心满满。 因为与 Zig 软件基金会合作,我们可以寻求对我们来说重要的解决方案。Zig 的人帮助我们发现和修复 Go 和 Zig 中的问题。 嵌入到可执行文件中的运行时库(compiler-rt)是用 Zig 编写的。总而言之,我们的大多数 Go 服务都涉及到了一点 Zig,并且是用 Zig 编写的工具链编译的。
=nil,看到Zig的try都心动了。那为什么Go就是不加呢?答案不是"保守",而是"动不了"。 =nil{returnnil,err//第2次}returncfg,nil}Zig的"真香"写法展开代码语言:TXTAI代码解释fnloadConfig(path:[]constu8)! Error()就是errortypeMyErrorstruct{msgstring}func(eMyError)Error()string{returne.msg}展开代码语言:TXTAI代码解释//Zig 简单介绍Zig的错误处理Zig的核心理念:错误是值,不是异常。 总结go为什么宁愿背上模板代码的骂名,也不愿意学习zig的错误设计的根本原因是若不从根本上重新设计错误类型,就无法获得Zig式错误处理的真正优势。
这一类别中最值得注意的是 Zig 和 Rust,我们最近讨论过它们。Zig 是一种快速、高性能的低级、编译、静态类型系统编程语言,旨在成为 C 的最终替代品。Zig 声称比 C 更快、性能更高。 Zig 的设计考虑到了安全性,它提供了一种调试模式来编译您的代码。调试模式针对安全性进行了优化。它禁用所有 Zig 的编译器优化并启用所有 Zig 的安全检查。 Zig 是一种相对较新的编程语言。Zig 背后的生态系统并不像 Rust 的生态系统那么大,只有少数开发人员使用 Zig,而我自己最近才了解 Zig。 句法 Rust 的语法被设计得简洁易读。 从初学者的角度来看,Zig 的设计易于学习和使用。如果您使用过任何类似 C 的语言,那么 Zig 的学习曲线就会显着缩短。Zig 尝试保留 C 的大部分现有语法,只在必要时引入新语法。 Zig编译器也是用Zig编写的,Uber也使用Zig C++编译器通过Hermetic CC工具链在arm64硬件上运行Uber服务。 那么其中哪一个是 C 的最终替代品呢?
安装Zig后,请在终端中输入zig验证您的安装状态 Zig初体验 我们已经安装了Zig工具链,现在让我们开始在Zig中编写程序。我们将编写一个(经典)的Hello, World! 使用以下命令运行上述代码: zig run hello.zig 您将在终端中看到Hello Zig!。 {"Zig", 2024}); // Hello Zig! 您可以根据自己的喜好使用以下命令搭建一个 Zig 构建项目: zig init-exe:初始化一个基于 Zig 构建器的可执行应用程序 zig init-lib:初始化一个基于 Zig 构建器的库 之前的演示应用程序是一个可执行类型的应用程序 它向 build.zig 文件添加了几个构建步骤,我们可以使用 zig build 命令执行它们,而不是使用 zig run 或 zig build-exe。
zig 2. zig-zag: 当目标节点、父节点和祖父节点成"zig-zag"构型时,进行一次双旋转,将目标节点调整到祖父节点的位置。 ? zig-zag 3. zig-zig:当目标节点、父节点和祖父节点成"zig-zig"构型时,进行一次zig-zig操作,将目标节点调整到祖父节点的位置。 ? zig-zig 单旋转操作和双旋转操作见AVL树。下面是zig-zig操作的示意图: ? zig-zig operation 在伸展树中,zig-zig操作(基本上)取代了AVL树中的单旋转。 相对于单旋转(想一下单旋转的效果),zig-zig可以将A、B子树放在比较高的位置,从而减小树总的深度。 下面我们用一个具体的例子示范。我们将从树中搜索节点2: ? Original ? zig-zag (double rotation) ? zig-zig ? zig (single rotation at root) 上面的第一次查询需要n次操作。
其他常规结论则包括: 过去一年收入最高的语言是Zig; 最受欢迎的Web框架是Phoenix; PostgreSQL终于取代MySQL成为最受欢迎数据库; 云计算平台中,AWS仍然强势第一,使用率是Azure Zig。年薪中位数为103611美元(合人民币约74万元),今年突然杀出来的。 作为一门现代编程语言,很多人表示它跟C很像,如果会C就很好学(划重点了!!)。
在编程语言领域,Zig相对来说是新成员。Zig由Andrew Kelly创立,于2016年正式面世,Zig社区将其定位为“用于开发健壮、优化和可复用软件的通用编程语言”。 作为一名Go开发者,我对Zig及其工具链的能力尤为感兴趣。在研究Zig时,发现这两种语言(Zig和Go)在某些方面有着共同的特性。 在研究Zig时,发现这两种语言(Zig和Go)在某些方面有着共同的特性。在这篇博文中,将重点介绍作为Go程序员,对Zig感兴趣的一些特性。 Zig运行 类似于`go run`,Zig提供了`zig run`命令,将编译和运行源代码的步骤结合: zig run my_program.zig Defer Zig与Go一样,通过`defer`概念来管理退出堆栈 Zig 编译 1. Zig作为 C (交叉) 编译器 Zig 工具链包含完整的 C 编译器,因此可以使用 Zig 来替换当前的 C 编译器工具链。