{"id":22014137,"url":"https://github.com/laqudee/zig-project","last_synced_at":"2026-05-02T15:40:57.143Z","repository":{"id":179094958,"uuid":"656066861","full_name":"laqudee/zig-project","owner":"laqudee","description":"Zig Language Note and Action","archived":false,"fork":false,"pushed_at":"2023-12-14T01:48:44.000Z","size":11569,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-28T15:18:53.313Z","etag":null,"topics":["learn-to-code","zig","ziglang"],"latest_commit_sha":null,"homepage":"","language":"Zig","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/laqudee.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-06-20T07:40:15.000Z","updated_at":"2023-11-01T17:11:17.000Z","dependencies_parsed_at":"2023-12-14T02:50:10.420Z","dependency_job_id":null,"html_url":"https://github.com/laqudee/zig-project","commit_stats":null,"previous_names":["laqudee/zig-project"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/laqudee%2Fzig-project","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/laqudee%2Fzig-project/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/laqudee%2Fzig-project/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/laqudee%2Fzig-project/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/laqudee","download_url":"https://codeload.github.com/laqudee/zig-project/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245075361,"owners_count":20556916,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["learn-to-code","zig","ziglang"],"created_at":"2024-11-30T03:26:26.559Z","updated_at":"2026-05-02T15:40:57.102Z","avatar_url":"https://github.com/laqudee.png","language":"Zig","funding_links":[],"categories":[],"sub_categories":[],"readme":"# zig-project\n\n\u003e note\n\n\u003e example\n\n\u003e simple init-exe demo\n\n- 没有隐式控制流，没有隐式内存分配，没有预处理器，没有宏\n- 如果 zig 代码看起来不像在调用一个函数，那么它就不是\n\n- Zig 将所有的控制流完全用语言关键字和函数调用来表达\n\n- 四种构建模式：\n\n  - debug\n  - release safe\n  - release fast\n  - release small\n\n- 堆栈跟踪\n\n- 裸金属 ？\n\n- 启用安全检查的构建模式\n\n- 将未定义作为一个利器，既可以预防 bug，又可以提升性能\n\n  - 参考实现使用 LLVM 作为后端进行最先进的优化\n  - 链接时优化在 zig 中自动达成\n  - 对交叉编译的一流支持，对于原生构建目标、高级 CPU 特性可以被启用\n  - 未定义行为\n  - Zig 直接暴露了 SIMD 向量类型，编写跨平台的向量化代码更容易\n\n- 顺序无关的顶层声明\n\n  - 全局变量等顶层声明与顺序无关，并进行惰性分析。全局变量的初始值在编译时进行求值\n\n- 可选类型代替空指针\n\n  - 不加修饰的 Zig 指针不可为空\n  - ?可选类型\n  - orelse\n  - if\n  - while\n\n- 手动内存管理\n  - 用Zig编写的库可以用在任何地方：\n    - 桌面程序\n    - 低延迟服务器\n    - 操作系统内核\n    - 嵌入式设备\n    - 实时软件\n    - 浏览器或者其他使用WebAssembly作为插件的程序\n    - 通过C ABI给其他语言调用\n  - Zig程序员必须自己管理自己的内存，必须处理内存分配失败\n  - 需要分配内存的函数都会接受一个分配器参数。因此Zig标准库甚至可以用于裸金属的目标\n  - defer\n  - errdefer\n\n- 错误是值，不可忽略\n  - catch\n  - 关键词try 是 catch |err| return err的简写\n    - 错误返回跟踪\n    - 堆栈跟踪\n  - 在错误值上使用switch关键词可以用于确保所有可能的错误都被处理\n  - unreachable用于断言不会发生错误\n\n- 在所有目标上启用堆栈跟踪\n\n- 泛型数据结构与函数\n  - 类型和值必须在编译期已知\n  - 泛型数据结构简单来说就是一个函数返回一个类型\n\n- 编译期反射和编译期代码执行\n  - @typeInfo内置函数可以用于提供编译期反射\n\n- zig标准库使用这种技术来实现格式化打印，zig的格式化打印完全是在zig中实现的\n\n- zig还可以在编译期对函数和代码块求值\n\n- 无需FFI/bindings的C库集成\n  - @cimport可以直接导入类型、变量、函数和简单的宏。\n  - 甚至能将C内联函数翻译为Zig函数\n\n- Zig也是C的编译器\n  - zig与libc一起发布，所以可以使用zig作为c的编译器\n\n- 导出函数、变量和类型供C代码使用\n\n- 交叉编译的一流支持\n\n- Zig构建系统\n  - zig init-exe\n\n- 使用异步函数进行并发\n  - 该功能不依赖宿主操作系统，甚至不依赖堆分配的内存，可用于裸金属目标\n  - zig自动推导函数是否为异步，并允许在非异步函数上进行async/await，这意味着 Zig 库对阻塞与异步 I/O 是不可知的\n  - 实现了一个事件循环\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flaqudee%2Fzig-project","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flaqudee%2Fzig-project","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flaqudee%2Fzig-project/lists"}