This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta: 949cf498 (allowing all non-chars) is already done
[perl5.git] / pod / perldelta.pod
1 =encoding utf8
2
3 =head1 NAME
4
5 [ this is a template for a new perldelta file. Any text flagged as
6 XXX needs to be processed before release. ]
7
8 perldelta - what is new for perl v5.13.9
9
10 =head1 DESCRIPTION
11
12 This document describes differences between the 5.13.8 release and
13 the 5.13.9 release.
14
15 If you are upgrading from an earlier release such as 5.13.7, first read
16 L<perl5138delta>, which describes differences between 5.13.7 and
17 5.13.8.
18
19 =head1 Notice
20
21 XXX Any important notices here
22
23 =head1 Core Enhancements
24
25 XXX New core language features go here. Summarise user-visible core language
26 enhancements. Particularly prominent performance optimisations could go
27 here, but most should go in the L</Performance Enhancements> section.
28
29 [ List each enhancement as a =head2 entry ]
30
31 =head2 New regular expression modifier C</a>
32
33 The C</a> regular expression modifier restricts C<\s> to match precisely
34 the five characters C<[ \f\n\r\t]>, C<\d> to match precisely the 10
35 characters C<[0-9]>, C<\w> to match precisely the 63 characters
36 C<[A-Za-z0-9_]>, and the Posix (C<[[:posix:]]>) character classes to
37 match only the appropriate ASCII characters.  The complements, of
38 course, match everything but; and C<\b> and C<\B> are correspondingly
39 affected.  Otherwise, C</a> behaves like the C</u> modifier, in that
40 case-insensitive matching uses Unicode semantics; for example, "k" will
41 match the Unicode C<\N{KELVIN SIGN}> under C</i> matching, and code
42 points in the Latin1 range, above ASCII will have Unicode semantics when
43 it comes to case-insensitive matching.  Like its cousins (C</u>, C</l>,
44 and C</d>), and in spite of the terminology, C</a> in 5.14 will not
45 actually be able to be used as a suffix at the end of a regular
46 expression (this restriction is planned to be lifted in 5.16).  It must
47 occur either as an infix modifier, such as C<(?a:...)> or (C<(?a)...>,
48 or it can be turned on within the lexical scope of C<use re '/a'>.
49 Turning on C</a> turns off the other "character set" modifiers.
50
51 =head2 Any unsigned value can be encoded as a character
52
53 With this release, Perl is adopting a model that any unsigned value can
54 be treated as a code point and encoded internally (as utf8) without
55 warnings -- not just the code points that are legal in Unicode.
56 However, unless utf8 warnings have been
57 explicitly lexically turned off, outputting or performing a
58 Unicode-defined operation (such as upper-casing) on such a code point
59 will generate a warning.  Attempting to input these using strict rules
60 (such as with the C<:encoding('UTF-8')> layer) will continue to fail.
61 Prior to this release the handling was very inconsistent, and incorrect
62 in places.  Also, the Unicode non-characters, some of which previously were
63 erroneously considered illegal in places by Perl, contrary to the Unicode
64 standard, are now always legal internally.  But inputting or outputting
65 them will work the same as for the non-legal Unicode code points, as the
66 Unicode standard says they are illegal for "open interchange".
67
68 =head2 Regular expression debugging output improvement
69
70 Regular expression debugging output (turned on by C<use re 'debug';>) now
71 uses hexadecimal when escaping non-ASCII characters, instead of octal.
72
73 =head1 Security
74
75 XXX Any security-related notices go here.  In particular, any security
76 vulnerabilities closed should be noted here rather than in the
77 L</Selected Bug Fixes> section.
78
79 [ List each security issue as a =head2 entry ]
80
81 =head1 Incompatible Changes
82
83 XXX For a release on a stable branch, this section aspires to be:
84
85     There are no changes intentionally incompatible with 5.XXX.XXX. If any
86     exist, they are bugs and reports are welcome.
87
88 [ List each incompatible change as a =head2 entry ]
89
90 =head2 All objects are destroyed
91
92 It used to be possible to prevent a destructor from being called during
93 global destruction by artificially increasing the reference count of an
94 object.
95
96 Now such objects I<will> will be destroyed, as a result of a bug fix
97 L<[perl #81230]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=81230>.
98
99 This has the potential to break some XS modules. (In fact, it break some.
100 See L</Known Problems>, below.)
101
102 =head1 Deprecations
103
104 XXX Any deprecated features, syntax, modules etc. should be listed here.
105 In particular, deprecated modules should be listed here even if they are
106 listed as an updated module in the L</Modules and Pragmata> section.
107
108 [ List each deprecation as a =head2 entry ]
109
110 =head1 Performance Enhancements
111
112 XXX Changes which enhance performance without changing behaviour go here. There
113 may well be none in a stable release.
114
115 [ List each enhancement as a =item entry ]
116
117 =over 4
118
119 =item *
120
121 XXX
122
123 =back
124
125 =head1 Modules and Pragmata
126
127 XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
128 go here.  If Module::CoreList is updated, generate an initial draft of the
129 following sections using F<Porting/corelist-perldelta.pl>, which prints stub
130 entries to STDOUT.  Results can be pasted in place of the '=head2' entries
131 below.  A paragraph summary for important changes should then be added by hand.
132 In an ideal world, dual-life modules would have a F<Changes> file that could be
133 cribbed.
134
135 [ Within each section, list entries as a =item entry ]
136
137 =head2 New Modules and Pragmata
138
139 =over 4
140
141 =item *
142
143 L<CPAN::Meta::YAML> 0.003 has been added as a dual-life module.  It supports a
144 subset of YAML sufficient for reading and writing META.yml and MYMETA.yml files
145 included with CPAN distributions or generated by the module installation
146 toolchain. It should not be used for any other general YAML parsing or
147 generation task.
148
149 =item *
150
151 L<HTTP::Tiny> 0.009 has been added as a dual-life module.  It is a very
152 small, simple HTTP/1.1 client designed for simple GET requests and file
153 mirroring.  It has has been added to enable CPAN.pm and CPANPLUS to
154 "bootstrap" HTTP access to CPAN using pure Perl without relying on external
155 binaries like F<curl> or F<wget>.
156
157 =item *
158
159 L<JSON::PP> 2.27103 has been added as a dual-life module, for the sake of
160 reading F<META.json> files in CPAN distributions.
161
162 =item *
163
164 L<Module::Metadata> 1.000003 has been added as a dual-life module.  It gathers
165 package and POD information from Perl module files.  It is a standalone module
166 based on Module::Build::ModuleInfo for use by other module installation
167 toolchain components.  Module::Build::ModuleInfo has been deprecated in
168 favor of this module instead.
169
170 =item *
171
172 L<Perl::OSType> 1.002 has been added as a dual-life module.  It maps Perl
173 operating system names (e.g. 'dragonfly' or 'MSWin32') to more generic types
174 with standardized names (e.g.  "Unix" or "Windows").  It has been refactored
175 out of Module::Build and ExtUtils::CBuilder and consolidates such mappings into
176 a single location for easier maintenance.
177
178 =back
179
180 =head2 Updated Modules and Pragmata
181
182 =over 4
183
184 =item *
185
186 C<Archive::Extract> has been upgraded from version 0.46 to 0.48
187
188 =item *
189
190 C<Archive::Tar> has been upgraded from version 1.74 to 1.76
191
192 =item *
193
194 C<CGI> has been upgraded from version 3.50 to 3.51
195
196 Further improvements have been made to guard against newline injections
197 in headers.
198
199 =item *
200
201 C<Compress::Raw::Bzip2> has been upgraded from version 2.031 to 2.033
202
203 =item *
204
205 C<Compress::Raw::Zlib> has been upgraded from version 2.030 to 2.033
206
207 =item *
208
209 C<CPAN> has been upgraded from version 1.94_62 to 1.94_63
210
211 =item *
212
213 C<CPANPLUS> has been upgraded from version 0.9010 to 0.9011
214
215 =item *
216
217 C<CPANPLUS::Dist::Build> has been upgraded from version 0.50 to 0.52
218
219 =item *
220
221 C<DB_File> has been upgraded from version 1.820 to 1.821
222
223 =item *
224
225 C<Encode> has been upgraded from version 2.40 to 2.42.
226 Now, all 66 Unicode non-characters are treated the same way U+FFFF has
227 always been treated; if it was disallowed, all 66 are disallowed; if it
228 warned, all 66 warn.
229
230 =item *
231
232 C<File::Fetch> has been upgraded from version 0.28 to 0.32
233
234 =item *
235
236 C<IO::Compress> has been upgraded from version 2.030 to 2.033
237
238 =item *
239
240 C<IPC::Cmd> has been upgraded from version 0.66 to 0.68
241
242 =item *
243
244 C<Log::Message> has been upgraded from version 0.02 to 0.04
245
246 =item *
247
248 C<Log::Message::Simple> has been upgraded from version 0.06 to 0.08
249
250 =item *
251
252 C<Module::Load::Conditional> has been upgraded from version 0.38 to 0.40
253
254 =item *
255
256 C<Object::Accessor> has been upgraded from version 0.36 to 0.38
257
258 =item *
259
260 C<Params::Check> has been upgraded from version 0.26 to 0.28
261
262 =item *
263
264 C<Pod::LaTeX> has been upgraded from version 0.58 to 0.59
265
266 =item *
267
268 C<Term::UI> has been upgraded from version 0.20 to 0.24
269
270 =item *
271
272 C<Thread::Queue> has been upgraded from version 2.11 to 2.12.
273
274 =item *
275
276 C<Thread::Semaphore> has been upgraded from version 2.11 to 2.12.
277
278 =item *
279
280 C<threads> has been upgraded from version 1.81_03 to 1.82
281
282 =item *
283
284 C<threads::shared> has been upgraded from version 1.35 to 1.36
285
286 =item *
287
288 C<Time::Local> has been upgraded from version 1.1901_01 to 1.2000.
289
290 =item *
291
292 C<Unicode::Normalize> has been upgraded from version 1.07 to 1.10
293
294 =item *
295
296 C<version> has been upgraded from 0.86 to 0.88.
297
298 =back
299
300 =head2 Removed Modules and Pragmata
301
302 =over 4
303
304 =item *
305
306 XXX
307
308 =back
309
310 =head1 Documentation
311
312 XXX Changes to files in F<pod/> go here.  Consider grouping entries by
313 file and be sure to link to the appropriate page, e.g. L<perlfunc>.
314
315 =head2 New Documentation
316
317 XXX Changes which create B<new> files in F<pod/> go here.
318
319 =head3 L<XXX>
320
321 XXX Description of the purpose of the new file here
322
323 =head2 Changes to Existing Documentation
324
325 XXX Changes which significantly change existing files in F<pod/> go here.
326 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
327 section.
328
329 =head3 L<perlfunc>
330
331 =over 4
332
333 =item *
334
335 It has now been documented that C<ord> returns 0 for an empty string.
336
337 =back
338
339 =head1 Diagnostics
340
341 The following additions or changes have been made to diagnostic output,
342 including warnings and fatal error messages.  For the complete list of
343 diagnostic messages, see L<perldiag>.
344
345 XXX New or changed warnings emitted by the core's C<C> code go here. Also
346 include any changes in L<perldiag> that reconcile it to the C<C> code.
347
348 [ Within each section, list entries as a =item entry ]
349
350 =head2 New Diagnostics
351
352 XXX Newly added diagnostic messages go here
353
354 =over 4
355
356 =item *
357
358 XXX
359
360 =back
361
362 =head2 Changes to Existing Diagnostics
363
364 XXX Changes (i.e. rewording) of diagnostic messages go here
365
366 =over 4
367
368 =item *
369
370 XXX
371
372 =back
373
374 =head1 Utility Changes
375
376 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
377 here. Most of these are built within the directories F<utils> and F<x2p>.
378
379 [ List utility changes as a =head3 entry for each utility and =item
380 entries for each change
381 Use L<XXX> with program names to get proper documentation linking. ]
382
383 =head3 L<perlbug>
384
385 =over 4
386
387 =item *
388
389 C<perlbug> did not previously generate a From: header, potentially
390 resulting in dropped mail. Now it does include that header.
391
392 =back
393
394 =head1 Configuration and Compilation
395
396 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
397 go here.  Any other changes to the Perl build process should be listed here.
398 However, any platform-specific changes should be listed in the
399 L</Platform Support> section, instead.
400
401 [ List changes as a =item entry ].
402
403 =over 4
404
405 =item *
406
407 XXX
408
409 =back
410
411 =head1 Testing
412
413 XXX Any significant changes to the testing of a freshly built perl should be
414 listed here.  Changes which create B<new> files in F<t/> go here as do any
415 large changes to the testing harness (e.g. when parallel testing was added).
416 Changes to existing files in F<t/> aren't worth summarising, although the bugs
417 that they represent may be covered elsewhere.
418
419 [ List each test improvement as a =item entry ]
420
421 =over 4
422
423 =item *
424
425 A new test script, C<t/porting/filenames.t>, makes sure that filenames and
426 paths are reasonably portable.
427
428 =back
429
430 =head1 Platform Support
431
432 XXX Any changes to platform support should be listed in the sections below.
433
434 [ Within the sections, list each platform as a =item entry with specific
435 changes as paragraphs below it. ]
436
437 =head2 New Platforms
438
439 XXX List any platforms that this version of perl compiles on, that previous
440 versions did not. These will either be enabled by new files in the F<hints/>
441 directories, or new subdirectories and F<README> files at the top level of the
442 source tree.
443
444 =over 4
445
446 =item XXX-some-platform
447
448 XXX
449
450 =back
451
452 =head2 Discontinued Platforms
453
454 XXX List any platforms that this version of perl no longer compiles on.
455
456 =over 4
457
458 =item Apollo DomainOS
459
460 The last vestiges of support for this platform have been excised from the
461 Perl distribution. It was officially discontinued in version 5.12.0. It had
462 not worked for years before that.
463
464 =back
465
466 =head2 Platform-Specific Notes
467
468 XXX List any changes for specific platforms. This could include configuration
469 and compilation changes or changes in portability/compatibility.  However,
470 changes within modules for platforms should generally be listed in the
471 L</Modules and Pragmata> section.
472
473 =over 4
474
475 =item Solaris
476
477 DTrace is now supported on Solaris. There used to be build failures, but
478 these have been fixed
479 L<[perl #73630]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=73630>.
480
481 =back
482
483 =head1 Internal Changes
484
485 XXX Changes which affect the interface available to C<XS> code go here.
486 Other significant internal changes for future core maintainers should
487 be noted as well.
488
489 [ List each test improvement as a =item entry ]
490
491 =over 4
492
493 =item *
494
495 The opcode bodies for C<chop> and C<chomp> and for C<schop> and C<schomp> have
496 been merged. The implementation functions C<Perl_do_chop()> and
497 C<Perl_do_chomp()>, never part of the public API, have been merged and moved to
498 a static function in F<pp.c>. This shrinks the perl binary slightly, and should
499 not affect any code outside the core (unless it is relying on the order of side
500 effects when C<chomp> is passed a I<list> of values).
501
502 =item *
503
504 Some of the flags parameters to the uvuni_to_utf8_flags() and
505 utf8n_to_uvuni() have changed.  This is a result of Perl now allowing
506 internal storage and manipulation of code points that are problematic
507 in some situations.  Hence, the default actions for these functions has
508 been complemented to allow these code points.  The new flags are
509 documented in L<perlapi>.  Code that requires the problematic code
510 points to be rejected needs to change to use these flags.  Some flag
511 names are retained for backward source compatibility, though they do
512 nothing, as they are now the default.  However the flags
513 C<UNICODE_ALLOW_FDD0>, C<UNICODE_ALLOW_FFFF>, C<UNICODE_ILLEGAL>, and
514 C<UNICODE_IS_ILLEGAL> have been removed, as they stem from a
515 fundamentally broken model of how the Unicode non-character code points
516 should be handled, which is now described in
517 L<perlunicode/Non-character code points>.  See also L</Selected Bug Fixes>.
518
519 =item *
520
521 Certain shared flags in the C<pmop.op_pmflags> and C<regexp.extflags>
522 structures have been removed.  These are: C<Rxf_Pmf_LOCALE>,
523 C<Rxf_Pmf_UNICODE>, and C<PMf_LOCALE>.  Instead there are encodes and
524 three static in-line functions for accessing the information:
525 C<get_regex_charset()>, C<set_regex_charset()>, and C<get_regex_charset_name()>,
526 which are defined in the places where the orginal flags were.
527
528 =item *
529
530 A new option has been added to C<pv_escape> to dump all characters above
531 ASCII in hexadecimal. Before, one could get all characters as hexadecimal
532 or the Latin1 non-ASCII as octal
533
534 =back
535
536 =head1 Selected Bug Fixes
537
538 XXX Important bug fixes in the core language are summarised here.
539 Bug fixes in files in F<ext/> and F<lib/> are best summarised in
540 L</Modules and Pragmata>.
541
542 [ List each fix as a =item entry ]
543
544 =over 4
545
546 =item *
547
548 The handling of Unicode non-characters has changed.
549 Previously they were mostly considered illegal, except that only one of
550 the 66 of them was known about in places.  The Unicode standard
551 considers them legal, but forbids the "open interchange" of them.
552 This is part of the change to allow the internal use of any code point
553 (see L</Core Enhancements>).  Together, these changes resolve
554 L<# 38722|https://rt.perl.org/rt3/Ticket/Display.html?id=38722>,
555 L<# 51918|http://rt.perl.org/rt3/Ticket/Display.html?id=51918>,
556 L<# 51936|http://rt.perl.org/rt3/Ticket/Display.html?id=51936>,
557 L<# 63446|http://rt.perl.org/rt3/Ticket/Display.html?id=63446>
558
559 =item *
560
561 Sometimes magic (ties, tainted, etc.) attached to variables could cause an
562 object to last longer than it should, or cause a crash if a tied variable
563 were freed from within a tie method. These have been fixed
564 L<[perl #81230]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=81230>.
565
566 =item *
567
568 Most I/O functions were not warning for unopened handles unless the
569 'closed' and 'unopened' warnings categories were both enabled. Now only
570 C<use warnings 'unopened'> is necessary to trigger these warnings (as was
571 always meant to be the case.
572
573 =item *
574
575 C<< <expr> >> always respects overloading now if the expression is
576 overloaded.
577
578 Due to the way that '<> as glob' was parsed differently from
579 '<> as filehandle' from 5.6 onwards, something like C<< <$foo[0]> >> did
580 not handle overloading, even if C<$foo[0]> was an overloaded object. This
581 was contrary to the documentation for overload, and meant that C<< <> >>
582 could not be used as a general overloaded iterator operator.
583
584 =item *
585
586 Destructors on objects were not called during global destruction on objects
587 that were not referenced by any scalars. This could happen if an array
588 element were blessed (e.g., C<bless \$a[0]>) or if a closure referenced a
589 blessed variable (C<bless \my @a; sub foo { @a }>).
590
591 Now there is an extra pass during global destruction to fire destructors on
592 any objects that might be left after the usual passes that check for
593 objects referenced by scalars
594 L<[perl #36347]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=36347>.
595
596 =back
597
598 =head1 Known Problems
599
600 XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
601 tests that had to be C<TODO>ed for the release would be noted here, unless
602 they were specific to a particular platform (see below).
603
604 This is a list of some significant unfixed bugs, which are regressions
605 from either 5.XXX.XXX or 5.XXX.XXX.
606
607 [ List each fix as a =item entry ]
608
609 =over 4
610
611 =item *
612
613 The fix for [perl #81230] causes test failures for C<Tk> version 804.029.
614 This is still being investigated.
615
616 =back
617
618 =head1 Obituary
619
620 XXX If any significant core contributor has died, we've added a short obituary
621 here.
622
623 =head1 Acknowledgements
624
625 XXX The list of people to thank goes here.
626
627 =head1 Reporting Bugs
628
629 If you find what you think is a bug, you might check the articles
630 recently posted to the comp.lang.perl.misc newsgroup and the perl
631 bug database at http://rt.perl.org/perlbug/ .  There may also be
632 information at http://www.perl.org/ , the Perl Home Page.
633
634 If you believe you have an unreported bug, please run the L<perlbug>
635 program included with your release.  Be sure to trim your bug down
636 to a tiny but sufficient test case.  Your bug report, along with the
637 output of C<perl -V>, will be sent off to perlbug@perl.org to be
638 analysed by the Perl porting team.
639
640 If the bug you are reporting has security implications, which make it
641 inappropriate to send to a publicly archived mailing list, then please send
642 it to perl5-security-report@perl.org. This points to a closed subscription
643 unarchived mailing list, which includes all the core committers, who be able
644 to help assess the impact of issues, figure out a resolution, and help
645 co-ordinate the release of patches to mitigate or fix the problem across all
646 platforms on which Perl is supported. Please only use this address for
647 security issues in the Perl core, not for modules independently
648 distributed on CPAN.
649
650 =head1 SEE ALSO
651
652 The F<Changes> file for an explanation of how to view exhaustive details
653 on what changed.
654
655 The F<INSTALL> file for how to build Perl.
656
657 The F<README> file for general stuff.
658
659 The F<Artistic> and F<Copying> files for copyright information.
660
661 =cut
662
663 =for later
664
665 Below, you'll find a cut-down version of the git log from 5.13.8 to 1b9043bb.
666 Jesse went through and took a first pass at cutting out non-changelog items. He may have been over-(or under-)zealous.
667
668 It hasn't yet been deduped with the entries that _are_ in the perldelta.
669
670
671     Major spell-checking pass throughout the core
672
673     Remove references to compat3.sym and interp.sym, deleted over 10 years ago.
674
675     Remove Mac OS classic code from numerous places throughout the core
676
677 commit 7fe50b8b8a4dc38fc341e3b403545aaca937f50e
678 Author: Leon Timmermans <fawaka@gmail.com>
679 Date:   Tue Jan 18 16:40:07 2011 +0100
680
681     Also unblock signal handlers throwing an exception
682
683     Also handle and test the edge case of a signal handler throwing an
684     exception
685
686
687
688
689 Numberous POD warnings fixed
690
691
692
693     Update Unicode-Collate to CPAN version 0.71
694
695
696 internals
697
698
699     regexec.c: Remove break statements from macros
700
701     This is so future coders won't be tempted to rely on them.
702
703     regexec.c: Don't rely on break stmts in macros
704
705     It is safer and clearer to have the break statement in each case statement at
706     the source level
707
708 commit b57e41186b2ceb48bef4f0588dcd19e105cc8a38
709 Author: Karl Williamson <public@khwilliamson.com>
710 Date:   Tue Jan 18 15:03:41 2011 -0700
711
712     regcomp: Disallow multi-char folds in lookbehind
713
714     The addition of the ANYOFV regnode to treat multi-char folds in a bracketed
715     character class has exposed a bug, in which those classes have long been able
716     to be varying length (due to the multi-char fold), but the compiler wasn't
717     aware of it.  Now it is, and hence won't allow those which have multi-char
718     folds to be part of a lookbehind pattern, which requires a constant length.
719
720     This patch disallows multi-char folds in a lookbehind bracketed character
721     class.
722
723 Author: Nicholas Clark <nick@ccl4.org>
724 Date:   Tue Jan 18 16:14:43 2011 +0000
725
726     Remove Mac OS classic code from scripts in utils/
727
728
729     Convert DosGlob.t to Test::More.
730
731 commit d6dc8a6dc95226ddff7719cd1e0bd053c4e5725e
732 Author: Nicholas Clark <nick@ccl4.org>
733 Date:   Tue Jan 18 13:08:11 2011 +0000
734
735     Remove Mac OS Classic docs from DirHandle and File::{Copy,DosGlob,Find}
736
737     The documentation for the different behaviour on Mac OS Classic was not
738     removed when the relevant code was removed in 862f843bac3434c2. That commit
739     also remove all callers to several Mac OS classic support functions, but not
740     the functions themselves. Rectify this.
741
742 commit 8254cbf193c939338449097a80163197fc755150
743 Author: Nicholas Clark <nick@ccl4.org>
744 Date:   Tue Jan 18 11:10:41 2011 +0000
745
746     Build perltoc.pod with pragmata sorted by name.
747
748     Previously they were actually sorted by full pathname, which isn't logical.
749     I presume that this is an artefact of all pragmata being in lib/ when
750     pod/buildtoc was originally written.
751
752 commit 1d45ec279e4e105512a2803e3d0bd974a151a0f6
753 Author: Father Chrysostomos <sprout@cpan.org>
754 Date:   Mon Jan 17 22:32:52 2011 -0800
755
756     perlcall: Fixes for various grammatical errors
757
758 commit faaf68361923e4bb95d1eb919bc724a0dcc5a4ce
759 Author: Leon Timmermans <fawaka@gmail.com>
760 Date:   Mon Jan 17 17:59:33 2011 +0100
761
762     Clarify limitation in safe signals.
763
764 commit 0c1bf4c7d433bb0ad80bfe5511b1301db32b7b95
765 Author: Leon Timmermans <fawaka@gmail.com>
766 Date:   Mon Jan 17 16:29:11 2011 +0100
767
768     Added tests for conditional unblocking
769
770 commit 555344425f04e96a72e4d29eab96b34bff8f96ae
771 Author: Leon Timmermans <fawaka@gmail.com>
772 Date:   Thu Jan 13 18:30:29 2011 +0100
773
774     Conditionally unblock after signal handler[#82040]
775
776     Only unblock signal after a safe-signal handler is executed if that signal was
777     also unblocked before the handler.
778 commit 435aa301127ed481169903cb35187bde1ea44928
779 Author: David Golden <dagolden@cpan.org>
780 Date:   Mon Jan 17 20:39:14 2011 -0500
781
782     Update HTTP::Tiny to CPAN version 0.009
783
784 commit 78cd53afbb1923bf0a68f361040ad8fe93a7d0d5
785 Author: David Mitchell <davem@iabyn.com>
786 Date:   Tue Jan 18 00:46:30 2011 +0000
787
788     vastly speed up t/porting/diag.t
789
790     This used to take about 3 minutes of CPU. Reduce this to around
791     6 seconds (!!) by coalescing and pre-compiling various patterns
792     that get applied to nearly every line of every source file.
793
794 commit cfaf538b6276c6a8ef80ff6c66e106c6a4f1caaa
795 Author: Karl Williamson <public@khwilliamson.com>
796 Date:   Mon Jan 17 08:58:53 2011 -0700
797
798     Add /a regex modifier
799
800     This restricts certain constructs, like \w, to matching in the ASCII range only.
801
802 commit 56ae17b45d2513d65903d13468e8f6a16b20f916
803 Author: Karl Williamson <public@khwilliamson.com>
804 Date:   Sun Jan 16 17:41:30 2011 -0700
805
806     regcomp.c: Convert \d \D to a switch{}
807
808 commit e66820012d29519f903709f005e56a2c334ae183
809 Author: Tony Cook <tony@develop-help.com>
810 Date:   Mon Jan 17 19:22:08 2011 +1100
811
812     test_prep now depends on the pods needed for porting/buildtoc.t
813
814     In the other makefiles test_prep (or test-prep) depends on all, so
815     they shouldn't need updating.
816
817
818 commit a52237f3a547cdefddd4c4be6224bfdf67c84263
819 Author: David Golden <dagolden@cpan.org>
820 Date:   Sun Jan 16 21:32:21 2011 -0500
821
822     Update CPAN to CPAN version 1.94_63
823
824 commit 63ac0dadb1aafcf0c171d3c1422c1923b611b2fc
825 Author: Karl Williamson <public@khwilliamson.com>
826 Date:   Tue Dec 28 16:13:49 2010 -0700
827
828     regex: Use BOUNDU regnodes
829
830     This refactors one area in regexec.c to use BOUNDU, NBOUNDU for
831     efficiciency, and easier adding of the future BOUNDA.
832
833 commit 980866de2cf8ecdb4bb72b7f9294763057008f50
834 Author: Karl Williamson <public@khwilliamson.com>
835 Date:   Mon Dec 27 12:04:58 2010 -0700
836
837     regex: Separate nodes for Unicode semantics \s \w
838
839     This patch converts the \s, \w and complements Unicode semantics to
840     instead of using the flags field of their nodes to instead use separate
841     nodes.  This gains some efficiency, especially useful in tight loops and
842     backtracking of regexec.c, and prepares the way for easily adding other
843     semantic variations, such as /a.
844
845     It refactors the CCC_TRY... macros.  I tried to break this piece up into
846     smaller chunks, but found it much easier to get to this in one step.
847     Further patches will do some more refactoring of these.
848
849     As part of the CCC_TRY macro refactoring, the lines that include the
850     test if (! nextchr) are changed to just look for the end-of-string by
851     position instead of it being NUL.  In locales, it could be (however
852     unlikely), that NUL is a real alphabetic, digit, or space character.
853 commit 50e911483ad5c29e25c54c9f81f92df974dd2cc0
854 Author: Karl Williamson <public@khwilliamson.com>
855 Date:   Sun Dec 26 10:35:58 2010 -0700
856
857     Change name of /d to DEPENDS
858
859     I much prefer David Golden's name for /d whose meaning 'depends' on
860     circumstances, instead of 'dual' meaning it could be one or another.
861     Change it before this gets out in a stable release, and we're stuck with
862     the old name.
863
864 commit 73134a2eb4055c76fe5b154da95e09118f716fd8
865 Author: Karl Williamson <public@khwilliamson.com>
866 Date:   Sun Dec 26 10:35:20 2010 -0700
867
868     CH] Change usage of regex/op common to common names
869
870     This patch changes the core functions to use the common names for the
871     fields that are shared between op.c and regcomp.c, just for consistency
872     of using one name throughout the core for the same thing.
873
874     A grep of cpan shows that both names are used in various modules; so
875     both names must be retained.
876
877 commit a3ab329f3fc9494e700f51c38cef42021c130b6e
878 Author: David Golden <dagolden@cpan.org>
879 Date:   Sun Jan 16 20:57:02 2011 -0500
880
881     Add HTTP::Tiny as a dual-life core module
882
883     HTTP::Tiny has been added as a dual-life module.  It is a very
884     small, simple HTTP/1.1 client designed for simple GET requests and file
885     mirroring.  It has has been added to enable CPAN.pm and CPANPLUS to
886     "bootstrap" HTTP access to CPAN using pure Perl without relying on external
887     binaries like F<curl> or F<wget>.
888
889 commit 211cc5012284f4bd900fcaa630adbcac69ca6112
890 Author: Chris 'BinGOs' Williams <chris@bingosnet.co.uk>
891 Date:   Sun Jan 16 23:23:03 2011 +0000
892
893     Update Unicode-Collate to CPAN version 0.70 and enable XS version
894
895 commit a62b1201c068dc7b099bcb7182e188c4d2fbf34c
896 Author: Karl Williamson <public@khwilliamson.com>
897 Date:   Sun Dec 26 10:31:16 2010 -0700
898
899     Use multi-bit field for regex character set
900
901     The /d, /l, and /u regex modifiers are mutually exclusive.  This patch
902     changes the field that stores the character set to use more than one bit
903     with an enum determining which one.  This data structure more
904     closely follows the semantics of their being mutually exclusive, and
905     conserves bits as well, and is better expandable.
906
907     A small API is added to set and query the bit field.
908
909     This patch is not .xs source backwards compatible.  A handful of cpan
910     programs are affected.
911
912
913 tools
914
915     Significant updates to buildtoc
916
917     Update Unicode-Normalize to CPAN version 1.10
918
919 commit 11454c594f22abc5945e69a46fc965363dbf326e
920 Author: Karl Williamson <public@khwilliamson.com>
921 Date:   Sat Jan 15 13:42:58 2011 -0700
922
923     Fix \xa0 matching both [\s] [\S], et.al.
924
925     This bug stemmed from Latin1 characters not matching any (non-complemented)
926     character class in /d semantics when the target string is no utf8; but having
927     unicode semantics when it isn't.  The solution here is to add a special flag.
928
929     There were several tests that relied on the broken behavior, specifically they
930     tested that \xff isn't a printable word character even in utf8.  I changed the
931     deparse test to instead use a non-printable code point, and I changed the ones
932     in re_tests to be TODOs, and will change them back using /a when that is
933     shortly added.
934
935
936 SECURITY
937
938     restrict \p{IsUserDefined} to In\w+ and In\w+
939
940     In L<perlunicode/"User-Defined Character Properties">, it says you can
941     create custom properties by defining subroutines whose names begin with
942     "In" or "Is". However, perl doesn't actually enforce that naming
943     restriction, so \p{foo::bar} will call foo::Bar() if it exists.
944
945     This commit finally enforces this convention. Note that this broke a
946     number of existing tests for properties, since they didn't always use an
947     Is/In prefix.
948
949 TESTING
950
951     test that perl.pod, pod.lst, MANIFEST and the file system are consistent
952
953 commit f56b6394f7cf57733135f56e4e4ac49abe9ac9cc
954 Author: Karl Williamson <public@khwilliamson.com>
955 Date:   Thu Jan 13 22:36:36 2011 -0700
956
957     regex: Use ANYOFV
958
959     This patch restructures the regex ANYOF code to generate ANYOFV nodes instead
960     when there is a possibility that it could match more than one character.   Note
961     that this doesn't affect the optimizer, as it essentially ignores things that
962     fit into this category.  (But it means that the optimizer will no longer reject
963     these when it shouldn't have.)
964
965     The handling of the LATIN SHARP s is modified to correspond with this new node
966     type.
967
968     The initial handling of ANYOFV is placed in regexec.c.  More analysis will come
969     on that.  But there was significant change to the part that handles matching
970     multi-char strings.  This has long been buggy, with it previously comparing a
971     folded-version on one side with a non-folded version on the other.
972
973     This patch fixes about 60% of the problems that my undelivered test suite gives
974     for multi-char folds.  But there are still 17K test failures left, so I'm still
975     not delivering that.  The TODOs that this fixes will be cleaned up in a later commit
976
977
978     Update Pod-LaTeX to CPAN version 0.59
979
980 commit 680818c0361b180bb6f09d4bb11c4d5cd467fe62
981 Author: Nicholas Clark <nick@ccl4.org>
982 Date:   Thu Jan 13 16:24:52 2011 +0000
983
984     ithread_create() was relying on the stack not moving. Fix this.
985
986     4cf5eae5e58faebb changed S_ithread_create() to avoid creating an AV, by
987     passing the thread creation arguments as pointers to a block of memory
988     holding SVs. Unfortunately, this inadvertently introduced a subtle bug,
989     because the block of memory is on the Perl stack, which can move as a side
990     effect of being reallocated to extend it. Hence pass in the offset on the
991     stack instead, read the current value of the relevant interpreter's stack
992     at the point of access, and copy all the SVs away before making any further
993     calls which might cause reallocation.
994
995     Update to Win32-0.44 from CPAN
996     Update IO-Compress to CPAN version 2.033
997     Update Compress-Raw-Zlib to CPAN version 2.033
998     Update Compress-Raw-Bzip2 to CPAN version 2.033
999     Update DB_File to CPAN version 1.821
1000
1001 DIAGNOSTICS
1002     Correct the "unimplemented" message for get{host,net,proto,serv}ent aliases.
1003
1004     Previously, if all of gethost{byaddr,byname,ent} were unimplemented on a
1005     platform, they would all return 'Unsupported socket function "gethostent"
1006     called', with the analogous results for getnet{byaddr,byname,ent},
1007     getproto{byname,bynumber,ent} and getserv{byname,byport,ent}. This bug was
1008     introduced by change af51a00e97d5c559 - prior to this, all 12 functions would
1009     report their own name when unimplemented.
1010
1011 commit 9ae3ac1a84c63b0eadf5baf47ce7096482280f32
1012 Author: Karl Williamson <public@khwilliamson.com>
1013 Date:   Sun Jan 9 15:33:28 2011 -0700
1014
1015     Add warnings for use of problematic code points
1016
1017     The non-Unicode code points have no Unicode semantics, so applying operations
1018     such as casing on them warns.
1019
1020     This patch also includes the changes to test the warnings added by recent
1021     commits for handling the surrogates and above-Unicode code points
1022
1023
1024 commit 7627e6d0fe772ac90fce9e03fea273109521e261
1025 Author: Nicholas Clark <nick@ccl4.org>
1026 Date:   Sat Jan 8 15:56:22 2011 +0000
1027
1028     Generate "Unsupported socket function" stubs using PL_ppaddr.
1029
1030     Instead of having each socket op conditionally compile as either the
1031     implementation or a DIE() depending on #HAS_SOCKET
1032
1033     1: remove the conditional code from the ops themselves
1034     2: only compile the ops if HAS_SOCKET is defined
1035     3: general conditional code for the intialisation of PL_ppaddr - as appropriate
1036        either the ops, or Perl_unimplemented_op
1037     4: Amend Perl_unimplemented_op to generate the appropriate DIE() for socket
1038        ops (ie not the "panic"... message)
1039
1040     Whilst this complicates the support code in regen/opcode.pl, it's already a
1041     net saving of 5 lines in the C code.
1042
1043 commit 897d398936dd2fc088a265fba2a7b62fa97ed458
1044 Author: Nicholas Clark <nick@ccl4.org>
1045 Date:   Sun Jan 9 10:54:58 2011 +0000
1046
1047     Generate pp_* prototypes in pp_proto.h, and remove pp.sym
1048
1049     Eliminate the #define pp_foo Perl_pp_foo(pTHX) macros, and update the 13
1050     locations that relied on them.
1051
1052     regen/opcode.pl now generates prototypes for the PP functions directly, into
1053     pp_proto.h. It no longer writes pp.sym, and regen/embed.pl no longer reads
1054     this, removing the only ordering dependency in the regen scripts. opcode.pl
1055     is now responsible for prototypes for pp_* functions. (embed.pl remains
1056     responsible for ck_* functions, reading from regen/opcodes)
1057
1058 commit a4a4c9e2c086dd5f7b7b05789161614dbbe8385b
1059 Author: Karl Williamson <public@khwilliamson.com>
1060 Date:   Sat Jan 8 14:44:05 2011 -0700
1061
1062     perldiag.pod: Add missing message severities
1063
1064
1065 TESTING
1066     add test for split without a pattern
1067
1068     Add some while tests, about the context of the last statement in a block and about reinitializaiton of lexical variables.
1069
1070     modernise t/cmd/while.t
1071
1072     Add t/base/while.t testing the basic of a while loop with minimal dependencies.  Change t/cmd/while.t into a non-base test using "test.pl".
1073
1074 commit b86b68b4eefa1069dabc8ea0401d712b24a67857
1075 Author: Jesse Vincent <jesse@bestpractical.com>
1076 Date:   Sat Jan 8 00:14:29 2011 +0800
1077
1078     Update the policy on doc patches to maint
1079
1080
1081 commit 0b5e625bc99f5cb78697faf03b297b6cacadf60b
1082 Author: Reini Urban <rurban@x-ray.at>
1083 Date:   Tue Sep 14 18:04:22 2010 +0200
1084
1085     build man pages on cygwin too
1086
1087 commit 172830635ea7813c85e51e4ae2b4bed56ddbab83
1088 Author: Reini Urban <rurban@x-ray.at>
1089 Date:   Tue Sep 14 17:54:15 2010 +0200
1090
1091     Improve cygwin rebase behaviour
1092
1093     If a dll is updated on cygwin reuse the old imagebase address.
1094     This solves most rebase errors, esp when updating on core dll's.
1095     See http://www.tishler.net/jason/software/rebase/rebase-2.4.2.README
1096
1097
1098 Platforms
1099
1100 commit cc7e77fd5a0ee9f1498e54dddf566117da62754b
1101 Author: Reini Urban <rurban@x-ray.at>
1102 Date:   Tue Sep 14 17:48:32 2010 +0200
1103
1104     CYG14 Dynaloader without USEIMPORTLIB, and search cyg prefix
1105
1106     part1: Support the standard cyg dll prefix, which is e.g. needed for FFI's.
1107     Ctypes and C::DynaLib use DynaLoader to find dlls.
1108
1109     part2: With -DUSEIMPORTLIB DynaLoader symbols link against the prefixed
1110     symbol names for the .dll.a importlib, but we need to link against the
1111     symbols directly. We don't link Dynaloader against libperl.dll.a.
1112
1113     Otherwise:
1114     $ g++-4 -o cygperl5_13_4.dll --shared perlsrc.o cygwin.o  DynaLoader.o -ldl -lcrypt
1115       Creating library file: libperl.dll.a
1116       DynaLoader.o: In function `XS_DynaLoader_dl_undef_symbols':
1117       ext/DynaLoader/DynaLoader.c:346: undefined reference to `__imp__PL_stack_sp'
1118       ext/DynaLoader/DynaLoader.c:346: undefined reference to `__imp__PL_markstack_ptr'
1119       ext/DynaLoader/DynaLoader.c:346: undefined reference to `__imp__PL_stack_base'
1120
1121 commit c0a149a90b8b6e1c18de7294ca974265fb559cf5
1122 Author: Reini Urban <rurban@x-ray.at>
1123 Date:   Tue Sep 14 18:06:38 2010 +0200
1124
1125     Update cygwin hints
1126     do not use usemymalloc (double size + slow)
1127     remove deprecated libcygipc info
1128     remove overlarge stack size
1129
1130 commit 2831a86cee065b53b74fd19ddcc6a4257484646d
1131 Author: Zsb√°n Ambrus <ambrus@math.bme.hu>
1132 Date:   Sun Jan 2 20:25:55 2011 -0800
1133
1134     [perl #81032] Overhaul Porting/epigraphs.pod
1135
1136     This patch makes multiple changes to Porting/epigraphs.pod and
1137     pod/perlhist.pod.
1138
1139     For those that don't know, Porting/epigraphs.pod is a new document that
1140     collects the quotes (chosen by Pumpkins) in perl release announcements.
1141
1142     The changes are the following.
1143
1144     1. Add a link pointing to each release announcement in the mailing
1145     list archives.  These are from ysth's list, the source from which
1146     Porting/epigraphs.pod was originally compiled, but they weren't in
1147     Porting/epigraphs.pod so far.
1148     2. Reorder Porting/epigraphs.pod chronologically, because I believe
1149     that makes more sense -- pod/perlhist.pod is still sorted by version numbers.
1150     3. Incidentally, some missing releases are added to pod/perlhist.pod too.
1151     4. Fix a mistake where Porting/epigraphs.pod gives the wrong version number.
1152     5. Add some epigraphs that appear in ysth's list but not in
1153     Porting/epigraphs.pod.
1154     6. I did some research in perl history before the part that ysth's list
1155     covers, and added older perl announcements I found.  This work is not
1156     complete: I stopped somewhere in 2000.
1157
1158 commit eccda089fc3dcaafc1ae0aac6b428f799231b824
1159 Author: Paul "LeoNerd" Evans <leonerd@leonerd.org.uk>
1160 Date:   Mon Dec 13 17:50:06 2010 +0000
1161
1162     Implement Socket::getaddrinfo() and Socket::getnameinfo(), with related constants
1163
1164 commit edcf105d70e5423fd928c776e086fe31a4a543f4
1165 Author: Jesse Vincent <jesse@bestpractical.com>
1166 Date:   Sat Jan 1 18:46:20 2011 +0800
1167
1168     Document 'test_porting' and start a section on how committing to blead
1169
1170 commit cce04bebd8af026c2a6731940ddb895d3c1fc3e4
1171 Author: David Golden <dagolden@cpan.org>
1172 Date:   Mon Dec 13 17:36:33 2010 -0500
1173
1174     Reorganize perlhack.pod
1175
1176     Following on an IRC conversation, I've attempted to reorganize
1177     perlhack for greater clarity.  I have only cut and paste blocks
1178     of text and amended section titles and levels.  (I have not addressed
1179     any of the numerous factual issues which remain.)
1180
1181     The resulting guide should be clearer for those trying to skim the
1182     table of contents to understand what is covered in perlhack and
1183     whether it is worth an in-depth read.
1184
1185     I see this change as the first step towards future improvements.
1186
1187 =cut