程式語言 Perl 5.30.0 發布

經過11個月的開發 發生 發布 Perl 程式語言的新穩定分支 - 5.30。在準備新版本的過程中,更改了約620萬行程式碼,更改影響了1300個文件,58名開發人員參與了開發。

分支 5.30 是按照六年前批准的固定開發時間表發布的,這意味著每年發布一次新的穩定分支,每三個月發布一次修正版本。大約一個月後,計劃發布 Perl 5.30.1 的第一個修正版本,該版本將修正 Perl 5.30.0 實施過程中發現的最重大錯誤。隨著 Perl 5.30 的發布,對 5.26 分支的支援也已停止,只有在發現嚴重安全問題的情況下,將來才會發布更新。實驗分支5.31的開發過程也已經開始,在此基礎上將於2020年5.32月形成Perl XNUMX的穩定版本。

鑰匙 變化:

  • 正規表示式中加入了對“”操作的實驗性支援。(?<!圖案)“和”(?<=模式)» 對先前處理的命名範本的有限存取。模式定義必須在參考點的 255 個字元以內;
  • 「{m,n}」正規表示式區塊中大小說明符(「n」)的最大值已增加至 65534;
  • 新增有限 支持 用於突出顯示正規表示式中某些類別的字元的掩碼,涵蓋不同的 Unicode 集。例如,表達式“qr! \p{nv= /(?x) \A [0-5] \z / }!”允許您選擇定義 0 到 5 數字的所有 Unicode 字符,包括數字的泰語或孟加拉語拼寫;
  • 新增了對正則表達式中命名字元的支持
    內部模式以單引號分隔 (qr'\N{name}');

  • Unicode 規範支援已更新至版本 12.1。實驗性開發標誌已從呼叫中刪除 sv_utf8_downgrade 和 sv_utf8_decode,用於C語言擴展的開發;
  • 新增了透過使用支援多執行緒操作的語言環境實作操作來建立 perl 的功能 (-Accflags='-DUSE_THREAD_SAFE_LOCALE')。以前,這樣的實作僅在建置 Perl 的多執行緒版本時使用,但現在可以為任何建置啟用;
  • 結合“-Dv”(增強偵錯輸出)和“-Dr”(正規表示式偵錯)標誌現在可以啟用所有可能的正規表示式偵錯模式;
  • 先前棄用的功能已刪除:
    • 現在可用作行分隔符號和通配符 允許 僅使用 字素 (不允許使用複合 Unicode 字元)。
    • 停產 支援在正規表示式中使用某些早已過時的“{”字元而不轉義它的形式。
    • 它是被禁止 使用帶有「:utf8」處理程序的 sysread()、syswrite()、recv() 和 send() 函數。
    • 禁止在本質上錯誤的條件語句中使用「my」的定義(例如,「my $x if 0」)。
    • 對特殊變數「$*」和「$#」的支援已被刪除。
      對 dump() 函數隱式呼叫的支援已停止(您現在必須明確指定 CORE::dump())。

    • File::Glob::glob 函數已被刪除(您應該使用 File::Glob::bsd_glob)。
    • 新增了對 pack() 的保護,防止傳回無效的 Unicode 序列。
    • 使用在 XS 程式碼(C 區塊)中執行 UTF-8 操作的巨集的支援已推遲到下一個版本。
  • 效能優化:
    • 從 UTF-8 到字元佈局的翻譯操作已加速(代碼點),例如,執行 ord(“\x7fff”) 操作現在需要的指令減少了 12%。檢查 UTF-8 字元序列正確性的操作性能也得到了提升;
    • Finalize_op() 函數中的遞歸呼叫已被消除;
    • 程式碼進行了小幅優化,以折疊相同字元並在正規表示式中定義字元類別;
    • 最佳化 將有符號類型定義轉換為無符號類型定義(IV 到 UV);
    • 透過一次處理兩位數而不是一位,加速了將整數轉換為字串的演算法;
    • 已做出改進 準備好了 基於 LGTM 的分析;
    • 優化了regcomp.c、regcomp.h和regexec.c檔案中的程式碼;
    • 在正規表示式中,像「qr/[^a]/」這樣帶有 ASCII 字元的模式的處理速度顯著加快。
  • 已恢復對 Minix3 平台的支援。可以使用 Microsoft Visual Studio 2019 編譯器 (Visual C++ 14.2) 進行建置;
  • 基本包中包含的模組的更新版本。模組已從主要構成中刪除 B::調試 и 區域設定::程式碼.

來源: opennet.ru

添加評論