This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
(perl #133706) remove exploit code from Storable
[perl5.git] / pod / perl5294delta.pod
1 =encoding utf8
2
3 =head1 NAME
4
5 perl5294delta - what is new for perl v5.29.4
6
7 =head1 DESCRIPTION
8
9 This document describes differences between the 5.29.3 release and the 5.29.4
10 release.
11
12 If you are upgrading from an earlier release such as 5.29.2, first read
13 L<perl5293delta>, which describes differences between 5.29.2 and 5.29.3.
14
15 =head1 Core Enhancements
16
17 =head2 The maximum number of times a pattern can match has been doubled
18 to 65535
19
20 This means if you specify C<qr/a+/> that there can be anywhere from 1
21 through 65535 C<"a">'s in a row, instead of 32267 as previously.
22
23 =head1 Incompatible Changes
24
25 =head2 Assigning non-zero to C<$[> is fatal
26
27 Setting L<< C<$[>|perlvar/$[ >> to a non-zero value has been deprecated since
28 Perl 5.12 and now throws a fatal error.
29 See L<<< perldeprecation/Assigning non-zero to C<< $[ >> is fatal >>>.
30
31 =head2 Previously deprecated sysread()/syswrite() on :utf8 handles now fatal
32
33 Calling sysread(), syswrite(), send() or recv() on a C<:utf8> handle,
34 whether applied explicitly or implicitly, is now fatal.  This was
35 deprecated in perl 5.24.
36
37 There were two problems with calling these functions on C<:utf8>
38 handles:
39
40 =over
41
42 =item *
43
44 All four functions only paid attention to the C<:utf8> flag.  Other
45 layers were completely ignored, so a handle with
46 C<:encoding(UTF-16LE)> layer would be treated as UTF-8.  Other layers,
47 such as compression are completely ignored with or without the
48 C<:utf8> flag.
49
50 =item *
51
52 sysread() and recv() would read from the handle, skipping any
53 validation by the layers, and do no validation of their own.  This
54 could lead to invalidly encoded perl scalars.
55
56 =back
57
58 [perl #125760]
59
60 =head2 my() in false conditional prohibited
61
62 Declarations such as C<my $x if 0> are no longer permitted.
63
64 [perl #133543]
65
66 =head2 Fatalize $* and $#
67
68 These special variables, long deprecated, now throw exceptions when used.
69
70 [perl #133583]
71
72 =head2 Fatalize unqualified use of dump()
73
74 The C<dump()> function, long discouraged, may no longer be used unless it is
75 fully qualified, I<i.e.>, C<CORE::dump()>.
76
77 [perl #133584]
78
79 =head2 Remove File::Glob::glob()
80
81 The C<File::Glob::glob()> function, long deprecated, has been removed and now
82 throws an exception which advises use of C<File::Glob::bsd_glob()> instead.
83
84 [perl #133586]
85
86 =head1 Modules and Pragmata
87
88 =head2 Updated Modules and Pragmata
89
90 =over 4
91
92 =item *
93
94 L<B> has been upgraded from version 1.74 to 1.75.
95
96 =item *
97
98 L<B::Concise> has been upgraded from version 1.003 to 1.004.
99
100 =item *
101
102 L<B::Deparse> has been upgraded from version 1.48 to 1.49.
103
104 =item *
105
106 L<bignum> has been upgraded from version 0.50 to 0.51.
107
108 =item *
109
110 L<bytes> has been upgraded from version 1.06 to 1.07.
111
112 =item *
113
114 L<CPAN> has been upgraded from version 2.20-TRIAL to 2.21-TRIAL.
115
116 =item *
117
118 L<Devel::Peek> has been upgraded from version 1.27 to 1.28.
119
120 =item *
121
122 L<feature> has been upgraded from version 1.53 to 1.54.
123
124 =item *
125
126 L<File::Copy> has been upgraded from version 2.33 to 2.34.
127
128 =item *
129
130 L<File::Glob> has been upgraded from version 1.31 to 1.32.
131
132 =item *
133
134 L<Module::CoreList> has been upgraded from version 5.20180920 to 5.20181020.
135
136 =item *
137
138 L<sigtrap> has been upgraded from version 1.08 to 1.09.
139
140 =item *
141
142 L<Unicode::UCD> has been upgraded from version 0.71 to 0.72.
143
144 =item *
145
146 L<vars> has been upgraded from version 1.04 to 1.05.
147
148 C<vars.pm> no longer disables non-vars strict when checking if strict
149 vars is enabled.  [perl #130674]
150
151 =back
152
153 =head2 Removed Modules and Pragmata
154
155 =over 4
156
157 =item *
158
159 B::Debug is no longer distributed with the core distribution.  It remains
160 available on CPAN.
161
162 =back
163
164 =head1 Internal Changes
165
166 =over 4
167
168 =item *
169
170 The sizing pass has been eliminated from the regular expression
171 compiler.  An extra pass may instead be needed in some cases to count
172 the number of parenthetical capture groups.
173
174 =back
175
176 =head1 Selected Bug Fixes
177
178 =over 4
179
180 =item *
181
182 C<pack "u", "invalid uuencoding"> now properly NUL terminates the
183 zero-length SV produced.  [perl #132655]
184
185 =item *
186
187 Improve the debugging output for calloc() calls with C<-Dm>.  [perl #133439]
188
189 =item *
190
191 Regexp script runs were failing to permit ASCII digits in some cases.
192 [perl #133547]
193
194 =item *
195
196 On Unix-like systems supporting a platform-specific technique for
197 determining L<< C<$^X>|perlvar/$^X >>, Perl failed to fall back to the
198 generic technique when the platform-specific one fails (for example, a Linux
199 system with /proc not mounted).  This was a regression in Perl 5.28.0.
200 [perl #133573]
201
202 =back
203
204 =head1 Acknowledgements
205
206 Perl 5.29.4 represents approximately 4 weeks of development since Perl
207 5.29.3 and contains approximately 8,400 lines of changes across 180 files
208 from 17 authors.
209
210 Excluding auto-generated files, documentation and release tools, there were
211 approximately 6,300 lines of changes to 110 .pm, .t, .c and .h files.
212
213 Perl continues to flourish into its fourth decade thanks to a vibrant
214 community of users and developers. The following people are known to have
215 contributed the improvements that became Perl 5.29.4:
216
217 Aaron Crane, Alexandr Savca, Andreas König, Chris 'BinGOs' Williams, Craig
218 A. Berry, Dagfinn Ilmari Mannsåker, David Mitchell, Eugen Konkov, James E
219 Keenan, John SJ Anderson, Karl Williamson, Matthias Bethke, Nicolas R.,
220 Sisyphus, Slaven Rezic, Tomasz Konojacki, Tony Cook.
221
222 The list above is almost certainly incomplete as it is automatically
223 generated from version control history. In particular, it does not include
224 the names of the (very much appreciated) contributors who reported issues to
225 the Perl bug tracker.
226
227 Many of the changes included in this version originated in the CPAN modules
228 included in Perl's core. We're grateful to the entire CPAN community for
229 helping Perl to flourish.
230
231 For a more complete list of all of Perl's historical contributors, please
232 see the F<AUTHORS> file in the Perl source distribution.
233
234 =head1 Reporting Bugs
235
236 If you find what you think is a bug, you might check the perl bug database
237 at L<https://rt.perl.org/> .  There may also be information at
238 L<http://www.perl.org/> , the Perl Home Page.
239
240 If you believe you have an unreported bug, please run the L<perlbug> program
241 included with your release.  Be sure to trim your bug down to a tiny but
242 sufficient test case.  Your bug report, along with the output of C<perl -V>,
243 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
244
245 If the bug you are reporting has security implications which make it
246 inappropriate to send to a publicly archived mailing list, then see
247 L<perlsec/SECURITY VULNERABILITY CONTACT INFORMATION>
248 for details of how to report the issue.
249
250 =head1 Give Thanks
251
252 If you wish to thank the Perl 5 Porters for the work we had done in Perl 5,
253 you can do so by running the C<perlthanks> program:
254
255     perlthanks
256
257 This will send an email to the Perl 5 Porters list with your show of thanks.
258
259 =head1 SEE ALSO
260
261 The F<Changes> file for an explanation of how to view exhaustive details on
262 what changed.
263
264 The F<INSTALL> file for how to build Perl.
265
266 The F<README> file for general stuff.
267
268 The F<Artistic> and F<Copying> files for copyright information.
269
270 =cut