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