Zig 0.10.0 正式发布,自托管编译器首次亮相!


Zig 0.10.0 已正式发布。Zig 是一种通用的编程语言和工具链,用于维护健壮、最优和可重用的软件。

Zig 0.10.0 是重要更新版本,其开发周期长达 10 个月,共有 272 名贡献者提交了 4737 个 commit。当然最大的亮点莫过于自托管编译器的首次亮相。

自托管编译器

此次更新的重大亮点就是自托管编译器的首次亮相。

目前 Zig 已默认启用自托管编译器,同时也为尚未准备好升级的用户保留了 Bootstrap 编译器,只需添加-fstage1flag 即可使用。

官方介绍称,自托管编译器的实现在性能和内存使用方面优于旧版本。以下是编译器自身构建的两项数据(在 Intel(R) Core(TM) i9-9980HK CPU @ 2.40GHz 上测试):

  • Wall Clock Time: 43 seconds to 40 seconds (7% faster)
  • Peak RSS: 9.6 GiB to 2.8 GiB (3.5x less memory used)

根据 Zig 维护者的介绍,Zig 自托管编译器有大概 20 万行代码,包含 LLVM、WASM、C、x86_64、arm 和 aarch64 后端。编译器代码库采用 Zig 而不是 C++ 编写,使用的内存显着减少,优化了性能。

尽管与 Bootstrap 编译器不同,新的编译器实现的速度略快,而且由于与链接器紧密结合,它能够进行增量编译。不过更大的编译速度优势将来自于不使用 LLVM 的代码生成后端。

据称这个版本的绝大部分开发工作都花在了这个新的编译器实现上。因此,语言方面的变化非常少。但这个新的代码库为主要的增强功能打下了基础,主要涉及到加快编辑/测试/调试周期。现在,自托管编译器不会再耗费如此多的精力,Zig 开发团队将会积极实现路线图上的目标。

WebAssembly

在这个版本的开发周期中,团队将大量时间都花在了可见和不可见的改进上,通过重构来提升可读性、可维护性以及后端及其生成代码的性能。在 Zig 0.10.0 中,团队称离让 WebAssembly 后端成为默认调试模式更近了一步。

延伸阅读

  • 实现自托管后,Zig 的下一步是什么?
  • Zig 重要里程碑:已初步实现自举

相關推薦

2023-08-05

看发布公告。 延伸阅读 Zig 0.10.0 正式发布,自托管编译器首次亮相 实现自托管后,Zig 的下一步是什么? Zig 重要里程碑:已初步实现自举

2022-10-26

随着 11 月 1 日 Zig v0.10.0 版本的发布,其新的自托管编译器(self-hosted compiler)也将同步推出。“尽管自托管编译器现已实现,但仍有更多的工作要做。与此同时,更多令人兴奋的功能的大门已经打开,比如 Zig 的官方包管理器。

2021-12-10

1 点。虽然有些晚,但这是香山第一次在国际 RISC-V 社区正式亮相,再晚也值得。 他还透露称,“香山”有了新的归属——“香山”出嫁了。不过关于“出嫁”的具体信息需要暂时保密,未来将适时公开。不知道这是否暗

2022-11-04

2022云栖大会上,OceanBase社区版4.0 Beta(公测)正式亮相,与企业版拥有同等性能,更兼容、更易用,2分钟内即可完成快速部署。这意味着,业内首个兼容MySQL的单机分布式一体化数据库正式上线。 OceanBase 4.0降低了数据库使用

2023-09-10

2022年9月8日,Javascript运行时Bun正式发布1.0版本,标志着这个由前Facebook工程师创建的项目正式进入稳定生产可用阶段。 Bun的愿景是通过深度整合,让Javascript开发“快如闪电”。这个新生力量是否能撼动Javascript界老牌霸主Node的

2022-09-08

本次更新内容 修复t-io作为Client时,断网状态连接一个域名时,不会触发内置的自动重连 如梦技术提交的减少内存占用的代码优化 最新 POM 坐标 <dependency>     <groupId>org.t-io</groupId>     <artifact

2024-02-05

次更新着眼于解决关键的第三方项目问题、修复bug、提升编译器性能以及实施增量编译的战略。同时,Andrew还分享了关于为Zig软件基金会(ZSF)筹集资金和实现1.0版本目标的宝贵信息。 即将到来的版本:专注于质量而非时间 Zi

2023-09-13

(包括浏览器)中使用 Zig 它将允许拥有一个通用的 C 编译器,将 C 文件(在底层使用 LLVM)编译到任何架构,并且可以从任何支持运行 Wasm 的架构运行 它将允许创建 http 服务器(或 TCP/UDP 服务器)以在 Edge 甚至浏览器中运行

2023-09-08

sm 应用开发需要自己的编程语言生态系统和相关工具,如编译器、框架、库、工具和运行时。Dev 类别包括编程语言、运行时、应用程序框架edge/bare metal、AI  推理、嵌入式功能和工具。 Wasm 领域中共有 4 类编程语言:

2022-03-29

们还初步提交了开源的 PowerVR Vulkan 驱动的;近日他们还正式开源了 PowerVR Series 1 显卡驱动程序的源代码,该系列包括的型号有 Midas Arcade、PCX1 和 PCX2,它们均是 90 年代末的产品。 PowerVR GPU 于 1995 年首次亮相,并在 1996/1997 年

2022-10-10

检查和静态分析、显式接口和最佳实践结合到单一语言和编译器中。通过在 JavaScript 上构建,TypeScript 能够更接近目标运行时,同时仅添加支持大型应用程序和大型团队所需的语法糖。 团队还坚持 TypeScript 要能够与现有的 JavaScr

2023-07-04

M/Clang 17 将提供"-ffat-lto-objects"支持。   据介绍,为编译器启用 Fat LTO 对象支持可以让编译器 IR 与最终目标代码一起保存。因此,这些 "fat" 对象可以用于开发构建和优化构建的生产,但代价是增加了对象大小和更长的构建

2022-09-22

修复, clang 格式、测试问题和其他更改。 其他各种新编译器功能。  LLVM 15.0.1 有 32 处更改,可以通过 LLVM.org 找到 LLVM 15.0.1 更改的完整列表。LLVM 15.0.1 的源代码和二进制文件可以从GitHub下载。 根据 LLVM 的发布节奏, LL

2023-11-18

议,Cargo.tomlmanifest 现在支持一个[lints]表来配置来自编译器和其他工具的 lints 的报告级别(禁止、拒绝、警告、允许)。因此,不要使用-F/-D/-W/-A设置 RUSTFLAGS(这会影响整个构建过程),或者使用 crate-level 的属性,例如: