Zig 0.7.0 發布,想要替換 C 的程式語言

2020-12-22 開源中國

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

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

此版本的開發周期歷時 7 個月,共計 188 名不同的 contributor 提交了 2527 個 commit。

發布說明羅列了對不同系統(如 Windows、macOS、FreeBSD 和 NetBSD 等)以及 WebAssembly 的支持程度,總共分為四級,一級支持是最好的支持,四級支持代表的則是完全處於試驗狀態的支持。

部分更新內容:

  • 升級至 LLVM 11:此版本的 Zig 已升級至 LLVM 11,而新版的 LLVM 將 AVR 提升為非實驗性後端,因此 Zig 的 AVR 後端現已在該版本中廣泛使用。
  • 新增自託管編譯器 (Self-Hosted Compiler),不過關於它的功能目前還處於討論階段,例如顯示自託管現在可以通過的測試案例。
  • 支持 macOS:macOS 在過去6個月的發展可謂是跌宕起伏,Big Sur 的重大變化,以及 arch64 架構設備的公布。開發者購買了蘋果的開發套件,並一直致力於為這個系統提供 Zig 支持。Zig 程序現在可以在這個系統中運行,但他們需要一個變通的方法來利用系統連結器而不是 LLD。下一步是針對這個系統的 LLD 改進,以及開發者一直在研究的 Zig 自託管連結器代碼。
  • macOS libc header:Zig 現已提供 macOS 的 libc header,因此可以針對 macOS 交叉編譯 C 代碼。此外,對於本地 macOS 構建,編譯 C 代碼時對 xcode 的依賴性較小。
  • ……

此版本包含 159 個Bugfix,詳情點此查看。

最後,團隊指出 0.7.0 的主要目標是進一步提升語言穩定性、創建語言規範的初稿以及自託管編譯器。尤其是自託管編譯器,因為 0.8.0 版本要實現的一項重要功能是內置軟體包管理器,而包管理器依賴於自託管編譯器。

詳細內容查看發布公告
https://ziglang.org/download/0.7.0/release-notes.html

