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