經過11個月的開發
分支 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 字元的模式的處理速度顯著加快。
- 從 UTF-8 到字元佈局的翻譯操作已加速(
- 已恢復對 Minix3 平台的支援。可以使用 Microsoft Visual Studio 2019 編譯器 (Visual C++ 14.2) 進行建置;
- 基本包中包含的模組的更新版本。模組已從主要構成中刪除
B::調試 и區域設定::程式碼 .
來源: opennet.ru