1PERL5240DELTA(1) Perl Programmers Reference Guide PERL5240DELTA(1)
2
3
4
6 perl5240delta - what is new for perl v5.24.0
7
9 This document describes the differences between the 5.22.0 release and
10 the 5.24.0 release.
11
13 Postfix dereferencing is no longer experimental
14 Using the "postderef" and "postderef_qq" features no longer emits a
15 warning. Existing code that disables the "experimental::postderef"
16 warning category that they previously used will continue to work. The
17 "postderef" feature has no effect; all Perl code can use postfix
18 dereferencing, regardless of what feature declarations are in scope.
19 The 5.24 feature bundle now includes the "postderef_qq" feature.
20
21 Unicode 8.0 is now supported
22 For details on what is in this release, see
23 <http://www.unicode.org/versions/Unicode8.0.0/>.
24
25 perl will now croak when closing an in-place output file fails
26 Until now, failure to close the output file for an in-place edit was
27 not detected, meaning that the input file could be clobbered without
28 the edit being successfully completed. Now, when the output file
29 cannot be closed successfully, an exception is raised.
30
31 New "\b{lb}" boundary in regular expressions
32 "lb" stands for Line Break. It is a Unicode property that determines
33 where a line of text is suitable to break (typically so that it can be
34 output without overflowing the available horizontal space). This
35 capability has long been furnished by the Unicode::LineBreak module,
36 but now a light-weight, non-customizable version that is suitable for
37 many purposes is in core Perl.
38
39 "qr/(?[ ])/" now works in UTF-8 locales
40 Extended Bracketed Character Classes now will successfully compile when
41 "use locale" is in effect. The compiled pattern will use standard
42 Unicode rules. If the runtime locale is not a UTF-8 one, a warning is
43 raised and standard Unicode rules are used anyway. No tainting is done
44 since the outcome does not actually depend on the locale.
45
46 Integer shift ("<<" and ">>") now more explicitly defined
47 Negative shifts are reverse shifts: left shift becomes right shift, and
48 right shift becomes left shift.
49
50 Shifting by the number of bits in a native integer (or more) is zero,
51 except when the "overshift" is right shifting a negative value under
52 "use integer", in which case the result is -1 (arithmetic shift).
53
54 Until now negative shifting and overshifting have been undefined
55 because they have relied on whatever the C implementation happens to
56 do. For example, for the overshift a common C behavior is "modulo
57 shift":
58
59 1 >> 64 == 1 >> (64 % 64) == 1 >> 0 == 1 # Common C behavior.
60
61 # And the same for <<, while Perl now produces 0 for both.
62
63 Now these behaviors are well-defined under Perl, regardless of what the
64 underlying C implementation does. Note, however, that you are still
65 constrained by the native integer width: you need to know how far left
66 you can go. You can use for example:
67
68 use Config;
69 my $wordbits = $Config{uvsize} * 8; # Or $Config{uvsize} << 3.
70
71 If you need a more bits on the left shift, you can use for example the
72 "bigint" pragma, or the "Bit::Vector" module from CPAN.
73
74 printf and sprintf now allow reordered precision arguments
75 That is, "sprintf '|%.*2$d|', 2, 3" now returns "|002|". This extends
76 the existing reordering mechanism (which allows reordering for
77 arguments that are used as format fields, widths, and vector
78 separators).
79
80 More fields provided to "sigaction" callback with "SA_SIGINFO"
81 When passing the "SA_SIGINFO" flag to sigaction, the "errno", "status",
82 "uid", "pid", "addr" and "band" fields are now included in the hash
83 passed to the handler, if supported by the platform.
84
85 Hashbang redirection to Perl 6
86 Previously perl would redirect to another interpreter if it found a
87 hashbang path unless the path contains "perl" (see perlrun). To improve
88 compatibility with Perl 6 this behavior has been extended to also
89 redirect if "perl" is followed by "6".
90
92 Set proper umask before calling mkstemp(3)
93 In 5.22 perl started setting umask to 0600 before calling mkstemp(3)
94 and restoring it afterwards. This wrongfully tells open(2) to strip the
95 owner read and write bits from the given mode before applying it,
96 rather than the intended negation of leaving only those bits in place.
97
98 Systems that use mode 0666 in mkstemp(3) (like old versions of glibc)
99 create a file with permissions 0066, leaving world read and write
100 permissions regardless of current umask.
101
102 This has been fixed by using umask 0177 instead. [perl #127322]
103
104 Fix out of boundary access in Win32 path handling
105 This is CVE-2015-8608. For more information see [GH #15067]
106 <https://github.com/Perl/perl5/issues/15067>
107
108 Fix loss of taint in canonpath
109 This is CVE-2015-8607. For more information see [GH #15084]
110 <https://github.com/Perl/perl5/issues/15084>
111
112 Avoid accessing uninitialized memory in win32 "crypt()"
113 Added validation that will detect both a short salt and invalid
114 characters in the salt. [GH #15091]
115 <https://github.com/Perl/perl5/issues/15091>
116
117 Remove duplicate environment variables from "environ"
118 Previously, if an environment variable appeared more than once in
119 "environ[]", %ENV would contain the last entry for that name, while a
120 typical "getenv()" would return the first entry. We now make sure %ENV
121 contains the same as what "getenv" returns.
122
123 Second, we remove duplicates from "environ[]", so if a setting with
124 that name is set in %ENV, we won't pass an unsafe value to a child
125 process.
126
127 [CVE-2016-2381]
128
130 The "autoderef" feature has been removed
131 The experimental "autoderef" feature (which allowed calling "push",
132 "pop", "shift", "unshift", "splice", "keys", "values", and "each" on a
133 scalar argument) has been deemed unsuccessful. It has now been removed;
134 trying to use the feature (or to disable the "experimental::autoderef"
135 warning it previously triggered) now yields an exception.
136
137 Lexical $_ has been removed
138 "my $_" was introduced in Perl 5.10, and subsequently caused much
139 confusion with no obvious solution. In Perl 5.18.0, it was made
140 experimental on the theory that it would either be removed or
141 redesigned in a less confusing (but backward-incompatible) way. Over
142 the following years, no alternatives were proposed. The feature has
143 now been removed and will fail to compile.
144
145 "qr/\b{wb}/" is now tailored to Perl expectations
146 This is now more suited to be a drop-in replacement for plain "\b", but
147 giving better results for parsing natural language. Previously it
148 strictly followed the current Unicode rules which calls for it to match
149 between each white space character. Now it doesn't generally match
150 within spans of white space, behaving like "\b" does. See "\b{wb}" in
151 perlrebackslash
152
153 Regular expression compilation errors
154 Some regular expression patterns that had runtime errors now don't
155 compile at all.
156
157 Almost all Unicode properties using the "\p{}" and "\P{}" regular
158 expression pattern constructs are now checked for validity at pattern
159 compilation time, and invalid ones will cause the program to not
160 compile. In earlier releases, this check was often deferred until run
161 time. Whenever an error check is moved from run- to compile time,
162 erroneous code is caught 100% of the time, whereas before it would only
163 get caught if and when the offending portion actually gets executed,
164 which for unreachable code might be never.
165
166 "qr/\N{}/" now disallowed under "use re "strict""
167 An empty "\N{}" makes no sense, but for backwards compatibility is
168 accepted as doing nothing, though a deprecation warning is raised by
169 default. But now this is a fatal error under the experimental feature
170 "'strict' mode" in re.
171
172 Nested declarations are now disallowed
173 A "my", "our", or "state" declaration is no longer allowed inside of
174 another "my", "our", or "state" declaration.
175
176 For example, these are now fatal:
177
178 my ($x, my($y));
179 our (my $x);
180
181 [GH #14799] <https://github.com/Perl/perl5/issues/14799>
182
183 [GH #13548] <https://github.com/Perl/perl5/issues/13548>
184
185 The "/\C/" character class has been removed.
186 This regular expression character class was deprecated in v5.20.0 and
187 has produced a deprecation warning since v5.22.0. It is now a compile-
188 time error. If you need to examine the individual bytes that make up a
189 UTF8-encoded character, then use "utf8::encode()" on the string (or a
190 copy) first.
191
192 "chdir('')" no longer chdirs home
193 Using "chdir('')" or "chdir(undef)" to chdir home has been deprecated
194 since perl v5.8, and will now fail. Use "chdir()" instead.
195
196 ASCII characters in variable names must now be all visible
197 It was legal until now on ASCII platforms for variable names to contain
198 non-graphical ASCII control characters (ordinals 0 through 31, and 127,
199 which are the C0 controls and "DELETE"). This usage has been
200 deprecated since v5.20, and as of now causes a syntax error. The
201 variables these names referred to are special, reserved by Perl for
202 whatever use it may choose, now, or in the future. Each such variable
203 has an alternative way of spelling it. Instead of the single non-
204 graphic control character, a two character sequence beginning with a
205 caret is used, like $^] and "${^GLOBAL_PHASE}". Details are at
206 perlvar. It remains legal, though unwise and deprecated (raising a
207 deprecation warning), to use certain non-graphic non-ASCII characters
208 in variables names when not under "use utf8". No code should do this,
209 as all such variables are reserved by Perl, and Perl doesn't currently
210 define any of them (but could at any time, without notice).
211
212 An off by one issue in $Carp::MaxArgNums has been fixed
213 $Carp::MaxArgNums is supposed to be the number of arguments to display.
214 Prior to this version, it was instead showing $Carp::MaxArgNums + 1
215 arguments, contrary to the documentation.
216
217 Only blanks and tabs are now allowed within "[...]" within "(?[...])".
218 The experimental Extended Bracketed Character Classes can contain
219 regular bracketed character classes within them. These differ from
220 regular ones in that white space is generally ignored, unless escaped
221 by preceding it with a backslash. The white space that is ignored is
222 now limited to just tab "\t" and SPACE characters. Previously, it was
223 any white space. See "Extended Bracketed Character Classes" in
224 perlrecharclass.
225
227 Using code points above the platform's "IV_MAX" is now deprecated
228 Unicode defines code points in the range "0..0x10FFFF". Some standards
229 at one time defined them up to 2**31 - 1, but Perl has allowed them to
230 be as high as anything that will fit in a word on the platform being
231 used. However, use of those above the platform's "IV_MAX" is broken in
232 some constructs, notably "tr///", regular expression patterns involving
233 quantifiers, and in some arithmetic and comparison operations, such as
234 being the upper limit of a loop. Now the use of such code points
235 raises a deprecation warning, unless that warning category is turned
236 off. "IV_MAX" is typically 2**31 -1 on 32-bit platforms, and 2**63-1
237 on 64-bit ones.
238
239 Doing bitwise operations on strings containing code points above 0xFF is
240 deprecated
241 The string bitwise operators treat their operands as strings of bytes,
242 and values beyond 0xFF are nonsensical in this context. To operate on
243 encoded bytes, first encode the strings. To operate on code points'
244 numeric values, use "split" and "map ord". In the future, this warning
245 will be replaced by an exception.
246
247 "sysread()", "syswrite()", "recv()" and "send()" are deprecated on :utf8
248 handles
249 The "sysread()", "recv()", "syswrite()" and "send()" operators are
250 deprecated on handles that have the ":utf8" layer, either explicitly,
251 or implicitly, eg., with the ":encoding(UTF-16LE)" layer.
252
253 Both "sysread()" and "recv()" currently use only the ":utf8" flag for
254 the stream, ignoring the actual layers. Since "sysread()" and "recv()"
255 do no UTF-8 validation they can end up creating invalidly encoded
256 scalars.
257
258 Similarly, "syswrite()" and "send()" use only the ":utf8" flag,
259 otherwise ignoring any layers. If the flag is set, both write the
260 value UTF-8 encoded, even if the layer is some different encoding, such
261 as the example above.
262
263 Ideally, all of these operators would completely ignore the ":utf8"
264 state, working only with bytes, but this would result in silently
265 breaking existing code. To avoid this a future version of perl will
266 throw an exception when any of "sysread()", "recv()", "syswrite()" or
267 "send()" are called on handle with the ":utf8" layer.
268
270 • The overhead of scope entry and exit has been considerably reduced,
271 so for example subroutine calls, loops and basic blocks are all
272 faster now. This empty function call now takes about a third less
273 time to execute:
274
275 sub f{} f();
276
277 • Many languages, such as Chinese, are caseless. Perl now knows
278 about most common ones, and skips much of the work when a program
279 tries to change case in them (like "ucfirst()") or match caselessly
280 ("qr//i"). This will speed up a program, such as a web server,
281 that can operate on multiple languages, while it is operating on a
282 caseless one.
283
284 • "/fixed-substr/" has been made much faster.
285
286 On platforms with a libc "memchr()" implementation which makes good
287 use of underlying hardware support, patterns which include fixed
288 substrings will now often be much faster; for example with glibc on
289 a recent x86_64 CPU, this:
290
291 $s = "a" x 1000 . "wxyz";
292 $s =~ /wxyz/ for 1..30000
293
294 is now about 7 times faster. On systems with slow "memchr()", e.g.
295 32-bit ARM Raspberry Pi, there will be a small or little speedup.
296 Conversely, some pathological cases, such as ""ab" x 1000 =~ /aa/"
297 will be slower now; up to 3 times slower on the rPi, 1.5x slower on
298 x86_64.
299
300 • Faster addition, subtraction and multiplication.
301
302 Since 5.8.0, arithmetic became slower due to the need to support
303 64-bit integers. To deal with 64-bit integers, a lot more corner
304 cases need to be checked, which adds time. We now detect common
305 cases where there is no need to check for those corner cases, and
306 special-case them.
307
308 • Preincrement, predecrement, postincrement, and postdecrement have
309 been made faster by internally splitting the functions which
310 handled multiple cases into different functions.
311
312 • Creating Perl debugger data structures (see "Debugger Internals" in
313 perldebguts) for XSUBs and const subs has been removed. This
314 removed one glob/scalar combo for each unique ".c" file that XSUBs
315 and const subs came from. On startup ("perl -e"0"") about half a
316 dozen glob/scalar debugger combos were created. Loading XS modules
317 created more glob/scalar combos. These things were being created
318 regardless of whether the perl debugger was being used, and despite
319 the fact that it can't debug C code anyway
320
321 • On Win32, "stat"ing or "-X"ing a path, if the file or directory
322 does not exist, is now 3.5x faster than before.
323
324 • Single arguments in list assign are now slightly faster:
325
326 ($x) = (...);
327 (...) = ($x);
328
329 • Less peak memory is now used when compiling regular expression
330 patterns.
331
333 Updated Modules and Pragmata
334 • arybase has been upgraded from version 0.10 to 0.11.
335
336 • Attribute::Handlers has been upgraded from version 0.97 to 0.99.
337
338 • autodie has been upgraded from version 2.26 to 2.29.
339
340 • autouse has been upgraded from version 1.08 to 1.11.
341
342 • B has been upgraded from version 1.58 to 1.62.
343
344 • B::Deparse has been upgraded from version 1.35 to 1.37.
345
346 • base has been upgraded from version 2.22 to 2.23.
347
348 • Benchmark has been upgraded from version 1.2 to 1.22.
349
350 • bignum has been upgraded from version 0.39 to 0.42.
351
352 • bytes has been upgraded from version 1.04 to 1.05.
353
354 • Carp has been upgraded from version 1.36 to 1.40.
355
356 • Compress::Raw::Bzip2 has been upgraded from version 2.068 to 2.069.
357
358 • Compress::Raw::Zlib has been upgraded from version 2.068 to 2.069.
359
360 • Config::Perl::V has been upgraded from version 0.24 to 0.25.
361
362 • CPAN::Meta has been upgraded from version 2.150001 to 2.150005.
363
364 • CPAN::Meta::Requirements has been upgraded from version 2.132 to
365 2.140.
366
367 • CPAN::Meta::YAML has been upgraded from version 0.012 to 0.018.
368
369 • Data::Dumper has been upgraded from version 2.158 to 2.160.
370
371 • Devel::Peek has been upgraded from version 1.22 to 1.23.
372
373 • Devel::PPPort has been upgraded from version 3.31 to 3.32.
374
375 • Dumpvalue has been upgraded from version 1.17 to 1.18.
376
377 • DynaLoader has been upgraded from version 1.32 to 1.38.
378
379 • Encode has been upgraded from version 2.72 to 2.80.
380
381 • encoding has been upgraded from version 2.14 to 2.17.
382
383 • encoding::warnings has been upgraded from version 0.11 to 0.12.
384
385 • English has been upgraded from version 1.09 to 1.10.
386
387 • Errno has been upgraded from version 1.23 to 1.25.
388
389 • experimental has been upgraded from version 0.013 to 0.016.
390
391 • ExtUtils::CBuilder has been upgraded from version 0.280221 to
392 0.280225.
393
394 • ExtUtils::Embed has been upgraded from version 1.32 to 1.33.
395
396 • ExtUtils::MakeMaker has been upgraded from version 7.04_01 to
397 7.10_01.
398
399 • ExtUtils::ParseXS has been upgraded from version 3.28 to 3.31.
400
401 • ExtUtils::Typemaps has been upgraded from version 3.28 to 3.31.
402
403 • feature has been upgraded from version 1.40 to 1.42.
404
405 • fields has been upgraded from version 2.17 to 2.23.
406
407 • File::Find has been upgraded from version 1.29 to 1.34.
408
409 • File::Glob has been upgraded from version 1.24 to 1.26.
410
411 • File::Path has been upgraded from version 2.09 to 2.12_01.
412
413 • File::Spec has been upgraded from version 3.56 to 3.63.
414
415 • Filter::Util::Call has been upgraded from version 1.54 to 1.55.
416
417 • Getopt::Long has been upgraded from version 2.45 to 2.48.
418
419 • Hash::Util has been upgraded from version 0.18 to 0.19.
420
421 • Hash::Util::FieldHash has been upgraded from version 1.15 to 1.19.
422
423 • HTTP::Tiny has been upgraded from version 0.054 to 0.056.
424
425 • I18N::Langinfo has been upgraded from version 0.12 to 0.13.
426
427 • if has been upgraded from version 0.0604 to 0.0606.
428
429 • IO has been upgraded from version 1.35 to 1.36.
430
431 • IO-Compress has been upgraded from version 2.068 to 2.069.
432
433 • IPC::Open3 has been upgraded from version 1.18 to 1.20.
434
435 • IPC::SysV has been upgraded from version 2.04 to 2.06_01.
436
437 • List::Util has been upgraded from version 1.41 to 1.42_02.
438
439 • locale has been upgraded from version 1.06 to 1.08.
440
441 • Locale::Codes has been upgraded from version 3.34 to 3.37.
442
443 • Math::BigInt has been upgraded from version 1.9997 to 1.999715.
444
445 • Math::BigInt::FastCalc has been upgraded from version 0.31 to 0.40.
446
447 • Math::BigRat has been upgraded from version 0.2608 to 0.260802.
448
449 • Module::CoreList has been upgraded from version 5.20150520 to
450 5.20160320.
451
452 • Module::Metadata has been upgraded from version 1.000026 to
453 1.000031.
454
455 • mro has been upgraded from version 1.17 to 1.18.
456
457 • ODBM_File has been upgraded from version 1.12 to 1.14.
458
459 • Opcode has been upgraded from version 1.32 to 1.34.
460
461 • parent has been upgraded from version 0.232 to 0.234.
462
463 • Parse::CPAN::Meta has been upgraded from version 1.4414 to 1.4417.
464
465 • Perl::OSType has been upgraded from version 1.008 to 1.009.
466
467 • perlfaq has been upgraded from version 5.021009 to 5.021010.
468
469 • PerlIO::encoding has been upgraded from version 0.21 to 0.24.
470
471 • PerlIO::mmap has been upgraded from version 0.014 to 0.016.
472
473 • PerlIO::scalar has been upgraded from version 0.22 to 0.24.
474
475 • PerlIO::via has been upgraded from version 0.15 to 0.16.
476
477 • Pod::Functions has been upgraded from version 1.09 to 1.10.
478
479 • Pod::Perldoc has been upgraded from version 3.25 to 3.25_02.
480
481 • Pod::Simple has been upgraded from version 3.29 to 3.32.
482
483 • Pod::Usage has been upgraded from version 1.64 to 1.68.
484
485 • POSIX has been upgraded from version 1.53 to 1.65.
486
487 • Scalar::Util has been upgraded from version 1.41 to 1.42_02.
488
489 • SDBM_File has been upgraded from version 1.13 to 1.14.
490
491 • SelfLoader has been upgraded from version 1.22 to 1.23.
492
493 • Socket has been upgraded from version 2.018 to 2.020_03.
494
495 • Storable has been upgraded from version 2.53 to 2.56.
496
497 • strict has been upgraded from version 1.09 to 1.11.
498
499 • Term::ANSIColor has been upgraded from version 4.03 to 4.04.
500
501 • Term::Cap has been upgraded from version 1.15 to 1.17.
502
503 • Test has been upgraded from version 1.26 to 1.28.
504
505 • Test::Harness has been upgraded from version 3.35 to 3.36.
506
507 • Thread::Queue has been upgraded from version 3.05 to 3.08.
508
509 • threads has been upgraded from version 2.01 to 2.06.
510
511 • threads::shared has been upgraded from version 1.48 to 1.50.
512
513 • Tie::File has been upgraded from version 1.01 to 1.02.
514
515 • Tie::Scalar has been upgraded from version 1.03 to 1.04.
516
517 • Time::HiRes has been upgraded from version 1.9726 to 1.9732.
518
519 • Time::Piece has been upgraded from version 1.29 to 1.31.
520
521 • Unicode::Collate has been upgraded from version 1.12 to 1.14.
522
523 • Unicode::Normalize has been upgraded from version 1.18 to 1.25.
524
525 • Unicode::UCD has been upgraded from version 0.61 to 0.64.
526
527 • UNIVERSAL has been upgraded from version 1.12 to 1.13.
528
529 • utf8 has been upgraded from version 1.17 to 1.19.
530
531 • version has been upgraded from version 0.9909 to 0.9916.
532
533 • warnings has been upgraded from version 1.32 to 1.36.
534
535 • Win32 has been upgraded from version 0.51 to 0.52.
536
537 • Win32API::File has been upgraded from version 0.1202 to 0.1203.
538
539 • XS::Typemap has been upgraded from version 0.13 to 0.14.
540
541 • XSLoader has been upgraded from version 0.20 to 0.21.
542
544 Changes to Existing Documentation
545 perlapi
546
547 • The process of using undocumented globals has been documented,
548 namely, that one should send email to perl5-porters@perl.org
549 <mailto:perl5-porters@perl.org> first to get the go-ahead for
550 documenting and using an undocumented function or global variable.
551
552 perlcall
553
554 • A number of cleanups have been made to perlcall, including:
555
556 • use "EXTEND(SP, n)" and "PUSHs()" instead of "XPUSHs()" where
557 applicable and update prose to match
558
559 • add POPu, POPul and POPpbytex to the "complete list of POP
560 macros" and clarify the documentation for some of the existing
561 entries, and a note about side-effects
562
563 • add API documentation for POPu and POPul
564
565 • use ERRSV more efficiently
566
567 • approaches to thread-safety storage of SVs.
568
569 perlfunc
570
571 • The documentation of "hex" has been revised to clarify valid
572 inputs.
573
574 • Better explain meaning of negative PIDs in "waitpid". [GH #15108]
575 <https://github.com/Perl/perl5/issues/15108>
576
577 • General cleanup: there's more consistency now (in POD usage,
578 grammar, code examples), better practices in code examples (use of
579 "my", removal of bareword filehandles, dropped usage of "&" when
580 calling subroutines, ...), etc.
581
582 perlguts
583
584 • A new section has been added, "Dynamic Scope and the Context Stack"
585 in perlguts, which explains how the perl context stack works.
586
587 perllocale
588
589 • A stronger caution about using locales in threaded applications is
590 given. Locales are not thread-safe, and you can get wrong results
591 or even segfaults if you use them there.
592
593 perlmodlib
594
595 • We now recommend contacting the module-authors list or PAUSE in
596 seeking guidance on the naming of modules.
597
598 perlop
599
600 • The documentation of "qx//" now describes how $? is affected.
601
602 perlpolicy
603
604 • This note has been added to perlpolicy:
605
606 While civility is required, kindness is encouraged; if you have any
607 doubt about whether you are being civil, simply ask yourself, "Am I
608 being kind?" and aspire to that.
609
610 perlreftut
611
612 • Fix some examples to be strict clean.
613
614 perlrebackslash
615
616 • Clarify that in languages like Japanese and Thai, dictionary lookup
617 is required to determine word boundaries.
618
619 perlsub
620
621 • Updated to note that anonymous subroutines can have signatures.
622
623 perlsyn
624
625 • Fixed a broken example where "=" was used instead of "==" in
626 conditional in do/while example.
627
628 perltie
629
630 • The usage of "FIRSTKEY" and "NEXTKEY" has been clarified.
631
632 perlunicode
633
634 • Discourage use of 'In' as a prefix signifying the Unicode Block
635 property.
636
637 perlvar
638
639 • The documentation of $@ was reworded to clarify that it is not just
640 for syntax errors in "eval". [GH #14572]
641 <https://github.com/Perl/perl5/issues/14572>
642
643 • The specific true value of $!{E...} is now documented, noting that
644 it is subject to change and not guaranteed.
645
646 • Use of $OLD_PERL_VERSION is now discouraged.
647
648 perlxs
649
650 • The documentation of "PROTOTYPES" has been corrected; they are
651 disabled by default, not enabled.
652
654 The following additions or changes have been made to diagnostic output,
655 including warnings and fatal error messages. For the complete list of
656 diagnostic messages, see perldiag.
657
658 New Diagnostics
659 New Errors
660
661 • %s must not be a named sequence in transliteration operator
662
663 • Can't find Unicode property definition "%s" in regex;
664
665 • Can't redeclare "%s" in "%s"
666
667 • Character following \p must be '{' or a single-character Unicode
668 property name in regex;
669
670 • Empty \%c in regex; marked by <-- HERE in m/%s/
671
672 • Illegal user-defined property name
673
674 • Invalid number '%s' for -C option.
675
676 • Sequence (?... not terminated in regex; marked by <-- HERE in m/%s/
677
678 • Sequence (?P<... not terminated in regex; marked by <-- HERE in
679 m/%s/
680
681 • Sequence (?P>... not terminated in regex; marked by <-- HERE in
682 m/%s/
683
684 New Warnings
685
686 • Assuming NOT a POSIX class since %s in regex; marked by <-- HERE in
687 m/%s/
688
689 • %s() is deprecated on :utf8 handles
690
691 Changes to Existing Diagnostics
692 • Accessing the "IO" part of a glob as "FILEHANDLE" instead of "IO"
693 is no longer deprecated. It is discouraged to encourage uniformity
694 (so that, for example, one can grep more easily) but it will not be
695 removed. [GH #15105] <https://github.com/Perl/perl5/issues/15105>
696
697 • The diagnostic "Hexadecimal float: internal error" has been changed
698 to "Hexadecimal float: internal error (%s)" to include more
699 information.
700
701 • Can't modify non-lvalue subroutine call of &%s
702
703 This error now reports the name of the non-lvalue subroutine you
704 attempted to use as an lvalue.
705
706 • When running out of memory during an attempt the increase the stack
707 size, previously, perl would die using the cryptic message "panic:
708 av_extend_guts() negative count (-9223372036854775681)". This has
709 been fixed to show the prettier message: Out of memory during stack
710 extend
711
713 • "Configure" now acts as if the "-O" option is always passed,
714 allowing command line options to override saved configuration.
715 This should eliminate confusion when command line options are
716 ignored for no obvious reason. "-O" is now permitted, but ignored.
717
718 • Bison 3.0 is now supported.
719
720 • Configure no longer probes for libnm by default. Originally this
721 was the "New Math" library, but the name has been re-used by the
722 GNOME NetworkManager. [GH #15115]
723 <https://github.com/Perl/perl5/issues/15115>
724
725 • Added Configure probes for "newlocale", "freelocale", and
726 "uselocale".
727
728 • "PPPort.so/PPPort.dll" no longer get installed, as they are not
729 used by "PPPort.pm", only by its test files.
730
731 • It is now possible to specify which compilation date to show on
732 "perl -V" output, by setting the macro "PERL_BUILD_DATE".
733
734 • Using the "NO_HASH_SEED" define in combination with the default
735 hash algorithm "PERL_HASH_FUNC_ONE_AT_A_TIME_HARD" resulted in a
736 fatal error while compiling the interpreter, since Perl 5.17.10.
737 This has been fixed.
738
739 • Configure should handle spaces in paths a little better.
740
741 • No longer generate EBCDIC POSIX-BC tables. We don't believe anyone
742 is using Perl and POSIX-BC at this time, and by not generating
743 these tables it saves time during development, and makes the
744 resulting tar ball smaller.
745
746 • The GNU Make makefile for Win32 now supports parallel builds.
747 [perl #126632]
748
749 • You can now build perl with MSVC++ on Win32 using GNU Make. [perl
750 #126632]
751
752 • The Win32 miniperl now has a real "getcwd" which increases build
753 performance resulting in "getcwd()" being 605x faster in Win32
754 miniperl.
755
756 • Configure now takes "-Dusequadmath" into account when calculating
757 the "alignbytes" configuration variable. Previously the mis-
758 calculated "alignbytes" could cause alignment errors on debugging
759 builds. [perl #127894]
760
762 • A new test (t/op/aassign.t) has been added to test the list
763 assignment operator "OP_AASSIGN".
764
765 • Parallel building has been added to the dmake "makefile.mk"
766 makefile. All Win32 compilers are supported.
767
769 Platform-Specific Notes
770 AmigaOS
771 • The AmigaOS port has been reintegrated into the main tree,
772 based off of Perl 5.22.1.
773
774 Cygwin
775 • Tests are more robust against unusual cygdrive prefixes. [GH
776 #15076] <https://github.com/Perl/perl5/issues/15076>
777
778 EBCDIC
779 UTF-EBCDIC extended
780 UTF-EBCDIC is like UTF-8, but for EBCDIC platforms. It now has
781 been extended so that it can represent code points up to 2 **
782 64 - 1 on platforms with 64-bit words. This brings it into
783 parity with UTF-8. This enhancement requires an incompatible
784 change to the representation of code points in the range 2 **
785 30 to 2 ** 31 -1 (the latter was the previous maximum
786 representable code point). This means that a file that
787 contains one of these code points, written out with previous
788 versions of perl cannot be read in, without conversion, by a
789 perl containing this change. We do not believe any such files
790 are in existence, but if you do have one, submit a ticket at
791 perlbug@perl.org <mailto:perlbug@perl.org>, and we will write a
792 conversion script for you.
793
794 EBCDIC "cmp()" and "sort()" fixed for UTF-EBCDIC strings
795 Comparing two strings that were both encoded in UTF-8 (or more
796 precisely, UTF-EBCDIC) did not work properly until now. Since
797 "sort()" uses "cmp()", this fixes that as well.
798
799 EBCDIC "tr///" and "y///" fixed for "\N{}", and "use utf8" ranges
800 Perl v5.22 introduced the concept of portable ranges to regular
801 expression patterns. A portable range matches the same set of
802 characters no matter what platform is being run on. This
803 concept is now extended to "tr///". See "tr///".
804
805 There were also some problems with these operations under
806 "use utf8", which are now fixed
807
808 FreeBSD
809 • Use the "fdclose()" function from FreeBSD if it is available.
810 [GH #15082] <https://github.com/Perl/perl5/issues/15082>
811
812 IRIX
813 • Under some circumstances IRIX stdio "fgetc()" and "fread()" set
814 the errno to "ENOENT", which made no sense according to either
815 IRIX or POSIX docs. Errno is now cleared in such cases. [GH
816 #14557] <https://github.com/Perl/perl5/issues/14557>
817
818 • Problems when multiplying long doubles by infinity have been
819 fixed. [GH #14993]
820 <https://github.com/Perl/perl5/issues/14993>
821
822 MacOS X
823 • Until now OS X builds of perl have specified a link target of
824 10.3 (Panther, 2003) but have not specified a compiler target.
825 From now on, builds of perl on OS X 10.6 or later (Snow
826 Leopard, 2008) by default capture the current OS X version and
827 specify that as the explicit build target in both compiler and
828 linker flags, thus preserving binary compatibility for
829 extensions built later regardless of changes in OS X, SDK, or
830 compiler and linker versions. To override the default value
831 used in the build and preserved in the flags, specify "export
832 MACOSX_DEPLOYMENT_TARGET=10.N" before configuring and building
833 perl, where 10.N is the version of OS X you wish to target. In
834 OS X 10.5 or earlier there is no change to the behavior present
835 when those systems were current; the link target is still OS X
836 10.3 and there is no explicit compiler target.
837
838 • Builds with both -DDEBUGGING and threading enabled would fail
839 with a "panic: free from wrong pool" error when built or tested
840 from Terminal on OS X. This was caused by perl's internal
841 management of the environment conflicting with an atfork
842 handler using the libc "setenv()" function to update the
843 environment.
844
845 Perl now uses "setenv()"/"unsetenv()" to update the environment
846 on OS X. [GH #14955]
847 <https://github.com/Perl/perl5/issues/14955>
848
849 Solaris
850 • All Solaris variants now build a shared libperl
851
852 Solaris and variants like OpenIndiana now always build with the
853 shared Perl library (Configure -Duseshrplib). This was
854 required for the OpenIndiana builds, but this has also been the
855 setting for Oracle/Sun Perl builds for several years.
856
857 Tru64
858 • Workaround where Tru64 balks when prototypes are listed as
859 "PERL_STATIC_INLINE", but where the test is build with
860 "-DPERL_NO_INLINE_FUNCTIONS".
861
862 VMS
863 • On VMS, the math function prototypes in "math.h" are now
864 visible under C++. Now building the POSIX extension with C++
865 will no longer crash.
866
867 • VMS has had "setenv"/"unsetenv" since v7.0 (released in 1996),
868 "Perl_vmssetenv" now always uses "setenv"/"unsetenv".
869
870 • Perl now implements its own "killpg" by scanning for processes
871 in the specified process group, which may not mean exactly the
872 same thing as a Unix process group, but allows us to send a
873 signal to a parent (or master) process and all of its sub-
874 processes. At the perl level, this means we can now send a
875 negative pid like so:
876
877 kill SIGKILL, -$pid;
878
879 to signal all processes in the same group as $pid.
880
881 • For those %ENV elements based on the CRTL environ array, we've
882 always preserved case when setting them but did look-ups only
883 after upcasing the key first, which made lower- or mixed-case
884 entries go missing. This problem has been corrected by making
885 %ENV elements derived from the environ array case-sensitive on
886 look-up as well as case-preserving on store.
887
888 • Environment look-ups for "PERL5LIB" and "PERLLIB" previously
889 only considered logical names, but now consider all sources of
890 %ENV as determined by "PERL_ENV_TABLES" and as documented in
891 "%ENV" in perlvms.
892
893 • The minimum supported version of VMS is now v7.3-2, released in
894 2003. As a side effect of this change, VAX is no longer
895 supported as the terminal release of OpenVMS VAX was v7.3 in
896 2001.
897
898 Win32
899 • A new build option "USE_NO_REGISTRY" has been added to the
900 makefiles. This option is off by default, meaning the default
901 is to do Windows registry lookups. This option stops Perl from
902 looking inside the registry for anything. For what values are
903 looked up in the registry see perlwin32. Internally, in C, the
904 name of this option is "WIN32_NO_REGISTRY".
905
906 • The behavior of Perl using "HKEY_CURRENT_USER\Software\Perl"
907 and "HKEY_LOCAL_MACHINE\Software\Perl" to lookup certain
908 values, including %ENV vars starting with "PERL" has changed.
909 Previously, the 2 keys were checked for entries at all times
910 through the perl process's life time even if they did not
911 exist. For performance reasons, now, if the root key (i.e.
912 "HKEY_CURRENT_USER\Software\Perl" or
913 "HKEY_LOCAL_MACHINE\Software\Perl") does not exist at process
914 start time, it will not be checked again for %ENV override
915 entries for the remainder of the perl process's life. This
916 more closely matches Unix behavior in that the environment is
917 copied or inherited on startup and changing the variable in the
918 parent process or another process or editing .bashrc will not
919 change the environmental variable in other existing, running,
920 processes.
921
922 • One glob fetch was removed for each "-X" or "stat" call whether
923 done from Perl code or internally from Perl's C code. The glob
924 being looked up was "${^WIN32_SLOPPY_STAT}" which is a special
925 variable. This makes "-X" and "stat" slightly faster.
926
927 • During miniperl's process startup, during the build process, 4
928 to 8 IO calls related to the process starting .pl and the
929 buildcustomize.pl file were removed from the code opening and
930 executing the first 1 or 2 .pl files.
931
932 • Builds using Microsoft Visual C++ 2003 and earlier no longer
933 produce an "INTERNAL COMPILER ERROR" message. [perl #126045]
934
935 • Visual C++ 2013 builds will now execute on XP and higher.
936 Previously they would only execute on Vista and higher.
937
938 • You can now build perl with GNU Make and GCC. [perl #123440]
939
940 • "truncate($filename, $size)" now works for files over 4GB in
941 size. [perl #125347]
942
943 • Parallel building has been added to the dmake "makefile.mk"
944 makefile. All Win32 compilers are supported.
945
946 • Building a 64-bit perl with a 64-bit GCC but a 32-bit gmake
947 would result in an invalid $Config{archname} for the resulting
948 perl. [perl #127584]
949
950 • Errors set by Winsock functions are now put directly into $^E,
951 and the relevant "WSAE*" error codes are now exported from the
952 Errno and POSIX modules for testing this against.
953
954 The previous behavior of putting the errors (converted to
955 POSIX-style "E*" error codes since Perl 5.20.0) into $! was
956 buggy due to the non-equivalence of like-named Winsock and
957 POSIX error constants, a relationship between which has
958 unfortunately been established in one way or another since Perl
959 5.8.0.
960
961 The new behavior provides a much more robust solution for
962 checking Winsock errors in portable software without
963 accidentally matching POSIX tests that were intended for other
964 OSes and may have different meanings for Winsock.
965
966 The old behavior is currently retained, warts and all, for
967 backwards compatibility, but users are encouraged to change any
968 code that tests $! against "E*" constants for Winsock errors
969 to instead test $^E against "WSAE*" constants. After a
970 suitable deprecation period, the old behavior may be removed,
971 leaving $! unchanged after Winsock function calls, to avoid any
972 possible confusion over which error variable to check.
973
974 ppc64el
975 floating point
976 The floating point format of ppc64el (Debian naming for little-
977 endian PowerPC) is now detected correctly.
978
980 • The implementation of perl's context stack system, and its internal
981 API, have been heavily reworked. Note that no significant changes
982 have been made to any external APIs, but XS code which relies on
983 such internal details may need to be fixed. The main changes are:
984
985 • The "PUSHBLOCK()", "POPSUB()" etc. macros have been replaced
986 with static inline functions such as "cx_pushblock()",
987 "cx_popsub()" etc. These use function args rather than
988 implicitly relying on local vars such as "gimme" and "newsp"
989 being available. Also their functionality has changed: in
990 particular, "cx_popblock()" no longer decrements "cxstack_ix".
991 The ordering of the steps in the "pp_leave*" functions
992 involving "cx_popblock()", "cx_popsub()" etc. has changed. See
993 the new documentation, "Dynamic Scope and the Context Stack" in
994 perlguts, for details on how to use them.
995
996 • Various macros, which now consistently have a CX_ prefix, have
997 been added:
998
999 CX_CUR(), CX_LEAVE_SCOPE(), CX_POP()
1000
1001 or renamed:
1002
1003 CX_POP_SAVEARRAY(), CX_DEBUG(), CX_PUSHSUBST(), CX_POPSUBST()
1004
1005 • "cx_pushblock()" now saves "PL_savestack_ix" and
1006 "PL_tmps_floor", so "pp_enter*" and "pp_leave*" no longer do
1007
1008 ENTER; SAVETMPS; ....; LEAVE
1009
1010 • "cx_popblock()" now also restores "PL_curpm".
1011
1012 • In "dounwind()" for every context type, the current savestack
1013 frame is now processed before each context is popped; formerly
1014 this was only done for sub-like context frames. This action has
1015 been removed from "cx_popsub()" and placed into its own macro,
1016 "CX_LEAVE_SCOPE(cx)", which must be called before "cx_popsub()"
1017 etc.
1018
1019 "dounwind()" now also does a "cx_popblock()" on the last popped
1020 frame (formerly it only did the "cx_popsub()" etc. actions on
1021 each frame).
1022
1023 • The temps stack is now freed on scope exit; previously, temps
1024 created during the last statement of a block wouldn't be freed
1025 until the next "nextstate" following the block (apart from an
1026 existing hack that did this for recursive subs in scalar
1027 context); and in something like "f(g())", the temps created by
1028 the last statement in "g()" would formerly not be freed until
1029 the statement following the return from "f()".
1030
1031 • Most values that were saved on the savestack on scope entry are
1032 now saved in suitable new fields in the context struct, and
1033 saved and restored directly by "cx_pushfoo()" and
1034 "cx_popfoo()", which is much faster.
1035
1036 • Various context struct fields have been added, removed or
1037 modified.
1038
1039 • The handling of @_ in "cx_pushsub()" and "cx_popsub()" has been
1040 considerably tidied up, including removing the "argarray" field
1041 from the context struct, and extracting out some common (but
1042 rarely used) code into a separate function, "clear_defarray()".
1043 Also, useful subsets of "cx_popsub()" which had been unrolled
1044 in places like "pp_goto" have been gathered into the new
1045 functions "cx_popsub_args()" and "cx_popsub_common()".
1046
1047 • "pp_leavesub" and "pp_leavesublv" now use the same function as
1048 the rest of the "pp_leave*"'s to process return args.
1049
1050 • "CXp_FOR_PAD" and "CXp_FOR_GV" flags have been added, and
1051 "CXt_LOOP_FOR" has been split into "CXt_LOOP_LIST",
1052 "CXt_LOOP_ARY".
1053
1054 • Some variables formerly declared by "dMULTICALL" (but not
1055 documented) have been removed.
1056
1057 • The obscure "PL_timesbuf" variable, effectively a vestige of Perl
1058 1, has been removed. It was documented as deprecated in Perl 5.20,
1059 with a statement that it would be removed early in the 5.21.x
1060 series; that has now finally happened. [GH #13632]
1061 <https://github.com/Perl/perl5/issues/13632>
1062
1063 • An unwarranted assertion in "Perl_newATTRSUB_x()" has been removed.
1064 If a stub subroutine definition with a prototype has been seen,
1065 then any subsequent stub (or definition) of the same subroutine
1066 with an attribute was causing an assertion failure because of a
1067 null pointer. [GH #15081]
1068 <https://github.com/Perl/perl5/issues/15081>
1069
1070 • "::" has been replaced by "__" in "ExtUtils::ParseXS", like it's
1071 done for parameters/return values. This is more consistent, and
1072 simplifies writing XS code wrapping C++ classes into a nested Perl
1073 namespace (it requires only a typedef for "Foo__Bar" rather than
1074 two, one for "Foo_Bar" and the other for "Foo::Bar").
1075
1076 • The "to_utf8_case()" function is now deprecated. Instead use
1077 "toUPPER_utf8", "toTITLE_utf8", "toLOWER_utf8", and "toFOLD_utf8".
1078 (See <http://nntp.perl.org/group/perl.perl5.porters/233287>.)
1079
1080 • Perl core code and the threads extension have been annotated so
1081 that, if Perl is configured to use threads, then during compile-
1082 time clang (3.6 or later) will warn about suspicious uses of
1083 mutexes. See
1084 <http://clang.llvm.org/docs/ThreadSafetyAnalysis.html> for more
1085 information.
1086
1087 • The "signbit()" emulation has been enhanced. This will help older
1088 and/or more exotic platforms or configurations.
1089
1090 • Most EBCDIC-specific code in the core has been unified with non-
1091 EBCDIC code, to avoid repetition and make maintenance easier.
1092
1093 • MSWin32 code for $^X has been moved out of the win32 directory to
1094 caretx.c, where other operating systems set that variable.
1095
1096 • "sv_ref()" is now part of the API.
1097
1098 • "sv_backoff" in perlapi had its return type changed from "int" to
1099 "void". It previously has always returned 0 since Perl 5.000
1100 stable but that was undocumented. Although "sv_backoff" is marked
1101 as public API, XS code is not expected to be impacted since the
1102 proper API call would be through public API "sv_setsv(sv,
1103 &PL_sv_undef)", or quasi-public "SvOOK_off", or non-public
1104 "SvOK_off" calls, and the return value of "sv_backoff" was
1105 previously a meaningless constant that can be rewritten as
1106 "(sv_backoff(sv),0)".
1107
1108 • The "EXTEND" and "MEXTEND" macros have been improved to avoid
1109 various issues with integer truncation and wrapping. In
1110 particular, some casts formerly used within the macros have been
1111 removed. This means for example that passing an unsigned "nitems"
1112 argument is likely to raise a compiler warning now (it's always
1113 been documented to require a signed value; formerly int, lately
1114 SSize_t).
1115
1116 • "PL_sawalias" and "GPf_ALIASED_SV" have been removed.
1117
1118 • "GvASSIGN_GENERATION" and "GvASSIGN_GENERATION_set" have been
1119 removed.
1120
1122 • It now works properly to specify a user-defined property, such as
1123
1124 qr/\p{mypkg1::IsMyProperty}/i
1125
1126 with "/i" caseless matching, an explicit package name, and
1127 IsMyProperty not defined at the time of the pattern compilation.
1128
1129 • Perl's "memcpy()", "memmove()", "memset()" and "memcmp()" fallbacks
1130 are now more compatible with the originals. [perl #127619]
1131
1132 • Fixed the issue where a "s///r") with -DPERL_NO_COW attempts to
1133 modify the source SV, resulting in the program dying. [perl
1134 #127635]
1135
1136 • Fixed an EBCDIC-platform-only case where a pattern could fail to
1137 match. This occurred when matching characters from the set of C1
1138 controls when the target matched string was in UTF-8.
1139
1140 • Narrow the filename check in strict.pm and warnings.pm. Previously,
1141 it assumed that if the filename (without the .pmc? extension)
1142 differed from the package name, if was a misspelled use statement
1143 (i.e. "use Strict" instead of "use strict"). We now check whether
1144 there's really a miscapitalization happening, and not some other
1145 issue.
1146
1147 • Turn an assertion into a more user friendly failure when parsing
1148 regexes. [perl #127599]
1149
1150 • Correctly raise an error when trying to compile patterns with
1151 unterminated character classes while there are trailing
1152 backslashes. [perl #126141].
1153
1154 • Line numbers larger than 2**31-1 but less than 2**32 are no longer
1155 returned by "caller()" as negative numbers. [perl #126991]
1156
1157 • "unless ( assignment )" now properly warns when syntax warnings are
1158 enabled. [perl #127122]
1159
1160 • Setting an "ISA" glob to an array reference now properly adds
1161 "isaelem" magic to any existing elements. Previously modifying
1162 such an element would not update the ISA cache, so method calls
1163 would call the wrong function. Perl would also crash if the "ISA"
1164 glob was destroyed, since new code added in 5.23.7 would try to
1165 release the "isaelem" magic from the elements. [perl #127351]
1166
1167 • If a here-doc was found while parsing another operator, the parser
1168 had already read end of file, and the here-doc was not terminated,
1169 perl could produce an assertion or a segmentation fault. This now
1170 reliably complains about the unterminated here-doc. [perl #125540]
1171
1172 • "untie()" would sometimes return the last value returned by the
1173 "UNTIE()" handler as well as its normal value, messing up the
1174 stack. [perl #126621]
1175
1176 • Fixed an operator precedence problem when " castflags & 2" is true.
1177 [perl #127474]
1178
1179 • Caching of DESTROY methods could result in a non-pointer or a non-
1180 STASH stored in the "SvSTASH()" slot of a stash, breaking the B
1181 "STASH()" method. The DESTROY method is now cached in the MRO
1182 metadata for the stash. [perl #126410]
1183
1184 • The AUTOLOAD method is now called when searching for a DESTROY
1185 method, and correctly sets $AUTOLOAD too. [perl #124387] [perl
1186 #127494]
1187
1188 • Avoid parsing beyond the end of the buffer when processing a
1189 "#line" directive with no filename. [perl #127334]
1190
1191 • Perl now raises a warning when a regular expression pattern looks
1192 like it was supposed to contain a POSIX class, like
1193 "qr/[[:alpha:]]/", but there was some slight defect in its
1194 specification which causes it to instead be treated as a regular
1195 bracketed character class. An example would be missing the second
1196 colon in the above like this: "qr/[[:alpha]]/". This compiles to
1197 match a sequence of two characters. The second is "]", and the
1198 first is any of: "[", ":", "a", "h", "l", or "p". This is
1199 unlikely to be the intended meaning, and now a warning is raised.
1200 No warning is raised unless the specification is very close to one
1201 of the 14 legal POSIX classes. (See "POSIX Character Classes" in
1202 perlrecharclass.) [perl #8904]
1203
1204 • Certain regex patterns involving a complemented POSIX class in an
1205 inverted bracketed character class, and matching something else
1206 optionally would improperly fail to match. An example of one that
1207 could fail is "qr/_?[^\Wbar]\x{100}/". This has been fixed. [perl
1208 #127537]
1209
1210 • Perl 5.22 added support to the C99 hexadecimal floating point
1211 notation, but sometimes misparses hex floats. This has been fixed.
1212 [perl #127183]
1213
1214 • A regression that allowed undeclared barewords in hash keys to work
1215 despite strictures has been fixed. [GH #15099]
1216 <https://github.com/Perl/perl5/issues/15099>
1217
1218 • Calls to the placeholder &PL_sv_yes used internally when an
1219 "import()" or "unimport()" method isn't found now correctly handle
1220 scalar context. [GH #14902]
1221 <https://github.com/Perl/perl5/issues/14902>
1222
1223 • Report more context when we see an array where we expect to see an
1224 operator and avoid an assertion failure. [GH #14472]
1225 <https://github.com/Perl/perl5/issues/14472>
1226
1227 • Modifying an array that was previously a package @ISA no longer
1228 causes assertion failures or crashes. [GH #14492]
1229 <https://github.com/Perl/perl5/issues/14492>
1230
1231 • Retain binary compatibility across plain and DEBUGGING perl builds.
1232 [GH #15122] <https://github.com/Perl/perl5/issues/15122>
1233
1234 • Avoid leaking memory when setting $ENV{foo} on darwin. [GH #14955]
1235 <https://github.com/Perl/perl5/issues/14955>
1236
1237 • "/...\G/" no longer crashes on utf8 strings. When "\G" is a fixed
1238 number of characters from the start of the regex, perl needs to
1239 count back that many characters from the current "pos()" position
1240 and start matching from there. However, it was counting back bytes
1241 rather than characters, which could lead to panics on utf8 strings.
1242
1243 • In some cases operators that return integers would return negative
1244 integers as large positive integers. [GH #15049]
1245 <https://github.com/Perl/perl5/issues/15049>
1246
1247 • The "pipe()" operator would assert for DEBUGGING builds instead of
1248 producing the correct error message. The condition asserted on is
1249 detected and reported on correctly without the assertions, so the
1250 assertions were removed. [GH #15015]
1251 <https://github.com/Perl/perl5/issues/15015>
1252
1253 • In some cases, failing to parse a here-doc would attempt to use
1254 freed memory. This was caused by a pointer not being restored
1255 correctly. [GH #15009]
1256 <https://github.com/Perl/perl5/issues/15009>
1257
1258 • "@x = sort { *a = 0; $a <=> $b } 0 .. 1" no longer frees the GP for
1259 *a before restoring its SV slot. [GH #14595]
1260 <https://github.com/Perl/perl5/issues/14595>
1261
1262 • Multiple problems with the new hexadecimal floating point printf
1263 format %a were fixed: [GH #15032]
1264 <https://github.com/Perl/perl5/issues/15032>, [GH #15033]
1265 <https://github.com/Perl/perl5/issues/15033>, [GH #15074]
1266 <https://github.com/Perl/perl5/issues/15074>
1267
1268 • Calling "mg_set()" in "leave_scope()" no longer leaks.
1269
1270 • A regression from Perl v5.20 was fixed in which debugging output of
1271 regular expression compilation was wrong. (The pattern was
1272 correctly compiled, but what got displayed for it was wrong.)
1273
1274 • "\b{sb}" works much better. In Perl v5.22.0, this new construct
1275 didn't seem to give the expected results, yet passed all the tests
1276 in the extensive suite furnished by Unicode. It turns out that it
1277 was because these were short input strings, and the failures had to
1278 do with longer inputs.
1279
1280 • Certain syntax errors in "Extended Bracketed Character Classes" in
1281 perlrecharclass caused panics instead of the proper error message.
1282 This has now been fixed. [perl #126481]
1283
1284 • Perl 5.20 added a message when a quantifier in a regular expression
1285 was useless, but then caused the parser to skip it; this caused the
1286 surplus quantifier to be silently ignored, instead of throwing an
1287 error. This is now fixed. [perl #126253]
1288
1289 • The switch to building non-XS modules last in win32/makefile.mk
1290 (introduced by design as part of the changes to enable parallel
1291 building) caused the build of POSIX to break due to problems with
1292 the version module. This is now fixed.
1293
1294 • Improved parsing of hex float constants.
1295
1296 • Fixed an issue with "pack" where "pack "H"" (and "pack "h"") could
1297 read past the source when given a non-utf8 source, and a utf8
1298 target. [perl #126325]
1299
1300 • Fixed several cases where perl would abort due to a segmentation
1301 fault, or a C-level assert. [perl #126615], [perl #126602], [perl
1302 #126193].
1303
1304 • There were places in regular expression patterns where comments
1305 ("(?#...)") weren't allowed, but should have been. This is now
1306 fixed. [GH #12755] <https://github.com/Perl/perl5/issues/12755>
1307
1308 • Some regressions from Perl 5.20 have been fixed, in which some
1309 syntax errors in "(?[...])" constructs within regular expression
1310 patterns could cause a segfault instead of a proper error message.
1311 [GH #14933] <https://github.com/Perl/perl5/issues/14933> [GH
1312 #14996] <https://github.com/Perl/perl5/issues/14996>
1313
1314 • Another problem with "(?[...])" constructs has been fixed wherein
1315 things like "\c]" could cause panics. [GH #14934]
1316 <https://github.com/Perl/perl5/issues/14934>
1317
1318 • Some problems with attempting to extend the perl stack to around 2G
1319 or 4G entries have been fixed. This was particularly an issue on
1320 32-bit perls built to use 64-bit integers, and was easily
1321 noticeable with the list repetition operator, e.g.
1322
1323 @a = (1) x $big_number
1324
1325 Formerly perl may have crashed, depending on the exact value of
1326 $big_number; now it will typically raise an exception. [GH #14880]
1327 <https://github.com/Perl/perl5/issues/14880>
1328
1329 • In a regex conditional expression
1330 "(?(condition)yes-pattern|no-pattern)", if the condition is "(?!)"
1331 then perl failed the match outright instead of matching the no-
1332 pattern. This has been fixed. [GH #14947]
1333 <https://github.com/Perl/perl5/issues/14947>
1334
1335 • The special backtracking control verbs "(*VERB:ARG)" now all allow
1336 an optional argument and set "REGERROR"/"REGMARK" appropriately as
1337 well. [GH #14937] <https://github.com/Perl/perl5/issues/14937>
1338
1339 • Several bugs, including a segmentation fault, have been fixed with
1340 the boundary checking constructs (introduced in Perl 5.22)
1341 "\b{gcb}", "\b{sb}", "\b{wb}", "\B{gcb}", "\B{sb}", and "\B{wb}".
1342 All the "\B{}" ones now match an empty string; none of the "\b{}"
1343 ones do. [GH #14976] <https://github.com/Perl/perl5/issues/14976>
1344
1345 • Duplicating a closed file handle for write no longer creates a
1346 filename of the form GLOB(0xXXXXXXXX). [perl #125115]
1347
1348 • Warning fatality is now ignored when rewinding the stack. This
1349 prevents infinite recursion when the now fatal error also causes
1350 rewinding of the stack. [perl #123398]
1351
1352 • In perl v5.22.0, the logic changed when parsing a numeric parameter
1353 to the -C option, such that the successfully parsed number was not
1354 saved as the option value if it parsed to the end of the argument.
1355 [perl #125381]
1356
1357 • The PadlistNAMES macro is an lvalue again.
1358
1359 • Zero -DPERL_TRACE_OPS memory for sub-threads.
1360
1361 "perl_clone_using()" was missing Zero init of PL_op_exec_cnt[].
1362 This caused sub-threads in threaded -DPERL_TRACE_OPS builds to spew
1363 exceedingly large op-counts at destruct. These counts would print
1364 %x as "ABABABAB", clearly a mem-poison value.
1365
1366 • A leak in the XS typemap caused one scalar to be leaked each time a
1367 "FILE *" or a "PerlIO *" was "OUTPUT:"ed or imported to Perl, since
1368 perl 5.000. These particular typemap entries are thought to be
1369 extremely rarely used by XS modules. [perl #124181]
1370
1371 • "alarm()" and "sleep()" will now warn if the argument is a negative
1372 number and return undef. Previously they would pass the negative
1373 value to the underlying C function which may have set up a timer
1374 with a surprising value.
1375
1376 • Perl can again be compiled with any Unicode version. This used to
1377 (mostly) work, but was lost in v5.18 through v5.20. The property
1378 "Name_Alias" did not exist prior to Unicode 5.0. Unicode::UCD
1379 incorrectly said it did. This has been fixed.
1380
1381 • Very large code-points (beyond Unicode) in regular expressions no
1382 longer cause a buffer overflow in some cases when converted to
1383 UTF-8. [GH #14858] <https://github.com/Perl/perl5/issues/14858>
1384
1385 • The integer overflow check for the range operator (...) in list
1386 context now correctly handles the case where the size of the range
1387 is larger than the address space. This could happen on 32-bits
1388 with -Duse64bitint. [GH #14843]
1389 <https://github.com/Perl/perl5/issues/14843>
1390
1391 • A crash with "%::=(); J->${\"::"}" has been fixed. [GH #14790]
1392 <https://github.com/Perl/perl5/issues/14790>
1393
1394 • "qr/(?[ () ])/" no longer segfaults, giving a syntax error message
1395 instead. [perl #125805]
1396
1397 • Regular expression possessive quantifier v5.20 regression now
1398 fixed. "qr/"PAT"{"min,max"}+""/" is supposed to behave identically
1399 to "qr/(?>"PAT"{"min,max"})/". Since v5.20, this didn't work if
1400 min and max were equal. [perl #125825]
1401
1402 • "BEGIN <>" no longer segfaults and properly produces an error
1403 message. [perl #125341]
1404
1405 • In "tr///" an illegal backwards range like "tr/\x{101}-\x{100}//"
1406 was not always detected, giving incorrect results. This is now
1407 fixed.
1408
1410 Perl 5.24.0 represents approximately 11 months of development since
1411 Perl 5.24.0 and contains approximately 360,000 lines of changes across
1412 1,800 files from 75 authors.
1413
1414 Excluding auto-generated files, documentation and release tools, there
1415 were approximately 250,000 lines of changes to 1,200 .pm, .t, .c and .h
1416 files.
1417
1418 Perl continues to flourish into its third decade thanks to a vibrant
1419 community of users and developers. The following people are known to
1420 have contributed the improvements that became Perl 5.24.0:
1421
1422 Aaron Crane, Aaron Priven, Abigail, Achim Gratz, Alexander D'Archangel,
1423 Alex Vandiver, Andreas Koenig, Andy Broad, Andy Dougherty, Aristotle
1424 Pagaltzis, Chase Whitener, Chas. Owens, Chris 'BinGOs' Williams, Craig
1425 A. Berry, Dagfinn Ilmari Mannsaaker, Dan Collins, Daniel Dragan, David
1426 Golden, David Mitchell, Doug Bell, Dr.Ruud, Ed Avis, Ed J, Father
1427 Chrysostomos, Herbert Breunung, H.Merijn Brand, Hugo van der Sanden,
1428 Ivan Pozdeev, James E Keenan, Jan Dubois, Jarkko Hietaniemi, Jerry D.
1429 Hedden, Jim Cromie, John Peacock, John SJ Anderson, Karen Etheridge,
1430 Karl Williamson, kmx, Leon Timmermans, Ludovic E. R. Tolhurst-Cleaver,
1431 Lukas Mai, Martijn Lievaart, Matthew Horsfall, Mattia Barbon, Max
1432 Maischein, Mohammed El-Afifi, Nicholas Clark, Nicolas R., Niko Tyni,
1433 Peter John Acklam, Peter Martini, Peter Rabbitson, Pip Cet, Rafael
1434 Garcia-Suarez, Reini Urban, Ricardo Signes, Sawyer X, Shlomi Fish,
1435 Sisyphus, Stanislaw Pusep, Steffen Mueller, Stevan Little, Steve Hay,
1436 Sullivan Beck, Thomas Sibley, Todd Rinaldo, Tom Hukins, Tony Cook,
1437 Unicode Consortium, Victor Adam, Vincent Pit, Vladimir Timofeev, Yves
1438 Orton, Zachary Storer, Zefram.
1439
1440 The list above is almost certainly incomplete as it is automatically
1441 generated from version control history. In particular, it does not
1442 include the names of the (very much appreciated) contributors who
1443 reported issues to the Perl bug tracker.
1444
1445 Many of the changes included in this version originated in the CPAN
1446 modules included in Perl's core. We're grateful to the entire CPAN
1447 community for helping Perl to flourish.
1448
1449 For a more complete list of all of Perl's historical contributors,
1450 please see the AUTHORS file in the Perl source distribution.
1451
1453 If you find what you think is a bug, you might check the articles
1454 recently posted to the comp.lang.perl.misc newsgroup and the perl bug
1455 database at https://rt.perl.org/ . There may also be information at
1456 http://www.perl.org/ , the Perl Home Page.
1457
1458 If you believe you have an unreported bug, please run the perlbug
1459 program included with your release. Be sure to trim your bug down to a
1460 tiny but sufficient test case. Your bug report, along with the output
1461 of "perl -V", will be sent off to perlbug@perl.org to be analysed by
1462 the Perl porting team.
1463
1464 If the bug you are reporting has security implications which make it
1465 inappropriate to send to a publicly archived mailing list, then see
1466 "SECURITY VULNERABILITY CONTACT INFORMATION" in perlsec for details of
1467 how to report the issue.
1468
1470 The Changes file for an explanation of how to view exhaustive details
1471 on what changed.
1472
1473 The INSTALL file for how to build Perl.
1474
1475 The README file for general stuff.
1476
1477 The Artistic and Copying files for copyright information.
1478
1479
1480
1481perl v5.36.3 2023-11-30 PERL5240DELTA(1)