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虛擬機。
內容由匿名用戶提供,本內容不代表www.gelinmeiz.com立場,內容投訴舉報請聯系www.gelinmeiz.com客服。如若轉載,請注明出處:http://www.gelinmeiz.com/189998/