編譯式
Crystal 是一個需要經過編譯的語言,這讓它可以以低成本的記憶體來執行飛快的程式。 並以 LLVM 為基石可以使 Crystal 在建置過程中進行最佳化。
網頁伺服器吞吐量比較
型別系統
Crystal 使用了靜態型別檢查,所有的型別錯誤都會在編譯時期被捕捉,而不是在執行時期才進行檢查。 另外,為了保持語言的純淨度,Crystal 還內建了型別推導的能力,在大部分的情況下,我們不需要自行宣告型別類型。
空參照自動檢查
在 Crystal 裡的所有型別都是非空的,所有允許空值的變數都被宣告成預期型別與空值型別的集合型別。 因此,編譯器會在編譯時期自動地檢查空參照來避免著名的「The Billion Dollar Mistake 問題」。
執行結果如下:
巨集
針對 Metaprogramming,Crystal 亦內建了強大的巨集機制來實現模板機制以及在編譯時期檢閱 AST 與型別的功能,甚至於能夠在巨集中執行獨立的外部程式。
併發模型
Crystal 使用了一種稱為 Fiber 的綠色執行緒來實作併發模型。 如同 Go 或 Clojure,Fiber 能夠透過使用 Channel 來互相溝通而避免使用 SHM 與鎖。
相依性
我們稱 Crystal 函式庫為 Shards,不同於常見的套件管理機制,Shards 避免了中心化管理而是透過 Git 來派送。 透過內建的指令我們可以輕易地透過編輯 YAML 格式的設定檔來描述套件之間的相依並從各自的倉庫抓取套件。
以下資訊若未即時更新請至
原文網站Articles from our blog
Release Notes
Crystal 0.20.0 released! | 22 Nov 2016 | |
Crystal 0.18.0 released! | 14 Jun 2016 | |
Crystal 0.17.0 released! | 17 May 2016 | |
Crystal 0.16.0 released! | 05 May 2016 | |
Crystal 0.15.0 released! | 02 Apr 2016 | |
Crystal 0.14.1 released! | 21 Mar 2016 | |
Crystal 0.13.0 released! | 07 Mar 2016 | |
Crystal 0.12.0 released! | 16 Feb 2016 | |
Crystal 0.11.0 released! | 23 Jan 2016 | |
Crystal 0.10.0 released! | 23 Dec 2015 |