1=encoding utf8 2 3=head1 NAME 4 5perl5203delta - what is new for perl v5.20.3 6 7=head1 DESCRIPTION 8 9This document describes differences between the 5.20.2 release and the 5.20.3 10release. 11 12If you are upgrading from an earlier release such as 5.20.1, first read 13L<perl5202delta>, which describes differences between 5.20.1 and 5.20.2. 14 15=head1 Incompatible Changes 16 17There are no changes intentionally incompatible with 5.20.2. If any exist, 18they are bugs, and we request that you submit a report. See L</Reporting Bugs> 19below. 20 21=head1 Modules and Pragmata 22 23=head2 Updated Modules and Pragmata 24 25=over 4 26 27=item * 28 29L<Errno> has been upgraded from version 1.20_05 to 1.20_06. 30 31Add B<-P> to the pre-processor command-line on GCC 5. GCC added extra line 32directives, breaking parsing of error code definitions. 33L<[perl #123784]|https://rt.perl.org/Ticket/Display.html?id=123784> 34 35=item * 36 37L<Module::CoreList> has been upgraded from version 5.20150214 to 5.20150822. 38 39Updated to cover the latest releases of Perl. 40 41=item * 42 43L<perl5db.pl> has been upgraded from 1.44 to 1.44_01. 44 45The debugger would cause an assertion failure. 46L<[perl #124127]|https://rt.perl.org/Ticket/Display.html?id=124127> 47 48=back 49 50=head1 Documentation 51 52=head2 Changes to Existing Documentation 53 54=head3 L<perlfunc> 55 56=over 4 57 58=item * 59 60Mention that L<C<study()>|perlfunc/study> is currently a no-op. 61 62=back 63 64=head3 L<perlguts> 65 66=over 4 67 68=item * 69 70The OOK example has been updated to account for COW changes and a change in the 71storage of the offset. 72 73=back 74 75=head3 L<perlhacktips> 76 77=over 4 78 79=item * 80 81Documentation has been added illustrating the perils of assuming the contents 82of static memory pointed to by the return values of Perl wrappers for C library 83functions doesn't change. 84 85=back 86 87=head3 L<perlpodspec> 88 89=over 4 90 91=item * 92 93The specification of the POD language is changing so that the default encoding 94of PODs that aren't in UTF-8 (unless otherwise indicated) is CP1252 instead of 95ISO-8859-1 (Latin1). 96 97=back 98 99=head1 Utility Changes 100 101=head2 L<h2ph> 102 103=over 4 104 105=item * 106 107B<h2ph> now handles hexadecimal constants in the compiler's predefined macro 108definitions, as visible in C<$Config{cppsymbols}>. 109L<[perl #123784]|https://rt.perl.org/Ticket/Display.html?id=123784> 110 111=back 112 113=head1 Testing 114 115=over 4 116 117=item * 118 119F<t/perf/taint.t> has been added to see if optimisations with taint issues are 120keeping things fast. 121 122=item * 123 124F<t/porting/re_context.t> has been added to test that L<utf8> and its 125dependencies only use the subset of the C<$1..$n> capture vars that 126Perl_save_re_context() is hard-coded to localize, because that function has no 127efficient way of determining at runtime what vars to localize. 128 129=back 130 131=head1 Platform Support 132 133=head2 Platform-Specific Notes 134 135=over 4 136 137=item Win32 138 139=over 4 140 141=item * 142 143Previously, when compiling with a 64-bit Visual C++, every Perl XS module 144(including CPAN ones) and Perl aware C file would unconditionally have around a 145dozen warnings from F<hv_func.h>. These warnings have been silenced. GCC (all 146bitness) and 32-bit Visual C++ were not affected. 147 148=item * 149 150B<miniperl.exe> is now built with B<-fno-strict-aliasing>, allowing 64-bit 151builds to complete with GCC 4.8. 152L<[perl #123976]|https://rt.perl.org/Ticket/Display.html?id=123976> 153 154=back 155 156=back 157 158=head1 Selected Bug Fixes 159 160=over 4 161 162=item * 163 164Repeated global pattern matches in scalar context on large tainted strings were 165exponentially slow depending on the current match position in the string. 166L<[perl #123202]|https://rt.perl.org/Ticket/Display.html?id=123202> 167 168=item * 169 170The original visible value of L<C<$E<sol>>|perlvar/$E<sol>> is now preserved 171when it is set to an invalid value. Previously if you set C<$/> to a reference 172to an array, for example, perl would produce a runtime error and not set PL_rs, 173but Perl code that checked C<$/> would see the array reference. 174L<[perl #123218]|https://rt.perl.org/Ticket/Display.html?id=123218> 175 176=item * 177 178Perl 5.14.0 introduced a bug whereby C<eval { LABEL: }> would crash. This has 179been fixed. 180L<[perl #123652]|https://rt.perl.org/Ticket/Display.html?id=123652> 181 182=item * 183 184Extending an array cloned from a parent thread could result in "Modification of 185a read-only value attempted" errors when attempting to modify the new elements. 186L<[perl #124127]|https://rt.perl.org/Ticket/Display.html?id=124127> 187 188=item * 189 190Several cases of data used to store environment variable contents in core C 191code being potentially overwritten before being used have been fixed. 192L<[perl #123748]|https://rt.perl.org/Ticket/Display.html?id=123748> 193 194=item * 195 196UTF-8 variable names used in array indexes, unquoted UTF-8 HERE-document 197terminators and UTF-8 function names all now work correctly. 198L<[perl #124113]|https://rt.perl.org/Ticket/Display.html?id=124113> 199 200=item * 201 202A subtle bug introduced in Perl 5.20.2 involving UTF-8 in regular expressions 203and sometimes causing a crash has been fixed. A new test script has been added 204to test this fix; see under L</Testing>. 205L<[perl #124109]|https://rt.perl.org/Ticket/Display.html?id=124109> 206 207=item * 208 209Some patterns starting with C</.*..../> matched against long strings have been 210slow since Perl 5.8, and some of the form C</.*..../i> have been slow since 211Perl 5.18. They are now all fast again. 212L<[perl #123743]|https://rt.perl.org/Ticket/Display.html?id=123743> 213 214=item * 215 216Warning fatality is now ignored when rewinding the stack. This prevents 217infinite recursion when the now fatal error also causes rewinding of the stack. 218L<[perl #123398]|https://rt.perl.org/Ticket/Display.html?id=123398> 219 220=item * 221 222C<setpgrp($nonzero)> (with one argument) was accidentally changed in Perl 5.16 223to mean C<setpgrp(0)>. This has been fixed. 224 225=item * 226 227A crash with C<< %::=(); J->${\"::"} >> has been fixed. 228L<[perl #125541]|https://rt.perl.org/Ticket/Display.html?id=125541> 229 230=item * 231 232Regular expression possessive quantifier Perl 5.20 regression now fixed. 233C<qr/>I<PAT>C<{>I<min>,I<max>C<}+>C</> is supposed to behave identically to 234C<qr/(?E<gt>>I<PAT>C<{>I<min>,I<max>C<})/>. Since Perl 5.20, this didn't work 235if I<min> and I<max> were equal. 236L<[perl #125825]|https://rt.perl.org/Ticket/Display.html?id=125825> 237 238=item * 239 240Code like C</$a[/> used to read the next line of input and treat it as though 241it came immediately after the opening bracket. Some invalid code consequently 242would parse and run, but some code caused crashes, so this is now disallowed. 243L<[perl #123712]|https://rt.perl.org/Ticket/Display.html?id=123712> 244 245=back 246 247=head1 Acknowledgements 248 249Perl 5.20.3 represents approximately 7 months of development since Perl 5.20.2 250and contains approximately 3,200 lines of changes across 99 files from 26 251authors. 252 253Excluding auto-generated files, documentation and release tools, there were 254approximately 1,500 lines of changes to 43 .pm, .t, .c and .h files. 255 256Perl continues to flourish into its third decade thanks to a vibrant community 257of users and developers. The following people are known to have contributed 258the improvements that became Perl 5.20.3: 259 260Alex Vandiver, Andy Dougherty, Aristotle Pagaltzis, Chris 'BinGOs' Williams, 261Craig A. Berry, Dagfinn Ilmari Mannsåker, Daniel Dragan, David Mitchell, 262Father Chrysostomos, H.Merijn Brand, James E Keenan, James McCoy, Jarkko 263Hietaniemi, Karen Etheridge, Karl Williamson, kmx, Lajos Veres, Lukas Mai, 264Matthew Horsfall, Petr Písař, Randy Stauner, Ricardo Signes, Sawyer X, Steve 265Hay, Tony Cook, Yves Orton. 266 267The list above is almost certainly incomplete as it is automatically generated 268from version control history. In particular, it does not include the names of 269the (very much appreciated) contributors who reported issues to the Perl bug 270tracker. 271 272Many of the changes included in this version originated in the CPAN modules 273included in Perl's core. We're grateful to the entire CPAN community for 274helping Perl to flourish. 275 276For a more complete list of all of Perl's historical contributors, please see 277the F<AUTHORS> file in the Perl source distribution. 278 279=head1 Reporting Bugs 280 281If you find what you think is a bug, you might check the articles recently 282posted to the comp.lang.perl.misc newsgroup and the perl bug database at 283https://rt.perl.org/ . There may also be information at 284http://www.perl.org/ , the Perl Home Page. 285 286If you believe you have an unreported bug, please run the L<perlbug> program 287included with your release. Be sure to trim your bug down to a tiny but 288sufficient test case. Your bug report, along with the output of C<perl -V>, 289will be sent off to perlbug@perl.org to be analysed by the Perl porting team. 290 291If the bug you are reporting has security implications, which make it 292inappropriate to send to a publicly archived mailing list, then please send it 293to perl5-security-report@perl.org. This points to a closed subscription 294unarchived mailing list, which includes all the core committers, who will be 295able to help assess the impact of issues, figure out a resolution, and help 296co-ordinate the release of patches to mitigate or fix the problem across all 297platforms on which Perl is supported. Please only use this address for 298security issues in the Perl core, not for modules independently distributed on 299CPAN. 300 301=head1 SEE ALSO 302 303The F<Changes> file for an explanation of how to view exhaustive details on 304what changed. 305 306The F<INSTALL> file for how to build Perl. 307 308The F<README> file for general stuff. 309 310The F<Artistic> and F<Copying> files for copyright information. 311 312=cut 313