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