Show HN: Zig Topological Sort Library for Parallel Processinga year agohttps://github.com/williamw520/toposortTopoSort 是一个用于拓扑排序依赖图的 Zig 语言库功能包括构建依赖图、循环依赖检测及并行处理支持支持多种节点类型(如整型、切片等)安装需通过 `zig fetch` 获取包并更新 `build.zig.zon` 文件使用流程包含初始化 TopoSort、添加依赖关系、处理排序后的节点提供命令行工具 `toposort-cli` 可处理 Makefile 格式的数据文件包含基准测试,采用 MIT 开源协议
Zig is a general-purpose programming languagea year agohttps://ziglang.org/Zig专注于调试应用程序而非语言知识,没有隐藏的控制流、内存分配或预处理器。Zig引入'Comptime'实现元编程,允许编译期函数调用和类型操作,且无运行时开销。Zig可用于逐步改进C/C++/Zig代码库,作为支持交叉编译的零依赖编译器。Zig软件基金会(ZSF)是由Andrew Kelley于2020年成立的501(c)(3)非营利组织,旨在支持Zig发展。ZSF为核心贡献者提供有偿工作,并通过企业赞助、GitHub赞助等捐赠维持运营。
Building Statically Linked Go Executables with CGO and Ziga year agohttps://calabro.io/zig-cgo解释如何使用Zig创建带有CGO依赖的静态链接Go可执行文件。详细说明如何设置Zig静态库并配置build.zig以实现静态链接。提供一个简单的具有C ABI的Zig函数示例及对应的C头文件。展示调用Zig函数的Go代码,并包含静态链接所需的CGO标志。包含一个用于构建静态链接Go可执行文件的bash命令。通过ldd检查可执行文件来验证静态链接。表达对Go和Zig工具的赞赏,并建议向Zig软件基金会捐款。
Zig's new LinkedList API (it's time to learn fieldParentPtr)a year agohttps://www.openmymind.net/Zigs-New-LinkedList-API/Zig语言的SinglyLinkedList和DoublyLinkedList已更新为使用侵入式链表,这种设计将节点嵌入数据结构内部,从而提升性能并减少内存分配次数。新的SinglyLinkedList结构更简洁,不再直接引用所包含的数据,需要通过@fieldParentPtr从节点反向访问父级数据结构。示例代码演示了新API的使用方式:创建带有嵌入节点的用户对象、将用户节点前插到链表、遍历链表打印用户数据等操作。@fieldParentPtr作为内置函数被引入,它利用结构体中字段的已知偏移量,可安全地通过字段指针获取父级结构体。文章探讨了新API的设计取舍,承认@fieldParentPtr带来的复杂性,但也肯定其在高效解决特定问题时的实用价值。
A high-throughput parser for the Zig programming languagea year agohttps://github.com/Validark/Accelerated-Zig-Parser正在为Zig编程语言开发一个高吞吐量的分词器和解析器。提供了两种分词器实现:一种使用位串跳过连续字符匹配,另一种使用向量压缩技术实现同步令牌范围检测。性能提升显著,与主线实现相比分词速度提升2.75倍,内存占用减少2.47倍。优化策略包括采用SIMD指令集、SWAR技术、减少不可预测分支以及完美哈希函数。通过存储令牌长度而非起始索引、减少变量使用等方式降低内存消耗。未来计划包括修复UTF-8验证器、实现AST解析器,以及将该代码库集成至Zig编译器。
Zig and GPUsa year agohttps://alichraghi.github.io/blog/zig-gpu/GPU编程正在借助Rust和Zig等现代语言发展,减少对C++和厂商专用工具的依赖。Zig的GPU后端支持Vulkan的SPIR-V和OpenCL,并能生成适用于NVIDIA的PTX和AMD显卡的AMDGCN代码。Vulkan与OpenCL在功能上存在差异,OpenCL支持更多特性如内核和地址空间,因此在Zig中测试通过率更高。当前挑战包括管理SPIR-V的地址空间差异,以及Vulkan与OpenCL在硬件加速数学指令上的不兼容问题。未来目标包括改进SPIR-V验证、提升测试通过率、增加CUDA/HIP绑定,以及在Zig标准库中扩展GPU兼容算法。
Zack: A Simple Backtesting Engine in Ziga year agohttps://github.com/zerotech-studio/zackZack是一个用Zig编写的轻量级交易策略回测引擎它使用历史OHLCV数据逐根K线进行交易模拟Zig语言在性能、内存控制和简洁性方面具有优势回测流程包含初始化、事件循环和结果记录三个阶段核心组件包括数据处理器(DataHandler)、投资组合(Portfolio)、策略(Strategy)和执行处理器(ExecutionHandler)当前引擎实现了一个简单的'买入持有'策略通过JSON文件配置策略和主要参数要求OHLCV数据为特定列结构的CSV格式项目目录结构包含config(配置)、data(数据)和src(源码)三个文件夹未来计划增加更多指标、策略、技术指标和测试用例
Things Zig Comptime Won't Doa year agohttps://matklad.github.io/2025/04/19/things-zig-comptime-wont-do.htmlZig的comptime特性设计上具有限制性,不允许宿主泄漏,确保comptime代码在不同编译目标下行为一致。Zig不支持动态源代码生成(无#eval功能),而是通过部分求值/特化来实现类似效果。与其他语言不同,Zig不支持在comptime函数中使用领域特定语言(DSL)或自定义语法,严格基于Zig值进行操作。Zig要求所有类型元编程必须被特化消除,不提供运行时类型信息(RTTI),确保类型作为值仅存在于编译期。Zig的comptime不能扩展生成类型的API;无法为生成类型添加方法,保持其API为手写且可预测。Zig的comptime禁止任何输入/输出操作,使得编译期求值具有密封性、可重现性、安全性和可缓存性,但允许使用外部工具进行代码生成。
Deus Lex Machina: releasing a new compacting Zig tokenizera year agohttps://validark.dev/posts/deus-lex-machina/宣布推出新型Zig分词器的Alpha测试版当前支持配备AVX-512指令集的AMD64架构机器分词速度比主流实现快2.75倍(单核1.4GB/秒)基准测试显示速度和内存使用均有显著提升特性包括SIMD化UTF-8验证、无分支位操作和向量化查表未来计划包括处理512字节数据块和进一步优化提供在合格机器上运行基准测试的操作指南
Reflecting on a Year of Gamedev in Ziga year agohttps://bgthompson.codeberg.page/blog/one-year-zig-gamedev-reflections/作者回顾了用Zig语言进行一年游戏开发的经历,分享了超越游戏开发领域的通用见解。Zig的Discord社区响应迅速,能快速解决初学者和中级开发者遇到的问题。一个关于CPU指令集的典型问题在Zig Discord社区帮助下迅速得到解决。Zig原生支持向量运算(通过SIMD指令优化),但尚未内置矩阵运算支持。相比CMake、Ninja和Meson,Zig的构建系统因清晰易用而广受好评。Zig的标准库功能尚不完善,开发者偶尔需要自行实现缺失功能。Zig编译器会定期进行重大变更(破坏性更新),但版本升级可控且能带来改进。每个新版本都优化了编译速度,未来更新将进一步提升调试模式的编译效率。--watch编译选项的引入实现了文件变更自动重编译,显著优化了开发流程。尽管存在挑战,作者仍看好Zig的发展前景,并继续使用该语言开发游戏项目。
OCaml Cross Compilation: An Experimenta year agohttps://www.chrisarmstrong.dev/posts/ocaml-cross-compilation-an-experimentOCaml的跨平台编译很复杂且通常针对特定目标,已有多种方案分别针对移动端、Windows或嵌入式系统等不同平台。跨平台编译对移动/嵌入式系统、为其他操作系统分发软件、以及具有不同操作系统需求的云环境非常有用。Docker简化了跨平台编译但引入了性能开销,这对需要快速迭代的无服务器开发工作流会造成问题。OCaml跨平台编译的三个主要组件:C语言交叉编译工具链、OCaml交叉编译器、以及为目标环境修改的opam软件包。Zig语言通过`zig cc`工具链提供了简化的C语言交叉编译方案,无需复杂配置即可使用。一个针对Amazon Linux 2023(x86_64和aarch64架构)的OCaml交叉编译器覆盖仓库,其底层实现使用了Zig。必须通过重写opam包定义来交叉编译软件包,这个过程很繁琐且需要处理传递依赖关系。`packman`工具可以自动化重写opam包以支持交叉编译,但某些情况下仍需人工干预。未来工作包括改进`packman`工具、测试更多软件包,以及探索基于dune的包管理方案以避免opam重写。由于OCaml编译器中的汇编指令,针对非Linux目标(如Windows和macOS)的跨平台编译仍存在挑战。
Memory Safety Features in Ziga year agohttps://gencmurat.com/en/posts/memory-safety-features-in-zig/Zig在保持手动内存管理性能的同时强调内存安全性。没有隐藏控制流:通过'try'关键字使错误处理显式化。全面的错误处理机制(错误联合类型)强制开发者处理所有潜在错误。复杂的编译时安全检查可在运行前捕获内存问题。安全构建模式下的运行时边界检查可防止缓冲区溢出。'defer'语句确保无论控制流如何都能正确清理资源。可选类型通过显式标记可空引用避免空指针解引用。多种构建模式(Debug/ReleaseSafe/ReleaseFast/ReleaseSmall)平衡安全与性能。哨兵终止数组提供兼容C语言的安全字符串处理。显式分配器明确内存所有权,防止内存泄漏。编译时函数求值支持在编译期检查下进行安全元编程。显式指针转换使潜在不安全操作可见化。'errdefer'语句确保复杂初始化过程中发生错误时的资源清理。安全构建模式下的未定义行为检测可捕获整数溢出和释放后使用等问题。实践示例:一个安全双端队列实现展示了Zig的内存安全特性。
Zig, the Ideal C Replacement Or?a year agohttp://bitshifters.cc/2025/05/04/zig.htmlZig是一种通用系统编程语言,专为开发健壮、高效且可复用的软件而设计。Zig以'无隐藏控制流'为座右铭,强调显式控制,要求开发者显式处理内存分配、错误处理和控制流结构。Zig利用未定义行为来预防错误并提升性能,但批评者认为这与它追求正确性和健壮性的目标相矛盾。Zig自称比C语言更快的说法在基准测试经过公平调整后被证伪。Zig的错误处理机制新颖,要求立即处理结果,但缺乏一次性处理所有错误的简便方法。Zig的编译时执行(comptime)支持多态、泛型和条件编译,但可能过于复杂且存在隐式行为。Zig因冗长而受到批评,特别是在类型转换和C语言语法变更方面,例如用while循环替代for循环。Zig已开发近十年却仍未明确1.0版本发布时间,引发对功能蔓延的担忧。Zig在跨平台编译方面表现出色,'zig cc'作为Clang的替代方案被广泛用于交叉编译。Zig的构建系统(build.zig)功能强大,但对初学者可能令人生畏。Zig的安全性主张受到质疑,因为安全检查在发布版本中经常被禁用。与Odin语言相比,Zig处于劣势——Odin提供更多高级便利功能,使得Zig的使用体验反而比C语言更痛苦。
Bold : A Drop-In Replacement For Apple System Linker Written In Ziga year agohttps://github.com/kubkon/boldBold是苹果系统链接器ld的替代品,完全用Zig语言编写。其性能与LLVM的lld链接器相当,比苹果旧版ld链接器更快,但比苹果重写的ld链接器慢。基准测试显示bold比重写的苹果ld链接器慢2.23倍,但比LLVM的lld链接器快2.38倍。可通过clang的-fuse-ld=bold或gcc的-B/path/to/bold参数使用bold。构建bold需要Zig 0.14.0,编译命令为'zig build -Doptimize=ReleaseFast'。运行单元测试和端到端测试使用命令'zig build test'。欢迎对该代码库贡献代码。
How (memory) safe is Zig? (2021)a year agohttps://www.scattered-thoughts.net/writing/how-safe-is-zig/Zig的内存安全性常被拿来与C或Rust比较,但它无法像Rust那样系统性地预防内存不安全问题。Zig引入了临时运行时检查(如边界检查、禁止空指针),但缺乏Rust那种可组合的编译时证明机制。Zig通过分配器API检测释放后使用、泛型和更安全的默认值等特性,相比C语言有所改进。与Rust显著减少此类问题不同,Zig在复杂项目中仍常见内存安全漏洞。Zig的未来可能在于沙盒化插件(如WASM)等细分场景,其小二进制体积和低内存占用具有优势。Rust的内存安全性对高性能安全系统极具吸引力,但托管语言(如Java、C#)的性能正在提升。Zig的编译时机制提供了独特的编译时特化可能性,为未来语言设计创新带来启发。
Show HN: Zli – A Batteries-Included CLI Framework for Ziga year agohttps://github.com/xcaeser/zli专为Zig打造的极速、零开销命令行界面框架模块化设计,符合人体工学,提供高性能CLI构建体验灵感源自Go语言的Cobra和Rust的clap库特性包括:极速标志解析,支持布尔值/整数/字符串的类型安全处理,以及命名位置参数自动生成美观的帮助文档,内置版本/弃用提示处理功能采用模块化设计,命令与子命令可独立封装通过build.zig轻松集成到Zig项目中MIT开源协议,欢迎贡献代码
A Pokémon battle simulation enginea year agohttps://github.com/pkmn/engine该项目正处于密集开发阶段,主分支存在破坏性变更,建议用户等待v0.1版本发布。一个极简主义、性能优化的宝可梦对战模拟引擎,专为工具链、嵌入式系统和AI应用场景设计。该引擎实现帧级精确度,并与原版游戏代码及Pokémon Showdown模拟器保持bug级兼容。在兼容模式下运行速度比Pokémon Showdown快1000倍以上,经过全面测试并完整文档化。并非全功能模拟器,而是面向高级用例的底层库。包含Zig语言编写的引擎核心代码和TypeScript编写的参考驱动代码。GitHub发布页提供预编译二进制文件,源代码需通过Zig编译器构建。推荐使用Zig v0.11.0版本,0.12.0-dev.876+aaf46187a之前版本存在性能问题。驱动代码可通过npm安装,需依赖已编译的Node/WASM插件。支持Pokémon Showdown兼容模式及协议消息日志记录。提供按世代划分的对战状态更新函数和有效选项验证功能。libpkmn提供C语言API,旨在作为其他语言绑定的基础层。Zig包简化状态初始化和日志记录,支持FixedRNG实现确定性结果。当前已知提供C++和Python语言绑定。内置pkmn-debug工具,用于解码二进制数据结构和协议。开发路线图包含I-IV世代的实现阶段,现代世代因依赖反编译工程暂缓支持。明确排除团队验证、模组支持和非标准对战变体等特性。依据MIT许可证开源发布。
Low-Level Optimization with Ziga year agohttps://alloc.dev/2025/06/07/zig_optimization优化对于性能提升、成本节约和系统简化至关重要。像Zig这样的低级语言提供了更明确的意图和详细表达,有助于编译器优化。Zig的'comptime'特性允许在编译时生成和优化代码,从而提升性能。Zig的'comptime'可以为已知的编译时值生成优化代码,提高运行时效率。Zig的优化方法和'comptime'特性使得编写高性能且简洁的代码更加容易。
Zig Devlog: Self-Hosted x86 Back End Is Now Default in Debug Modea year agohttps://ziglang.org/devlog/2025/#2025-06-08Zig的自托管x86后端现已成为x86_64目标调试模式下的默认选项,在编译速度和健壮性方面优于LLVM针对初学者的Zig构建系统新视频教程已发布,旨在帮助用户有效理解和使用该构建系统新增FreeBSD和NetBSD交叉编译支持,用户可从任意机器构建针对这些系统的二进制文件Zig官方网站已升级使用Zine 0.10.0,从构建脚本过渡到独立可执行文件即将发布的Zig 0.14.0版本接近完成,多项改进已集成,但部分功能未能如期加入改进的UBSan错误信息为使用Zig编译的C程序中未定义行为提供了更清晰的诊断Zig的无libc实现在某些基准测试中已超越glibc,标志着语言发展的重要里程碑专为Zig增强的LLDB分支已推出,显著提升了特别是自托管后端的调试支持能力
Filedb: Disk Based Key-Value Store Inspired by Bitcaska year agohttps://github.com/rajivharlalka/filedbFileDB是受Riak1论文启发的Bitcask的Zig语言实现它采用日志结构哈希表存储记录元数据,并保持一个磁盘文件始终处于追加写入状态在重启或达到MAX_FILE_REACHED时进行文件轮转,旧文件转为只读模式定期执行压缩操作合并磁盘文件并更新元数据哈希表同步进程按配置间隔或每次请求时同步打开的磁盘文件元数据通过精确记录文件位置实现O(1)复杂度检索内存中的元数据体积恒定,与记录值大小无关仅追加(append-only)模式保障高吞吐量提供初始化/销毁/存储/获取/删除/列表/同步/哈希表存储/键目录加载等功能包含兼容Redis的客户端及性能基准测试基准测试显示set/get操作具有高吞吐量附有Zig编程相关资源参考