2023-12-23,ZigCC 社区开始了第二次线上会议,共有 5 名 Zig 爱好者参加,分别是: 西瓜 贺鹏 Lambert 冯文轩 Reco 这次会议主要是同步了之前会议落实的 action,主要是同步了不同项目的进展,由于临近年底,大家进度都不算太大,但还是有所进展,算是开了个好头😄 项目进展 Zig-OS 主要参与人员:西瓜 进展:粗略看完 rust 版本的教程;完成 freestanding 二进制,现在卡在了 bootloade...| Zig 语言中文社区
2023 年 12 月 9 日,Zig 中文社区第一次线上会议隆重召开。共有 8 位 Zig 爱好者参加,分布在北上杭成、美国等不同地方。 会议参会人员 和当年的从仙童半导体出逃的人数一样,不多不少。😄 硅谷八叛徒 会议伊始,成员首先进行了个人简介,便于后续开展相应工作。随后,社区成员围绕 Zig 语言的普及进行了交流讨论。 在交流讨论环节,大家就 Zig 语言的普及面临的挑战和...| Zig 语言中文社区
https://ziglang.org/download/0.14.0/release-notes.html 发布概览 Zig 0.14.0 版本是经过 9 个月的工作,由 251 位不同的贡献者 完成,包含 3467 个提交 的成果。该版本专注于提升 健壮性、最优性 和 可重用性,并通过 Zig 软件基金会 (Zig Software Foundation) 资助开发。 核心主题与重要更新 提升编译速度与开发效率: 版本说明强调了两个重要的长期投资:增量编译 (Incremental Compilation) 和 快速 x86 ...| Zig 语言中文社区
原文: https://www.scottredig.com/blog/bonkers_comptime/ 译注:原文中的代码块是交互式,翻译时并没有移植。另外,由于 comptime 本身即是关键概念,并且下文的意思更侧重于 Zig comptime 的特性,故下文大多使用 comptime 代替编译时概念。 引子 编程通过自动化地处理数据极大地提升了生产力。而元编程则让我们可以像处理数据一样处理代码,以此将编程的力量反向作用于编程自身。而在...| Zig 语言中文社区
1. 简单介绍类型化有限状态机的优势 1.1 介绍有限状态机 有限状态机(FSM,以下简称状态机)是程序中很常见的设计模式。 它包含两个主要的概念状态和消息。状态机程序整体上的行为就是不断地产生消息,处理消息。 而状态主要是在代码层面帮助人们理解消息的产生和处理。 1.2 typed-fsm-zig typed-fsm-zig 是一个利用 zig 类型系统加一些编程规范实现的一个库,用于实现类型安...| 博客 on Zig 语言中文社区
2024-04-20,0.12.0 终于发布了,历时 8 个月,有 268 位贡献者,一共进行了 3688 次提交!下面是它的 Release notes: https://ziglang.org/download/0.12.0/release-notes.html ZigCC 对这个文档进行了翻译、整理,供需要升级适配的朋友参考: 0.12.0 升级指南 0.12.0 版本说明 为了庆祝这一盛事,ZigCC 决定在 2024-04-27 举行了一次线上的发行聚会,主要来讨论这次的版本,下面是视频回看地址: https://yout...| Zig 语言中文社区
在 2024-01-13 晚,ZigCC 社区举行了第三次线上会议,参会人员: 西瓜 Lambert 金中甲 夜白 会议主要讨论了下面两个议题: 公众号运营 如何与其他社区互动 公众号运营 这是最近群里聊到的问题,由于 Zig 语言本身属于较新的技术,因此社区内资料比较少,这导致很多感兴趣的人没有一个好的学习途径。 但对中文环境来说,我们其实之前已经积攒了一些素材,是完全可以通过公...| Zig 语言中文社区
zoop 是什么 zoop 是 zig 的一个 OOP 解决方案,详细信息可以看看 zoop官网。 为什么不用别的 OOP 语言 简单的说,是我个人原因,必需使用 zig 的同时,还一定要用 OOP,所以有了 zoop。 zoop 入门 类和方法 1 2 3 4 pub const Base = struct { pub usingnamespace zoop.Fn(@This()); mixin: zoop.Mixin(@This()), } 2-3行是一个struct成为zoop类必需的两行,这样一来,Base 就成为了一个 zoop 的类。 创建 Base 的对象有两...| Zig 语言中文社区
原文地址: https://www.openmymind.net/Leveraging-Zigs-Allocators/ 假设我们想为Zig编写一个 HTTP服务器库。这个库的核心可能是线程池,用于处理请求。以简化的方式来看,它可能类似于: 1 2 3 4 5 6 7 fn run(worker: *Worker) void { while (queue.pop()) |conn| { const action = worker.route(conn.req.url); action(conn.req, conn.res) catch { // TODO: 500 }; worker.write(conn.res); } } 作为这个库的用户,您可能会编写一些动态内容的...| Zig 语言中文社区
在第一部分中,我们探讨了六种 HashMap 变体之间的关系以及每种变体为开发人员提供的不同功能。我们主要关注如何为各种数据类型定义和初始化 HashMap,并讨论了当 StringHashMap 或 AutoHashMap 不支持的类型时使用自定义 hash 和 eql 函数的重要性。在这篇文章中,我们将更深入地研究键和值的存储、访问方式以及我们在它们生命周期管理中的责任。 Zig 的哈希表内部采用两个切片...| Zig 语言中文社区
阅读这篇文章的前提是了解 Zig 的范型实现 如大多数哈希映射实现一样,Zig 的 std.HashMap 依赖于两个函数:hash(key: K) u64 和 eql(key_a: K, key_b: K) bool。其中,哈希函数接收一个键并返回一个无符号的64位整数作为哈希码。相同的关键字总是会返回相同的哈希码。然而,为了处理不同的键可能生成相同哈希码的情况(即碰撞),我们还需要 eql 函数来确定两个键是否相等。 这是一些...| Zig 语言中文社区
原文链接: https://zig.news/yglcode/code-study-interface-idiomspatterns-in-zig-standard-libraries-4lkj 引言 在 Java 和 Go 中,可以使用“接口”(一组方法或方法集)定义基于行为的抽象。通常接口包含所谓的虚表(vtable) 以实现动态分派。Zig 允许在结构体、枚举、联合和不透明类型中声明函数和方法,尽管 Zig 尚未支持接口作为一种语言特性。 Zig 标准库应用了一些代码习语或模式以达到类似...| Zig 语言中文社区
原文地址:build.zig.zon dependency hashes 引言 作者 Michał Sieroń 最近在思考 build.zig.zon 中的依赖项哈希值的问题。这些哈希值都有相同的前缀,而这对加密哈希函数来说极其不同寻常。习惯性使用 Conda 和 Yocto 对下载的压缩包运行 sha256sum,但生成的摘要与 build.zig.zon 中的哈希值完全不同。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 .dependencies = .{ .mach_freetype = .{ .url = "https://pkg.machengine.org/mach-freetyp...| Zig 语言中文社区
尽管 Zig 社区宣称 Zig 语言是一个更好的 C (better C),但是我个人在学习 Zig 语言时经常会“触类旁通”C++。在这里列举一些例子来说明我的一些体会,可能会有一些不正确的地方,欢迎批评指正。 “元能力” vs “元类型” 在我看来,C++的增强方式是希望赋予语言一种“元能力”,能够让人重新发明新的类型,使得使用 C++的程序员使用自定义的类型,进行一种类似于“领域内...| Zig 语言中文社区
原文链接: https://zig.news/kristoff/how-to-release-your-zig-applications-2h90 API 适配到 Zig 0.12.0 版本 本文配套代码在这里找到 你刚用 Zig 写了一个应用程序,并希望其他人使用它。 让用户方便使用的一种方式是为他们提供应用程序的预构建可执行文件。 接下来,我将讨论一个好的发版流程所需要正确处理的两个主要事项。 为什么提供预构建的可执行文件? 鉴于 C/C++ 依赖系统如何工作...| Zig 语言中文社区
原文链接: https://zig.news/xq/zig-build-explained-part-3-1ima API 适配到 Zig 0.11.0 版本 从现在起,我将只提供一个最精简的 build.zig,用来说明解决一个问题所需的步骤。如果你想了解如何将所有这些文件粘合到一个构建文件中,请阅读本系列第一篇文章。 复合项目 有很多简单的项目只包含一个可执行文件。但是,一旦开始编写库,就必须对其进行测试,通常会编写一个或多个示例应...| Zig 语言中文社区
原文链接: https://zig.news/xq/zig-build-explained-part-2-1850 API 适配到 Zig 0.11.0 版本 注释 从现在起,我将只提供一个最精简的 build.zig,用来说明解决一个问题所需的步骤。如果你想了解如何将所有这些文件粘合到一个构建文件中,请阅读本系列第一篇文章。 在命令行上编译 C 代码 Zig 有两种编译 C 代码的方法,而且这两种很容易混淆。 使用 zig cc Zig 提供了 LLVM c 编译器 clang。第一...| Zig 语言中文社区
欢迎社区用户向 ZigCC 供稿(关于 Zig 的任何话题),方便与社区更多人分享。文章会发布在: ZigCC 网站 ZigCC 公众号 供稿方式 Fork 仓库 https://github.com/zigcc/zigcc.github.io 在 content/post 内添加自己的文章(md 或 org 格式均可),文件命名为: ${YYYY}-${MM}-${DD}-${SLUG}.md 文件开始需要包含一些描述信息,例如本文件中的: 1 2 3 4 5 --- title: 欢迎 Zig 爱好者向本网站供稿 author: 刘家财 date: '...| ziglang.cc
原文链接: https://zig.news/xq/zig-build-explained-part-1-59lf API 适配到 Zig 0.11.0 版本 Zig 构建系统仍然缺少文档,对很多人来说,这是不使用它的致命理由。还有一些人经常寻找构建项目的秘诀,但也在与构建系统作斗争。 本系列试图深入介绍构建系统及其使用方法。 我们将从一个刚刚初始化的 Zig 项目开始,逐步深入到更复杂的项目。在此过程中,我们将学习如何使用库和软件包...| Zig 语言中文社区