Commit | Line | Data |
---|---|---|
38663f11 DG |
1 | =encoding utf8 |
2 | ||
3 | =head1 NAME | |
4 | ||
5 | perl5191delta - what is new for perl v5.19.1 | |
6 | ||
7 | =head1 DESCRIPTION | |
8 | ||
9 | This document describes differences between the 5.19.0 release and the 5.19.1 | |
10 | release. | |
11 | ||
12 | =head1 Core Enhancements | |
13 | ||
14 | No new features have been added. | |
15 | ||
16 | =head1 Security | |
17 | ||
18 | There are no new security issues. | |
19 | ||
20 | =head1 Incompatible Changes | |
21 | ||
22 | =head2 Most regex engine global state eliminated | |
23 | ||
24 | As part of this series of fixes it was necessary to change the API of | |
25 | Perl_re_intuit_start(). See L</Internal Changes> for more. | |
26 | ||
27 | =head2 Locale decimal point character no longer leaks outside of S<C<use locale>> scope | |
28 | ||
29 | This is actually a bug fix, but some code has come to rely on the bug | |
30 | being present, so this change is listed here. The current locale that | |
31 | the program is running under is not supposed to be visible to Perl code | |
32 | except within the scope of a S<C<use locale>>. However, until now under | |
33 | certain circumstances, the character used for a decimal point (often a | |
34 | comma) leaked outside the scope. If your code is affected by this | |
35 | change, simply add a S<C<use locale>>. | |
36 | ||
37 | =head1 Performance Enhancements | |
38 | ||
39 | =over 4 | |
40 | ||
41 | =item * | |
42 | ||
43 | Perl has a new copy-on-write mechanism that avoids the need to copy the | |
44 | internal string buffer when assigning from one scalar to another. This | |
45 | makes copying large strings appear much faster. Modifying one of the two | |
46 | (or more) strings after an assignment will force a copy internally. This | |
47 | makes it unnecessary to pass strings by reference for efficiency. | |
48 | ||
49 | This feature was already available in 5.18.0, but wasn't enabled by | |
50 | default. It is the default now, and so you no longer need build perl with | |
51 | the F<Configure> argument: | |
52 | ||
53 | -Accflags=PERL_NEW_COPY_ON_WRITE | |
54 | ||
55 | It can be disabled (for now) in a perl build with: | |
56 | ||
57 | -Accflags=PERL_NO_COW | |
58 | ||
59 | =back | |
60 | ||
61 | =head1 Modules and Pragmata | |
62 | ||
63 | =head2 Updated Modules and Pragmata | |
64 | ||
65 | =over 4 | |
66 | ||
67 | =item * | |
68 | ||
69 | L<Archive::Tar> has been upgraded from version 1.90 to 1.92. | |
70 | ||
71 | =item * | |
72 | ||
73 | L<Attribute::Handlers> has been upgraded from version 0.94 to 0.95. | |
74 | ||
75 | =item * | |
76 | ||
77 | L<autodie> has been upgraded from version 2.13 to 2.19. | |
78 | ||
79 | =item * | |
80 | ||
81 | L<B> has been upgraded from version 1.42 to 1.43. | |
82 | ||
83 | =item * | |
84 | ||
85 | L<B::Concise> has been upgraded from version 0.95 to 0.96. | |
86 | ||
87 | =item * | |
88 | ||
89 | L<B::Deparse> has been upgraded from version 1.20 to 1.21. | |
90 | ||
91 | C<foreach my $lexical> is now deparsed correctly with the B<-p> option. | |
92 | [RT #117081] | |
93 | ||
94 | The B<-l> option no longer puts form feeds in the middle of a line when | |
95 | outputting C<map> and C<grep> blocks. [RT #117311] | |
96 | ||
97 | Elements of C<%#>, such as C<$# {foo}> and C<${#}{foo}> are now deparsed | |
98 | correctly. [RT #117531] | |
99 | ||
100 | =item * | |
101 | ||
102 | L<Benchmark> has been upgraded from version 1.15 to 1.16. | |
103 | ||
104 | =item * | |
105 | ||
106 | L<Carp> has been upgraded from version 1.29 to 1.30. | |
107 | ||
108 | =item * | |
109 | ||
110 | L<Compress::Raw::Bzip2> has been upgraded from version 2.060 to 2.061. | |
111 | ||
112 | =item * | |
113 | ||
114 | L<Compress::Raw::Zlib> has been upgraded from version 2.060 to 2.061. | |
115 | ||
116 | =item * | |
117 | ||
118 | L<Config::Perl::V> has been upgraded from version 0.17 to 0.18. | |
119 | ||
120 | =item * | |
121 | ||
122 | L<CPAN::Meta> has been upgraded from version 2.120921 to 2.131560. | |
123 | ||
124 | =item * | |
125 | ||
126 | L<Data::Dumper> has been upgraded from version 2.145 to 2.146. | |
127 | ||
128 | =item * | |
129 | ||
130 | L<DB> has been updated from 1.05 to 1.06 and L<perl5db.pl> from 1.39_10 | |
131 | to 1.40. | |
132 | ||
133 | The call depth allowed by default in the debugger is now 1000 | |
134 | rather than 100. | |
135 | ||
136 | =item * | |
137 | ||
138 | L<DB_File> has been upgraded from version 1.827 to 1.828. | |
139 | ||
140 | =item * | |
141 | ||
142 | L<Encode> has been upgraded from version 2.49 to 2.51. | |
143 | ||
144 | =item * | |
145 | ||
146 | L<ExtUtils::Install> has been upgraded from version 1.59 to 1.60. | |
147 | ||
148 | =item * | |
149 | ||
150 | L<ExtUtils::MakeMaker> has been upgraded from version 6.66 to 6.68. | |
151 | ||
152 | =item * | |
153 | ||
154 | L<ExtUtils::ParseXS> has been upgraded from version 3.18 to 3.19. | |
155 | ||
156 | =item * | |
157 | ||
158 | L<File::Copy> has been upgraded from version 2.26 to 2.27. | |
159 | ||
160 | =item * | |
161 | ||
162 | L<File::DosGlob> has been upgraded from version 1.10 to 1.11. | |
163 | ||
164 | =item * | |
165 | ||
166 | L<File::Fetch> has been upgraded from version 0.38 to 0.42. | |
167 | ||
168 | =item * | |
169 | ||
170 | L<File::Find> has been upgraded from version 1.23 to 1.24. | |
171 | ||
172 | =item * | |
173 | ||
174 | L<File::Spec> has been upgraded from version 3.40 to 3.41. | |
175 | ||
176 | C<tmpdir> now respects changes to environment variables from which the | |
177 | temporary directory is derived. [RT #88940] | |
178 | ||
179 | =item * | |
180 | ||
181 | L<File::Temp> has been upgraded from version 0.23 to 0.2301. | |
182 | ||
183 | =item * | |
184 | ||
185 | L<Filter::Simple> has been upgraded from version 0.89 to 0.90. | |
186 | ||
187 | =item * | |
188 | ||
189 | L<Filter::Util::Call> has been upgraded from version 1.45 to 1.49. | |
190 | ||
191 | =item * | |
192 | ||
193 | L<Getopt::Long> has been upgraded from version 2.39 to 2.4. | |
194 | ||
195 | =item * | |
196 | ||
197 | L<Hash::Util::FieldHash> has been upgraded from version 1.10 to 1.11. | |
198 | ||
199 | =item * | |
200 | ||
201 | L<HTTP::Tiny> has been upgraded from version 0.025 to 0.031. | |
202 | ||
203 | =item * | |
204 | ||
205 | L<IPC::Open3> has been upgraded from version 1.13 to 1.14. | |
206 | ||
207 | =item * | |
208 | ||
209 | L<Locale::Maketext> has been upgraded from version 1.23 to 1.24. | |
210 | ||
211 | =item * | |
212 | ||
213 | L<Math::BigInt> has been upgraded from version 1.9991 to 1.9992. | |
214 | ||
215 | =item * | |
216 | ||
217 | L<Math::BigRat> has been upgraded from version 0.2604 to 0.2606. | |
218 | ||
219 | =item * | |
220 | ||
221 | L<Module::Build> has been upgraded from version 0.4003 to 0.4005. | |
222 | ||
223 | =item * | |
224 | ||
225 | L<Module::CoreList> has been upgraded from version 2.91 to 2.92. | |
226 | ||
227 | Adds L<Module::CoreList::Utils> which provides information on which core and | |
228 | dual-life utilities shipped with each version of L<perl>. | |
229 | ||
230 | =item * | |
231 | ||
232 | L<Module::Metadata> has been upgraded from version 1.000011 to 1.000014. | |
233 | ||
234 | =item * | |
235 | ||
236 | L<mro> has been upgraded from version 1.11 to 1.12. | |
237 | ||
238 | =item * | |
239 | ||
240 | L<Net::Ping> has been upgraded from version 2.41 to 2.42. | |
241 | ||
242 | =item * | |
243 | ||
244 | L<perlfaq> has been upgraded from version 5.0150042 to 5.0150043. | |
245 | ||
246 | =item * | |
247 | ||
248 | L<Pod::Html> has been upgraded from version 1.18 to 1.19. | |
249 | ||
250 | =item * | |
251 | ||
252 | L<Pod::Parser> has been upgraded from version 1.60 to 1.61. | |
253 | ||
254 | =item * | |
255 | ||
256 | L<Pod::Perldoc> has been upgraded from version 3.19 to 3.20. | |
257 | ||
258 | =item * | |
259 | ||
260 | L<Pod::Usage> has been upgraded from version 1.61 to 1.63. | |
261 | ||
262 | =item * | |
263 | ||
264 | L<POSIX> has been upgraded from version 1.32 to 1.33. | |
265 | ||
266 | =item * | |
267 | ||
268 | L<re> has been upgraded from version 0.23 to 0.25. | |
269 | ||
270 | =item * | |
271 | ||
272 | L<Safe> has been upgraded from version 2.35 to 2.36. | |
273 | ||
274 | =item * | |
275 | ||
276 | L<Storable> has been upgraded from version 2.42 to 2.43. | |
277 | ||
278 | =item * | |
279 | ||
280 | L<Sys::Hostname> has been upgraded from version 1.17 to 1.18. | |
281 | ||
282 | =item * | |
283 | ||
284 | L<Sys::Syslog> has been upgraded from version 0.32 to 0.33. | |
285 | ||
286 | =item * | |
287 | ||
288 | L<Term::ReadLine> has been upgraded from version 1.12 to 1.13. | |
289 | ||
290 | =item * | |
291 | ||
292 | L<Test::Harness> has been upgraded from version 3.26 to 3.28 | |
293 | ||
294 | Memory usage is dramatically reduced. t/harness now uses about 10% of the | |
295 | memory used by 3.26 and earlier. | |
296 | ||
297 | C<PERL5LIB> is always propagated to a test's C<@INC>, even under C<-T>. | |
298 | ||
299 | =item * | |
300 | ||
301 | L<threads> has been upgraded from version 1.86 to 1.87. | |
302 | ||
303 | =item * | |
304 | ||
305 | L<threads::shared> has been upgraded from version 1.43 to 1.44. | |
306 | ||
307 | =item * | |
308 | ||
309 | L<Tie::File> has been upgraded from version 0.99 to 1.00. | |
310 | ||
311 | =item * | |
312 | ||
313 | L<Time::Piece> has been upgraded from version 1.20_01 to 1.2002. | |
314 | ||
315 | =item * | |
316 | ||
317 | L<Unicode::Collate> has been upgraded from version 0.97 to 0.98. | |
318 | ||
319 | =item * | |
320 | ||
321 | L<Unicode::UCD> has been upgraded from version 0.51 to 0.52. | |
322 | ||
323 | A function, L<Unicode::UCD/search_invlist()> is now available to do | |
324 | search an inversion list or map for a code point. | |
325 | ||
326 | =back | |
327 | ||
328 | =head1 Documentation | |
329 | ||
330 | =head2 Changes to Existing Documentation | |
331 | ||
332 | =head3 L<perlfunc> | |
333 | ||
334 | =over | |
335 | ||
336 | =item * | |
337 | ||
338 | C<goto EXPR> is now documented to handle an expression that evalutes to a | |
339 | code reference as if it was C<goto &$coderef>. This behavior is at least ten | |
340 | years old. | |
341 | ||
342 | =item * | |
343 | ||
344 | C<eval EXPR> now has caveats about expanding floating point numbers in some | |
345 | locales | |
346 | ||
347 | =item * | |
348 | ||
349 | Noted that C<chop> and C<chomp> can reset the hash iterator | |
350 | ||
351 | =item * | |
352 | ||
353 | Improved C<fileno> example | |
354 | ||
355 | =back | |
356 | ||
357 | =head3 L<perlexperiment> | |
358 | ||
359 | =over | |
360 | ||
361 | =item * | |
362 | ||
363 | C<\s> matching C<\cK> is marked experimental | |
364 | ||
365 | =item * | |
366 | ||
367 | ithreads were accepted in 5.8.0 | |
368 | ||
369 | =item * | |
370 | ||
371 | Long doubles are not experimental | |
372 | ||
373 | =back | |
374 | ||
375 | =head3 L<perllocale> | |
376 | ||
377 | =over | |
378 | ||
379 | =item * | |
380 | ||
381 | Update to mention fc(), \F | |
382 | ||
383 | =back | |
384 | ||
385 | =head3 L<perltrap> | |
386 | ||
387 | =over 4 | |
388 | ||
389 | =item * | |
390 | ||
391 | There is now a L<JavaScript|perltrap/JavaScript Traps> section. | |
392 | ||
393 | =back | |
394 | ||
395 | =head1 Diagnostics | |
396 | ||
397 | The following additions or changes have been made to diagnostic output, | |
398 | including warnings and fatal error messages. For the complete list of | |
399 | diagnostic messages, see L<perldiag>. | |
400 | ||
401 | =head3 New Warnings | |
402 | ||
403 | =over 4 | |
404 | ||
405 | =item * | |
406 | ||
407 | L<A sequence of multiple spaces in a charnames alias definition is deprecated|perldiag/"A sequence of multiple spaces in a charnames alias definition is deprecated"> | |
408 | ||
409 | L<Trailing white-space in a charnames alias definition is deprecated|perldiag/"Trailing white-space in a charnames alias definition is deprecated"> | |
410 | ||
411 | These two deprecation warnings involving C<\N{...}> were incorrectly | |
412 | implemented. They did not warn by default (now they do) and could not be | |
413 | made fatal via C<< use warnings FATAL => 'deprecated' >> (now they can). | |
414 | ||
415 | =back | |
416 | ||
417 | =head1 Utility Changes | |
418 | ||
419 | =head3 F<bisect.pl> enhancements | |
420 | ||
421 | The git bisection tool F<Porting/bisect.pl> has had many enhancements. | |
422 | ||
423 | =over 4 | |
424 | ||
425 | =item * | |
426 | ||
427 | Can optionally run the test case with a timeout. | |
428 | ||
429 | =item * | |
430 | ||
431 | Can now run in-place in a clean git checkout. | |
432 | ||
433 | =item * | |
434 | ||
435 | Can run the test case under C<valgrind>. | |
436 | ||
437 | =item * | |
438 | ||
439 | Can apply user supplied patches and fixes to the source checkout before | |
440 | building. | |
441 | ||
442 | =item * | |
443 | ||
444 | Now has fixups to enable building several more historical ranges of bleadperl, | |
445 | which can be useful for pinpointing the origins of bugs or behaviour changes. | |
446 | ||
447 | =back | |
448 | ||
449 | It is provided as part of the source distribution but not installed because | |
450 | it is not self-contained as it relies on being run from within a git | |
451 | checkout. Note also that it makes no attempt to fix tests, correct runtime | |
452 | bugs or make something useful to install - its purpose is to make minimal | |
453 | changes to get any historical revision of interest to build and run as close | |
454 | as possible to "as-was", and thereby make C<git bisect> easy to use. | |
455 | ||
456 | =head1 Platform Support | |
457 | ||
458 | =head2 Discontinued Platforms | |
459 | ||
460 | =over 4 | |
461 | ||
462 | =item DG/UX | |
463 | ||
464 | DG/UX was a Unix sold by Data General. The last release was in April 2001. | |
465 | It only runs on Data General's own hardware. | |
466 | ||
467 | =back | |
468 | ||
469 | =head2 Platform-Specific Notes | |
470 | ||
471 | =over 4 | |
472 | ||
473 | =item Mixed-endian platforms | |
474 | ||
475 | The code supporting C<pack> and C<unpack> operations on mixed endian | |
476 | platforms has been removed. We believe that Perl has long been unable to | |
477 | build on mixed endian architectures (such as PDP-11s), so we don't think | |
478 | that this change will affect any platforms which are able to build v5.18.0. | |
479 | ||
480 | =item Windows | |
481 | ||
482 | The BUILD_STATIC and ALL_STATIC makefile options for linking some or (nearly) | |
483 | all extensions statically (into perl519.dll, and into a separate | |
484 | perl-static.exe too) were broken for MinGW builds. This has now been fixed. | |
485 | ||
486 | The ALL_STATIC option has also been improved to include the Encode and Win32 | |
487 | extensions (for both VC++ and MinGW builds). | |
488 | ||
489 | =back | |
490 | ||
491 | =head1 Internal Changes | |
492 | ||
493 | =over 4 | |
494 | ||
495 | =item * | |
496 | ||
497 | Perl's new copy-on-write mechanism (which is now enabled by default), | |
498 | allows any C<SvPOK> scalar to be automatically upgraded to a copy-on-write | |
499 | scalar when copied. A reference count on the string buffer is stored in | |
500 | the string buffer itself. | |
501 | ||
502 | For example: | |
503 | ||
504 | $ perl -MDevel::Peek -e'$a="abc"; $b = $a; Dump $a; Dump $b' | |
505 | SV = PV(0x260cd80) at 0x2620ad8 | |
506 | REFCNT = 1 | |
507 | FLAGS = (POK,IsCOW,pPOK) | |
508 | PV = 0x2619bc0 "abc"\0 | |
509 | CUR = 3 | |
510 | LEN = 16 | |
511 | COW_REFCNT = 1 | |
512 | SV = PV(0x260ce30) at 0x2620b20 | |
513 | REFCNT = 1 | |
514 | FLAGS = (POK,IsCOW,pPOK) | |
515 | PV = 0x2619bc0 "abc"\0 | |
516 | CUR = 3 | |
517 | LEN = 16 | |
518 | COW_REFCNT = 1 | |
519 | ||
520 | Note that both scalars share the same PV buffer and have a COW_REFCNT | |
521 | greater than zero. | |
522 | ||
523 | This means that XS code which wishes to modify the C<SvPVX()> buffer of an | |
524 | SV should call C<SvPV_force()> or similar first, to ensure a valid (and | |
525 | unshared) buffer, and to call C<SvSETMAGIC()> afterwards. This in fact has | |
526 | always been the case (for example hash keys were already copy-on-write); | |
527 | this change just spreads the COW behaviour to a wider variety of SVs. | |
528 | ||
529 | One important difference is that before 5.18.0, shared hash-key scalars | |
530 | used to have the C<SvREADONLY> flag set; this is no longer the case. | |
531 | ||
532 | This new behaviour can still be disabled by running F<Configure> with | |
533 | B<-Accflags=-DPERL_NO_COW>. This option will probably be removed in Perl | |
534 | 5.22. | |
535 | ||
536 | =item * | |
537 | ||
538 | C<PL_sawampersand> is now a constant. The switch this variable provided | |
539 | (to enable/disable the pre-match copy depending on whether C<$&> had been | |
540 | seen) has been removed and replaced with copy-on-write, eliminating a few | |
541 | bugs. | |
542 | ||
543 | The previous behaviour can still be enabled by running F<Configure> with | |
544 | B<-Accflags=-DPERL_SAWAMPERSAND>. | |
545 | ||
546 | =item * | |
547 | ||
548 | The functions C<my_swap>, C<my_htonl> and C<my_ntohl> have been removed. | |
549 | It is unclear why these functions were ever marked as I<A>, part of the | |
550 | API. XS code can't call them directly, as it can't rely on them being | |
551 | compiled. Unsurprisingly, no code on CPAN references them. | |
552 | ||
553 | =item * | |
554 | ||
555 | The signature of the C<Perl_re_intuit_start()> regex function has changed; | |
556 | the function pointer C<intuit> in the regex engine plugin structure | |
557 | has also changed accordingly. A new parameter, C<strbeg> has been added; | |
558 | this has the same meaning as the same-named parameter in | |
559 | C<Perl_regexec_flags>. Previously intuit would try to guess the start of | |
560 | the string from the passed SV (if any), and would sometimes get it wrong | |
561 | (e.g. with an overloaded SV). | |
562 | ||
563 | =item * | |
564 | ||
565 | XS code may use various macros to change the case of a character or code | |
566 | point (for example C<toLOWER_utf8()>). Only a couple of these were | |
567 | documented until now; | |
568 | and now they should be used in preference to calling the underlying | |
569 | functions. See L<perlapi/Character case changing>. | |
570 | ||
571 | =item * | |
572 | ||
573 | The code dealt rather inconsistently with uids and gids. Some | |
574 | places assumed that they could be safely stored in UVs, others | |
575 | in IVs, others in ints. Four new macros are introduced: | |
576 | SvUID(), sv_setuid(), SvGID(), and sv_setgid() | |
577 | ||
578 | =back | |
579 | ||
580 | =head1 Selected Bug Fixes | |
581 | ||
582 | =over 4 | |
583 | ||
584 | =item * | |
585 | ||
586 | The OP allocation code now returns correctly aligned memory in all cases | |
587 | for C<struct pmop>. Previously it could return memory only aligned to a | |
588 | 4-byte boundary, which is not correct for an ithreads build with 64 bit IVs | |
589 | on some 32 bit platforms. Notably, this caused the build to fail completely | |
590 | on sparc GNU/Linux. [RT #118055] | |
591 | ||
592 | =item * | |
593 | ||
594 | The debugger's C<man> command been fixed. It was broken in the v5.18.0 | |
595 | release. The C<man> command is aliased to the names C<doc> and C<perldoc> - | |
596 | all now work again. | |
597 | ||
598 | =item * | |
599 | ||
600 | C<@_> is now correctly visible in the debugger, fixing a regression | |
601 | introduced in v5.18.0's debugger. [RT #118169] | |
602 | ||
603 | =item * | |
604 | ||
605 | Evaluating large hashes in scalar context is now much faster, as the number | |
606 | of used chains in the hash is now cached for larger hashes. Smaller hashes | |
607 | continue not to store it and calculate it when needed, as this saves one IV. | |
608 | That would be 1 IV overhead for every object built from a hash. [RT #114576] | |
609 | ||
610 | =item * | |
611 | ||
612 | Fixed a small number of regexp constructions that could either fail to | |
613 | match or crash perl when the string being matched against was | |
614 | allocated above the 2GB line on 32-bit systems. [RT #118175] | |
615 | ||
616 | =item * | |
617 | ||
618 | Perl v5.16 inadvertently introduced a bug whereby calls to XSUBs that were | |
619 | not visible at compile time were treated as lvalues and could be assigned | |
620 | to, even when the subroutine was not an lvalue sub. This has been fixed. | |
621 | [RT #117947] | |
622 | ||
623 | =item * | |
624 | ||
625 | In Perl v5.18.0 dualvars that had an empty string for the string part but a | |
626 | non-zero number for the number part starting being treated as true. In | |
627 | previous versions they were treated as false, the string representation | |
628 | taking precedeence. The old behaviour has been restored. [RT #118159] | |
629 | ||
630 | =item * | |
631 | ||
632 | Since Perl v5.12, inlining of constants that override built-in keywords of | |
633 | the same name had countermanded C<use subs>, causing subsequent mentions of | |
634 | the constant to use the built-in keyword instead. This has been fixed. | |
635 | ||
636 | =item * | |
637 | ||
638 | Lexical constants (C<my sub a() { 42 }>) no longer crash when inlined. | |
639 | ||
640 | =item * | |
641 | ||
642 | Parameter prototypes attached to lexical subroutines are now respected when | |
643 | compiling sub calls without parentheses. Previously, the prototypes were | |
644 | honoured only for calls I<with> parentheses. [RT #116735] | |
645 | ||
646 | =item * | |
647 | ||
648 | Syntax errors in lexical subroutines in combination with calls to the same | |
649 | subroutines no longer cause crashes at compile time. | |
650 | ||
651 | =item * | |
652 | ||
8088f39e FC |
653 | Deep recursion warnings no longer crash lexical subroutines. [RT #118521] |
654 | ||
655 | =item * | |
656 | ||
38663f11 DG |
657 | The warning produced by C<-l $handle> now applies to IO refs and globs, not |
658 | just to glob refs. That warning is also now UTF8-clean. [RT #117595] | |
659 | ||
660 | =item * | |
661 | ||
662 | Various memory leaks involving the parsing of the C<(?[...])> regular | |
663 | expression construct have been fixed. | |
664 | ||
665 | =item * | |
666 | ||
667 | C<(?[...])> now allows interpolation of precompiled patterns consisting of | |
668 | C<(?[...])> with bracketed character classes inside (C<$pat = | |
669 | S<qr/(?[ [a] ])/;> S</(?[ $pat ])/>>). Formerly, the brackets would | |
670 | confuse the regular expression parser. | |
671 | ||
672 | =item * | |
673 | ||
674 | The "Quantifier unexpected on zero-length expression" warning message could | |
675 | appear twice starting in Perl v5.10 for a regular expression also | |
676 | containing alternations (e.g., "a|b") triggering the trie optimisation. | |
677 | ||
678 | =item * | |
679 | ||
680 | C<delete local $ENV{nonexistent_env_var}> no longer leaks memory. | |
681 | ||
682 | =item * | |
683 | ||
684 | C<sort> and C<require> followed by a keyword prefixed with C<CORE::> now | |
685 | treat it as a keyword, and not as a subroutine or module name. [RT #24482] | |
686 | ||
687 | =item * | |
688 | ||
689 | Through certain conundrums, it is possible to cause the current package to | |
690 | be freed. Certain operators (C<bless>, C<reset>, C<open>, C<eval>) could | |
691 | not cope and would crash. They have been made more resilient. [RT #117941] | |
692 | ||
693 | =item * | |
694 | ||
695 | Aliasing filehandles through glob-to-glob assignment would not update | |
696 | internal method caches properly if a package of the same name as the | |
697 | filehandle existed, resulting in filehandle method calls going to the | |
698 | package instead. This has been fixed. | |
699 | ||
700 | =item * | |
701 | ||
702 | C<./Configure -de -Dusevendorprefix> didn't default [RT #64126] | |
703 | ||
704 | =item * | |
705 | ||
706 | The C<Statement unlikely to be reached> warning was listed in | |
707 | L<perldiag> as an C<exec>-category warning, but was enabled and disabled | |
708 | by the C<syntax> category. On the other hand, the C<exec> category | |
709 | controlled its fatal-ness. It is now entirely handled by the C<exec> | |
710 | category. | |
711 | ||
712 | =item * | |
713 | ||
714 | The "Replacement list is longer that search list" warning for C<tr///> and | |
715 | C<y///> no longer occurs in the presence of the C</c> flag. [RT #118047] | |
716 | ||
717 | =item * | |
718 | ||
719 | Perl v5.18 inadvertently introduced a bug whereby interpolating mixed up- | |
720 | and down-graded UTF-8 strings in a regex could result in malformed UTF-8 | |
721 | in the pattern: specifically if a downgraded character in the range | |
722 | C<\x80..\xff> followed a UTF-8 string, e.g. | |
723 | ||
724 | utf8::upgrade( my $u = "\x{e5}"); | |
725 | utf8::downgrade(my $d = "\x{e5}"); | |
726 | /$u$d/ | |
727 | ||
728 | [RT #118297] | |
729 | ||
730 | =item * | |
731 | ||
732 | Stringification of NVs are not cached so that the lexical locale controls | |
733 | stringification of the decimal point [perl #108378] [perl #115800] | |
734 | ||
735 | =back | |
736 | ||
737 | =head1 Acknowledgements | |
738 | ||
739 | Perl 5.19.1 represents approximately 4 weeks of development since Perl 5.19.0 | |
740 | and contains approximately 26,000 lines of changes across 680 files from 37 | |
741 | authors. | |
742 | ||
743 | Perl continues to flourish into its third decade thanks to a vibrant community | |
744 | of users and developers. The following people are known to have contributed the | |
745 | improvements that became Perl 5.19.1: | |
746 | ||
747 | Alexandr Ciornii, Brian Fraser, Chris 'BinGOs' Williams, Craig A. Berry, | |
748 | Dagfinn Ilmari Mannsåker, Daniel Dragan, David Golden, David Mitchell, David | |
749 | Steinbrunner, Dominic Hargreaves, Eric Brine, Father Chrysostomos, H.Merijn | |
750 | Brand, Heiko Eissfeldt, James E Keenan, Jerry D. Hedden, Kang-min Liu, Karl | |
751 | Williamson, Leon Timmermans, Lukas Mai, Marcel Grünauer, Mark Jason Dominus, | |
752 | Max Maischein, Mike Doherty, Nicholas Clark, Paul Green, Peter Martini, Petr | |
753 | Písař, Ricardo Signes, Shirakata Kentaro, Shlomi Fish, Steffen Müller, Steve | |
754 | Hay, Sullivan Beck, Tony Cook, Yves Orton, Zsbán Ambrus. | |
755 | ||
756 | The list above is almost certainly incomplete as it is automatically generated | |
757 | from version control history. In particular, it does not include the names of | |
758 | the (very much appreciated) contributors who reported issues to the Perl bug | |
759 | tracker. | |
760 | ||
761 | Many of the changes included in this version originated in the CPAN modules | |
762 | included in Perl's core. We're grateful to the entire CPAN community for | |
763 | helping Perl to flourish. | |
764 | ||
765 | For a more complete list of all of Perl's historical contributors, please see | |
766 | the F<AUTHORS> file in the Perl source distribution. | |
767 | ||
768 | =head1 Reporting Bugs | |
769 | ||
770 | If you find what you think is a bug, you might check the articles recently | |
771 | posted to the comp.lang.perl.misc newsgroup and the perl bug database at | |
772 | http://rt.perl.org/perlbug/ . There may also be information at | |
773 | http://www.perl.org/ , the Perl Home Page. | |
774 | ||
775 | If you believe you have an unreported bug, please run the L<perlbug> program | |
776 | included with your release. Be sure to trim your bug down to a tiny but | |
777 | sufficient test case. Your bug report, along with the output of C<perl -V>, | |
778 | will be sent off to perlbug@perl.org to be analysed by the Perl porting team. | |
779 | ||
780 | If the bug you are reporting has security implications, which make it | |
781 | inappropriate to send to a publicly archived mailing list, then please send it | |
782 | to perl5-security-report@perl.org. This points to a closed subscription | |
783 | unarchived mailing list, which includes all the core committers, who will be | |
784 | able to help assess the impact of issues, figure out a resolution, and help | |
785 | co-ordinate the release of patches to mitigate or fix the problem across all | |
786 | platforms on which Perl is supported. Please only use this address for | |
787 | security issues in the Perl core, not for modules independently distributed on | |
788 | CPAN. | |
789 | ||
790 | =head1 SEE ALSO | |
791 | ||
792 | The F<Changes> file for an explanation of how to view exhaustive details on | |
793 | what changed. | |
794 | ||
795 | The F<INSTALL> file for how to build Perl. | |
796 | ||
797 | The F<README> file for general stuff. | |
798 | ||
799 | The F<Artistic> and F<Copying> files for copyright information. | |
800 | ||
801 | =cut |