10.01 Zig 0.5.0 發佈,想要替換 C 的編程語言

Zig 0.5.0 發佈了。

Zig 0.5.0 發佈,想要替換 C 的編程語言

Zig 是一門通用編程語言,專為穩定性、可維護性和性能而設計,追求替代 C 語言在系統編程上的最佳地位。Zig 具有以下值得關注的特性:

  • 手動管理內存
  • 與 C 語言競爭而非依賴它,Zig 標準庫不依賴於 libc
  • 輕量而簡單,專注於調試應用而不是調試編程語言的知識
  • 新的錯誤處理方法,與編寫良好的 C 語言錯誤處理類似,但減少了很多冗餘
  • 調試模式下優化了快速編譯時間,並在不確定行為發生時使用堆棧跟蹤崩潰
  • ReleaseFast 模式和 ReleaseSafe 模式
  • 泛型數據結構和函數
  • 通過協程實現併發
  • 導入 .h 頭文件並直接使用 C 語言的類型、變量和函數
  • 導出要依賴 C 語言代碼的函數,變量和類型,自動生成 .h 頭文件
  • 可選類型而非空指針
  • 交叉編譯是主要用例

0.5.0 版本經過 6 個月打磨,包括了 1541 次 commit,帶來了許多新的內容。

Zig 跟隨 LLVM 的步伐,前幾天 LLVM 9 發佈了,所以 Zig 目前升級到了 LLVM 9,不再兼容 LLVM 8。值得注意的是,這意味著 Zig 現在支持 RISC-V。同時 Zig 還可以以 Emscripten 為編譯目標操作系統。Emscripten 是一個獨特的 LLVM 後端,它可以將 LLVM 字節碼編譯成 JavaScript(asm.js),往上追溯其實也就是通過 Clang 將 C 和 C++ 代碼編譯成 JavaScript(asm.js),可以大大簡化現有代碼在 Web 時代的重用。除了 asm.js,Emscripten 還支持 WebAssembly 這一更加先進的 Web 技術,通過與 asm.js 類似的機制,Emscripten 可以生成 WASM 二進制字節碼。

目前 Emscripten 還不能自託管,之後可行的情況下,可以使用 WebAssembly 將其作為瀏覽器中的 Zig 沙箱選項。

語言特性層面的主要更新包括:

  • 切片類型不再具有字段訪問,而是使用@typeInfo(Slice).Pointer.child。
  • 枚舉文字隱式 cast 為帶標記的 union。
  • 允許將可選指針隱式 cast 為可選c_void指針。
  • 添加了*[N]T隱式 cast 到[*c]T。
  • anyerror不再作為關鍵字。
  • @cmpxchgStrong 和 @cmpxchgWeak 現在在 x86_64 上支持 128 位整數。
  • comptime_int現在隱式 cast 為comptime_float
  • @typeOf 現在保證沒有運行時副作用。
  • noinline函數聲明中添加了關鍵字。
  • 現在可以比較並集標記和枚舉文字。
  • 單元素enum默認設置為u0comptime_int仍允許作為顯式枚舉標籤類型。

完整更新內容查看發佈公告:

https://ziglang.org/download/0.5.0/release-notes.html

文章轉載自 OSCHINA 社區 [http://www.oschina.net]

本文標題:Zig 0.5.0 發佈,想要替換 C 的編程語言

本文地址:https://www.oschina.net/news/110270/zig-0-5-0-released


分享到:


相關文章: