perl5340delta - perl v5.34.0 的新增功能
本文件說明 5.32.0 版和 5.34.0 版之間的差異。
如果您要從較早的版本(例如 5.30.0)升級,請先閱讀 perl5320delta,其中說明 5.30.0 和 5.32.0 之間的差異。
已新增提供 try
/catch
符號的初步實驗性嘗試。
use feature 'try';
try {
a_function();
}
catch ($e) {
warn "An error occurred: $e";
}
如需更多資訊,請參閱 "perlsyn 中的 Try Catch 例外處理"。
qr/{,n}/
現在接受正規表示式量化詞的空下界,例如 m/x{,3}/
表示 m/x{0,3}/
(在雙引號內容和正規表示式模式中)
這表示您可以撰寫像 \x{ FFFC }
這樣的內容(如果您喜歡的話)。這適用於所有此類建構,即 \b{}
、\g{}
、\k{}
、\N{}
、\o{}
和 \x{}
;以及正規表示式量化詞 {m,n}
。\p{}
和 \P{}
保留其既有、更寬鬆的規則,這是 Unicode 標準強制規定的(請參閱 "perluniprops 中可透過 \p{} 和 \P{} 存取的屬性")。
此功能會在不論正規表示式模式修改器 /x
是否存在的情況下生效。
此外,正規表示式括弧量化詞中的逗號可以在逗號前後有空白(標籤或空格),例如 qr/a{ 5, 7 }/
。
0oddddd
現在可以使用 0o
前綴指定八進制文字,例如 0o123_456
,平行於指定十六進制文字 0xddddd
和二進制文字 0bddddd
的現有結構。此外,內建 oct()
函數現在接受此新語法。
請參閱 "perldata 中的「純量值建構函數」 和 "perlfunc 中的 oct EXPR"。
修復 RegEx 中的記憶體外洩 [GH #18604]
ExtUtils::PL2Bat 0.004 已新增至 Perl 核心。
此模組是 pl2bat
程式碼的概括。由於它是程式碼,因此至少導致此程式碼產生兩個分支;此模組會將它們統一在一個實作中,並進行測試。
Archive::Tar 已從版本 2.36 升級至 2.38。
autodie 已從版本 2.32 升級至 2.34。
B 已從版本 1.80 升級至 1.82。
B::Deparse 已從版本 1.54 升級至 1.56。
bytes 已從版本 1.07 升級至 1.08。
Carp 已從版本 1.50 升級至 1.52。
Compress::Raw::Bzip2 已從版本 2.093 升級至 2.101。
Compress::Raw::Zlib 已從版本 2.093 升級至 2.101。
Config::Perl::V 已從版本 0.32 升級至 0.33。
CPAN 已從版本 2.27 升級至 2.28。
Data::Dumper 已從版本 2.174 升級至 2.179。
DB 已從版本 1.58 升級至 1.59。
DB_File 已從版本 1.853 升級至 1.855。
Devel::Peek 已從版本 1.28 升級至 1.30。
Devel::PPPort 已從版本 3.57 升級至 3.62。
新的 PERL_VERSION_*
比較巨集現已可用。
ppport.h --api-info
不再包含非 API 資訊,除非那是唯一的比對。
Digest 已從版本 1.17_01 升級至 1.19。
Digest::MD5 已從版本 2.55_01 升級至 2.58。
DynaLoader 已從版本 1.47 升級至 1.50。
Encode 已從版本 3.06 升級至 3.08。
Env 已從版本 1.04 升級至 1.05。
Errno 已從版本 1.30 升級至 1.33。
experimental 已從版本 0.020 升級至 0.024。
Exporter 已從版本 5.74 升級至 5.76。
ExtUtils::CBuilder 已從版本 0.280234 升級至 0.280236。
ExtUtils::Install 已從版本 2.14 升級至 2.20。
ExtUtils::MakeMaker 已從版本 7.44 升級至 7.62。
ExtUtils::Manifest 已從版本 1.72 升級至 1.73。
ExtUtils::Miniperl 已從版本 1.09 升級至 1.10。
ExtUtils::ParseXS 已從版本 3.40 升級至 3.43。
ExtUtils::Typemaps 已從版本 3.38 升級至 3.43。
Fcntl 已從版本 1.13 升級至 1.14。
feature 已從版本 1.58 升級至 1.64。
已新增預設啟用的 bareword_filehandles
功能。
File::Copy 已從版本 2.34 升級至 2.35。
File::Fetch 已從版本 0.56 升級至 1.00。
File::Find 已從版本 1.37 升級至 1.39。
File::Path 已從版本 2.16 升級至 2.18。
File::Spec 已從版本 3.78 升級至 3.80。
File::Temp 已從版本 0.2309 升級至 0.2311。
Filter::Util::Call 已從版本 1.59 升級至 1.60。
FindBin 已從版本 1.51 升級至 1.52。
GDBM_File 已從版本 1.18 升級至 1.19。
新增函式和相容於更新版本的 GDBM。[GH #18435]
Getopt::Long 已從版本 2.51 升級至 2.52。
Getopt::Std 已從版本 1.12 升級至 1.13。
Hash::Util 已從版本 0.23 升級至 0.25。
Hash::Util::FieldHash 已從版本 1.20 升級至 1.21。
I18N::LangTags 已從版本 0.44 升級至 0.45。
if 已從版本 0.0608 升級至 0.0609。
IO 已從版本 1.43 升級至 1.46。
除了 $@
之外,IO::Socket 現在也會將錯誤訊息儲存在 $IO::Socket::errstr
中。
error
方法現在會回報 socket 和字元裝置的輸入和輸出串流的錯誤狀態。類似地,clearerr
現在會清除兩個串流的錯誤狀態。
已在 IO::Handle 中修正一般檔案處理常式回報的虛假錯誤。[GH #18019]
IO-Compress 已從版本 2.093 升級至 2.102。
bin/zipdetails 版本 2.02
IO::Socket::IP 已從版本 0.39 升級至 0.41。
IO::Zlib 已從版本 1.10 升級至 1.11。
IPC::SysV 已從版本 2.07 升級至 2.09。
JSON::PP 已從版本 4.04 升級至 4.06。
libnet 發行版已從版本 3.11 升級至 3.13。
locale 已從版本 1.09 升級至 1.10。
Math::Complex 已從版本 1.5901 升級至 1.5902。
MIME::Base64 已從版本 3.15 升級至 3.16。
Module::CoreList 已從版本 5.20200620 升級至 5.20210520。
Module::Load 已從版本 0.34 升級至 0.36。
Module::Load::Conditional 已從版本 0.70 升級至 0.74。
mro 已從版本 1.23 升級至 1.25_001。
Net::Ping 已從版本 2.72 升級至 2.74。
NEXT 已從版本 0.67_01 升級至 0.68。
ODBM_File 已從版本 1.16 升級至 1.17。
Opcode 已從版本 1.47 升級至 1.50。
overload 已從版本 1.31 升級至 1.33。
perlfaq 已從版本 5.20200523 升級至 5.20210411。
PerlIO::encoding 已從版本 0.28 升級至 0.30。
PerlIO::mmap 已從版本 0.016 升級至 0.017。
PerlIO::scalar 已從版本 0.30 升級至 0.31。
PerlIO::via::QuotedPrint 已從版本 0.08 升級至 0.09。
Pod::Checker 已從版本 1.73 升級至 1.74。
Pod::Html 已從版本 1.25 升級至 1.27。
Pod::Simple 已從版本 3.40 升級至 3.42。
Pod::Usage 已從版本 1.69 升級至 2.01。
POSIX 已從版本 1.94 升級至 1.97。
POSIX::signbit() 行為已改善。[GH #18441]
asctime
文件說明結果永遠是英文。(使用 strftime
取得在地化結果。)
re 已從版本 0.40 升級至 0.41。
(有關更多資訊,請參閱 「內部變更」。)
Safe 已從 2.41 版升級至 2.43 版。
Socket 已從 2.029 版升級至 2.031 版。
Storable 已從 3.21 版升級至 3.23 版。
strict 已從 1.11 版升級至 1.12 版。
subs 已從 1.03 版升級至 1.04 版。
Symbol 已從 1.08 版升級至 1.09 版。
Test::Harness 已從 3.42 版升級至 3.43 版。
Test::Simple 已從 1.302175 版升級至 1.302183 版。
Text::Balanced 已從 2.03 版升級至 2.04 版。
threads 已從 2.25 版升級至 2.26 版。
threads::shared 已從 1.61 版升級至 1.62 版。
Tie::RefHash 已從 1.39 版升級至 1.40 版。
Time::HiRes 已從 1.9764 版升級至 1.9767 版。
Time::Local 已從 1.28 版升級至 1.30 版。
Unicode::Collate 已從 1.27 版升級至 1.29 版。
Unicode::Normalize 已從 1.27 版升級至 1.28 版。
utf8 已從 1.22 版升級至 1.24 版。
version 已從 0.9924 版升級至 0.9928 版。
warnings 已從 1.47 版升級至 1.51 版。
Win32 已從 0.53 版升級至 0.57 版。
修正 PFNRegGetValueA
的呼叫慣例。
新增 Win32::IsSymlinkCreationAllowed()
、Win32::IsDeveloperModeEnabled()
和 Win32::GetProcessPrivileges()
。
移除 Windows 2000 之前版本的舊程式碼。
XS::APItest 已從 1.09 版升級至 1.16 版。
XS::Typemap 已從版本 0.17 升級至 0.18。
此文件為 Perl 附帶文件撰寫和維護指南。
此文件說明 Perl 新治理模式的目標、範圍、系統和規則。
其他 pod 檔案(最顯著的是 perlpolicy)已修正以反映其採用。
我們已嘗試更新文件以反映此文件中列出的變更。如果您發現我們遺漏任何變更,請在 https://github.com/Perl/perl5/issues 開啟問題。
此外,已進行下列選定的變更
perlapi、perlguts、perlxs 和 perlxstut 現在偏好使用 SvPVbyte
而非 SvPV
。
已將對 Pumpking 的參照替換為更準確的術語或 Steering Council(在適當的情況下)。
The Perl Steering Council 現在是安全問題的後備聯絡人。
持續努力改善此文件的呈現,並記錄更多 API 元素。
已更新 freenode IRC URL。
已修正純量 ${"_<$filename"}
變數的說明。
現在記錄「未匯入」警告的其他範例。
Perl FAQ 已更新至 CPAN 版本 5.20201107,並進行小幅改進。
my() 和 state() 現在會明確警告讀者,通常不應該在同一個範圍或陳述中重新宣告詞彙變數。 [GH #18389]
localtime 條目已改善,現在也說明函數的結果總是為英文。
msgsnd() 記錄在傳遞給 msgsnd()
的封裝 MSG
參數中包含一個長度欄位,但並不存在這樣的欄位。MSG
僅包含類型和訊息內容。
更佳地說明當 sleep
被呼叫時,如果使用零或負值會發生什麼事。
簡化 split()
文件,從範例中移除 join()
s [GH #18676]
記錄如何為每個 PR 建立遠端追蹤分支
記錄如何將 PR 取得為一個本機分支
perlguts 現在更詳細地說明在呼叫 SvPV
(或變體)時需要諮詢 SvUTF8
。同一個文件中的新「如何將 Perl 字串傳遞給 C 函式庫?」區段討論何時使用哪種風格的巨集來讀取 SV 的字串值。
更正 perlguts 中的 my_rpeep
範例。
已新增一個關於特殊大小的格式化列印區段。
<>
和 <<>>
算子通常分別稱為菱形算子和雙菱形算子,但這之前並未在它們的文件中提及。
記錄範圍運算行為變更。
已修正範例中使用的不正確變數。
記錄 caller() 無法看到 try{} 區塊
一個新的範例顯示如何於初始化一個 for
迴圈期間宣告一個詞法 my
變數。
修正 Perl 處理未編碼字串的說明
以下新增或變更已套用於診斷輸出,包括警告和致命錯誤訊息。如需診斷訊息的完整清單,請參閱 perldiag。
在 'no feature "bareword_filehandles"' 下不允許使用裸字檔案句柄 "%s"
這伴隨著新的 bareword_filehandles 功能。
這伴隨著新的 multidimensional 功能。
嘗試透過 %ENV
將寬字元放入環境變數鍵中現在會引發此警告。
在處理使用者定義的屬性時遇到錯誤 ("perlunicode 中的使用者定義字元屬性")。這些是由程式設計師編寫的子常式,因此可能會發生錯誤,導致無法編譯或執行。
使用者定義的屬性 ("perlunicode 中的使用者定義字元屬性") 可能取決於其他使用者定義屬性的定義。如果相依關係鏈會導回此屬性,則會發生無限遞迴,除非有檢查會引發此錯誤。
第一次使用使用者定義的屬性 ("perlunicode 中的使用者定義字元屬性") 時,會查詢其定義並將其轉換為內部形式,以在後續使用中更有效率地處理。如果兩個或兩個以上的執行緒嘗試幾乎同時執行此處理,可能會發生競爭。
您指定在 \p{...}
中使用一個屬性,該屬性是一個語法上有效的使用者定義的屬性,但找不到其定義
子常式參數計數不符的錯誤現在會包含已給予和預期的參數數量。
子常式參數計數不符的錯誤現在會包含已給予和預期的參數數量。
此警告僅在遞增時針對正值太大值發出,且僅在遞減時針對負值發出。現在會針對正值或負值太大值發出。[GH #18333]
正規表示式中不允許在向前/向後查詢中使用 \K;在 m/%s/ 中標示為 <-- HERE
在某些涉及巢狀環顧的案例中會錯誤產生此錯誤。此問題已修正。[GH #18123]
此警告現在可能會包含陣列或雜湊索引,當未初始化值是找不到元素的結果時。這只會在索引是簡單非神奇變數時發生。
新選項:HistItemMinLength
此選項控制命令儲存在歷程記錄中的最小長度。傳統上,這已固定為 2。對除錯器的變更通常很危險,應回報新的錯誤,以便除錯除錯器。
修正 i
和 l
命令
i $var
和 l $var
命令再次與詞彙變數搭配使用。
防止 incpath 溢出到 libpth
如果可用,請使用 realpath。(這可能會找出更多重複路徑。)
只包含實際存在的路徑。
從 libpth 中濾出 inc 路徑。
已移除 stadtx hash 支援
已完全移除 stadtx 支援。先前,可以使用 PERL_HASH_FUNC_STADTX
要求此支援,且在 64 位元組建中為預設值。已將其替換為 SipHash。SipHash 已比 stadtx 經過更嚴謹的檢閱。
設定
新的偵測會檢查 gcvt
/qgcvt
函式的錯誤 libc 實作。[GH #18170]
-Dusedefaultstrict
現在可以使用 strict 預設開啟來建置 Perl(使用設定選項 -Dusedefaultstrict
。
當透過 -e
或 -E
執行 perl
時,這些 strict 預設值不適用。
此設定提供診斷機制,僅供開發用途,因此預設未定義。
現在支援的最低 Bison 版本為 2.4,最高版本為 3.7。
現在已辨識較新的 Intel C/C++ 編譯器 64 位元版本,並設定正確的旗標。
現在會在 Configure 檢查 va_copy
時捕捉 SIGBUS。
在多個系統上,嘗試判斷是否需要 va_copy
或類似的結果會產生 SIGBUS,而不是預期的 SIGSEGV,這先前會導致核心傾印。
已新增和變更測試,以反映此版本中的其他新增和變更。此外,已進行下列重大變更
將 t/opbasic/arith.t 中的設定相關測試拆分至 t/op/arith2.t
已新增 t/re/opt.t,提供正規表示式最佳化的測試架構。[GH #18213]
已移除 CPAN 套件在 @INC
中需要點的解決方案 [GH #18394]。先前需要此解決方案的所有套件現在都已調整。
當在多核心平台上並行測試時,現在你可以透過設定
PERL_TEST_HARNESS_ASAP=1
來讓測試套件稍早完成,但測試的邏輯順序會減少。
允許在 i386 9front 系統(plan9 的分支)上建置 Perl。
已移除與 Symbian 相關的支援程式碼。Symbian 是行動裝置作業系統。此移植最後更新於 2009 年 7 月,而平台本身最後更新於 2012 年 10 月。
許多系統函式庫在 Big Sur 上不再以實際檔案存在,即使 dlopen
會假裝它們存在,所以現在如果找不到函式庫檔案,我們會回退到 dlopen
。[GH #18407]
由於 Windows 中的錯誤,當主控台的代碼頁設定為 65001(UTF-8)時,從主控台讀取非 ASCII 字元會中斷。已實作解決此問題的解決方法。[GH #18701]
使用 mingw.org 編譯器(版本 3.4.5 或更新版本)搭配 mingw 執行時期版本 < 3.22 現在又可以正常運作。這在 Perl 5.31.4 中中斷。
使用 mingw.org 編譯器(版本 3.4.5 或更新版本)搭配 mingw 執行時間版本 >= 3.21 現在可以運作(適用於版本 5.3.0 以前的編譯器)。
Makefile.mk,以及對 dmake 的支援,已被移除。使用 nmake (Makefile) 和 GNU make (GNUmakefile) 仍然可以在 Windows 上建置 Perl。[GH #18511]
perl 現在可以使用 gcc 的 mingw-w64 埠(32 位元和 64 位元)在 MS Windows 上搭配 USE_QUADMATH
建置。[GH #18465]
pl2bat.pl 工具現在需要 use ExtUtils::PL2Bat
。這可能會導致並行建置失敗。
Windows 現在支援 symlink() 和 readlink(),而 lstat() 不再是 stat() 的別名。[GH #18005]
與 POSIX 系統不同,在 Windows 上建立符號連結需要提升的權限或啟用開發人員模式的 Windows 10 1703 或更新版本。
stat()(包括 stat FILEHANDLE
)和 lstat() 現在使用我們自己的實作,會填入傳回的裝置 dev
和 inode 號碼 ino
,而不是總是傳回 0。連結數 nlink
欄位現在總是會填入。
${^WIN32_SLOPPY_STAT}
以前控制是否填入 nlink
欄位,需要額外的 Windows API 呼叫才能擷取,因為 nlink
和 stat()
所需的其他資訊現在會在單一 API 呼叫中擷取。
-r
和 -w
算子現在會為 STDIN
、STDOUT
和 STDERR
句柄傳回 true。遺憾的是,它仍然不會為這些句柄的複本傳回 true。[GH #8502]
stat() 和 lstat() 傳回的時間不再會在夏令時間調整時出錯。[GH #6080]
檔案句柄上的 -x
現在應該會與 Vista 或更新版本上對應檔案名稱的 -x
相符。[GH #4145]
-e '"'
不再會錯誤地傳回 true。[GH #12431]
Visual C++ 和 gcc 建置現在使用相同的清單。
先前,MSVC 編譯使用 /manifestdependency 旗標,而非內嵌 perlexe.manifest,這會導致問題,例如 GetVersionEx()
在 Windows 10 上傳回錯誤的版本號碼。
現在識別區域設定類別 LC_SYNTAX
和 LC_TOD
。Perl 除了允許您指定這些類別外,不會對它們做任何事。它們包含在 LC_ALL
中。
修正了 -Dusequadmath
編譯中,Perl 格式化輸出對雙精度和長雙精度參數的處理方式。
這適用於 PerlIO_printf()
、croak()
、warn()
、sv_catpvf()
及其變體。
先前在 quadmath
編譯中,類似下列的程式碼
PerlIO_printf(PerlIO_stderr(), "%g", somedouble);
或
PerlIO_printf(PerlIO_stderr(), "%Lg", somelongdouble);
會錯誤地擲出例外狀況「panic: quadmath invalid format ...」,因為為 quadmath 編譯新增的程式碼假設 NV
是傳遞給這些函式的唯一浮點格式。
此程式碼也會將標準 C 長雙精度指定字 L
處理為預期 NV
(quadmath 編譯的 __float128
),導致未定義的行為。
這些函式現在正確地接受雙精度、長雙精度和 NV。
先前,位元運算移位運算子(移位量)的右運算元會從 IV 隱式轉型為 int,但如果 IV 不符合 int,可能會導致錯誤的結果。
此外,移位 INT_MIN 位元會產生未變更的被移位者(視為 0 位元移位,而非負位移)。
新增一組 cop_hints_exists_{pv,pvn,pvs,sv}
函式,以支援檢查特定 cop 的提示雜湊中是否存在金鑰,而不需要建立該值的暫存副本。
在偵錯 XS 或 C 程式碼時,已新增一個輔助程式,可使用 DEBUG
巨集。perl.h 中的註解說明了 DEBUG_PRE_STMTS
和 DEBUG_POST_STMTS
,您可以 #define
它們來執行一些動作,例如儲存和還原 errno
(如果 DEBUG
呼叫會干擾到這個動作),或顯示時間戳記、呼叫的執行緒、呼叫的位置或其他內容。您可以快速地進行修改,以協助您追蹤某些內容,而不需要編輯個別的 DEBUG
呼叫。
在核心外部提供 REFCOUNTED_HE_EXISTS
現在所有 SvTRUE
類型的函式都會只評估其引數一次。在 5.32 中,perlapi 中的純粹「SvTRUE
」 已變更為執行此動作;現在其他函式也會執行此動作。
在考慮模式 /A*B/(其中 A 和 B 為任意)時,Unicode 現在是一個一級公民。模式比對程式碼會嘗試建立一個緊密的迴圈,以比對 A 的範圍。此邏輯現在已透過支援 UTF-8 進行更新。
re 模組有一個新的函式 optimization
,它可以傳回一個關於已編譯正規表示式的最佳化資料的雜湊參考。
已移除 PERL_GLOBAL_STRUCT
編譯選項,並連帶移除 dVAR
巨集的需求。dVAR
在 PERL_CORE
外部仍定義為無操作,以維持與 XS 模組的向下相容性。
已新增一個新的儲存堆疊類型 SAVEt_HINTS_HH
,它整理了 SAVEt_HINTS
先前的行為。在先前的版本中,推入儲存堆疊的類型和值會取決於提示是否包含 HINT_LOCALIZE_HH
位元,這會讓檢查儲存堆疊的外部程式碼變得複雜。新版本使用不同的儲存堆疊類型來表示差異。
perlapi 中新增了 API 函數 "av_count",它提供了一個明確命名的途徑來找出陣列中有多少個元素。
設定 %ENV
現在可以正確處理金鑰中的升級字串。以前 Perl 會將 SV 的內部 PV 直接傳送至作業系統;現在它會處理金鑰,就像它自 5.18 以來處理值的方式一樣:先嘗試降級字串;如果失敗,則會警告並使用 utf8 形式。
修復 regcomp.c 中的記憶體外洩 [GH #18604]
pack/unpack 格式 'D' 現在可以在所有支援它的系統上執行
以前如果 NV == long double
,現在它會在所有具有 long doubles 的平台上受到支援。特別是,這表示它現在也支援 quadmath 平台。
略過嘗試對不完整的 op 樹進行常數摺疊 [GH #18380]
在某些條件下,鏈結比較 op 樹的常數摺疊可能會失敗,導致 perl 崩潰。作為一個快速修復,現在會略過此類 op 樹的常數摺疊。這也解決了 [GH #17917]
%g
格式化在 Ubuntu-18.04、NVSIZE == 8
上中斷 [GH #18170]
gcvt
和 qgcvt
函數的錯誤 libc 實作導致 (s)printf
錯誤地截斷 %g
格式化的數字。新的 Configure 探測現在會檢查這一點,結果是 libc sprintf
將用於取代 gcvt
和 qgcvt
。
作為此修復的一部分新增的測試也揭露了 Windows 某些版本中的相關問題。因此,Windows 上 MINGW 版本的 makefile 已調整為預設使用 USE_MINGW_ANSI_STDIO
,確保它們也提供數字的正確 (s)printf
格式化。
op.c:當 use utf8
生效時,對 my $_
進行 croak [GH #18449]
詞彙主題功能實驗已在 Perl v5.24 中移除,宣告 my $_
已成為編譯時期錯誤。但是,如果 use utf8
生效,以前仍然可以進行此宣告。
regexec.c:修復斷言失敗 [GH #18451]
當過多字元複製到緩衝區時,模糊測試會觸發正規表示式引擎中的斷言失敗。
semctl()、msgctl() 和 shmctl() 現在會在 IPC_STAT
或 GETALL
作業中修改 ARG
參數時,正確地重設 UTF-8 標記。
semctl()
、msgctl()
和 shmctl()
現在嘗試降級 ARG
參數,如果其值用作 IPC_SET
或 SETALL
呼叫的輸入。降級失敗將擲回例外。
在 semctl()
、msgctl()
或 shmctl()
將 ARG
參數視為指標的情況下,未定義的值不再產生警告。在大多數此類呼叫中,指標並未用於任何地方,這允許您為底層函數不使用的值提供 undef
。
semop() 現在降級 OPSTRING
參數,msgsnd() 現在降級 MSG
參數,shmwrite 現在降級 STRING
參數,將它們視為位元組。以前它們會保持升級,向底層函數呼叫提供損毀的結構。
msgrcv() 現在在修改 VAR
參數時正確重設 UTF-8 標記。以前 UTF-8 標記可能會保留,導致 VAR
中可能損毀的結果。
現在正確呼叫堆疊檔案測試運算子的魔術。[GH #18293]
@ary = split(...)
最佳化不再將目標陣列切換為值堆疊。[GH #18232] 另請參閱 https://github.com/Perl/perl5/pull/18014#issuecomment-671299506 的討論。
修正了其中一些具有遞迴子模式的正規表示式不正確匹配的錯誤。
在 Win32 上,waitpid(-1, WNOHANG)
有時可能會產生非常大的逾時。[GH #16529]
MARK
和 items
現在已在 BOOT
XSUB 中正確初始化。
無
無
Kent Fredric (KENTNL) 於 2021 年 2 月過世。Kent 是紐西蘭人,自稱「超級怪咖」,他撰寫或維護了 178 個 CPAN 套件,是 Gentoo Linux 套件的 Perl 維護者,並為 Perl 核心套件做出貢獻。他的家人、朋友和全球的開源軟體社群都為他感到哀悼。
Perl 5.34.0 代表自 Perl 5.32.0 以來約 11 個月的開發時間,並包含來自 78 位作者、橫跨 2,100 個檔案的約 280,000 行變更。
排除自動產生的檔案、文件和發行工具,約有 150,000 行變更套用在 1,300 個 .pm、.t、.c 和 .h 檔案中。
Perl 持續在第四個十年蓬勃發展,這要歸功於活躍的使用者和開發人員社群。已知以下人員為 Perl 5.34.0 的改進做出貢獻
Aaron Crane、Adam Hartley、Andy Dougherty、Ben Cornett、Branislav Zahradník、brian d foy、Chris 'BinGOs' Williams、Christian Walde (Mithaldu)、Craig A. Berry、Dagfinn Ilmari Mannsåker、Dan Book、Daniel Böhmer、Daniel Laügt、Dan Kogai、David Cantrell、David Mitchell、Dominic Hamon、E. Choroba、Ed J、Eric Herman、Eugene Alvin Villar、Felipe Gasper、Giovanni Tataranni、Graham Knop、Graham Ollis、Hauke D、H.Merijn Brand、Hugo van der Sanden、Ichinose Shogo、Ivan Baidakou、Jae Bradley、James E Keenan、Jason McIntosh、jkahrman、John Karr、John Lightsey、Kang-min Liu、Karen Etheridge、Karl Williamson、Keith Thompson、Leon Timmermans、Marc Reisner、Marcus Holland-Moritz、Max Maischein、Michael G Schwern、Nicholas Clark、Nicolas R.、Paul Evans、Petr Písař、raiph、Renee Baecker、Ricardo Signes、Richard Leach、Romano、Ryan Voots、Samanta Navarro、Samuel Thibault、Sawyer X、Scott Baker、Sergey Poznyakoff、Sevan Janiyan、Shirakata Kentaro、Shlomi Fish、Sisyphus、Sizhe Zhao、Steve Hay、TAKAI Kousuke、Thibault Duponchelle、Todd Rinaldo、Tomasz Konojacki、Tom Hukins、Tom Stellard、Tony Cook、vividsnow、Yves Orton、Zakariyya Mughal、Михаил Козачков。
以上清單幾乎肯定不完整,因為它是從版本控制記錄自動產生的。特別是,它不包括向 Perl 錯誤追蹤器報告問題的(非常感謝的)貢獻者的姓名。
這個版本中包含的許多變更始於 Perl 核心包含的 CPAN 模組。我們感謝整個 CPAN 社群協助 Perl 蓬勃發展。
如需更完整的 Perl 所有歷史貢獻者清單,請參閱 Perl 原始碼發行中的 AUTHORS 檔案。
如果您發現您認為是錯誤的地方,您可以在 https://github.com/Perl/perl5/issues 檢查 perl 錯誤資料庫。Perl 首頁 http://www.perl.org/ 上也可能會有相關資訊。
如果您認為您有一個未報告的錯誤,請在 https://github.com/Perl/perl5/issues 開啟一個問題。務必將您的錯誤精簡成一個小但足夠的測試案例。
如果您報告的錯誤具有安全性影響,不適合發送到公開問題追蹤器,請參閱 perlsec 中的「安全性漏洞聯絡資訊」,了解如何報告問題的詳細資訊。
如果您希望感謝 Perl 5 Porters 我們在 Perl 5 中所做的工作,您可以透過執行 perlthanks
程式來表達感謝。
perlthanks
這將會傳送一封電子郵件到 Perl 5 Porters 清單,表達您的感謝。
Changes 檔案,說明如何檢視已變更內容的詳盡詳細資料。
INSTALL 檔案,說明如何建置 Perl。
README 檔案,說明一般事項。
Artistic 和 Copying 檔案,說明版權資訊。