5 [ this is a template for a new perldelta file. Any text flagged as
6 XXX needs to be processed before release. ]
8 perldelta - what is new for perl v5.13.9
12 This document describes differences between the 5.13.8 release and
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
21 XXX Any important notices here
23 =head1 Core Enhancements
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.
29 [ List each enhancement as a =head2 entry ]
31 =head2 New regular expression modifier C</a>
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.
51 =head2 Any unsigned value can be encoded as a character
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".
68 =head2 Regular expression debugging output improvement
70 Regular expression debugging output (turned on by C<use re 'debug';>) now
71 uses hexadecimal when escaping non-ASCII characters, instead of octal.
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.
79 [ List each security issue as a =head2 entry ]
81 =head1 Incompatible Changes
83 XXX For a release on a stable branch, this section aspires to be:
85 There are no changes intentionally incompatible with 5.XXX.XXX. If any
86 exist, they are bugs and reports are welcome.
88 [ List each incompatible change as a =head2 entry ]
92 XXX Any deprecated features, syntax, modules etc. should be listed here.
93 In particular, deprecated modules should be listed here even if they are
94 listed as an updated module in the L</Modules and Pragmata> section.
96 [ List each deprecation as a =head2 entry ]
98 =head1 Performance Enhancements
100 XXX Changes which enhance performance without changing behaviour go here. There
101 may well be none in a stable release.
103 [ List each enhancement as a =item entry ]
113 =head1 Modules and Pragmata
115 XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
116 go here. If Module::CoreList is updated, generate an initial draft of the
117 following sections using F<Porting/corelist-perldelta.pl>, which prints stub
118 entries to STDOUT. Results can be pasted in place of the '=head2' entries
119 below. A paragraph summary for important changes should then be added by hand.
120 In an ideal world, dual-life modules would have a F<Changes> file that could be
123 [ Within each section, list entries as a =item entry ]
125 =head2 New Modules and Pragmata
131 L<CPAN::Meta::YAML> 0.003 has been added as a dual-life module. It supports a
132 subset of YAML sufficient for reading and writing META.yml and MYMETA.yml files
133 included with CPAN distributions or generated by the module installation
134 toolchain. It should not be used for any other general YAML parsing or
139 L<HTTP::Tiny> 0.009 has been added as a dual-life module. It is a very
140 small, simple HTTP/1.1 client designed for simple GET requests and file
141 mirroring. It has has been added to enable CPAN.pm and CPANPLUS to
142 "bootstrap" HTTP access to CPAN using pure Perl without relying on external
143 binaries like F<curl> or F<wget>.
147 L<Module::Metadata> 1.000003 has been added as a dual-life module. It gathers
148 package and POD information from Perl module files. It is a standalone module
149 based on Module::Build::ModuleInfo for use by other module installation
150 toolchain components. Module::Build::ModuleInfo has been deprecated in
151 favor of this module instead.
155 L<Perl::OSType> 1.002 has been added as a dual-life module. It maps Perl
156 operating system names (e.g. 'dragonfly' or 'MSWin32') to more generic types
157 with standardized names (e.g. "Unix" or "Windows"). It has been refactored
158 out of Module::Build and ExtUtils::CBuilder and consolidates such mappings into
159 a single location for easier maintenance.
163 =head2 Updated Modules and Pragmata
169 C<Archive::Extract> has been upgraded from version 0.46 to 0.48
173 C<Archive::Tar> has been upgraded from version 1.74 to 1.76
177 C<CGI> has been upgraded from version 3.50 to 3.51
181 C<Compress::Raw::Bzip2> has been upgraded from version 2.031 to 2.033
185 C<Compress::Raw::Zlib> has been upgraded from version 2.030 to 2.033
189 C<CPAN> has been upgraded from version 1.94_62 to 1.94_63
193 C<CPANPLUS> has been upgraded from version 0.9010 to 0.9011
197 C<CPANPLUS::Dist::Build> has been upgraded from version 0.50 to 0.52
201 C<DB_File> has been upgraded from version 1.820 to 1.821
205 C<Encode> has been upgraded from version 2.40 to 2.42.
206 Now, all 66 Unicode non-characters are treated the same way U+FFFF has
207 always been treated; if it was disallowed, all 66 are disallowed; if it
212 C<File::Fetch> has been upgraded from version 0.28 to 0.32
216 C<IO::Compress> has been upgraded from version 2.030 to 2.033
220 C<IPC::Cmd> has been upgraded from version 0.66 to 0.68
224 C<Log::Message> has been upgraded from version 0.02 to 0.04
228 C<Log::Message::Simple> has been upgraded from version 0.06 to 0.08
232 C<Module::Load::Conditional> has been upgraded from version 0.38 to 0.40
236 C<Object::Accessor> has been upgraded from version 0.36 to 0.38
240 C<Params::Check> has been upgraded from version 0.26 to 0.28
244 C<Pod::LaTeX> has been upgraded from version 0.58 to 0.59
248 C<Term::UI> has been upgraded from version 0.20 to 0.24
252 C<Thread::Queue> has been upgraded from version 2.11 to 2.12.
256 C<Thread::Semaphore> has been upgraded from version 2.11 to 2.12.
260 C<threads> has been upgraded from version 1.81_03 to 1.82
264 C<threads::shared> has been upgraded from version 1.35 to 1.36
268 C<Time::Local> has been upgraded from version 1.1901_01 to 1.2000.
272 C<Unicode::Normalize> has been upgraded from version 1.07 to 1.10
276 =head2 Removed Modules and Pragmata
288 XXX Changes to files in F<pod/> go here. Consider grouping entries by
289 file and be sure to link to the appropriate page, e.g. L<perlfunc>.
291 =head2 New Documentation
293 XXX Changes which create B<new> files in F<pod/> go here.
297 XXX Description of the purpose of the new file here
299 =head2 Changes to Existing Documentation
301 XXX Changes which significantly change existing files in F<pod/> go here.
302 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
311 It has now been documented that C<ord> returns 0 for an empty string.
317 The following additions or changes have been made to diagnostic output,
318 including warnings and fatal error messages. For the complete list of
319 diagnostic messages, see L<perldiag>.
321 XXX New or changed warnings emitted by the core's C<C> code go here. Also
322 include any changes in L<perldiag> that reconcile it to the C<C> code.
324 [ Within each section, list entries as a =item entry ]
326 =head2 New Diagnostics
328 XXX Newly added diagnostic messages go here
338 =head2 Changes to Existing Diagnostics
340 XXX Changes (i.e. rewording) of diagnostic messages go here
350 =head1 Utility Changes
352 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
353 here. Most of these are built within the directories F<utils> and F<x2p>.
355 [ List utility changes as a =head3 entry for each utility and =item
356 entries for each change
357 Use L<XXX> with program names to get proper documentation linking. ]
369 =head1 Configuration and Compilation
371 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
372 go here. Any other changes to the Perl build process should be listed here.
373 However, any platform-specific changes should be listed in the
374 L</Platform Support> section, instead.
376 [ List changes as a =item entry ].
388 XXX Any significant changes to the testing of a freshly built perl should be
389 listed here. Changes which create B<new> files in F<t/> go here as do any
390 large changes to the testing harness (e.g. when parallel testing was added).
391 Changes to existing files in F<t/> aren't worth summarising, although the bugs
392 that they represent may be covered elsewhere.
394 [ List each test improvement as a =item entry ]
404 =head1 Platform Support
406 XXX Any changes to platform support should be listed in the sections below.
408 [ Within the sections, list each platform as a =item entry with specific
409 changes as paragraphs below it. ]
413 XXX List any platforms that this version of perl compiles on, that previous
414 versions did not. These will either be enabled by new files in the F<hints/>
415 directories, or new subdirectories and F<README> files at the top level of the
420 =item XXX-some-platform
426 =head2 Discontinued Platforms
428 XXX List any platforms that this version of perl no longer compiles on.
432 =item XXX-some-platform
438 =head2 Platform-Specific Notes
440 XXX List any changes for specific platforms. This could include configuration
441 and compilation changes or changes in portability/compatibility. However,
442 changes within modules for platforms should generally be listed in the
443 L</Modules and Pragmata> section.
447 =item XXX-some-platform
453 =head1 Internal Changes
455 XXX Changes which affect the interface available to C<XS> code go here.
456 Other significant internal changes for future core maintainers should
459 [ List each test improvement as a =item entry ]
465 The opcode bodies for C<chop> and C<chomp> and for C<schop> and C<schomp> have
466 been merged. The implementation functions C<Perl_do_chop()> and
467 C<Perl_do_chomp()>, never part of the public API, have been merged and moved to
468 a static function in F<pp.c>. This shrinks the perl binary slightly, and should
469 not affect any code outside the core (unless it is relying on the order of side
470 effects when C<chomp> is passed a I<list> of values).
474 Some of the flags parameters to the uvuni_to_utf8_flags() and
475 utf8n_to_uvuni() have changed. This is a result of Perl now allowing
476 internal storage and manipulation of code points that are problematic
477 in some situations. Hence, the default actions for these functions has
478 been complemented to allow these code points. The new flags are
479 documented in L<perlapi>. Code that requires the problematic code
480 points to be rejected needs to change to use these flags. Some flag
481 names are retained for backward source compatibility, though they do
482 nothing, as they are now the default. However the flags
483 C<UNICODE_ALLOW_FDD0>, C<UNICODE_ALLOW_FFFF>, C<UNICODE_ILLEGAL>, and
484 C<UNICODE_IS_ILLEGAL> have been removed, as they stem from a
485 fundamentally broken model of how the Unicode non-character code points
486 should be handled, which is now described in
487 L<perlunicode/Non-character code points>. See also L</Selected Bug Fixes>.
491 Certain shared flags in the C<pmop.op_pmflags> and C<regexp.extflags>
492 structures have been removed. These are: C<Rxf_Pmf_LOCALE>,
493 C<Rxf_Pmf_UNICODE>, and C<PMf_LOCALE>. Instead there are encodes and
494 three static in-line functions for accessing the information:
495 C<get_regex_charset()>, C<set_regex_charset()>, and C<get_regex_charset_name()>,
496 which are defined in the places where the orginal flags were.
500 A new option has been added to C<pv_escape> to dump all characters above
501 ASCII in hexadecimal. Before, one could get all characters as hexadecimal
502 or the Latin1 non-ASCII as octal
506 =head1 Selected Bug Fixes
508 XXX Important bug fixes in the core language are summarised here.
509 Bug fixes in files in F<ext/> and F<lib/> are best summarised in
510 L</Modules and Pragmata>.
512 [ List each fix as a =item entry ]
518 The handling of Unicode non-characters has changed.
519 Previously they were mostly considered illegal, except that only one of
520 the 66 of them was known about in places. The Unicode standard
521 considers them legal, but forbids the "open interchange" of them.
522 This is part of the change to allow the internal use of any code point
523 (see L</Core Enhancements>). Together, these changes resolve
524 L<# 38722|https://rt.perl.org/rt3/Ticket/Display.html?id=38722>,
525 L<# 51918|http://rt.perl.org/rt3/Ticket/Display.html?id=51918>,
526 L<# 51936|http://rt.perl.org/rt3/Ticket/Display.html?id=51936>,
527 L<# 63446|http://rt.perl.org/rt3/Ticket/Display.html?id=63446>
531 =head1 Known Problems
533 XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
534 tests that had to be C<TODO>ed for the release would be noted here, unless
535 they were specific to a particular platform (see below).
537 This is a list of some significant unfixed bugs, which are regressions
538 from either 5.XXX.XXX or 5.XXX.XXX.
540 [ List each fix as a =item entry ]
552 XXX If any significant core contributor has died, we've added a short obituary
555 =head1 Acknowledgements
557 XXX The list of people to thank goes here.
559 =head1 Reporting Bugs
561 If you find what you think is a bug, you might check the articles
562 recently posted to the comp.lang.perl.misc newsgroup and the perl
563 bug database at http://rt.perl.org/perlbug/ . There may also be
564 information at http://www.perl.org/ , the Perl Home Page.
566 If you believe you have an unreported bug, please run the L<perlbug>
567 program included with your release. Be sure to trim your bug down
568 to a tiny but sufficient test case. Your bug report, along with the
569 output of C<perl -V>, will be sent off to perlbug@perl.org to be
570 analysed by the Perl porting team.
572 If the bug you are reporting has security implications, which make it
573 inappropriate to send to a publicly archived mailing list, then please send
574 it to perl5-security-report@perl.org. This points to a closed subscription
575 unarchived mailing list, which includes all the core committers, who be able
576 to help assess the impact of issues, figure out a resolution, and help
577 co-ordinate the release of patches to mitigate or fix the problem across all
578 platforms on which Perl is supported. Please only use this address for
579 security issues in the Perl core, not for modules independently
584 The F<Changes> file for an explanation of how to view exhaustive details
587 The F<INSTALL> file for how to build Perl.
589 The F<README> file for general stuff.
591 The F<Artistic> and F<Copying> files for copyright information.
597 Below, you'll find a cut-down version of the git log from 5.13.8 to 1b9043bb.
598 Jesse went through and took a first pass at cutting out non-changelog items. He may have been over-(or under-)zealous.
600 It hasn't yet been deduped with the entries that _are_ in the perldelta.
603 Major spell-checking pass throughout the core
605 Remove references to compat3.sym and interp.sym, deleted over 10 years ago.
607 Remove Mac OS classic code from numerous places throughout the core
609 commit 7fe50b8b8a4dc38fc341e3b403545aaca937f50e
610 Author: Leon Timmermans <fawaka@gmail.com>
611 Date: Tue Jan 18 16:40:07 2011 +0100
613 Also unblock signal handlers throwing an exception
615 Also handle and test the edge case of a signal handler throwing an
621 Numberous POD warnings fixed
625 Update Unicode-Collate to CPAN version 0.71
631 regexec.c: Remove break statements from macros
633 This is so future coders won't be tempted to rely on them.
635 regexec.c: Don't rely on break stmts in macros
637 It is safer and clearer to have the break statement in each case statement at
640 commit b57e41186b2ceb48bef4f0588dcd19e105cc8a38
641 Author: Karl Williamson <public@khwilliamson.com>
642 Date: Tue Jan 18 15:03:41 2011 -0700
644 regcomp: Disallow multi-char folds in lookbehind
646 The addition of the ANYOFV regnode to treat multi-char folds in a bracketed
647 character class has exposed a bug, in which those classes have long been able
648 to be varying length (due to the multi-char fold), but the compiler wasn't
649 aware of it. Now it is, and hence won't allow those which have multi-char
650 folds to be part of a lookbehind pattern, which requires a constant length.
652 This patch disallows multi-char folds in a lookbehind bracketed character
655 Author: Nicholas Clark <nick@ccl4.org>
656 Date: Tue Jan 18 16:14:43 2011 +0000
658 Remove Mac OS classic code from scripts in utils/
661 Convert DosGlob.t to Test::More.
663 commit d6dc8a6dc95226ddff7719cd1e0bd053c4e5725e
664 Author: Nicholas Clark <nick@ccl4.org>
665 Date: Tue Jan 18 13:08:11 2011 +0000
667 Remove Mac OS Classic docs from DirHandle and File::{Copy,DosGlob,Find}
669 The documentation for the different behaviour on Mac OS Classic was not
670 removed when the relevant code was removed in 862f843bac3434c2. That commit
671 also remove all callers to several Mac OS classic support functions, but not
672 the functions themselves. Rectify this.
674 commit 8254cbf193c939338449097a80163197fc755150
675 Author: Nicholas Clark <nick@ccl4.org>
676 Date: Tue Jan 18 11:10:41 2011 +0000
678 Build perltoc.pod with pragmata sorted by name.
680 Previously they were actually sorted by full pathname, which isn't logical.
681 I presume that this is an artefact of all pragmata being in lib/ when
682 pod/buildtoc was originally written.
684 commit 1d45ec279e4e105512a2803e3d0bd974a151a0f6
685 Author: Father Chrysostomos <sprout@cpan.org>
686 Date: Mon Jan 17 22:32:52 2011 -0800
688 perlcall: Fixes for various grammatical errors
690 commit faaf68361923e4bb95d1eb919bc724a0dcc5a4ce
691 Author: Leon Timmermans <fawaka@gmail.com>
692 Date: Mon Jan 17 17:59:33 2011 +0100
694 Clarify limitation in safe signals.
696 commit 0c1bf4c7d433bb0ad80bfe5511b1301db32b7b95
697 Author: Leon Timmermans <fawaka@gmail.com>
698 Date: Mon Jan 17 16:29:11 2011 +0100
700 Added tests for conditional unblocking
702 commit 555344425f04e96a72e4d29eab96b34bff8f96ae
703 Author: Leon Timmermans <fawaka@gmail.com>
704 Date: Thu Jan 13 18:30:29 2011 +0100
706 Conditionally unblock after signal handler[#82040]
708 Only unblock signal after a safe-signal handler is executed if that signal was
709 also unblocked before the handler.
710 commit 435aa301127ed481169903cb35187bde1ea44928
711 Author: David Golden <dagolden@cpan.org>
712 Date: Mon Jan 17 20:39:14 2011 -0500
714 Update HTTP::Tiny to CPAN version 0.009
716 commit 78cd53afbb1923bf0a68f361040ad8fe93a7d0d5
717 Author: David Mitchell <davem@iabyn.com>
718 Date: Tue Jan 18 00:46:30 2011 +0000
720 vastly speed up t/porting/diag.t
722 This used to take about 3 minutes of CPU. Reduce this to around
723 6 seconds (!!) by coalescing and pre-compiling various patterns
724 that get applied to nearly every line of every source file.
726 commit cfaf538b6276c6a8ef80ff6c66e106c6a4f1caaa
727 Author: Karl Williamson <public@khwilliamson.com>
728 Date: Mon Jan 17 08:58:53 2011 -0700
730 Add /a regex modifier
732 This restricts certain constructs, like \w, to matching in the ASCII range only.
734 commit 56ae17b45d2513d65903d13468e8f6a16b20f916
735 Author: Karl Williamson <public@khwilliamson.com>
736 Date: Sun Jan 16 17:41:30 2011 -0700
738 regcomp.c: Convert \d \D to a switch{}
740 commit eee47ba661717bca7751443be1b6ac8f8f64585a
741 Author: Chris 'BinGOs' Williams <chris@bingosnet.co.uk>
742 Date: Mon Jan 17 12:35:54 2011 +0000
744 Update File-Fetch to CPAN version 0.32
746 commit e66820012d29519f903709f005e56a2c334ae183
747 Author: Tony Cook <tony@develop-help.com>
748 Date: Mon Jan 17 19:22:08 2011 +1100
750 test_prep now depends on the pods needed for porting/buildtoc.t
752 In the other makefiles test_prep (or test-prep) depends on all, so
753 they shouldn't need updating.
756 commit a52237f3a547cdefddd4c4be6224bfdf67c84263
757 Author: David Golden <dagolden@cpan.org>
758 Date: Sun Jan 16 21:32:21 2011 -0500
760 Update CPAN to CPAN version 1.94_63
762 commit 63ac0dadb1aafcf0c171d3c1422c1923b611b2fc
763 Author: Karl Williamson <public@khwilliamson.com>
764 Date: Tue Dec 28 16:13:49 2010 -0700
766 regex: Use BOUNDU regnodes
768 This refactors one area in regexec.c to use BOUNDU, NBOUNDU for
769 efficiciency, and easier adding of the future BOUNDA.
771 commit 980866de2cf8ecdb4bb72b7f9294763057008f50
772 Author: Karl Williamson <public@khwilliamson.com>
773 Date: Mon Dec 27 12:04:58 2010 -0700
775 regex: Separate nodes for Unicode semantics \s \w
777 This patch converts the \s, \w and complements Unicode semantics to
778 instead of using the flags field of their nodes to instead use separate
779 nodes. This gains some efficiency, especially useful in tight loops and
780 backtracking of regexec.c, and prepares the way for easily adding other
781 semantic variations, such as /a.
783 It refactors the CCC_TRY... macros. I tried to break this piece up into
784 smaller chunks, but found it much easier to get to this in one step.
785 Further patches will do some more refactoring of these.
787 As part of the CCC_TRY macro refactoring, the lines that include the
788 test if (! nextchr) are changed to just look for the end-of-string by
789 position instead of it being NUL. In locales, it could be (however
790 unlikely), that NUL is a real alphabetic, digit, or space character.
791 commit 50e911483ad5c29e25c54c9f81f92df974dd2cc0
792 Author: Karl Williamson <public@khwilliamson.com>
793 Date: Sun Dec 26 10:35:58 2010 -0700
795 Change name of /d to DEPENDS
797 I much prefer David Golden's name for /d whose meaning 'depends' on
798 circumstances, instead of 'dual' meaning it could be one or another.
799 Change it before this gets out in a stable release, and we're stuck with
802 commit 73134a2eb4055c76fe5b154da95e09118f716fd8
803 Author: Karl Williamson <public@khwilliamson.com>
804 Date: Sun Dec 26 10:35:20 2010 -0700
806 CH] Change usage of regex/op common to common names
808 This patch changes the core functions to use the common names for the
809 fields that are shared between op.c and regcomp.c, just for consistency
810 of using one name throughout the core for the same thing.
812 A grep of cpan shows that both names are used in various modules; so
813 both names must be retained.
815 commit a3ab329f3fc9494e700f51c38cef42021c130b6e
816 Author: David Golden <dagolden@cpan.org>
817 Date: Sun Jan 16 20:57:02 2011 -0500
819 Add HTTP::Tiny as a dual-life core module
821 HTTP::Tiny has been added as a dual-life module. It is a very
822 small, simple HTTP/1.1 client designed for simple GET requests and file
823 mirroring. It has has been added to enable CPAN.pm and CPANPLUS to
824 "bootstrap" HTTP access to CPAN using pure Perl without relying on external
825 binaries like F<curl> or F<wget>.
827 commit 211cc5012284f4bd900fcaa630adbcac69ca6112
828 Author: Chris 'BinGOs' Williams <chris@bingosnet.co.uk>
829 Date: Sun Jan 16 23:23:03 2011 +0000
831 Update Unicode-Collate to CPAN version 0.70 and enable XS version
833 commit a62b1201c068dc7b099bcb7182e188c4d2fbf34c
834 Author: Karl Williamson <public@khwilliamson.com>
835 Date: Sun Dec 26 10:31:16 2010 -0700
837 Use multi-bit field for regex character set
839 The /d, /l, and /u regex modifiers are mutually exclusive. This patch
840 changes the field that stores the character set to use more than one bit
841 with an enum determining which one. This data structure more
842 closely follows the semantics of their being mutually exclusive, and
843 conserves bits as well, and is better expandable.
845 A small API is added to set and query the bit field.
847 This patch is not .xs source backwards compatible. A handful of cpan
848 programs are affected.
853 Significant updates to buildtoc
855 Update Unicode-Normalize to CPAN version 1.10
857 commit 11454c594f22abc5945e69a46fc965363dbf326e
858 Author: Karl Williamson <public@khwilliamson.com>
859 Date: Sat Jan 15 13:42:58 2011 -0700
861 Fix \xa0 matching both [\s] [\S], et.al.
863 This bug stemmed from Latin1 characters not matching any (non-complemented)
864 character class in /d semantics when the target string is no utf8; but having
865 unicode semantics when it isn't. The solution here is to add a special flag.
867 There were several tests that relied on the broken behavior, specifically they
868 tested that \xff isn't a printable word character even in utf8. I changed the
869 deparse test to instead use a non-printable code point, and I changed the ones
870 in re_tests to be TODOs, and will change them back using /a when that is
876 restrict \p{IsUserDefined} to In\w+ and In\w+
878 In L<perlunicode/"User-Defined Character Properties">, it says you can
879 create custom properties by defining subroutines whose names begin with
880 "In" or "Is". However, perl doesn't actually enforce that naming
881 restriction, so \p{foo::bar} will call foo::Bar() if it exists.
883 This commit finally enforces this convention. Note that this broke a
884 number of existing tests for properties, since they didn't always use an
889 test that perl.pod, pod.lst, MANIFEST and the file system are consistent
891 commit f56b6394f7cf57733135f56e4e4ac49abe9ac9cc
892 Author: Karl Williamson <public@khwilliamson.com>
893 Date: Thu Jan 13 22:36:36 2011 -0700
897 This patch restructures the regex ANYOF code to generate ANYOFV nodes instead
898 when there is a possibility that it could match more than one character. Note
899 that this doesn't affect the optimizer, as it essentially ignores things that
900 fit into this category. (But it means that the optimizer will no longer reject
901 these when it shouldn't have.)
903 The handling of the LATIN SHARP s is modified to correspond with this new node
906 The initial handling of ANYOFV is placed in regexec.c. More analysis will come
907 on that. But there was significant change to the part that handles matching
908 multi-char strings. This has long been buggy, with it previously comparing a
909 folded-version on one side with a non-folded version on the other.
911 This patch fixes about 60% of the problems that my undelivered test suite gives
912 for multi-char folds. But there are still 17K test failures left, so I'm still
913 not delivering that. The TODOs that this fixes will be cleaned up in a later commit
916 Update Pod-LaTeX to CPAN version 0.59
918 commit 680818c0361b180bb6f09d4bb11c4d5cd467fe62
919 Author: Nicholas Clark <nick@ccl4.org>
920 Date: Thu Jan 13 16:24:52 2011 +0000
922 ithread_create() was relying on the stack not moving. Fix this.
924 4cf5eae5e58faebb changed S_ithread_create() to avoid creating an AV, by
925 passing the thread creation arguments as pointers to a block of memory
926 holding SVs. Unfortunately, this inadvertently introduced a subtle bug,
927 because the block of memory is on the Perl stack, which can move as a side
928 effect of being reallocated to extend it. Hence pass in the offset on the
929 stack instead, read the current value of the relevant interpreter's stack
930 at the point of access, and copy all the SVs away before making any further
931 calls which might cause reallocation.
933 Update to Win32-0.44 from CPAN
934 Update Term-UI to CPAN version 0.24
935 Update IO-Compress to CPAN version 2.033
936 Update Compress-Raw-Zlib to CPAN version 2.033
937 Update Compress-Raw-Bzip2 to CPAN version 2.033
938 Update DB_File to CPAN version 1.821
941 Correct the "unimplemented" message for get{host,net,proto,serv}ent aliases.
943 Previously, if all of gethost{byaddr,byname,ent} were unimplemented on a
944 platform, they would all return 'Unsupported socket function "gethostent"
945 called', with the analogous results for getnet{byaddr,byname,ent},
946 getproto{byname,bynumber,ent} and getserv{byname,byport,ent}. This bug was
947 introduced by change af51a00e97d5c559 - prior to this, all 12 functions would
948 report their own name when unimplemented.
950 commit 9ae3ac1a84c63b0eadf5baf47ce7096482280f32
951 Author: Karl Williamson <public@khwilliamson.com>
952 Date: Sun Jan 9 15:33:28 2011 -0700
954 Add warnings for use of problematic code points
956 The non-Unicode code points have no Unicode semantics, so applying operations
957 such as casing on them warns.
959 This patch also includes the changes to test the warnings added by recent
960 commits for handling the surrogates and above-Unicode code points
962 commit 949cf4983af707fbd15e422845f4f3df20505f97
963 Author: Karl Williamson <public@khwilliamson.com>
964 Date: Sun Jan 9 13:50:18 2011 -0700
966 utf8.c(): Default to allow problematic code points
968 Surrogates, non-character code points, and code points that aren't in Unicode
969 are now allowed by default, instead of having to specify a flag to allow them.
970 (Most code did specify those flags anyway.)
972 This affects uvuni_to_utf8_flags(), utf8n_to_uvuni() and various routines that
973 are specialized interfaces to them.
975 Now there is a new set of flags to disallow those code points. Further, all 66
976 of the non-character code points are known about and handled consistently,
977 instead of just U+FFFF.
979 Code that requires these code points to be forbidden will have to change to use
980 the new flags. I have looked at all the (few) instances in CPAN where these
981 routines are used, and the only one I found that appears to have need to do
982 this, Encode, has already been patched to accommodate this change. Of course,
983 I may have overlooked some subtleties.
986 commit 7627e6d0fe772ac90fce9e03fea273109521e261
987 Author: Nicholas Clark <nick@ccl4.org>
988 Date: Sat Jan 8 15:56:22 2011 +0000
990 Generate "Unsupported socket function" stubs using PL_ppaddr.
992 Instead of having each socket op conditionally compile as either the
993 implementation or a DIE() depending on #HAS_SOCKET
995 1: remove the conditional code from the ops themselves
996 2: only compile the ops if HAS_SOCKET is defined
997 3: general conditional code for the intialisation of PL_ppaddr - as appropriate
998 either the ops, or Perl_unimplemented_op
999 4: Amend Perl_unimplemented_op to generate the appropriate DIE() for socket
1000 ops (ie not the "panic"... message)
1002 Whilst this complicates the support code in regen/opcode.pl, it's already a
1003 net saving of 5 lines in the C code.
1005 commit 897d398936dd2fc088a265fba2a7b62fa97ed458
1006 Author: Nicholas Clark <nick@ccl4.org>
1007 Date: Sun Jan 9 10:54:58 2011 +0000
1009 Generate pp_* prototypes in pp_proto.h, and remove pp.sym
1011 Eliminate the #define pp_foo Perl_pp_foo(pTHX) macros, and update the 13
1012 locations that relied on them.
1014 regen/opcode.pl now generates prototypes for the PP functions directly, into
1015 pp_proto.h. It no longer writes pp.sym, and regen/embed.pl no longer reads
1016 this, removing the only ordering dependency in the regen scripts. opcode.pl
1017 is now responsible for prototypes for pp_* functions. (embed.pl remains
1018 responsible for ck_* functions, reading from regen/opcodes)
1020 commit f1aaabf80b19a3cc6dc435510732b561ab46361e
1021 Author: Chris 'BinGOs' Williams <chris@bingosnet.co.uk>
1022 Date: Sun Jan 9 00:16:46 2011 +0000
1024 Update CPANPLUS to CPAN version 0.9011
1025 Update CPANPLUS-Dist-Build to CPAN version 0.52
1026 Update Term-UI to CPAN version 0.22
1027 Update Params-Check to CPAN version 0.28
1029 commit a4a4c9e2c086dd5f7b7b05789161614dbbe8385b
1030 Author: Karl Williamson <public@khwilliamson.com>
1031 Date: Sat Jan 8 14:44:05 2011 -0700
1033 perldiag.pod: Add missing message severities
1035 commit 0019012ad86d597fb507f71577d70ecd4c416bba
1036 Author: Chris 'BinGOs' Williams <chris@bingosnet.co.uk>
1037 Date: Sat Jan 8 23:09:04 2011 +0000
1039 Update Object-Accessor to CPAN version 0.38
1040 Update Module-Load-Conditional to CPAN version 0.40
1041 Update Log-Message to CPAN version 0.04
1042 Update IPC-Cmd to CPAN version 0.68
1046 add test for split without a pattern
1048 Add some while tests, about the context of the last statement in a block and about reinitializaiton of lexical variables.
1050 modernise t/cmd/while.t
1052 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".
1054 commit ac066c2ab5bc31260104aeee778921b186894769
1056 Update File-Fetch to CPAN version 0.30
1057 Update Archive-Tar to CPAN version 1.76
1058 Update Archive-Extract to CPAN version 0.48
1060 commit b86b68b4eefa1069dabc8ea0401d712b24a67857
1061 Author: Jesse Vincent <jesse@bestpractical.com>
1062 Date: Sat Jan 8 00:14:29 2011 +0800
1064 Update the policy on doc patches to maint
1067 commit e8b333e679eb9a7a62c1d86b647515f01821eb60
1068 Author: David Golden <dagolden@cpan.org>
1069 Date: Wed Jan 5 22:47:41 2011 -0500
1071 Add Module::Metadata as a dual-life core module
1073 This commit adds Module::Metadata 1.000002 as a dual-life module. It
1074 gathers package and POD information from Perl module files. It is a
1075 standalone module based on Module::Build::ModuleInfo for use by other
1076 module installation toolchain components. Module::Build::ModuleInfo
1077 has been deprecated in favor of this module instead.
1079 commit a8fb8d791b74ff90850140d94407aad99ec86fe3
1080 Author: John Peacock <jpeacock@jpeacock-hp.doesntexist.org>
1081 Date: Thu Jan 6 20:02:37 2011 -0500
1083 Sync with version 0.88 on CPAN
1085 commit c1b879e57aecbfe520b3f44dd28472d1862f037d
1086 Author: Craig A. Berry <craigberry@mac.com>
1087 Date: Wed Jan 5 19:14:06 2011 -0600
1089 Make newline on last record explicit.
1091 On VMS, the last line written to a file will get a trailing newline
1092 willy nilly. This has its advantages insofar as you never get the
1093 "no newline at end of file" warnings from various utilities, but
1094 reality conflicts with expectations when you explicitly test for
1095 the last (or only) line *not* ending with newline, which is what
1096 the recent addtion to ref.t (5e3072707906cc4cb8a364c4cf7c487df0300caa)
1097 was doing. Adding an explicit newline makes everyone happy.
1099 commit 935c8d19ecf9ad3ea7589ffd1721e6ba1c671ed9
1100 Author: David Golden <dagolden@cpan.org>
1101 Date: Wed Jan 5 22:25:23 2011 -0500
1103 Add Perl::OSType as a dual-life core module
1105 This commit adds Perl::OSType 1.002 as a dual-life module. It maps Perl
1106 operating system names (e.g. 'dragonfly' or 'MSWin32') to more generic
1107 types with standardized names (e.g. "Unix" or "Windows"). It has been
1108 refactored out of Module::Build and ExtUtils::CBuilder and consolidates
1109 such mappings into a single location for easier maintenance.
1112 http://www.nntp.perl.org/group/perl.perl5.porters/2010/05/msg160280.html
1114 commit 2a1594f630b57637ddd7a38daaa1e17f66da396a
1115 Author: Chris 'BinGOs' Williams <chris@bingosnet.co.uk>
1116 Date: Wed Jan 5 23:35:15 2011 +0000
1118 Update CGI to CPAN version 3.51
1121 - Further improvements have been made to guard against newline injections
1122 in headers. (Thanks to Max Kanat-Alexander, Yanick Champoux, Mark Stosberg)
1125 commit 0b5e625bc99f5cb78697faf03b297b6cacadf60b
1126 Author: Reini Urban <rurban@x-ray.at>
1127 Date: Tue Sep 14 18:04:22 2010 +0200
1129 build man pages on cygwin too
1131 commit 172830635ea7813c85e51e4ae2b4bed56ddbab83
1132 Author: Reini Urban <rurban@x-ray.at>
1133 Date: Tue Sep 14 17:54:15 2010 +0200
1135 Improve cygwin rebase behaviour
1137 If a dll is updated on cygwin reuse the old imagebase address.
1138 This solves most rebase errors, esp when updating on core dll's.
1139 See http://www.tishler.net/jason/software/rebase/rebase-2.4.2.README
1144 t/porting/filenames.t to make sure that filenames and paths are reasonably portable
1149 Actually excise 'Apollo DomainOS' support. We officially killed it in 5.11.0. It
1150 hadn't worked for years before that.
1152 commit cc7e77fd5a0ee9f1498e54dddf566117da62754b
1153 Author: Reini Urban <rurban@x-ray.at>
1154 Date: Tue Sep 14 17:48:32 2010 +0200
1156 CYG14 Dynaloader without USEIMPORTLIB, and search cyg prefix
1158 part1: Support the standard cyg dll prefix, which is e.g. needed for FFI's.
1159 Ctypes and C::DynaLib use DynaLoader to find dlls.
1161 part2: With -DUSEIMPORTLIB DynaLoader symbols link against the prefixed
1162 symbol names for the .dll.a importlib, but we need to link against the
1163 symbols directly. We don't link Dynaloader against libperl.dll.a.
1166 $ g++-4 -o cygperl5_13_4.dll --shared perlsrc.o cygwin.o DynaLoader.o -ldl -lcrypt
1167 Creating library file: libperl.dll.a
1168 DynaLoader.o: In function `XS_DynaLoader_dl_undef_symbols':
1169 ext/DynaLoader/DynaLoader.c:346: undefined reference to `__imp__PL_stack_sp'
1170 ext/DynaLoader/DynaLoader.c:346: undefined reference to `__imp__PL_markstack_ptr'
1171 ext/DynaLoader/DynaLoader.c:346: undefined reference to `__imp__PL_stack_base'
1173 commit c0a149a90b8b6e1c18de7294ca974265fb559cf5
1174 Author: Reini Urban <rurban@x-ray.at>
1175 Date: Tue Sep 14 18:06:38 2010 +0200
1178 do not use usemymalloc (double size + slow)
1179 remove deprecated libcygipc info
1180 remove overlarge stack size
1182 commit ac0650a4c9f69cdc9e7af31df29011c42b42b770
1183 Author: Father Chrysostomos <sprout@cpan.org>
1184 Date: Sun Jan 2 23:14:37 2011 -0800
1186 Restore the old description of $[
1188 The new entry is a bit too futuristic: assignment to $[ still works
1189 and it is not read-only.
1191 This does not fully restore the old description, as it contained
1192 grammatical errors and parts of it were not updated when 5.10 changed
1195 commit 2831a86cee065b53b74fd19ddcc6a4257484646d
1196 Author: Zsbán Ambrus <ambrus@math.bme.hu>
1197 Date: Sun Jan 2 20:25:55 2011 -0800
1199 [perl #81032] Overhaul Porting/epigraphs.pod
1201 This patch makes multiple changes to Porting/epigraphs.pod and
1204 For those that don't know, Porting/epigraphs.pod is a new document that
1205 collects the quotes (chosen by Pumpkins) in perl release announcements.
1207 The changes are the following.
1209 1. Add a link pointing to each release announcement in the mailing
1210 list archives. These are from ysth's list, the source from which
1211 Porting/epigraphs.pod was originally compiled, but they weren't in
1212 Porting/epigraphs.pod so far.
1213 2. Reorder Porting/epigraphs.pod chronologically, because I believe
1214 that makes more sense -- pod/perlhist.pod is still sorted by version numbers.
1215 3. Incidentally, some missing releases are added to pod/perlhist.pod too.
1216 4. Fix a mistake where Porting/epigraphs.pod gives the wrong version number.
1217 5. Add some epigraphs that appear in ysth's list but not in
1218 Porting/epigraphs.pod.
1219 6. I did some research in perl history before the part that ysth's list
1220 covers, and added older perl announcements I found. This work is not
1221 complete: I stopped somewhere in 2000.
1223 commit eccda089fc3dcaafc1ae0aac6b428f799231b824
1224 Author: Paul "LeoNerd" Evans <leonerd@leonerd.org.uk>
1225 Date: Mon Dec 13 17:50:06 2010 +0000
1227 Implement Socket::getaddrinfo() and Socket::getnameinfo(), with related constants
1229 commit d54243158c0e4ba0127eb487c5b2e2a10484e8d0
1230 Author: David Golden <dagolden@cpan.org>
1231 Date: Thu Dec 30 23:43:44 2010 -0500
1233 Add JSON::PP to the Perl core
1235 Per discussions with Jesse Vincent, JSON::PP has been added
1236 to the Perl core to support the new CPAN meta file specification
1238 commit 4155e4fe81b9987a30efea627e43a574f5460f73
1239 Author: Father Chrysostomos <sprout@cpan.org>
1240 Date: Sun Jan 2 14:51:21 2011 -0800
1242 [perl #36347] Object destruction incomplete
1244 do_clean_objs only looks for objects referenced by RVs, so blessed
1245 array references and lexical variables (and probably other SVs, too)
1248 This commit adds a new visit() call to sv_clean_objs, which curses
1249 (DESTROYs and un-blesses, leaving the reference count as it is) any
1250 objects that are still left after do_clean_named_io_objs. The new
1251 do_curse routine (a pointer to which is passeds to visit()) follows
1252 do_clean_named_io_objs’ example and explicitly skips the STDOUT and
1253 STDERR handles, in case destructors need to use them.
1255 The cursing code, which is now called from two places, is moved out of
1256 sv_clear and put in its own routine. The check that the reference
1257 count is zero does not apply when called from sv_clean_objs, so the
1258 new S_curse routine takes a boolean argument that determines whether
1259 that check should take place.
1261 commit 3d450a5dd4e8f9a7b2aba0b018f9fe078fb6aa30
1262 Author: David Leadbeater <dgl@dgl.cx>
1263 Date: Sun Jan 2 14:33:16 2011 -0800
1265 [perl #73630] Build separate DTrace for miniperl
1267 As outlined in the RT ticket due to miniperl's dependencies differing to
1268 the final perl binary dtrace -G needs to be called separately for each.
1270 Build tested on Mac OS X 10.6, Solaris 11 and Scientific Linux with
1273 (Solaris is the only system I have access to where DTRACE_O actually gets
1274 defined. Neither the dtrace binary on OS X nor SystemTap's dtrace
1275 compatibility layer accept the -G option.)
1277 commit 9426e1a55981168c83a030df9bce5e0b46586581
1278 Author: David Mitchell <davem@iabyn.com>
1279 Date: Sun Jan 2 19:38:30 2011 +0000
1281 make <expr> always overload if expr is overloaded
1283 Due to the way that '<> as glob' was parsed differently from
1284 '<> as filehandle' from 5.6 onwards, something like <$foo[0]>
1285 didn't handle overloading, even where $foo[0] was an overloaded object.
1286 This was contrary to the docs for overload, and meant that <> couldn't
1287 be used as a general overloaded iterator operator.
1289 commit e4ef33329eb648489bad5296e9673c409f5577f9
1290 Author: Jesse Vincent <jesse@bestpractical.com>
1291 Date: Sun Jan 2 10:50:21 2011 +0800
1293 perlbug did not previously generate a From: header. While some MTAs do
1294 the "right" thing and insert a valid "From:", not all of them do,
1295 potentially resulting in dropped mail.
1298 commit edcf105d70e5423fd928c776e086fe31a4a543f4
1299 Author: Jesse Vincent <jesse@bestpractical.com>
1300 Date: Sat Jan 1 18:46:20 2011 +0800
1302 Document 'test_porting' and start a section on how committing to blead
1304 commit b85802c5d04fcd6e5c969a5c56136e05061f05d7
1305 Author: Chris 'BinGOs' Williams <chris@bingosnet.co.uk>
1306 Date: Sat Jan 1 10:37:04 2011 +0000
1308 Update Encode to CPAN version 2.42
1311 commit fbcda526a9bbe2ee1302d6f4507b07f83661fc0d
1312 Author: Nicholas Clark <nick@ccl4.org>
1313 Date: Thu Dec 30 17:30:24 2010 +0000
1315 Most socket ops weren't warning for unopened handles unless 'closed' was enabled
1317 They were checking that category 'closed' was enabled for warnings before
1318 calling report_evil_fh(), which in turn was (correctly) checking category
1320 commit c521cf7c8af1697e5efd8ce3ad75ed00606db13b
1321 Author: Nicholas Clark <nick@ccl4.org>
1322 Date: Thu Dec 30 16:52:22 2010 +0000
1324 pp_leavewrite wasn't warning for unopened handles unless 'closed' was enabled.
1326 It was checking that category 'closed' was enabled for warnings before calling
1327 report_evil_fh(), which in turn was (correctly) checking category 'unopened'.
1329 commit 8985fe98dcc5c0af2fadeac15dfbc13f553ee7fc
1330 Author: David Mitchell <davem@iabyn.com>
1331 Date: Thu Dec 30 10:32:44 2010 +0000
1333 Better handling of magic methods freeing the SV
1335 This is a fix for RT #81230 (and more). Currently, mg_get() works around
1336 the case where the called magic (e.g. FETCH) frees the magic SV. It does
1337 this by unconditionally pushing the SV on the tmps stack before invoking
1340 There are two issues with this. Firstly, it may artificially extend the
1341 life of the SV. This was the root of the problem with #81230. There, the
1342 DB_File code, under -T, created a tainted tied object. Accessing the
1343 object (within FETCH as it happens), caused mg_get() to be invoked on the
1344 object (due to the taint magic), and thus extend the life of the object.
1345 This then caused c<untie %h if $h{k}> to give the warning
1346 untie attempted while 1 inner references still exist.
1347 This only became noticeable after efaf36747029c85b4d8825318cb4d485a0bb350e,
1348 which stopped wrapping magic method calls in SAVETMPS/FREETMPS.
1350 The second issue issue that this protection only applies to mg_get();
1351 functions like mg_set() can still segfault if the SV is deleted.
1353 This commit fixes both problems as follows:
1355 First, the protection mechanism is moved out of mg_get() and into
1356 save_magic() / restore_magic(), so that it protects more things.
1357 Secondly, the protection is now:
1359 * in save_magic(), SvREFCNT_inc() the SV, thus protecting it from being
1360 freed during FETCH (or whatever)
1362 * in restore_magic(), SvREFCNT_dec() the SV, undoing the protection
1363 without extending the life of the SV, *except* if the refcount is
1364 1 (ie FETCH tried to free it), then push it on the mortals stack
1365 to extend it life a bit so our callers wont choke on it.
1367 commit cce04bebd8af026c2a6731940ddb895d3c1fc3e4
1368 Author: David Golden <dagolden@cpan.org>
1369 Date: Mon Dec 13 17:36:33 2010 -0500
1371 Reorganize perlhack.pod
1373 Following on an IRC conversation, I've attempted to reorganize
1374 perlhack for greater clarity. I have only cut and paste blocks
1375 of text and amended section titles and levels. (I have not addressed
1376 any of the numerous factual issues which remain.)
1378 The resulting guide should be clearer for those trying to skim the
1379 table of contents to understand what is covered in perlhack and
1380 whether it is worth an in-depth read.
1382 I see this change as the first step towards future improvements.