|
| 1 | +=encoding utf8 |
| 2 | + |
| 3 | +=head1 NAME |
| 4 | + |
| 5 | +perl5433delta - what is new for perl v5.43.3 |
| 6 | + |
| 7 | +=head1 DESCRIPTION |
| 8 | + |
| 9 | +This document describes differences between the 5.43.2 release and the 5.43.3 |
| 10 | +release. |
| 11 | + |
| 12 | +If you are upgrading from an earlier release such as 5.43.1, first read |
| 13 | +L<perl5432delta>, which describes differences between 5.43.1 and 5.43.2. |
| 14 | + |
| 15 | + |
| 16 | +=head1 Core Enhancements |
| 17 | + |
| 18 | +=head2 Unicode 17.0 is supported |
| 19 | + |
| 20 | +See L<https://www.unicode.org/versions/Unicode17.0.0/>. |
| 21 | + |
| 22 | + |
| 23 | +=head1 Modules and Pragmata |
| 24 | + |
| 25 | +=head2 Updated Modules and Pragmata |
| 26 | + |
| 27 | +=over 4 |
| 28 | + |
| 29 | +=item * |
| 30 | + |
| 31 | +L<B> has been upgraded from version 1.89 to 1.90. |
| 32 | + |
| 33 | +=item * |
| 34 | + |
| 35 | +L<B::Concise> has been upgraded from version 1.007 to 1.009. It now correctly |
| 36 | +omits all its internal BEGIN blocks when asked to report BEGIN blocks in a |
| 37 | +caller's code. Previously it only omitted some of them. |
| 38 | + |
| 39 | +=item * |
| 40 | + |
| 41 | +L<B::Deparse> has been upgraded from version 1.86 to 1.87. |
| 42 | + |
| 43 | +=item * |
| 44 | + |
| 45 | +L<ExtUtils::ParseXS> has been upgraded from version 3.59 to 3.60. This |
| 46 | +release changes the ordering of the processing of typemap files which have |
| 47 | +been specified via C<xsubpp -typemap> arguments so that (as was the case |
| 48 | +prior to Perl 5.10.0) these files are applied last rather than first, and |
| 49 | +thus take priority over any system typemap files. |
| 50 | + |
| 51 | +=item * |
| 52 | + |
| 53 | +L<ExtUtils::Typemaps> has been upgraded from version 3.59 to 3.60. |
| 54 | + |
| 55 | +=item * |
| 56 | + |
| 57 | +L<File::Copy> has been upgraded from version 2.42 to 2.43. |
| 58 | + |
| 59 | +=item * |
| 60 | + |
| 61 | +L<File::Temp> has been upgraded from version 0.2311 to 0.2312. |
| 62 | + |
| 63 | +=item * |
| 64 | + |
| 65 | +L<Filter::Util::Call> has been upgraded from version 1.64 to 1.65. |
| 66 | + |
| 67 | +=item * |
| 68 | + |
| 69 | +L<Module::CoreList> has been upgraded from version 5.20250820 to 5.20250923. |
| 70 | + |
| 71 | +=item * |
| 72 | + |
| 73 | +L<Net::Ping> has been upgraded from version 2.76 to 2.77. |
| 74 | + |
| 75 | +=item * |
| 76 | + |
| 77 | +L<Opcode> has been upgraded from version 1.69 to 1.70. |
| 78 | + |
| 79 | +=item * |
| 80 | + |
| 81 | +L<overloading> has been upgraded from version 0.02 to 0.03. |
| 82 | + |
| 83 | +=item * |
| 84 | + |
| 85 | +L<PerlIO::via> has been upgraded from version 0.20 to 0.21. |
| 86 | + |
| 87 | +=item * |
| 88 | + |
| 89 | +L<Storable> has been upgraded from version 3.38 to 3.39. |
| 90 | + |
| 91 | +=item * |
| 92 | + |
| 93 | +L<Term::Table> has been upgraded from version 0.024 to 0.025. |
| 94 | + |
| 95 | +=item * |
| 96 | + |
| 97 | +L<Time::HiRes> has been upgraded from version 1.9778 to 1.9779. |
| 98 | + |
| 99 | +The subsecond-resolution C<sleep> function provided by L<Time::HiRes> now has |
| 100 | +the same prototype as perl's built-in L<sleep function|perlfunc/sleep>. This |
| 101 | +means it now requires a scalar argument, not a list, just like C<CORE::sleep>: |
| 102 | + |
| 103 | + use Time::HiRes qw(sleep); |
| 104 | + |
| 105 | + sleep(1, "foo", "bar"); # Syntax error. |
| 106 | + # It used to silently ignore the extra arguments. |
| 107 | + |
| 108 | + my @t = 42; |
| 109 | + sleep @t; |
| 110 | + # Evaluates @t in scalar context (giving the number of elements) |
| 111 | + # and sleeps for one second. It used to sleep for 42 seconds. |
| 112 | + |
| 113 | +=item * |
| 114 | + |
| 115 | +L<Time::Piece> has been upgraded from version 1.36 to 1.3701. |
| 116 | + |
| 117 | +=item * |
| 118 | + |
| 119 | +L<utf8> has been upgraded from version 1.27 to 1.29. |
| 120 | + |
| 121 | +=item * |
| 122 | + |
| 123 | +L<XS::APItest> has been upgraded from version 1.44 to 1.46. |
| 124 | + |
| 125 | +=back |
| 126 | + |
| 127 | +=head1 Documentation |
| 128 | + |
| 129 | +=head2 New Documentation |
| 130 | + |
| 131 | +=over 4 |
| 132 | + |
| 133 | +=item * |
| 134 | + |
| 135 | +L<perlapi> now contains information about how to find what release of |
| 136 | +Perl first contained an API element |
| 137 | + |
| 138 | +=back |
| 139 | + |
| 140 | +=head1 Diagnostics |
| 141 | + |
| 142 | +=head2 Changes to Existing Diagnostics |
| 143 | + |
| 144 | +=over 4 |
| 145 | + |
| 146 | +=item * |
| 147 | + |
| 148 | +Certain diagnostics about byte sequences that are supposed to comprise a |
| 149 | +UTF-8 encoded character, but that are invalid in some way, now don't |
| 150 | +include bytes irrelevant to that determination. An example is |
| 151 | + |
| 152 | +=over |
| 153 | + |
| 154 | +=item old message |
| 155 | + |
| 156 | +Malformed UTF-8 character: C<\xc1\x27> (any UTF-8 sequence that starts with |
| 157 | +C<\xc1> is overlong which can and should be represented with a different, |
| 158 | +shorter sequence) |
| 159 | + |
| 160 | +=item new message |
| 161 | + |
| 162 | +Malformed UTF-8 character: C<\xc1> (any UTF-8 sequence that starts with |
| 163 | +C<\xc1> is overlong which can and should be represented with a different, |
| 164 | +shorter sequence) |
| 165 | + |
| 166 | +=back |
| 167 | + |
| 168 | +In this case the C<\xc1> is all that is needed to make the sequence |
| 169 | +invalid. Whatever comes after it is irrelevant (in this case, C<\x27>), |
| 170 | +and including it in the message might lead the reader to think that it |
| 171 | +somehow does matter. |
| 172 | + |
| 173 | +=back |
| 174 | + |
| 175 | +=head1 Configuration and Compilation |
| 176 | + |
| 177 | +=over 4 |
| 178 | + |
| 179 | +=item * |
| 180 | + |
| 181 | +C23 F<< <stdckdint.h> >> and associated macros are now used if available. |
| 182 | + |
| 183 | +=back |
| 184 | + |
| 185 | +=head1 Internal Changes |
| 186 | + |
| 187 | +=over 4 |
| 188 | + |
| 189 | +=item * |
| 190 | + |
| 191 | +A new function C<valid_utf8_to_uv> has been added. This is synonymous |
| 192 | +with C<valid_utf8_to_uvchr>; its reason for existence is to have |
| 193 | +consistent spelling with the names of the other functions that translate |
| 194 | +from UTF-8, so you don't have to remember a different spelling. |
| 195 | + |
| 196 | +=item * |
| 197 | + |
| 198 | +L<perlapi/C<newSVsv_flags_NN>> is a new function for creating a new SV |
| 199 | +and assigning the value(s) of an existing SV to it. |
| 200 | + |
| 201 | +Historically, C<Perl_newSVsv_flags> and C<Perl_sv_mortalcopy_flags> would |
| 202 | +pass a new SV head and the original SV to C<Perl_sv_setsv_flags>. However, |
| 203 | +the latter contains many branches of no relevance to a fresh SV, so they |
| 204 | +now make use of the new function to streamline the process. |
| 205 | + |
| 206 | +C<Perl_newSVsv_flags> is now essentially a NULL pointer check and wrapper |
| 207 | +around the new function, so has been moved into F<sv_inline.h>. |
| 208 | + |
| 209 | +=item * |
| 210 | + |
| 211 | +L<perlapi/C<STATIC_ASSERT_DECL>> and C<STATIC_ASSERT_STMT> are like |
| 212 | +C<assert()>, but are evaluated at compile time. That means their |
| 213 | +argument must be a constant expression that can be verified by the |
| 214 | +compiler, and so they effectively have no cost, not appearing in the |
| 215 | +code that gets executed. These were added in v5.28, but not until now |
| 216 | +have we opened their use up to XS writers. At the same time, a new |
| 217 | +variant has been added, C<STATIC_ASSERT_EXPR> which is suitable for use |
| 218 | +in an expression, such as a comma expression in a C macro. |
| 219 | + |
| 220 | +=back |
| 221 | + |
| 222 | +=head1 Selected Bug Fixes |
| 223 | + |
| 224 | +=over 4 |
| 225 | + |
| 226 | +=item * INTERFACE keyword in XS |
| 227 | + |
| 228 | +Fixed a couple of issues with the INTERFACE keyword in XS. |
| 229 | + |
| 230 | +[L<GH #23640|https://github.com/Perl/perl5/issues/23640>] |
| 231 | + |
| 232 | +=item * C<&CORE::__CLASS__> no longer returns invalid results |
| 233 | + |
| 234 | +C<CORE::__CLASS__> would work as expected when used as a bareword or aliased: |
| 235 | + |
| 236 | + use feature qw(class); |
| 237 | + class Foo { |
| 238 | + BEGIN { *cls = \&CORE::__CLASS__; } |
| 239 | + method bar() { |
| 240 | + my $class1 = CORE::__CLASS__; # ok |
| 241 | + my $class2 = cls; # ok |
| 242 | + } |
| 243 | + } |
| 244 | + |
| 245 | +But when called with an ampersand (C<&CORE::__CLASS__()>) or through a |
| 246 | +reference (C<< my $ref = \&CORE::__CLASS__; $ref->() >>), it would return |
| 247 | +unrelated strings. These runtime calls have been fixed to throw an error of the |
| 248 | +form C<&CORE::__CLASS__ cannot be called directly> instead of silently |
| 249 | +returning incorrect results. |
| 250 | + |
| 251 | +[L<GH #23737|https://github.com/Perl/perl5/issues/23737>] |
| 252 | + |
| 253 | +=item * C<parse_subsignature()> can now handle empty subroutine signatures |
| 254 | + |
| 255 | +Previously, calling the C<parse_subsignature()> API function with an empty |
| 256 | +signature would cause a "Syntax error" failure, requiring code which calls it |
| 257 | +to detect the special case and take appropriate steps. This is now fixed, |
| 258 | +returning the same optree that the parser would yield for a regular empty |
| 259 | +signature during normal parse time. |
| 260 | + |
| 261 | +[L<GH #17689|https://github.com/Perl/perl5/issues/17689>] |
| 262 | + |
| 263 | +=back |
| 264 | + |
| 265 | +=head1 Acknowledgements |
| 266 | + |
| 267 | +Perl 5.43.3 represents approximately 5 weeks of development since Perl |
| 268 | +5.43.2 and contains approximately 150,000 lines of changes across 330 files |
| 269 | +from 26 authors. |
| 270 | + |
| 271 | +Excluding auto-generated files, documentation and release tools, there were |
| 272 | +approximately 26,000 lines of changes to 180 .pm, .t, .c and .h files. |
| 273 | + |
| 274 | +Perl continues to flourish into its fourth decade thanks to a vibrant |
| 275 | +community of users and developers. The following people are known to have |
| 276 | +contributed the improvements that became Perl 5.43.3: |
| 277 | + |
| 278 | +Branislav Zahradník, brian d foy, Chad Granum, Craig A. Berry, Daniel |
| 279 | +Dragan, David Mitchell, Igor Todorovski, James E Keenan, James Raspass, Jörg |
| 280 | +Thomas, Karen Etheridge, Karl Williamson, Leon Timmermans, Lukas Mai, Paul |
| 281 | +Evans, Philippe Bruhat (BooK), Ricardo Signes, Richard Leach, Samuel Smith, |
| 282 | +Samuel Young, TAKAI Kousuke, Thibault Duponchelle, Tomasz Konojacki, Tom |
| 283 | +Wyant, Tony Cook, Unicode Consortium. |
| 284 | + |
| 285 | +The list above is almost certainly incomplete as it is automatically |
| 286 | +generated from version control history. In particular, it does not include |
| 287 | +the names of the (very much appreciated) contributors who reported issues to |
| 288 | +the Perl bug tracker. |
| 289 | + |
| 290 | +Many of the changes included in this version originated in the CPAN modules |
| 291 | +included in Perl's core. We're grateful to the entire CPAN community for |
| 292 | +helping Perl to flourish. |
| 293 | + |
| 294 | +For a more complete list of all of Perl's historical contributors, please |
| 295 | +see the F<AUTHORS> file in the Perl source distribution. |
| 296 | + |
| 297 | +=head1 Reporting Bugs |
| 298 | + |
| 299 | +If you find what you think is a bug, you might check the perl bug database |
| 300 | +at L<https://github.com/Perl/perl5/issues>. There may also be information at |
| 301 | +L<https://www.perl.org/>, the Perl Home Page. |
| 302 | + |
| 303 | +If you believe you have an unreported bug, please open an issue at |
| 304 | +L<https://github.com/Perl/perl5/issues>. Be sure to trim your bug down to a |
| 305 | +tiny but sufficient test case. |
| 306 | + |
| 307 | +If the bug you are reporting has security implications which make it |
| 308 | +inappropriate to send to a public issue tracker, then see |
| 309 | +L<perlsec/SECURITY VULNERABILITY CONTACT INFORMATION> |
| 310 | +for details of how to report the issue. |
| 311 | + |
| 312 | +=head1 Give Thanks |
| 313 | + |
| 314 | +If you wish to thank the Perl 5 Porters for the work we had done in Perl 5, |
| 315 | +you can do so by running the C<perlthanks> program: |
| 316 | + |
| 317 | + perlthanks |
| 318 | + |
| 319 | +This will send an email to the Perl 5 Porters list with your show of thanks. |
| 320 | + |
| 321 | +=head1 SEE ALSO |
| 322 | + |
| 323 | +The F<Changes> file for an explanation of how to view exhaustive details on |
| 324 | +what changed. |
| 325 | + |
| 326 | +The F<INSTALL> file for how to build Perl. |
| 327 | + |
| 328 | +The F<README> file for general stuff. |
| 329 | + |
| 330 | +The F<Artistic> and F<Copying> files for copyright information. |
| 331 | + |
| 332 | +=cut |
0 commit comments