Commit | Line | Data |
---|---|---|
9a7a3243 JV |
1 | =head1 NAME |
2 | ||
9a7a3243 JV |
3 | perldelta - what is new for perl v5.11.1 |
4 | ||
5 | =head1 DESCRIPTION | |
6 | ||
7 | This document describes differences between the 5.11.0 release and | |
8 | the 5.11.1 release. | |
9 | ||
9a7a3243 JV |
10 | =head1 Incompatible Changes |
11 | ||
8f3d5996 | 12 | =over |
9a7a3243 | 13 | |
8f3d5996 | 14 | =item The boolkeys op moved to the group of hash ops. This breaks binary compatibility. |
9a7a3243 | 15 | |
8f3d5996 JV |
16 | =back |
17 | ||
9a7a3243 JV |
18 | =head1 Core Enhancements |
19 | ||
8f3d5996 JV |
20 | =head2 Add C<package NAME VERSION> syntax |
21 | ||
22 | This patch adds support for setting the $VERSION of a namespace | |
23 | when the namespace is declared with 'package'. It eliminates the | |
24 | need for 'our $VERSION = ...' and similar constructs. E.g. | |
25 | ||
26 | package Foo::Bar 1.23; | |
27 | # $Foo::Bar::VERSION == 1.23 | |
9a7a3243 | 28 | |
8f3d5996 JV |
29 | There are several advantages to this: |
30 | ||
31 | * VERSION is parsed in *exactly* the same way as 'use NAME VERSION' | |
32 | ||
33 | * $VERSION is set at compile time | |
34 | ||
35 | * Eliminates '$VERSION = ...' and 'eval $VERSION' clutter | |
36 | ||
37 | * As it requires VERSION to be a numeric literal or v-string | |
38 | literal, it can be statically parsed by toolchain modules | |
39 | without 'eval' the way MM->parse_version does for '$VERSION = ...' | |
40 | ||
41 | * Alpha versions with underscores do not need to be quoted; static | |
42 | parsing will preserve the underscore, but during compilation, Perl | |
43 | will remove underscores as it does for all numeric literals | |
44 | ||
45 | During development of this, there was discussion on #corehackers and | |
46 | elsewhere that this should also allow other metadata to be set such as | |
47 | "status" (stable/alpha) or "author/authority". On reflection, those | |
48 | metadata are not very well defined yet and likely should never be | |
49 | encoded into Perl core parsing so they can be freely changed in the | |
50 | future. (They could perhaps be achieved via a comment on the same line | |
51 | as 'package NAME VERSION'.) | |
52 | ||
53 | Version numbers, however, already have a very specific definition and | |
54 | use defined in the core through 'use NAME VERSION'. This patch merely | |
55 | provides appropriate symmetry for setting $VERSION with the exact same | |
56 | parsing and semantics as 'use'. | |
57 | ||
58 | It does not break old code with only 'package NAME', but code that | |
59 | uses 'package NAME VERSION' will need to be restricted to perl 5.11.X. | |
60 | This is analogous to the change to open() from two-args to three-args. | |
61 | Users requiring the latest Perl will benefit, and perhaps N years from | |
62 | now it will become standard practice when Perl 5.12 is targeted the | |
63 | way that 5.6 is today. | |
64 | ||
65 | The patch does not prevent 'package NAME VERSION' from being used | |
66 | multiple times for the same package with different version numbers, but | |
67 | nothing prevents $VERSION from being modified arbitrarily at runtime, | |
68 | either, so I see no urgen reason to add limitations or warnings so | |
69 | long as Perl uses a global $VERSION variable for package version | |
70 | numbers. | |
71 | ||
72 | I am posting this patch to the p5p list for discussion and review. If | |
73 | there seems to be general assent (or lack of dissent), I will go ahead | |
74 | and commit the patch to blead. | |
9a7a3243 | 75 | |
9a7a3243 JV |
76 | |
77 | =head1 Modules and Pragmata | |
78 | ||
90b948c5 JV |
79 | =head2 Updated Modules |
80 | ||
8f3d5996 JV |
81 | =over 4 |
82 | ||
83 | =item Upgrade to Test-Simple-0.94 | |
84 | ||
85 | =item Upgrade to Storable-2.21 | |
86 | ||
87 | =item Upgrade to Pod-Simple-3.08 | |
88 | ||
89 | =item Upgrade to Parse-CPAN-Meta-1.40 | |
90 | ||
91 | =item Upgrade to ExtUtils-Manifest-1.57 | |
92 | ||
93 | =item Upgrade to ExtUtils-CBuilder-0.260301 | |
94 | ||
95 | =item Upgrade to CGI.pm-3.48 | |
96 | ||
97 | =item Update CPANPLUS to CPAN version 0.89_02 | |
98 | ||
99 | =item Upgrade to threads::shared 1.32 | |
100 | ||
101 | =item Update ExtUtils::ParseXS to 2.21 | |
102 | ||
103 | =item Upgrade File::Path to 2.08 (and add taint.t test) | |
104 | ||
105 | =item Upgrade Module::CoreList to 2.20 | |
106 | ||
107 | =item Updated Object-Accessor to CPAN version 0.36 | |
108 | ||
109 | =back | |
9a7a3243 | 110 | |
9a7a3243 JV |
111 | =head1 New Documentation |
112 | ||
9a7a3243 JV |
113 | =over 4 |
114 | ||
8f3d5996 | 115 | =item L<pod/perlpolicy.pod> extends the "Social contract about contributed modules" into the beginnings of a document on Perl porting policies. |
9a7a3243 JV |
116 | |
117 | =back | |
118 | ||
119 | =head1 Changes to Existing Documentation | |
120 | ||
8f3d5996 JV |
121 | =over |
122 | ||
123 | =item Documentation for C<$1> in perlvar.pod clarified | |
9a7a3243 | 124 | |
8f3d5996 | 125 | =back |
9a7a3243 JV |
126 | |
127 | =head1 Performance Enhancements | |
128 | ||
9a7a3243 JV |
129 | =over 4 |
130 | ||
8f3d5996 | 131 | =item C<if (%foo)> has been optimized to be faster than C<if (keys %foo)> |
9a7a3243 | 132 | |
9a7a3243 JV |
133 | =back |
134 | ||
135 | =head1 Installation and Configuration Improvements | |
136 | ||
137 | XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools | |
138 | go here. | |
139 | ||
9a7a3243 JV |
140 | =head2 Platform Specific Changes |
141 | ||
142 | =over 4 | |
143 | ||
8f3d5996 JV |
144 | =item Darwin (Mac OS X) |
145 | ||
146 | =over 4 | |
147 | ||
148 | =item Skip testing the be_BY.CP1131 locale on Darwin 10 (Mac OS X 10.6), | |
149 | as it's still buggy. | |
150 | ||
151 | =item Correct infelicities in the regexp used to identify buggy locales | |
152 | on Darwin 8 and 9 (Mac OS X 10.4 and 10.5, respectively). | |
153 | ||
154 | =back | |
155 | ||
156 | =item DragonFly BSD | |
157 | ||
158 | =over 4 | |
159 | ||
160 | =item Fix thread library selection [perl #69686] | |
161 | ||
162 | =back | |
163 | ||
164 | =item Win32 | |
165 | ||
166 | =over 4 | |
167 | ||
168 | =item Initial support for mingw64 is now available | |
169 | ||
170 | =back | |
9a7a3243 | 171 | |
9a7a3243 JV |
172 | |
173 | =back | |
174 | ||
175 | =head1 Selected Bug Fixes | |
176 | ||
9a7a3243 JV |
177 | =over 4 |
178 | ||
8f3d5996 JV |
179 | =item Perl now properly returns a syntax error instead of segfaulting |
180 | if C<each>, C<keys> or C<values> is used without an argument | |
9a7a3243 | 181 | |
8f3d5996 JV |
182 | =item C<tell()> now fails properly if called without an argument and when no previous file was read |
183 | ||
184 | C<tell()> now returns C<-1>, and sets errno to C<EBADF>, thus restoring the 5.8.x behaviour | |
185 | ||
186 | =item overload no longer implicitly unsets fallback on repeated 'use overload' lines | |
9a7a3243 | 187 | |
90b948c5 JV |
188 | =item POSIX::strftime() can now handle Unicode characters in the format string. |
189 | ||
190 | =item The winsock select() implementation now supports all empty C<fd_set>s more correctly. | |
191 | ||
9a7a3243 JV |
192 | =back |
193 | ||
194 | =head1 New or Changed Diagnostics | |
195 | ||
9a7a3243 JV |
196 | =over 4 |
197 | ||
9a7a3243 | 198 | |
8f3d5996 JV |
199 | =item The 'syntax' category was removed from 5 warnings that should only be in 'deprecated'. |
200 | ||
201 | =item Three fatal pack/unpack error messages have been normalized to "panic: %s" | |
202 | ||
203 | =item "Unicode character is illegal" has been rephrased to be more accurate | |
204 | ||
205 | It now reads C<Unicode non-character is illegal in interchange> and the | |
206 | perldiag documentation has been expanded a bit. | |
207 | ||
208 | =item Perl now defaults to issuing a warning if a deprecated language feature is used. | |
209 | ||
210 | To disable this feature in a given lexical scope, you should use C<no | |
211 | warnings 'deprecated';> For information about which language features | |
212 | are deprecated and explanations of various deprecation warnings, please | |
213 | see L<perldiag.pod> | |
9a7a3243 JV |
214 | |
215 | =back | |
216 | ||
6609e040 | 217 | =head1 Testing |
9a7a3243 | 218 | |
9a7a3243 JV |
219 | =over 4 |
220 | ||
8f3d5996 JV |
221 | =item Significant cleanups to core tests to ensure that language and |
222 | interpreter features are not used before they're tested. | |
9a7a3243 | 223 | |
8f3d5996 JV |
224 | =item F<t/porting/podcheck.t> automatically checks the well-formedness of |
225 | POD found in all .pl, .pm and .pod files in the F<MANIFEST>, other than in | |
226 | dual-lifed modules which are primarily maintained outside the Perl core. | |
227 | ||
228 | =item F<t/porting/manifest.t> now tests that all files listed in MANIFEST are present. | |
9a7a3243 JV |
229 | |
230 | =back | |
231 | ||
232 | =head1 Known Problems | |
233 | ||
234 | XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any | |
235 | tests that had to be C<TODO>ed for the release would be noted here, unless | |
236 | they were specific to a particular platform (see below). | |
237 | ||
238 | This is a list of some significant unfixed bugs, which are regressions | |
239 | from either 5.10.1 or 5.11.0. | |
240 | ||
241 | =over 4 | |
242 | ||
243 | =item * | |
244 | ||
245 | XXX | |
246 | ||
247 | =back | |
248 | ||
8f3d5996 JV |
249 | =head1 Errata |
250 | ||
2cf7e86b | 251 | =over |
8f3d5996 | 252 | |
90b948c5 | 253 | =item The Perl 5.11.0 release notes incorrectly described 'delete local' |
8f3d5996 | 254 | |
2cf7e86b | 255 | =back |
9a7a3243 JV |
256 | |
257 | =head1 Acknowledgements | |
258 | ||
259 | XXX The list of people to thank goes here. | |
260 | ||
261 | ||
262 | =head1 Reporting Bugs | |
263 | ||
264 | If you find what you think is a bug, you might check the articles | |
265 | recently posted to the comp.lang.perl.misc newsgroup and the perl | |
266 | bug database at http://rt.perl.org/perlbug/ . There may also be | |
267 | information at http://www.perl.org/ , the Perl Home Page. | |
268 | ||
269 | If you believe you have an unreported bug, please run the B<perlbug> | |
270 | program included with your release. Be sure to trim your bug down | |
271 | to a tiny but sufficient test case. Your bug report, along with the | |
272 | output of C<perl -V>, will be sent off to perlbug@perl.org to be | |
273 | analysed by the Perl porting team. | |
274 | ||
275 | If the bug you are reporting has security implications, which make it | |
276 | inappropriate to send to a publicly archived mailing list, then please send | |
277 | it to perl5-security-report@perl.org. This points to a closed subscription | |
278 | unarchived mailing list, which includes all the core committers, who be able | |
279 | to help assess the impact of issues, figure out a resolution, and help | |
280 | co-ordinate the release of patches to mitigate or fix the problem across all | |
281 | platforms on which Perl is supported. Please only use this address for | |
282 | security issues in the Perl core, not for modules independently | |
283 | distributed on CPAN. | |
284 | ||
285 | =head1 SEE ALSO | |
286 | ||
287 | The F<Changes> file for an explanation of how to view exhaustive details | |
288 | on what changed. | |
289 | ||
290 | The F<INSTALL> file for how to build Perl. | |
291 | ||
292 | The F<README> file for general stuff. | |
293 | ||
294 | The F<Artistic> and F<Copying> files for copyright information. | |
295 | ||
296 | =cut | |
6609e040 | 297 | |
fb0bad2e | 298 | This is all changes through 6609e0408cfa30e0d5c739e4c818f8591c88c0bc |
6609e040 JV |
299 | |
300 | ||
6609e040 | 301 |