在不斷發展的程式語言領域中,Jaql 作為記憶體安全系統程式設計領域的新競爭者嶄露頭角。然而,社群討論揭示了一個有趣的誤認情況,大多數評論者似乎在討論 Jakt,一種與 SerenityOS 專案相關的不同程式語言,而非 Jaql 本身。
Jaql 與 Jakt 之間的混淆
社群討論主要圍繞 Jakt,一種作為 SerenityOS 專案一部分開發的記憶體安全系統程式語言。考慮到兩種語言在名稱和目標上的相似性,這種混淆是可以理解的。雖然文章將 Jaql 描述為具有自動引用計數和強型別等特性的記憶體安全系統程式語言,但評論者討論的是 Jakt 的開發歷史、與 SerenityOS 的關係及其當前狀態。
Jakt 開發的當前狀態
根據社群見解,Jakt 似乎處於休眠狀態。幾位評論者指出開發活動已顯著減少,一位使用者指出提交歷史稀疏。該語言最初由 SerenityOS 的建立者 Andreas Kling 倡導,但開發勢頭似乎已經轉移。
「我幾年前看過 Andreas 開發 Jakt 的一些影片,但現在看提交歷史,它似乎已經停滯了。」
這一觀察與其他評論一致,表明 Andreas 已轉向專注於 Ladybird 瀏覽器專案,據報道該專案選擇了 Swift 作為未來開發的語言,而非 Jakt。
Swift 成為 Ladybird 的選擇
討論的很大一部分圍繞著 Ladybird 瀏覽器團隊(最初從 SerenityOS 的瀏覽器分支出來的專案)採用 Swift 而非 Jakt 或其他替代方案的決定。據一位評論者描述,這一決定是透過一個務實的過程做出的,團隊成員用各種候選語言實現功能,最終發現使用 Swift 最為愉快。Swift 的面向物件程式設計模型據說非常適合網頁瀏覽器的架構需求。
然而,一些社群成員對這一選擇表示驚訝,特別是注意到關於 Swift 與 C++ 互操作性挑戰的擔憂。一位評論者指出,Swift 需要 Apple 的 LLVM 分支,可能限制與 GNU 或主流 Clang 環境的相容性。
記憶體安全和語言設計理念
回到文章的實際主題,Jaql 與更廣泛的行業趨勢一致,即向記憶體安全的系統程式語言發展。根據文章,Jaql 融合了編譯時檢查、借用、生命週期跟蹤和防止空指標解引用等功能。這些功能與行業對記憶體安全日益增長的重視相一致,這也在 Rust 等語言中可以看到。
文章詳細介紹了 Jaql 的記憶體安全方法,包括在其 Safe-Jaql 模式下防止整數溢位、無限迴圈、堆疊溢位、資料競爭和記憶體洩漏。這種在保持系統程式設計能力的同時注重安全性的做法反映了行業正在從傳統的 C 和 C++ 等語言向更安全的替代品轉變。
Jaql 核心特性
-
記憶體安全特性:
- 編譯時檢查
- 借用(追蹤)
- 生命週期跟蹤
- 無空指標解引用
- 整數溢位預防
- Safe-Jaql 中不存在無限迴圈
- 棧溢位保護
- 無資料競爭
- 無記憶體洩漏(除非明確洩漏)
-
語言設計:
- 區分可變的"類"型別和不可變的"資料"型別
- 鼓勵小型函式(每個方法最多2-3行)
- 無副作用
- 支援泛型和高階函式
- 型別特徵系統
- 透過特徵實現運算子過載
-
實現:
- 最初用 Java 實現以提高可訪問性
- 自託管編譯器作為目標
- 與 C/C++ 的互操作性
語言特性和設計選擇
Jaql 的設計包括一些有趣的特性,如可變類型別和不可變資料型別的區分,類似於 Swift 的類/結構體區分。該語言鼓勵使用副作用最小的小型函式,並提供標準功能庫用於資料管理。
文章還強調了 Jaql 對泛型、高階函式和型別特徵的支援,允許靈活且型別安全的程式設計模式。這些特性使 Jaql 成為一種現代語言,旨在平衡安全性、表達能力和效能。
總之,雖然社群討論主要集中在另一種語言(Jakt)上,但文章本身將 Jaql 描述為一個雄心勃勃的專案,強調記憶體安全和現代語言特性。與許多新的程式語言一樣,其成功可能取決於社群採用、持續開發以及在日益擁擠的記憶體安全系統程式語言領域中找到自己的定位。