This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
new perldelta for 5.33.6
[perl5.git] / pod / perl5335delta.pod
CommitLineData
6aeb63c3
MM
1=encoding utf8
2
3=head1 NAME
4
5perl5335delta - what is new for perl v5.33.5
6
7=head1 DESCRIPTION
8
9This document describes differences between the 5.33.4 release and the 5.33.5
10release.
11
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.
14
15=head1 Core Enhancements
16
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
26=head1 Modules and Pragmata
27
28=head2 Updated Modules and Pragmata
29
30=over 4
31
32=item *
33
34L<Carp> has been upgraded from version 1.50 to 1.51.
35
36=item *
37
38L<Config::Perl::V> has been upgraded from version 0.32 to 0.33.
39
40=item *
41
42L<DynaLoader> has been upgraded from version 1.48 to 1.49.
43
44=item *
45
46L<Encode> has been upgraded from version 3.07 to 3.08.
47
48=item *
49
50L<ExtUtils::Install> has been upgraded from version 2.18 to 2.20.
51
52=item *
53
54L<ExtUtils::ParseXS> has been upgraded from version 3.41 to 3.42.
55
56=item *
57
58L<File::Copy> has been upgraded from version 2.34 to 2.35.
59
60=item *
61
62L<File::Find> has been upgraded from version 1.37 to 1.38.
63
64=item *
65
66L<File::Spec> has been upgraded from version 3.79 to 3.80.
67
68=item *
69
70The libnet distribution has been upgraded from version 3.11 to 3.12.
71
72=item *
73
74L<Module::CoreList> has been upgraded from version 5.20201120 to 5.20201220.
75
76=item *
77
78L<ODBM_File> has been upgraded from version 1.16 to 1.17.
79
80=item *
81
82L<Opcode> has been upgraded from version 1.48 to 1.49.
83
84=item *
85
86L<PerlIO::via::QuotedPrint> has been upgraded from version 0.08 to 0.09.
87
88=item *
89
90L<POSIX> has been upgraded from version 1.95 to 1.96.
91
92=item *
93
94L<Test::Harness> has been upgraded from version 3.42 to 3.43.
95
96=item *
97
98L<Text::Balanced> has been upgraded from version 2.03 to 2.04.
99
100=item *
101
102L<Time::HiRes> has been upgraded from version 1.9765 to 1.9766.
103
104=item *
105
106L<warnings> has been upgraded from version 1.48 to 1.49.
107
108=item *
109
110L<XS::APItest> has been upgraded from version 1.13 to 1.14.
111
112=back
113
114=head1 Documentation
115
116=head2 New Documentation
117
118=head3 L<perldocstyle> has been added to F<pod/>.
119
120This document is a guide for the authorship and maintenance of the
121documentation that ships with Perl.
122
123=head2 Changes to Existing Documentation
124
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>.
128
129Additionally, the following selected changes have been made:
130
131=head3 L<perlfunc>
132
133=over 4
134
135=item *
136
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.
140
141=back
142
143=head1 Testing
144
145Tests were added and changed to reflect the other additions and
146changes in this release. Furthermore, these significant changes were
147made:
148
149=over 4
150
151=item *
152
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.
160
161=back
162
163=head2 Platform-Specific Notes
164
165=over 4
166
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>.
203
204=back
205
206=head1 Internal Changes
207
208=over 4
209
210=item *
211
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.
215
216=item *
217
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.
222
223=back
224
225=head1 Selected Bug Fixes
226
227=over 4
228
229=item *
230
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>.
263
264=back
265
266=head1 Known Problems
267
268None
269
270=head1 Errata From Previous Releases
271
272None
273
274=head1 Acknowledgements
275
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.
279
280Excluding auto-generated files, documentation and release tools, there were
281approximately 15,000 lines of changes to 220 .pm, .t, .c and .h files.
282
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:
286
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.
293
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.
298
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.
302
303For a more complete list of all of Perl's historical contributors, please
304see the F<AUTHORS> file in the Perl source distribution.
305
306=head1 Reporting Bugs
307
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
310L<http://www.perl.org/>, the Perl Home Page.
311
312If you believe you have an unreported bug, please open an issue at
313L<https://github.com/Perl/perl5/issues>. Be sure to trim your bug down to a
314tiny but sufficient test case.
315
316If the bug you are reporting has security implications which make it
317inappropriate to send to a public issue tracker, then see
318L<perlsec/SECURITY VULNERABILITY CONTACT INFORMATION>
319for details of how to report the issue.
320
321=head1 Give Thanks
322
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:
325
326 perlthanks
327
328This will send an email to the Perl 5 Porters list with your show of thanks.
329
330=head1 SEE ALSO
331
332The F<Changes> file for an explanation of how to view exhaustive details on
333what changed.
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