Commit | Line | Data |
---|---|---|
9fd420ca SH |
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 |