Crystal 程式語言 1.5 發布

Crystal 1.5程式語言已經發布,其開發人員試圖將Ruby語言的開發便利性與C語言的高應用效能特性結合。 Crystal 的語法接近但不完全相容於 Ruby,儘管某些 Ruby 程式無需修改即可運行。 編譯器程式碼是用 Crystal 編寫的,並根據 Apache 2.0 授權分發。

語言使用靜態類型檢查,無需在程式碼中明確指定變數和方法參數的類型即可實現。 Crystal 程式被編譯成可執行文件,並在編譯時評估巨集並產生程式碼。 在 Crystal 程式中,可以連接用 C 編寫的綁定。 程式碼執行的並行化是使用「spawn」關鍵字進行的,它允許您以稱為纖程的輕量級執行緒的形式非同步執行後台任務,而不會阻塞主執行緒。

標準庫提供了大量常用功能,包括用於處理 CSV、YAML 和 JSON 的工具、用於建立 HTTP 伺服器的元件以及 WebSocket 支援。 在開發過程中,可以方便地使用「crystal play」命令,該命令會產生一個Web介面(預設為localhost:8080),用於互動式執行Crystal語言程式碼。

主要變化:

  • 編譯器在抽象方法的實作及其定義中加入了對參數名稱對應關係的檢查。 如果名稱不匹配,現在會發出警告:abstract class FooAbstract abstract def foo(number : Int32) : Nil end class Foo < FooAbstract def foo(name : Int32) : Nil p name end end 6 | def foo(name : Int32) : Nil ^— 警告:位置參數 'name' 對應於重寫方法 FooAbstract#foo(number : Int32) 的參數 'number',它具有不同的名稱,可能會影響命名參數傳遞
  • 當將無類型方法的參數指派給變數的值時,該參數現在被限制為該變數的類型。 class Foo @x : Int64 definitialize(x) @x = x # 參數 x 將會被輸入 @x end end
  • 允許您為方法或巨集的參數新增註解。 def foo(@[也許未使用] x); 結束 # 確定
  • 新增了對使用常數作為元組中的索引和名稱的支援。 KEY = "s" foo = {s: "String", n: 0} 放置 foo[KEY].size
  • 檔案 API 中新增了新的 File#delete? 方法,用於刪除檔案和目錄。 和 Dir#delete?,如果檔案或目錄遺失,則傳回 false。
  • File.tempfile 方法的保護已加強,現在不允許在構成檔案名稱的行中出現空字元。
  • 新增了環境變數 NO_COLOR,它禁用編譯器和解釋器輸出中的顏色突出顯示。
  • 口譯模式下的工作得到了顯著改善。

來源: opennet.ru

添加評論