Zig
编辑Zig是一种命令式的、通用的、静态类型的、编译的系统编程语言,由AndrewKelley设计。该语言的设计是为了实现鲁棒性、优化和可维护性,并支持编译时的泛化、反射和评估、交叉编译和手动内存管理。该语言的一个主要目标是改进C语言,但它也从Rust等语言中获得了灵感。Zig有许多底层编程特性,特别是打包结构(字段之间没有填充的结构)、任意宽度的整数和多种指针类型。Zig不仅仅是一种新的语言,Zig自带C/C++编译器,Zig可以和这两种语言一起使用。从0.10版开始,(新的默认)Zig编译器是用Zig编写的,也就是说,它是一个自我托管的编译器,这是新版本的主要新特性(用C++编写的旧的传统引导编译器仍然是一个选项,但不会出现在0.11版)。默认的后端(即优化器)仍然是LLVM(现在是15版,传统的使用13版),而且LLVM是用C++编写的。带有LLVM的Zig(即编译器,而不是由它生成的代码)是169兆字节,而没有LLVM的是4.4兆字节。用新的Zig编译器编译时,使用的内存要少得多(旧的、现在的传统编译器使用的内存是它的3.5倍),而且编译的速度也快了一些。用新编译器编译的可执行代码总体上更快(即它有更好的LLVM代码生成),它修复了许多错误,但在0.10版本中对旧的传统编译器也有改进。自主链接器与自主编译器紧密耦合。新版本还增加了对AMDGPU的一些实验性(3级)支持(以及对NvidiaGPU和PlayStation4和5的一些较少的支持)。旧的引导(stage1)编译器是用Zig和C++编写的,使用LLVM13作为后端,并支持许多本地目标。该编译器在MIT许可下是开源的。Zig编译器通过zigcc和zigc++命令暴露了类似Clang的C和C++编译能力,提供了许多头文件,包括许多不同平台的libc和libcxx,使Zigscc和c++子命令作为一个交叉编译器开箱即用。加上官方支持的操作系统(主要是桌面系统)(和文档),(最小的)应用程序可以并且已经被制作成Android(通过AndroidNDK,为iOS编程也是可能的)。Zig没有自己的官方软件包管理器(非官方的有),但一个标准的软件包里程碑是0.12。
项目
编辑- Bun是一个用Zig编写的JavaScript和TypeScript运行时,使用Safari的JavaScriptCore虚拟机。
内容由匿名用户提供,本内容不代表vibaike.com立场,内容投诉举报请联系vibaike.com客服。如若转载,请注明出处:https://vibaike.com/189998/