發布 Ruby 3.1 編程語言

Ruby 3.1.0 已經發布,這是一種動態的面向對象編程語言,程序開發效率很高,並融合了 Perl、Java、Python、Smalltalk、Eiffel、Ada 和 Lisp 的最佳功能。 該項目代碼在BSD(“2-clause BSDL”)和“Ruby”許可證下分發,它指的是最新版本的GPL許可證,與GPLv3完全兼容。

主要改進:

  • 在新增了一個新的實驗性進程內 JIT 編譯器 YJIT,它是由 Shopify 電子商務平台的開發人員創建的,作為提高使用 Rails 框架並調用大量方法的 Ruby 程式效能的計劃的一部分。與先前使用的 MJIT JIT 編譯器(基於處理整個方法並使用 C 語言中的外部編譯器)的主要區別在於,YJIT 使用惰性基本區塊版本控制 (LBBV) 並包含整合的 JIT 編譯器。使用 LBBV,JIT 首先僅編譯方法的開頭部分,並在執行過程中確定所使用的變數和參數的類型後,稍後編譯其餘部分。使用 YJIT 時,執行 Railsbench 測試時效能提高了 22%,液體渲染測試時效能提高了 39%。 YJIT 目前僅限於支援 x86-64 架構系統上的類 UNIX 作業系統,且預設為停用狀態(要激活,請在命令列中指定「--yjit」標誌)。
  • 改進了舊 MJIT JIT 編譯器的效能。對於使用 Rails 的項目,預設最大快取大小 (--jit-max-cache) 已從 100 個指令增加到 10000 個指令。停止對超過 1000 條指令的方法使用 JIT。為了支援 Rails 的 Zeitwerk,當為類別事件啟用 TracePoint 時,JIT 程式碼不再被丟棄。
  • 它包括一個完全重寫的debug.gem調試器,它支援遠端調試,不會減慢被調試應用程式的速度,支援與高級調試接口(VSCode和Chrome)集成,可用於調試多線程和多進程應用程序,提供REPL程式碼執行接口,提供高級追蹤功能,可以記錄和重播程式碼片段。先前提供的調試器 lib/debug.rb 已從基本發行版中刪除。
    發布 Ruby 3.1 編程語言
  • 在回調追蹤報告中實現了錯誤的視覺突出顯示。使用內建且預設啟用的 gem 套件 error_highlight 提供錯誤標記。若要停用錯誤標記,您可以使用“--disable-error_highlight”設定。 $ ruby​​ test.rb:1:in "": undefined method "time" for 1:Integer (NoMethodError) 1.time {} ^^^^^ 你是說嗎?次
  • 互動式計算IRB(REPL,Read-Eval-Print-Loop)的外殼實現了輸入程式碼的自動完成(當您鍵入時,會顯示一個提示,其中包含用於繼續輸入的選項,您可以使用Tab或Shift+在這些選項之間移動Tab 鍵)。選擇繼續選項後,附近會顯示一個對話框,其中顯示與所選項目關聯的文件。鍵盤快速鍵 Alt+d 可用於存取完整文件。
    發布 Ruby 3.1 編程語言
  • 現在,語言語法允許在呼叫函數時跳過雜湊文字和關鍵字參數中的值。例如,您現在可以指定“{x:, y:}”,而不是表達式“{x: x, y: y}”,而不是“foo(x: x, y: y)” - foo( x :,y:)」。
  • 穩定支持單行模式匹配 (ary => [x, y, z]),不再標記為實驗性的。
  • 模式比對中的「^」運算子現在可以包含任意表達式,例如: Prime.each_cons(2).lazy.find_all{_1 in [n, ^(n + 2)]}.take(3).to_a # = > ? [[3, 5], [5, 7], [11, 13]]
  • 在單行模式匹配中,可以省略括號: [0, 1] => _, x {y: 2} => y: x #=> 1 y #=> 2
  • RBS 類型註釋語言可讓您確定程式的結構和所使用的類型,新增了使用「<」符號指定類型參數上限的支持,新增了對泛型類型別名的支持,實現了對用於管理gems 的集合,提高了性能並為內建庫和標準庫實現了許多新簽名。
  • TypePro靜態類型分析器增加了對整合開發環境的實驗性支持,無需顯式類型資訊即可根據程式碼分析產生RBS註解(例如,已經準備了一個用於將TypePro與VSCode編輯器整合的插件)。
  • 處理多個作業的順序已變更。例如,先前表達式「foo[0], bar[0] = baz, qux」的組件按照 baz, qux, foo, bar 的順序處理,但現在是 foo, bar, baz, qux。
  • 新增了使用 VWA(可變寬度分配)機制的字串記憶體分配的實驗性支援。
  • 內建 gem 模組和標準庫中包含的模組的更新版本。內建 net-ftp、net-imap、net-pop、net-smtp、matrix、prime 和 debug 套件。

來源: opennet.ru

添加評論