Crystal 程式語言 1.16 發布

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

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

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

主要變化:

  • 增加了在單獨的執行上下文(執行上下文)中運行輕量級線程(纖程)的實驗性支持,這允許更有效地並行執行任務 - 在一個上下文中阻塞線程不會導致在另一個上下文中停止執行。 mt_context = Fiber::ExecutionContext::MultiThreaded.new("worker-threads", 4) 10.times do mt_context.spawn do do_something end end gtk = Fiber::ExecutionContext::Iitsolated。
  • Slice.literal 方法現在提供切片中包含的元素類型的輸出,並增加了在解釋器中工作的支援。
  • sizeof 和 alignof 巨集提供有關穩定類型的信息。
  • 標準庫中新增了新方法:Indexable#find、#find!、EventLoop#wait_readable 和 #wait_writable。
  • 編譯器具有“-o”選項的長版本,“--output”,並且已經實現了指定目錄而不是檔案的功能(將根據帶有程式碼的檔案名稱來選擇檔案名稱)。
  • 文檔生成器現在能夠在文檔中包含私有和受保護的對象,以及庫綁定(lib、fun、union、cstruct、external、type)中的對象。
  • 在「File.match?」方法實現了一種新的檔案路徑匹配演算法,消除了一些問題和限制。例如,字元轉義(“\\t”掩碼與“\t”匹配,但不與“t”字元匹配)、路徑拆分(“a**”遮罩與“ab”匹配,但不與“ab/c”匹配,而“**/a”遮罩與“a”相符)、巢狀模式(“{[}]}”遮罩可以與您一起處理)和範圍(“{”}”)和範圍(“{[}]}"
  • 後綴「?」在定義(defs)、巨集和區塊中的參數名稱中已被棄用。和 」!」。
  • 在 Enumerable#sum 和 #product 方法中,如果元素類型是聯合,則已刪除傳回類型的自動確定。當呼叫這些方法時,現在需要明確指定類型,例如,不要寫“[1, 10000000000_u64].sum”,而應該寫“[1, 10000000000_u64].sum(0_u64)”。
  • HTTP::Request 確保 URL 各部分的正確解析。
  • 增加了對 LLVM 20 編譯器套件的支援。
  • 對 LLVM::ABI 和 LLVM::TargetMachine#abi 的呼叫已被棄用。

    來源: opennet.ru
為具有 DDoS 保護、VPS VDS 服務器的站點購買可靠的主機 🔥 購買具備 DDoS 防護的可靠網站寄存服務,包括 VPS 和 VDS 伺服器 | ProHoster