國產系統級程式語言與編譯器,輕鬆與 C 語言進行互動

Max發表於2023-09-26

接之前的帖子 部落格:這是一個程式語言的釋出貼 各位股東們,當時無論是在評論區的鼓勵還是 star 支援,都給了莫大的動力,讓我極限爆肝了近五個月,爆肝大概就是在這幾個月的 190 多次的 commit log 中,有 60 次是在凌晨以後,18 次是在節假日。

原諒我在標題中使用國產兩字吸引眼球 ??‍♂️ ,經過上次的國產 IDE 事件,想必部分人可能會有些 PTSD。 但我想…

可能這個世界讓我們感到失望,但是我依然願意對這個世界寄予希望 —— 《劍來》


再次介紹一下 nature 專案,這是一個投入近 5 年時間的程式語言與編譯器專案。

github github.com/nature-lang/nature 基於 MIT 協議開放原始碼。

官網 nature-lang.org/zh-Hans/ 有完整可讀的中文檔案。

在語言層面 nature 有以下特點

  • 型別系統,null 安全,泛型,聯合型別
  • 自研編譯器/彙編器/連結器,不依賴 llvm。能夠編譯至 amd64/riscv64/wasm 架構
  • 無入侵的方式與 C 語言等互動進行高效率與高效能開發
  • 漸進式 GC,支援自動與手動 GC
  • 內建 vec/map/set/tup 資料結構
  • 包管理與模組管理
  • 函式標籤/閉包/錯誤提示/執行時堆疊追蹤/協程
  • 整合SSA/線性掃描暫存器分配/反射機制/彙編器與聯結器

上述特性已經整合了 90%,隨著標準庫以逐步完善,nature 可以應用於遊戲引擎與遊戲製作、科學與 AI 計算、作業系統與物聯網、WEB 開發。其中游戲引擎將作為 nature 0.7 ~ 1.0+ 的核心任務。

nature 適合於開源創作者/獨立創作者以及學習和研究使用,我們不僅希望你能夠在語言中得到便利,同樣也希望你使用 nature 創作快樂且有趣的事情。


今天釋出 0.4.0-beta 版本,詳細的更新內容見 發行說明,這裡進行簡單的總結

  1. 使用 temp 模式與 C 語言等進行互動。在資料結構上和呼叫規範上完全相容 C 語言,使用安全指標避免 C 語言中的空指標問題。
  2. 實現編譯時錯誤提示與執行時錯誤追蹤功能,能夠使用 nature 進行專案程式碼編寫與除錯。
  3. 支援標準庫 fmt/syscall/os/strings/time/path/compress
  4. 使用 nature 語言實現小型測試用例 parker,這是一個類似 docker 的輕量級容器,能夠將工作目錄打包成一個可執行檔案,又或者是將 python/php 等指令碼語言打包成可執行檔案並執行在一個輕量級容器執行時上。
  5. 在之前的 0.2/0.3 兩個版本中主要支援了泛型,聯合型別,包管理等功能。

預計再肝半年左右,nature 將會推出社群可用版本,屆時會有穩定的語法 api,完善的標準庫,以及開發工具支援,我也將會基於 nature 啟動專案也是大型測試用例 ‘SAO’。

此外,nature 中所有的標準庫程式碼都會合並至主倉庫,歡迎來貢獻(從其他語言中搬運)。

如果想更進一步關注 nature 的發展,歡迎加入程式語言交流群,我會在這裡分享有意思的提案或者是學習的資料,比如最近在進行的協程提案與相關知識。當然也可以透過 github 進行 watch 來瞭解相關的進度。也希望能夠有新的股東 star 支援,這都是寶貴的動力 ?

新增 wechat nature-lang 我拉你進群

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章