Commit | Line | Data |
---|---|---|
e6a2e5ca SH |
1 | =encoding utf8 |
2 | ||
3 | =head1 NAME | |
4 | ||
5 | perl5275delta - what is new for perl v5.27.5 | |
6 | ||
7 | =head1 DESCRIPTION | |
8 | ||
9 | This document describes differences between the 5.27.4 release and the 5.27.5 | |
10 | release. | |
11 | ||
12 | If you are upgrading from an earlier release such as 5.27.3, first read | |
13 | L<perl5274delta>, which describes differences between 5.27.3 and 5.27.4. | |
14 | ||
5db3efd0 KE |
15 | =head1 Incompatible Changes |
16 | ||
17 | =head2 Subroutines no longer need typeglobs | |
18 | ||
19 | Perl 5.22.0 introduced an optimization allowing subroutines to be stored in | |
20 | packages as simple sub refs, not requiring a full typeglob (thus | |
21 | potentially saving large amounts of memeory). However, the optimization | |
22 | was flawed: it only applied to the main package. | |
23 | ||
24 | This optimization has now been extended to all packages. This may break | |
25 | compatibility with introspection code that looks inside stashes and expects | |
26 | everything in them to be a typeglob. | |
27 | ||
28 | When this optimization happens, the typeglob still notionally exists, so | |
29 | accessing it will cause the stash entry to be upgraded to a typeglob. The | |
30 | optimization does not apply to XSUBs or exported subroutines, and calling a | |
31 | method will undo it, since method calls cache things in typeglobs. | |
32 | ||
33 | [perl #129916] [perl #132252] | |
34 | ||
e6a2e5ca SH |
35 | =head1 Performance Enhancements |
36 | ||
37 | =over 4 | |
38 | ||
39 | =item * | |
40 | ||
41 | Calls to C<require> for an already loaded module are now slightly faster. | |
42 | L<[perl #132171]|https://rt.perl.org/Public/Bug/Display.html?id=132171> | |
43 | ||
44 | =back | |
45 | ||
46 | =head1 Modules and Pragmata | |
47 | ||
48 | =head2 Updated Modules and Pragmata | |
49 | ||
50 | =over 4 | |
51 | ||
52 | =item * | |
53 | ||
54 | L<arybase> has been upgraded from version 0.13 to 0.14. | |
55 | ||
56 | =item * | |
57 | ||
58 | L<B> has been upgraded from version 1.69 to 1.70. | |
59 | ||
60 | =item * | |
61 | ||
62 | L<B::Concise> has been upgraded from version 1.001 to 1.002. | |
63 | ||
64 | =item * | |
65 | ||
66 | L<B::Deparse> has been upgraded from version 1.42 to 1.43. | |
67 | ||
68 | =item * | |
69 | ||
70 | L<Config::Perl::V> has been upgraded from version 0.28 to 0.29. | |
71 | ||
72 | =item * | |
73 | ||
74 | L<Digest::SHA> has been upgraded from version 5.96 to 5.98. | |
75 | ||
76 | =item * | |
77 | ||
78 | L<Encode> has been upgraded from version 2.92 to 2.93. | |
79 | ||
80 | =item * | |
81 | ||
82 | L<encoding> has been upgraded from version 2.20 to 2.21. | |
83 | ||
84 | =item * | |
85 | ||
86 | L<File::Fetch> has been upgraded from version 0.52 to 0.54. | |
87 | ||
88 | =item * | |
89 | ||
90 | L<File::Path> has been upgraded from version 2.14 to 2.15. | |
91 | ||
92 | =item * | |
93 | ||
94 | L<List::Util> has been upgraded from version 1.48 to 1.49. | |
95 | ||
96 | =item * | |
97 | ||
98 | L<Locale::Codes> has been upgraded from version 3.52 to 3.54. | |
99 | ||
100 | =item * | |
101 | ||
102 | L<Math::BigInt> has been upgraded from version 1.999806 to 1.999811. | |
103 | ||
104 | =item * | |
105 | ||
106 | L<Math::BigInt::FastCalc> has been upgraded from version 0.5005 to 0.5006. | |
107 | ||
108 | =item * | |
109 | ||
110 | L<Module::CoreList> has been upgraded from version 5.20170920 to 5.20171020. | |
111 | ||
112 | =item * | |
113 | ||
114 | L<NEXT> has been upgraded from version 0.67 to 0.67_01. | |
115 | ||
116 | =item * | |
117 | ||
118 | L<Pod::Perldoc> has been upgraded from version 3.28 to 3.2801. | |
119 | ||
120 | =item * | |
121 | ||
122 | L<POSIX> has been upgraded from version 1.77 to 1.78. | |
123 | ||
124 | =item * | |
125 | ||
126 | L<Scalar::Util> has been upgraded from version 1.48 to 1.49. | |
127 | ||
128 | =item * | |
129 | ||
130 | L<Sub::Util> has been upgraded from version 1.48 to 1.49. | |
131 | ||
132 | =item * | |
133 | ||
134 | L<Sys::Hostname> has been upgraded from version 1.20 to 1.21. | |
135 | ||
136 | =item * | |
137 | ||
138 | L<Test::Simple> has been upgraded from version 1.302073 to 1.302103. | |
139 | ||
140 | =item * | |
141 | ||
142 | L<Time::HiRes> has been upgraded from version 1.9743 to 1.9746. | |
143 | ||
144 | =item * | |
145 | ||
146 | L<Time::Piece> has been upgraded from version 1.3201 to 1.3202. | |
147 | ||
148 | =back | |
149 | ||
150 | =head1 Platform Support | |
151 | ||
152 | =head2 Platform-Specific Notes | |
153 | ||
154 | =over 4 | |
155 | ||
156 | =item CentOS | |
157 | ||
158 | Compilation on CentOS 5 is now fixed. | |
159 | ||
160 | =back | |
161 | ||
162 | =head1 Selected Bug Fixes | |
163 | ||
164 | =over 4 | |
165 | ||
166 | =item * | |
167 | ||
168 | Calling L<exec PROGRAM LIST|perlfunc/exec PROGRAM LIST> with an empty C<LIST> | |
169 | has been fixed. This should call C<execvp()> with an empty C<argv> array | |
170 | (containing only the terminating C<NULL> pointer), but was instead just | |
171 | returning false (and not setting L<C<$!>|perlvar/$!>). | |
172 | L<[perl #131730]|https://rt.perl.org/Public/Bug/Display.html?id=131730> | |
173 | ||
174 | =item * | |
175 | ||
176 | The C<gv_fetchmeth_sv> C function stopped working properly in Perl 5.22 when | |
177 | fetching a constant with a UTF-8 name if that constant subroutine was stored in | |
178 | the stash as a simple scalar reference, rather than a full typeglob. This has | |
179 | been corrected. | |
180 | ||
181 | =item * | |
182 | ||
183 | Single-letter debugger commands followed by an argument which starts with | |
184 | punctuation (e.g. C<p$^V> and C<x@ARGV>) now work again. They had been | |
185 | wrongly requiring a space between the command and the argument. | |
186 | L<[perl #120174]|https://rt.perl.org/Public/Bug/Display.html?id=120174> | |
187 | ||
188 | =item * | |
189 | ||
190 | L<splice|perlfunc/splice ARRAY,OFFSET,LENGTH,LIST> now throws an exception | |
191 | ("Modification of a read-only value attempted") when modifying a read-only | |
192 | array. Until now it had been silently modifying the array. The new behaviour | |
193 | is consistent with the behaviour of L<push|perlfunc/push ARRAY,LIST> and | |
194 | L<unshift|perlfunc/unshift ARRAY,LIST>. | |
195 | L<[perl #131000]|https://rt.perl.org/Public/Bug/Display.html?id=131000> | |
196 | ||
197 | =back | |
198 | ||
199 | =head1 Acknowledgements | |
200 | ||
201 | Perl 5.27.5 represents approximately 4 weeks of development since Perl 5.27.4 | |
202 | and contains approximately 29,000 lines of changes across 430 files from 20 | |
203 | authors. | |
204 | ||
205 | Excluding auto-generated files, documentation and release tools, there were | |
206 | approximately 17,000 lines of changes to 340 .pm, .t, .c and .h files. | |
207 | ||
208 | Perl continues to flourish into its third decade thanks to a vibrant community | |
209 | of users and developers. The following people are known to have contributed | |
210 | the improvements that became Perl 5.27.5: | |
211 | ||
212 | Aaron Crane, Chris 'BinGOs' Williams, Craig A. Berry, Dagfinn Ilmari | |
213 | Mannsåker, Dmitry Ulanov, Dominic Hargreaves, Father Chrysostomos, H.Merijn | |
214 | Brand, James E Keenan, John P. Linderman, John SJ Anderson, Lukas Mai, Nicolas | |
215 | R., Sawyer X, Smylers, Steve Hay, Tom Hukins, Tony Cook, Yves Orton, Zefram. | |
216 | ||
217 | The list above is almost certainly incomplete as it is automatically generated | |
218 | from version control history. In particular, it does not include the names of | |
219 | the (very much appreciated) contributors who reported issues to the Perl bug | |
220 | tracker. | |
221 | ||
222 | Many of the changes included in this version originated in the CPAN modules | |
223 | included in Perl's core. We're grateful to the entire CPAN community for | |
224 | helping Perl to flourish. | |
225 | ||
226 | For a more complete list of all of Perl's historical contributors, please see | |
227 | the F<AUTHORS> file in the Perl source distribution. | |
228 | ||
229 | =head1 Reporting Bugs | |
230 | ||
231 | If you find what you think is a bug, you might check the perl bug database | |
232 | at L<https://rt.perl.org/> . There may also be information at | |
233 | L<http://www.perl.org/> , the Perl Home Page. | |
234 | ||
235 | If you believe you have an unreported bug, please run the L<perlbug> program | |
236 | included with your release. Be sure to trim your bug down to a tiny but | |
237 | sufficient test case. Your bug report, along with the output of C<perl -V>, | |
238 | will be sent off to perlbug@perl.org to be analysed by the Perl porting team. | |
239 | ||
240 | If the bug you are reporting has security implications which make it | |
241 | inappropriate to send to a publicly archived mailing list, then see | |
242 | L<perlsec/SECURITY VULNERABILITY CONTACT INFORMATION> | |
243 | for details of how to report the issue. | |
244 | ||
245 | =head1 Give Thanks | |
246 | ||
247 | If you wish to thank the Perl 5 Porters for the work we had done in Perl 5, | |
248 | you can do so by running the C<perlthanks> program: | |
249 | ||
250 | perlthanks | |
251 | ||
252 | This will send an email to the Perl 5 Porters list with your show of thanks. | |
253 | ||
254 | =head1 SEE ALSO | |
255 | ||
256 | The F<Changes> file for an explanation of how to view exhaustive details on | |
257 | what changed. | |
258 | ||
259 | The F<INSTALL> file for how to build Perl. | |
260 | ||
261 | The F<README> file for general stuff. | |
262 | ||
263 | The F<Artistic> and F<Copying> files for copyright information. | |
264 | ||
265 | =cut |