Perl的5.44


3

經過一年的發展 發表 發布 Perl 程式語言的新穩定分支 - 5.44。 在 準備 新版本更改了約 270 行程式碼(不包括文件和自動生成的程式碼 - 110 行),更改影響了 860 個文件,71 位開發人員參與了開發。

5.44 分支的發布遵循十三年前製定的固定開發計劃,該計劃要求每年發布一個穩定分支,每三個月發布一個次要版本。第一個次要版本 Perl 5.44.1 計劃在一個月後發布,修復了在 Perl 5.44.0 實作過程中發現的最重要漏洞。隨著 Perl 5.44 的發布,對 5.40 分支的支援已經結束;未來只有在發現重大安全問題時才會發布對其的更新。 已開始 除非另有決定,否則實驗性 5.45 分支的開發過程將基於該分支,並於 2027 年上半年發布穩定版 Perl 5.46。 過去 編號至 7.x。

鑰匙 變化:

  • 添加 在實驗中,使用命名參數的可能性 簽名 函數定義中,傳遞給函數的變數清單並非位於函數體中,而是在函數宣告期間定義。這項新特性允許參數以任意順序傳遞,無需嚴格按照順序,使用鍵值對,語法類似於在雜湊表中賦值元素:
    • 舊語法:sub f { my ($x, $y) = @_; …} f(1, 2);
    • 簽名:sub f ($x, $y) { … } f(1, 2);
    • 帶有命名參數的簽名:sub f (:$x, :$y) { … } f(y => 2, x => 1);
  • 新增了在包含多個變數的 foreach 迴圈中使用別名(指向指標的指標)的實驗性支援。此功能可讓您在 foreach 迴圈中建立別名,以便在單次迴圈迭代中檢索多個值。例如,當遍歷雜湊的鍵和值時,您可以為雜湊元素建立一個別名,該別名指向一個陣列:use v5.44; use feature qw( refaliasing declared_refs ); my %hash = ( one => [1], two => [2, 2], ); forpeach sal meal s ) @-me mes 30% (The ); array contains: @items"; } # 在 5.44 版本之前,需要進行解引用:foreach my ( $key, $var ) ( %hash ) { say "The $key array contains: @$var"; } # 不使用實驗性的 refalias 和 declared_refs 功能:for key% $陣列包含:@{$hash{$key}}"; }
  • 在正規表示式中 實施的 實驗性的「enhanced_xx」模式允許將 /xx 修飾符與方括號中的字元類別 ([a-zA-Z]) 一起使用,以便將其拆分到多行或插入註解。例如,條件 if ($text =~ m/[a-zA-Z]/){ 可以寫成:if ($text =~ m/[ a-z # 小寫字母 A-Z # 大寫字母 ]/xx) {
  • 偽隨機數產生器使用 getentropy() 系統呼叫來取得支援該系統的系統的熵(Linux,BSD, macOS在其他系統中,熵是透過讀取 /dev/urandom 裝置或使用時間、進程 ID 和指標值的雜湊值來獲得的。
  • 增加了規範支持 Unicode 17.0.
  • 識別碼名稱和正規表示式群組已嚴格遵守 Unicode 規則,先前由 w 類別覆蓋的約 160 個 Unicode 字元現已停用。例如,w 類涵蓋所有字母、數字和下劃線字符,現在已排除帶圓圈的拉丁字母,這些字母雖然看起來像真正的字母,但實際上並非字母。此行為變更僅影響使用 utf8 模式的程序。
  • 修正了 Perl_study_chunk 函數中由緩衝區溢位引起的漏洞(CVE-2026,8376(出現在 32 位元程式集中)和 S_measure_struct(CVE-2026,57432),以及正規表示式引擎中 16 位元計數器的溢位(CVE-2026,13221這可能會導致正規表示式失敗。
  • 禁止使用 goto 運算子跳到迴圈和程式碼區塊內的特定位置。此功能已於 2010 年棄用。
  • 效能最佳化旨在加快整數加法、減法和乘法運算、函數簽章處理以及使用編譯時已知的字串鍵從鍵/值列表填入雜湊表的速度。

來源: linux.org.ru

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