Crystal 1.2發(fā)布,語法類似 Ruby 的編譯型編程語言
編程語言 Crystal 1.2 已經(jīng)發(fā)布,其開發(fā)人員正試圖將 Ruby 語言開發(fā)的便利性與 C 語言固有的高應(yīng)用程序性能相結(jié)合。Crystal 語法與 Ruby很接近,但并不完全兼容,盡管有些 Ruby 程序無需修改即可執(zhí)行。編譯器代碼是用 Crystal 編寫的,并在 Apache 2.0許可證下獲得許可。
該語言使用靜態(tài)類型檢查,無需在代碼中顯式指定變量和方法參數(shù)的類型即可實(shí)現(xiàn)。Crystal 程序被編譯成可執(zhí)行文件,并在編譯時(shí)進(jìn)行宏評估和代碼生成。在 Crystal 語言的程序中,允許連接用 C 語言編寫的綁定。代碼執(zhí)行的并行化是使用“spawn”關(guān)鍵字進(jìn)行的,它允許您以稱為纖程(Fiber)的輕量級線程的形式在不阻塞主線程的情況下異步啟動(dòng)后臺任務(wù)。
標(biāo)準(zhǔn)庫提供了大量常用功能,包括用于處理 CSV、YAML 和 JSON 的工具、用于構(gòu)建 HTTP 服務(wù)器的組件以及支持 WebSocket。在開發(fā)過程中,可以方便地使用“crystal play”命令,它會(huì)生成一個(gè)web界面(默認(rèn)localhost:8080),用于以Crystal語言交互執(zhí)行代碼。
Crystal 1.2 的主要變化:
添加了將泛型類的子類分配給父類的元素的功能。
- class Foo (T); end
- class Bar (T) <Foo (T); end
- x = Foo
- x = Bar
在宏中,您現(xiàn)在可以使用下劃線來忽略“for”循環(huán)中的值。
- {% for _, v, i in {1 => 2, 3 => 4, 5 => 6}%}
- p {{v + i}}
- {% end%}
添加了“file_exists?” 宏的方法。檢查文件是否存在。
標(biāo)準(zhǔn)庫提供對 128 位整數(shù)的支持。
添加 Indexable::Mutable (T) 模塊以實(shí)現(xiàn)對 BitArray 和 Deque 等集合的擴(kuò)展操作。
- 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 方法已被棄用,應(yīng)替換為 IO # write_string 和 URI.encode_path。對 32 位 x86 架構(gòu)的支持已移至第二級(不再生成現(xiàn)成的包)。正在準(zhǔn)備轉(zhuǎn)移到對 ARM64 架構(gòu)的第一級支持。繼續(xù)為 Windows 平臺提供全面支持的工作。添加了對 Windows 套接字的支持。對于 macOS,添加了一個(gè)通用包,可在具有 x86 處理器的設(shè)備和具有 Apple M1 芯片的硬件上運(yùn)行。