相關焦點

  • Zig 0.7.1 發布,想要替換 C 的程式語言
    Zig 0.7.1 已發布,這是一個 bugfix 版本,共計修復了 69 個 bug。
  • Zig 0.6.0 發布,想要替換 C 的程式語言
    Zig 0.6.0 已發布,這是一門通用程式語言,專為穩定性、可維護性和性能而設計,追求替代 C 語言在系統編程上的最佳地位。
  • C語言編程核心要點
    原文標題C語言編程核心要點,男人看了沉默,女人看了本文轉載自【微信公眾號:碼磚雜役,ID:whatis9527want】引言筆者有十餘年的C++開發經驗,相比而言,我的C經驗只有一兩年,C比較簡單,簡單到《The C Programming Language》(C程序設計語言)只有區區的200多頁,相比上千頁的C++大部頭,不得不說真的很人性化了
  • 想替代 C 的 Zig 語言成立了基金會
    Today, I am proud to announce the Zig Software Foundation, a 501(c)(3) not-for-profit corporation, dedicated to promoting, protecting, and advancing the Zig programming language
  • 想學編程?先來理解一下C語言的Helloworld程序吧
    C語言作為一門計算機科學歷史上裡程碑式的程式語言,現在依然被廣泛使用。其功能強大,內容簡單,想學習編程的小夥伴們不妨先學習一下C語言。本文將介紹一下K&R所寫的經典程序:Helloworld的簡要分析。
  • C語言程序設計試題及答案
    A) 1 B) 2 C) 2.0 D) 2.57、下面屬於合法的C語言長整型常量的是( )。int a=8,b=7,c=6,x=1;if(a>6) if(b>7) if(c>8) x=2; else x=3;A) 0   B) 1    C) 2    D) 316、設int a[10],*p=a;
  • C語言怎麼樣?今天聊聊C語言的發展史!
    馬丁·理察德(英語:Martin Richards,1940年7月21日-),生於英國,計算機科學家,為BCPL程式語言的發明者,發展了TRIPOS作業系統。
  • 2020年7月程式語言排行榜:R語言取得新突破,統計程式語言要火了?
    2020年7月程式語言排行榜:R語言取得新突破,統計程式語言要火了? TIOBE已公布2020年7月的程式語言排行榜。C語言依然排行第一了,隨後分別是Java、Python、C++、C#。
  • 5 月程式語言排行榜:C 重回第一,今年程式語言名人堂冠軍還會是它...
    需要注意的是,TIOBE索引並不是關於最好的程式語言,也不是大多數代碼都是用哪種語言編寫的。該索引可用於檢查您的編程技能是否仍然是最新的,或者在開始構建新的軟體系統時,對應採用何種程式語言作出戰略決策。
  • C/C+編程筆記:C語言進位詳解,二進位、八進位和十六進位!
    在計算機內部,數據都是以二進位的形式存儲的,二進位是學習編程必須掌握的基礎。本節我們先講解二進位的概念,下節講解數據在內存中的存儲,讓大家學以致用。圖2:二進位減法示意圖 八進位 除了二進位,C語言還會使用到八進位。
  • 看完7月TIOBE程式語言排行,學習這個語言的人笑了,月薪直逼20k+
    前幾日,TIOBE7月語言榜單公布了,C語言連續3個月蟬聯第一,Java和Python依舊保持在前三的位置,但是Java與C語言之前的差距繼續拉大,Python雖然下降了0.17%,但是應該在一段時間內依舊是前三的位置。
  • 為什麼0.1+0.2不等於0.3?原來程式語言是這麼算的……
    選自Medium作者:Parul Malhotra機器之心編譯參與:高璇、張倩打開你的 Python,輸入「0.1+0.2=」,結果是多少?0.30000000000000004 對不對?為什麼結果不是 0.3?
  • 新預訓練模型CodeBERT出世,程式語言和自然語言都不在話下
    近日,來自哈爾濱工業大學、中山大學和微軟亞洲研究院的研究者合作提出了一個可處理雙模態數據的新預訓練模型 CodeBERT,除了自然語言(NL),程式語言(PL)如今也可以進行預訓練了。CodeBERTCodeBERT 既能處理自然語言又能處理程式語言,比如 Python、Java、JavaScript 等。它可以捕捉自然語言和程式語言之間的語義連接,並輸出可廣泛支持 NL-PL 理解任務(如自然語言代碼搜索)和生成任務(如代碼文檔生成)的通用表示。
  • 現代程式語言哪家強?2020年你或許應該了解這7門程式語言
    圖片來源:Stackoverflow我將以第一款 iPhone 發布的時候,也就是 2007 年 6 月 29 日作為新舊程式語言之間的界限時間點。在 iPhone 發布之後,一切都發生了變化。他受到了研究性的程式語言 Cyclone 的啟發。Rust 是開源的,Mozilla 與許多其他公司和社區一起進行語言開發。Rust 於 2015 年首次發布,很快就引起了社會各界的關注。在以前的文章中,我深入研究了 Rust,並論證了為什麼在大數據域中使用 Rust 來代替 C++、Java 是一個更好的選擇:
  • TIOBE 12 月程式語言:Python 有望第四次成為年度語言!
    回顧過去一年,程式語言領域百花齊放。在 TIOBE 近日發布的 12 月最新排行榜中,Python 和 Java 你追我趕,Python 漲幅佔優,預計有望成為有史以來四度奪得「年度程式語言」稱號的程式語言!
  • 粵語程式語言
    這是一位年僅16歲的高中生開發的程式語言源碼地址:https://gitee.com/mirrors/cantonese
  • 2020年度程式語言排行榜出爐!C語言稱霸,Java遭遇滑鐵盧?
    2020年的程式語言排行榜,排名前5位依次是C語言、Java、Python、C++和C#。  作為2020年最受歡迎的程式語言,Python的火爆仿佛已經颳起了一陣風。  Python因它的易學性,已成為數據科學和機器學習等領域中最受歡迎的語言,除了在在過去的2020年實現了2.01%的正增長,還被授予過去一年最受歡迎的程式語言。
  • 編程基礎-c語言中sizeof用法總結
    1、sizeof是c語言中用來求字節運算符。sizeof用來求一個對象(類型,變量,……)所佔的內存大小(以字節為單位)。1024]) == sizeof(typeof(a[1024])) = sizeof(int) = 4sizeof(&a) == 4sizeof(&a) == sizeof(typeof(&a)) ==4typeof(&a) == typeof(a) * == int[100] *sizeof(&a[0]
  • 編程去除背景綠幕摳圖,基於.NET+OpenCVSharp
    OpenCV支持C/C++、Python、.NET、Java等主流的程式語言。在網際網路上,使用Python進行OpenCV開發的資料最多。由於個人不是很喜歡Python的語法,所以這個軟體我使用C#語言在.NET 5平臺上進行開發。由於OpenCV在各個程式語言上用法大同小異,因此這裡用C#實現的代碼改用其他程式語言也非常容易。
  • TIOBE 8 月程式語言:C、Java 差距拉大,R 語言盛行
    整理 | 屠敏程式語言社區 TIOBE 最新發布了 8 月程式語言排行榜。相比上個月,本月 TIOBE 指數整個體變化並不大。C 語言依然保持強勁的增長勢頭,與第二名 Java 之間差距逐月增大,從上個月相差 1.35% 的份額逐步增長到 2.55% 的差額。