This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Finalize perldelta for 5.33.5
[perl5.git] / pod / perldelta.pod
CommitLineData
0382c61d 1=encoding utf8
7b0fb693 2
0382c61d 3=head1 NAME
7b0fb693 4
d228bb8b 5perldelta - what is new for perl v5.33.5
7b0fb693 6
0382c61d 7=head1 DESCRIPTION
7b0fb693 8
d228bb8b 9This document describes differences between the 5.33.4 release and the 5.33.5
0382c61d 10release.
7b0fb693 11
d228bb8b
TH
12If you are upgrading from an earlier release such as 5.33.3, first read
13L<perl5334delta>, which describes differences between 5.33.3 and 5.33.4.
5238875c 14
d228bb8b 15=head1 Core Enhancements
ff9545d6 16
54e31e24
TK
17=head2 New octal syntax C<0oI<ddddd>>
18
19It is now possible to specify octal literals with C<0o> prefixes,
20as in C<0o123_456>, parallel to the existing construct to specify
21hexadecimal literal C<0xI<ddddd>> and binary literal C<0bI<ddddd>>.
22Also, the builtin C<oct()> function now accepts this new syntax.
23
24See L<perldata/Scalar value constructors> and L<perlfunc/oct EXPR>.
25
5c9a521b 26=head1 Modules and Pragmata
8d374562 27
5c9a521b 28=head2 Updated Modules and Pragmata
5b68d8ff 29
5c9a521b 30=over 4
8d374562 31
5c9a521b 32=item *
8d374562 33
5c9a521b 34L<Carp> has been upgraded from version 1.50 to 1.51.
8d374562 35
5c9a521b 36=item *
8d374562 37
5c9a521b 38L<Config::Perl::V> has been upgraded from version 0.32 to 0.33.
8d374562 39
5c9a521b 40=item *
8d374562 41
5c9a521b 42L<DynaLoader> has been upgraded from version 1.48 to 1.49.
8d374562 43
5c9a521b 44=item *
8d374562 45
5c9a521b 46L<Encode> has been upgraded from version 3.07 to 3.08.
8d374562 47
5c9a521b 48=item *
8d374562 49
5c9a521b 50L<ExtUtils::Install> has been upgraded from version 2.18 to 2.20.
8d374562 51
5c9a521b 52=item *
5b68d8ff 53
5c9a521b 54L<ExtUtils::ParseXS> has been upgraded from version 3.41 to 3.42.
8d374562 55
5c9a521b 56=item *
8d374562 57
5c9a521b 58L<File::Copy> has been upgraded from version 2.34 to 2.35.
d228bb8b 59
5c9a521b 60=item *
d228bb8b 61
5c9a521b 62L<File::Find> has been upgraded from version 1.37 to 1.38.
d228bb8b 63
5c9a521b 64=item *
d228bb8b 65
5c9a521b 66L<File::Spec> has been upgraded from version 3.79 to 3.80.
8d374562 67
5c9a521b 68=item *
d228bb8b 69
5c9a521b 70The libnet distribution has been upgraded from version 3.11 to 3.12.
5b68d8ff 71
650a1ca5 72=item *
8d374562 73
5c9a521b 74L<Module::CoreList> has been upgraded from version 5.20201120 to 5.20201220.
d228bb8b 75
5c9a521b 76=item *
d228bb8b 77
5c9a521b 78L<ODBM_File> has been upgraded from version 1.16 to 1.17.
d228bb8b 79
5c9a521b 80=item *
d228bb8b 81
5c9a521b 82L<Opcode> has been upgraded from version 1.48 to 1.49.
d228bb8b 83
5c9a521b 84=item *
d228bb8b 85
5c9a521b 86L<PerlIO::via::QuotedPrint> has been upgraded from version 0.08 to 0.09.
8d374562
SH
87
88=item *
89
5c9a521b 90L<POSIX> has been upgraded from version 1.95 to 1.96.
d228bb8b 91
5c9a521b 92=item *
d228bb8b 93
5c9a521b 94L<Test::Harness> has been upgraded from version 3.42 to 3.43.
8d374562 95
650a1ca5 96=item *
8d374562 97
5c9a521b 98L<Text::Balanced> has been upgraded from version 2.03 to 2.04.
d228bb8b 99
5c9a521b 100=item *
d228bb8b 101
5c9a521b 102L<Time::HiRes> has been upgraded from version 1.9765 to 1.9766.
d228bb8b 103
5c9a521b 104=item *
d228bb8b 105
5c9a521b 106L<warnings> has been upgraded from version 1.48 to 1.49.
8d374562
SH
107
108=item *
109
5c9a521b 110L<XS::APItest> has been upgraded from version 1.13 to 1.14.
8d374562 111
5b68d8ff 112=back
8d374562 113
5b68d8ff 114=head1 Documentation
8d374562 115
d228bb8b
TH
116=head2 New Documentation
117
5c9a521b 118=head3 L<perldocstyle> has been added to F<pod/>.
d228bb8b 119
5c9a521b
MM
120This document is a guide for the authorship and maintenance of the
121documentation that ships with Perl.
d228bb8b 122
5b68d8ff 123=head2 Changes to Existing Documentation
4309bda4 124
5b68d8ff
SH
125We have attempted to update the documentation to reflect the changes
126listed in this document. If you find any we have missed, open an issue
127at L<https://github.com/Perl/perl5/issues>.
4309bda4 128
d228bb8b
TH
129Additionally, the following selected changes have been made:
130
8dc9a321 131=head3 L<perlfunc>
650a1ca5
TH
132
133=over 4
134
135=item *
136
8dc9a321
TC
137L<msgsnd()|perlfunc/msgsnd> documented a length field included in the
138packed C<MSG> parameter to msgsnd(), but there was no such field.
139C<MSG> contains only the type and the message content.
4309bda4 140
650a1ca5 141=back
5b68d8ff 142
d228bb8b
TH
143=head1 Testing
144
d228bb8b
TH
145Tests were added and changed to reflect the other additions and
146changes in this release. Furthermore, these significant changes were
147made:
148
d228bb8b
TH
149=over 4
150
151=item *
152
730797bb
KW
153When testing in parallel on many-core platforms, you can now cause the
154test suite to finish somewhat earlier, but with less logical ordering of
155the tests, by setting
156
157 PERL_TEST_HARNESS_ASAP=1
158
159while running the test suite.
e6b76f1d 160
5b68d8ff 161=back
e6b76f1d 162
f460daa0
S
163=head2 Platform-Specific Notes
164
5b68d8ff 165=over 4
f460daa0 166
7de4500e
TC
167=item Windows
168
169Windows now supports L<symlink()|perlfunc/symlink> and
170L<readlink()|perlfunc/readlink>, and L<lstat()|perlfunc/lstat> is no
171longer an alias for L<stat()|perlfunc/stat>.
172L<[#18005]|https://github.com/Perl/perl5/issues/18005>.
173
174Unlike POSIX systems, creating a symbolic link on Windows requires
175either elevated privileges or Windows 10 1703 or later with Developer
176Mode enabled.
177
178stat(), including C<stat FILEHANDLE>, and lstat() now uses our own
179implementation that populates the device C<dev> and inode numbers
180C<ino> returned rather than always returning zero. The number of
181links C<nlink> field is now always populated.
182
183L<< C<${^WIN32_SLOPPY_STAT}> |perlvar/${^WIN32_SLOPPY_STAT} >> previously
184controlled whether the C<nlink> field was populated requiring a
185separate Windows API call to fetch, since nlink and the other
186information required for stat() is now retrieved in a single API call.
187
188The C<-r> and C<-w> operators now return true for the C<STDIN>,
189C<STDOUT> and C<STDERR> handles. Unfortunately it still won't return
190true for duplicates of those handles.
191L<[#8502]|https://github.com/Perl/perl5/issues/8502>.
192
193The times returned by stat() and lstat() are no longer incorrect
194across Daylight Savings Time adjustments.
195L<[#6080]|https://github.com/Perl/perl5/issues/6080>.
196
197C<-x> on a filehandle should now match C<-x> on the corresponding
198filename on Vista or later.
199L<[#4145]|https://github.com/Perl/perl5/issues/4145>.
200
201C<-e '"'> no longer incorrectly returns true.
202L<[#12431]|https://github.com/Perl/perl5/issues/12431>.
d228bb8b
TH
203
204=back
205
206=head1 Internal Changes
207
d228bb8b
TH
208=over 4
209
210=item *
211
4eff5eb8
KW
212All C<SvTRUE>-ish functions now evaluate their arguments exactly once.
213In 5.32, plain L<perlapi/C<SvTRUE>> was changed to do that; now the rest
214do as well.
e6b76f1d 215
5c9a521b 216=item *
e6b76f1d 217
5c9a521b
MM
218Unicode is now a first class citizen when considering the pattern /A*B/ where
219A and B are arbitrary. The pattern matching code tries to make a tight loop
220to match the span of A's. The logic of this was now really updated with
221support for UTF-8.
f460daa0 222
5c9a521b 223=back
d228bb8b 224
5c9a521b 225=head1 Selected Bug Fixes
d228bb8b 226
2c101fc0
S
227=over 4
228
f460daa0
S
229=item *
230
8dc9a321
TC
231L<semctl()|perlfunc/semctl>, L<msgctl()|perlfunc/msgctl>, and
232L<shmctl()|perlfunc/shmctl> now properly reset the UTF-8 flag on the
233C<ARG> parameter if it's modified for C<IPC_STAT> or C<GETALL>
234operations.
235
236=item *
237
238semctl(), msgctl(), and shmctl() now attempt to downgrade the C<ARG>
239parameter if it's value is being used as input to C<IPC_SET> or
240C<SETALL> calls. A failed downgrade will thrown an exception.
241
242=item *
243
244In cases where semctl(), msgctl() or shmctl() would treat the C<ARG>
245parameter as a pointer, an undefined value no longer generates a
246warning. In most such calls the pointer isn't used anyway and this
247allows you to supply C<undef> for a value not used by the underlying
248function.
249
250=item *
251
252L<semop()|perlfunc/semop> now downgrades the C<OPSTRING> parameter,
253L<msgsnd()|perlfunc/msgsnd> now downgrades the C<MSG> parameter and
254L<shmwrite|perlfunc/shmwrite> now downgrades the C<STRING> parameter
255to treat them as bytes. Previously they would be left upgraded,
256providing a corrupted structure to the underlying function call.
257
258=item *
259
260L<msgrcv()|perlfunc/msgrcv> now properly resets the UTF-8 flag the
261C<VAR> parameter when it is modified. Previusly the UTF-8 flag could
262be left on, resulting in a possibly corrupt result in C<VAR>.
d228bb8b
TH
263
264=back
265
266=head1 Known Problems
267
5c9a521b 268None
e6b76f1d 269
d228bb8b 270=head1 Errata From Previous Releases
ff9545d6 271
5c9a521b 272None
ff9545d6 273
5c9a521b 274=head1 Acknowledgements
ff9545d6 275
5c9a521b
MM
276Perl 5.33.5 represents approximately 4 weeks of development since Perl
2775.33.4 and contains approximately 22,000 lines of changes across 370 files
278from 27 authors.
5b68d8ff 279
5c9a521b
MM
280Excluding auto-generated files, documentation and release tools, there were
281approximately 15,000 lines of changes to 220 .pm, .t, .c and .h files.
d228bb8b 282
5c9a521b
MM
283Perl continues to flourish into its fourth decade thanks to a vibrant
284community of users and developers. The following people are known to have
285contributed the improvements that became Perl 5.33.5:
5b68d8ff 286
5c9a521b
MM
287Branislav Zahradník, Chris 'BinGOs' Williams, Dan Book, Dan Kogai, David
288Cantrell, David Mitchell, Graham Knop, H.Merijn Brand, Jae Bradley, James E
289Keenan, Jason McIntosh, jkahrman, John Karr, Karen Etheridge, Karl
290Williamson, Leon Timmermans, Max Maischein, Paul Evans, Sawyer X, Sevan
291Janiyan, Shlomi Fish, Steve Hay, TAKAI Kousuke, Thibault Duponchelle, Tomasz
292Konojacki, Tom Hukins, Tony Cook.
d228bb8b 293
5c9a521b
MM
294The list above is almost certainly incomplete as it is automatically
295generated from version control history. In particular, it does not include
296the names of the (very much appreciated) contributors who reported issues to
297the Perl bug tracker.
ff9545d6 298
5c9a521b
MM
299Many of the changes included in this version originated in the CPAN modules
300included in Perl's core. We're grateful to the entire CPAN community for
301helping Perl to flourish.
0382c61d 302
5c9a521b
MM
303For a more complete list of all of Perl's historical contributors, please
304see the F<AUTHORS> file in the Perl source distribution.
8424e368 305
44691e6f
AB
306=head1 Reporting Bugs
307
5b68d8ff
SH
308If you find what you think is a bug, you might check the perl bug database
309at L<https://github.com/Perl/perl5/issues>. There may also be information at
46a21c0a 310L<http://www.perl.org/>, the Perl Home Page.
44691e6f 311
8166b4e0 312If you believe you have an unreported bug, please open an issue at
0382c61d 313L<https://github.com/Perl/perl5/issues>. Be sure to trim your bug down to a
8166b4e0 314tiny but sufficient test case.
44691e6f 315
87c118b9 316If the bug you are reporting has security implications which make it
8166b4e0 317inappropriate to send to a public issue tracker, then see
5b68d8ff
SH
318L<perlsec/SECURITY VULNERABILITY CONTACT INFORMATION>
319for details of how to report the issue.
44691e6f 320
390ae6f9
S
321=head1 Give Thanks
322
5b68d8ff
SH
323If you wish to thank the Perl 5 Porters for the work we had done in Perl 5,
324you can do so by running the C<perlthanks> program:
390ae6f9
S
325
326 perlthanks
327
328This will send an email to the Perl 5 Porters list with your show of thanks.
329
44691e6f
AB
330=head1 SEE ALSO
331
e08634c5
SH
332The F<Changes> file for an explanation of how to view exhaustive details on
333what changed.
44691e6f
AB
334
335The F<INSTALL> file for how to build Perl.
336
337The F<README> file for general stuff.
338
339The F<Artistic> and F<Copying> files for copyright information.
340
341=cut