Commit | Line | Data |
9a7a3243 |
1 | =head1 NAME |
2 | |
9a7a3243 |
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 |
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 |
16 | =back |
17 | |
9a7a3243 |
18 | =head1 Core Enhancements |
19 | |
8f3d5996 |
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 |
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 |
76 | |
77 | =head1 Modules and Pragmata |
78 | |
90b948c5 |
79 | =head2 Updated Modules |
80 | |
8f3d5996 |
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 |
111 | =head1 New Documentation |
112 | |
9a7a3243 |
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 |
116 | |
117 | =back |
118 | |
119 | =head1 Changes to Existing Documentation |
120 | |
8f3d5996 |
121 | =over |
122 | |
123 | =item Documentation for C<$1> in perlvar.pod clarified |
9a7a3243 |
124 | |
8f3d5996 |
125 | =back |
9a7a3243 |
126 | |
127 | =head1 Performance Enhancements |
128 | |
9a7a3243 |
129 | =over 4 |
130 | |
8f3d5996 |
131 | =item C<if (%foo)> has been optimized to be faster than C<if (keys %foo)> |
9a7a3243 |
132 | |
9a7a3243 |
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 |
140 | =head2 Platform Specific Changes |
141 | |
142 | =over 4 |
143 | |
8f3d5996 |
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 |
172 | |
173 | =back |
174 | |
175 | =head1 Selected Bug Fixes |
176 | |
9a7a3243 |
177 | =over 4 |
178 | |
8f3d5996 |
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 |
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 |
188 | =item POSIX::strftime() can now handle Unicode characters in the format string. |
189 | |
546378fe |
190 | =item The Windows select() implementation now supports all empty C<fd_set>s more correctly. |
90b948c5 |
191 | |
9a7a3243 |
192 | =back |
193 | |
194 | =head1 New or Changed Diagnostics |
195 | |
9a7a3243 |
196 | =over 4 |
197 | |
9a7a3243 |
198 | |
8f3d5996 |
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 |
214 | |
215 | =back |
216 | |
6609e040 |
217 | =head1 Testing |
9a7a3243 |
218 | |
9a7a3243 |
219 | =over 4 |
220 | |
8f3d5996 |
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 |
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 |
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 |
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 |
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 |
299 | |
300 | |
6609e040 |
301 | |