Crystal 程式語言 1.2 發布

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

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

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

主要變化:

  • 新增了將泛型類別的子類別指派給父類別的元素的功能。 類別 Foo(T); 結束類別 Bar(T) < Foo(T); 結束 x = Foo x = 酒吧
  • 巨集現在可以使用下劃線來忽略 for 迴圈中的值。 {% for _, v, i in {1 => 2, 3 => 4, 5 => 6} %} p {{v + i}} {% end %}
  • 在巨集中新增了“file_exists?”方法。 檢查文件是否存在。
  • 標準庫現在支援 128 位元整數。
  • 新增了 Indexable::Mutable(T) 模組,其中實作了 BitArray 和 Deque 等集合的高階操作。 ba = BitArray.new(10) # ba = BitArray[0000000000] ba[0] = true # ba = BitArray[1000000000] ba.rotate!(-1) # ba = BitArray[0100000000]
  • 新增了 XML::Node#namespace_definition 方法以從 XML 中提取特定的命名空間。
  • IO#write_utf8 和 URI.encode 方法已被棄用,應替換為 IO#write_string 和 URI.encode_path。
  • 對 32 位元 x86 架構的支援已移至第二級(不再產生現成的套件)。 正在準備轉移到 ARM64 架構的第一級支援。
  • 確保對 Windows 平台的全面支援的工作仍在繼續。 新增了對 Windows 套接字的支援。
  • 為 macOS 添加了通用包,可在配備 x86 處理器的裝置和配備 Apple M1 晶片的裝置上運作。

來源: opennet.ru

添加評論