Commit | Line | Data |
e4a57b87 |
1 | Please note: This file provides a summary of significant changes |
2 | between versions and sub-versions of Perl, not a complete list |
3 | of each modification. If you'd like more detailed information, |
4 | please consult the comments in the patches on which the relevant |
5 | release of Perl is based. (Patches can be found on any CPAN |
6 | site, in the .../src/5.0 directory for full version releases, |
7 | or in the .../src/5/0/unsupported directory for sub-version |
8 | releases.) |
9 | |
10 | |
11 | ---------------- |
12 | Version 5.003_01 |
13 | ---------------- |
14 | |
15 | Version 5.003_01 contains bugfixes and additions accumulated since |
16 | version 5.002_01, since the patch to version 5.003 was deliberately |
17 | kept simple. In addition to numerous small bugfixes in the core, |
18 | library files, and documentation, this patch contains several |
19 | significant revisions, summarized below: |
20 | |
21 | o Visible Changes to Core Functionality |
22 | |
23 | - A port to Plan9 has been started, and changes are integrated into |
24 | the standard distribution. As of this release, the Perl core |
25 | and several common extensions are working. |
26 | |
27 | - A set of basic methods in the UNIVERSAL class have been added to |
28 | the Perl core. Since UNIVERSAL is an implicit member of every |
29 | class's @ISA, the methods can be called via any object. |
30 | |
31 | - A mandatory warning has been added for 'declarations' of lexical |
32 | variables using the "my" operator which mask an existing lexical |
33 | variable declared in the same scope, making the previous variable |
34 | inaccessible by its name. |
35 | |
36 | - The "use" and "require" operators have been extended to allow |
37 | checking of the required module's version. The "use" operator |
38 | can now be used for an immediate version check of Perl itself. |
39 | |
40 | - A new "strict" pragma, "strict untie", has been added, which |
41 | produces an error if a tied value is untied when other references |
42 | exist to the internal object implementing the tie. |
43 | |
44 | - Barewords used as associative array keys (i.e. when specifying |
45 | an associative array element like $foo{__BAR} or on the left |
46 | side of the => operator) may now begin with an underscore as |
47 | well as an alphabetic character. |
48 | |
49 | - Some of the configuration information previously produced by the |
50 | -v switch has been moved to the -V switch, in order to keep -v |
51 | output concise. |
52 | |
53 | o Changes in Core Internals |
54 | |
55 | - Symbol table and method lookups have been made faster. |
56 | |
57 | - Perl subroutines which just return a constant value are now |
58 | optimized at compile time into inline constants. |
59 | |
60 | - Management of keys for associative arrays has been improved to |
61 | conserve space when the same keys are reused frequently, and |
62 | to pass true Perl values to tie functions, instead of stringified |
63 | representations. |
64 | |
65 | - Messages normally output to stderr may be directed to another |
66 | stream when Perl is built. This allows some platforms to |
67 | present diagnostic output in a separate window from normal |
68 | program results. |
69 | |
70 | - A bug which caused suiperl to fail silently, albeit securely, |
71 | in version 5.003 on some systems has been fixed. |
72 | |
73 | - Management of Unix-style signal handlers via the %SIG associative |
74 | array has been made safer. |
75 | |
76 | - Several global C symbols have been renamed to eliminate collisions |
77 | with system C header files or libraries on some platforms. |
78 | Unfortunately, this means that dynamic extensions compiled under |
79 | previous versions of Perl will need to be rebuilt for Perl |
80 | 5.003_01. We're in the process of cleaning up Perl's C |
81 | namespace to make it easier to link Perl with other binaries, |
82 | so this will probably happen again between now and version 5.004. |
83 | After that, we'll do our best to maintain binary compatibility |
84 | between versions. |
85 | |
86 | - An alternate allocation strategy has been added to Perl's |
87 | optional private memory management routines. This strategy, |
88 | which may be selected when Perl is built, is designed to |
89 | conserve memory in programs which allocate many small |
90 | chunks of memory with sizes near a power of 2, as is often |
91 | the case in Perl programs. |
92 | |
93 | - Several memory leaks in the creation and destruction of |
94 | multiple interpreters have been fixed. |
95 | |
96 | o Changes in the Standard Library and Utilities |
97 | |
98 | - The Opcode extension, which allows you to control a program's |
99 | access to Perl operations, has been added to the standard |
100 | distribution. This extends the work begun in the original |
101 | Safe extension, and subsumes it. The Safe interface is still |
102 | available. |
103 | |
104 | - The IO extension, which provides a set of classes for object- |
105 | oriented handling of common I/O tasks, has been added to the |
106 | standard distribution. The IO classes will form the basis |
107 | for future development of Perl's I/O interface, and will |
108 | subsume the FileHandle class in the near future. The default |
109 | class to which all Perl I/O handles belong is now IO::Handle, |
110 | rather than FileHandle. |
111 | |
112 | - The ExtUtils::Embed library module, which provides a set |
113 | of utility function to help in embedding Perl in other |
114 | applications, has been added to the standard distribution. |
115 | |
116 | - The Fatal library module, which provides a simple interface |
117 | for creating "do-or-die" equivalents of existing functions, |
118 | has been added to the standard distribution. |
119 | |
120 | - The FindBin library module, which determines the full path |
121 | to the currently executing program, has been added to the |
122 | standard distribution. |
123 | |
124 | - The DB_File extension, and the Getopt::Long, Test::Harness, |
125 | Text::Tabs, Text::Wrap, Time::Local and sigtrap library modules |
126 | have been updated to the authors' latest versions. |
127 | |
128 | - The Carp library module now considers the @ISA chain when |
129 | determining the caller's package for inclusion in error messages. |
130 | |
131 | - The h2xs, perlbug, and xsubpp utilities have been updated. |
132 | |
133 | - The standard Perl debugger has been updated, and the information |
134 | provided to the debugger when an XSUB is called has been improved, |
135 | making it possible for alternate debuggers (such as Devel::DProf) |
136 | to do a better job of tracking XSUB calls. |
137 | |
138 | - The pod documentation formatting tools in the standard distribution |
139 | can now handle characters in the input stream whose high bit is set. |
140 | |
141 | - The cperl-mode EMACS editing mode has been updated. |
142 | |
143 | o Changes in Documentation |
144 | |
145 | - Typographic and formatting errors have been corrected in the pod |
146 | documentation for the core and standard library files |
147 | |
148 | - Explanations of several core operators have been improved |
149 | |
150 | - The perldebug, perlembed, perlipc, perlsec, and perltrap documents |
151 | extensively revised. |
152 | |
153 | o Changes in OS-specific and Build-time Support |
154 | |
155 | - Support for the NeXT platform has been extended through |
156 | NeXTSTEP/OPENSTEP 4.0, and now includes the ability to create MABs. |
157 | |
158 | - Support for OS/2 has been extended as well, and now includes |
159 | options for building a.out binaries. |
160 | |
161 | - Support for VMS has also been extended, incorporating improved |
162 | processing of file specification strings, optional suppression of |
163 | carriage control interpretation for record-structured files, |
164 | improved support for the -S command line switch, a number of |
165 | VMS-specific bugfixes, and significantly improved performance |
166 | in line-oriented reading of files. |
167 | |
168 | - Several hints files have been added or updated: aux.sh (updated), |
169 | convexos.sh (updated), irix_4.sh (updated), irix_5.sh (updated), |
170 | irix_6_2.sh (updated), next_3.sh (updated), next_3_2.sh (new), |
171 | next_3_3.sh (new), next_4.sh (new), os2/sh (updated), |
172 | sco.sh (updated), and solaris_2.sh (updated). |
173 | |
174 | - The test driver for the regression tests now reports when a set |
175 | of tests have been skipped (presumable because the operation |
176 | they're designed to test isn't supported on the current system). |
177 | |
178 | ------------- |
179 | Version 5.003 |
180 | ------------- |
181 | |
182 | ***> IMPORTANT NOTICE: <*** |
183 | The main reason for this release was to fix a security bug affecting |
184 | suidperl on some systems. If you build suidperl on your system, it |
185 | is strongly recommended that you replace any existing copies with |
186 | version 5.003 or later immediately. |
187 | |
188 | The changes in 5.003 have been held to a minimum, in the hope that this |
189 | will simplify installation and testing at sites which may be affected |
190 | by the security hole in suidperl. In brief, 5.003 does the following: |
191 | |
192 | - Plugs security hole in suidperl mechanism on affected systems |
193 | |
194 | - MakeMaker was also updated to version 5.34, and extension Makefile.PLs |
195 | were modified to match it. |
196 | |
197 | - The following hints files were updated: bsdos.sh, hpux.sh, linux.sh, |
198 | machten.sh, solaris_2.sh |
199 | |
200 | - A fix was added to installperl to insure that file permissions were |
201 | set correctly for the installed C header files. |
202 | |
203 | - t/op/stat.t was modified to work around MachTen's belief that /dev/null |
204 | is a terminal device. |
205 | |
206 | - Incorporation of Perl version information into the VMS' version of |
207 | config.h was changed to make it compatible with the older VAXC. |
208 | |
209 | - Minor fixes were made to VMS-specific C code, and the routine |
210 | VMS::Filespec::rmsexpand was added. |
211 | |
212 | ---------------- |
213 | Version 5.002_01 |
214 | ---------------- |
215 | |
216 | - The EMBED namespace changes are now used by default, in order to better |
217 | segregate Perl's C global symbols from those belonging to embedding |
218 | applications or to libraries. This makes it necessary to rebuild dynamic |
219 | extensions built under previous versions of Perl without the EMBED option. |
220 | The default use of EMBED can be overridden by placing -DNO_EMBED on the |
221 | cc command line. |
222 | |
223 | The EMBED change is the beginning of a general cleanup of C global |
224 | symbols used by Perl, so binary compatibility with previously |
225 | compiled dynamic extensions may be broken again in the next few |
226 | releases. |
227 | |
228 | - Several bugs in the core were fixed, including the following: |
229 | - made sure FILE * for -e temp file was closed only once |
230 | - improved form of single-statement macro definitions to keep |
231 | as many ccs as possible happy |
232 | - fixed file tests to insure that signed values were used when |
233 | computing differences between times. |
234 | - fixed toke.c so implicit loop isn't doubled when perl is |
235 | invoked with both the -p and -n switches |
236 | |
237 | - The new SUBVERSION number has been included in the default value for |
238 | architecture-specific library directories, so development and |
239 | production architecture-dependent libraries can coexist. |
240 | |
241 | - Two new magic variables, $^E and $^O, have been added. $^E contains the |
242 | OS-specific equivalent of $!. $^O contains the name of the operating |
243 | system, in order to make it easily available to Perl code whose behavior |
244 | differs according to its environment. The standard library files have |
245 | been converted to use $^O in preference to $Config{'osname'}. |
246 | |
247 | - A mechanism was added to allow listing of locally applied patches |
248 | in the output of perl -v. |
249 | |
250 | - Miscellaneous minor corrections and updates were made to the documentation. |
251 | |
252 | - Extensive updates were made to the OS/2 and VMS ports |
253 | |
254 | - The following hints file were updated: bsdos.sh, dynixptx.sh, |
255 | irix_6_2.sh, linux.sh, os2.sh |
256 | |
257 | - Several changes were made to standard library files: |
258 | - reduced use of English.pm and $`, $', and $& in library modules, |
259 | since these degrade module loading and evaluation of regular expressions, |
260 | respectively. |
261 | - File/Basename.pm: Added path separator to dirname('.') |
262 | - File/Copy.pm: Added support for VMS and OS/2 system-level copy |
263 | - MakeMaker updated to v5.26 |
264 | - Symbol.pm now accepts old (') and new (::) package delimiters |
265 | - Sys/Syslog.pm uses Sys::Hostname only when necessary |
266 | - chat2.pl picks up necessary constants from socket.ph |
267 | - syslog.pl: Corrected thinko 'Socket' --> 'Syslog' |
268 | - xsubpp updated to v1.935 |
269 | |
270 | |
271 | - The perlbug utility is now more cautious about sending mail, in order |
272 | to reduce the chance of accidentally send a bug report by giving the |
273 | wrong response to a prompt. |
274 | |
275 | - The -m switch has been added to perldoc, causing it to display the |
276 | Perl code in target file as well as any documentation. |
277 | |
748a9306 |
278 | ------------- |
4633a7c4 |
279 | Version 5.002 |
280 | ------------- |
281 | |
a5f75d66 |
282 | The main enhancement to the Perl core was the addition of prototypes. |
283 | Many of the modules that come with Perl have been extensively upgraded. |
284 | |
285 | Other than that, nearly all the changes for 5.002 were bug fixes of one |
286 | variety or another, so here's the bug list, along with the "resolution" |
287 | for each of them. If you wish to correspond about any of them, please |
288 | include the bug number (if any). |
4633a7c4 |
289 | |
290 | Added APPLLIB_EXP for embedded perl library support. |
291 | Files patched: perl.c |
292 | |
293 | Couldn't define autoloaded routine by assignment to typeglob. |
294 | Files patched: pp_hot.c sv.c |
295 | |
a5f75d66 |
296 | NETaa13525: Tiny patch to fix installman -n |
4633a7c4 |
297 | From: Larry Wall |
a5f75d66 |
298 | Files patched: installman |
299 | |
300 | NETaa13525: de-documented \v |
301 | Files patched: pod/perlop.pod pod/perlre.pod |
4633a7c4 |
302 | |
303 | NETaa13525: doc changes |
4633a7c4 |
304 | Files patched: pod/perlop.pod pod/perltrap.pod |
305 | |
a5f75d66 |
306 | NETaa13525: perlxs update from Dean Roehrich |
307 | Files patched: pod/perlxs.pod |
4633a7c4 |
308 | |
a5f75d66 |
309 | NETaa13525: rename powerunix to powerux |
310 | Files patched: MANIFEST hints/powerux.sh |
4633a7c4 |
311 | |
312 | NETaa13540: VMS uses CLK_TCK for HZ |
313 | Files patched: pp_sys.c |
314 | |
315 | NETaa13721: pad_findlex core dumps on bad CvOUTSIDE() |
316 | From: Carl Witty |
317 | Files patched: op.c sv.c toke.c |
318 | Each CV has a reference to the CV containing it lexically. Unfortunately, |
319 | it didn't reference-count this reference, so when the outer CV was freed, |
320 | we ended up with a pointer to memory that got reused later as some other kind |
321 | of SV. |
322 | |
323 | NETaa13721: warning suppression |
324 | Files patched: toke.c |
325 | (same) |
326 | |
327 | NETaa13722: walk.c had inconsistent static declarations |
328 | From: Tim Bunce |
329 | Files patched: x2p/walk.c |
330 | Consolidated the various declarations and made them consistent with |
331 | the actual definitions. |
332 | |
a5f75d66 |
333 | NETaa13724: -MPackage=args patch |
334 | From: Tim Bunce |
335 | Files patched: perl.c pod/perlrun.pod |
336 | Added in the -MPackage=args patch too. |
337 | |
4633a7c4 |
338 | NETaa13729: order-of-evaluation dependency in scope.c on leaving REGCONTEXT |
339 | From: "Jason Shirk" |
340 | Files patched: scope.c |
341 | Did |
342 | |
343 | I32 delta = SSPOPINT; |
344 | savestack_ix -= delta; /* regexp must have croaked */ |
345 | |
346 | instead. |
347 | |
348 | NETaa13731: couldn't assign external lexical array to itself |
349 | From: oneill@cs.sfu.ca |
350 | Files patched: op.c |
351 | The pad_findmy routine was only checking previous statements for previous |
352 | mention of external lexicals, so the fact that the current statement |
353 | already mentioned @list was not noted. It therefore allocated another |
354 | reference to the outside lexical, and this didn't compare equal when |
355 | the assigment parsing code was trying to determine whether there was a |
356 | common variable on either side of the equals. Since it didn't see the |
357 | same variable, it thought it could avoid making copies of the values on |
358 | the stack during list assignment. Unfortunately, before using those |
359 | values, the list assignment has to zero out the target array, which |
360 | destroys the values. |
361 | |
362 | The fix was to make pad_findmy search the current statement as well. This |
363 | was actually a holdover from some old code that was trying to delay |
364 | introduction of "my" variables until the next statement. This is now |
365 | done with a different mechanism, so the fix should not adversely affect |
366 | that. |
367 | |
368 | NETaa13733: s/// doesn't free old string when using copy mode |
369 | From: Larry Wall |
370 | Files patched: pp_ctl.c pp_hot.c |
371 | When I removed the use of sv_replace(), I simply forgot to free the old char*. |
372 | |
373 | NETaa13736: closures leaked memory |
374 | From: Carl Witty |
375 | Files patched: op.c pp.c |
376 | This is a specific example of a more general bug, fixed as NETaa13760, having |
377 | to do with reference counts on comppads. |
378 | |
379 | NETaa13739: XSUB interface caches gimme in case XSUB clobbers it |
380 | From: Dean Roehrich |
381 | Files patched: pp_hot.c |
382 | Applied suggest patch. Also deleted second gimme declaration as redundant. |
383 | |
384 | NETaa13760: comppad reference counts were inconsistent |
385 | From: Larry Wall |
386 | Files patched: op.c perl.c pp_ctl.c toke.c |
387 | All official references to comppads are supposed to be through compcv now, |
388 | but the transformation was not complete, resulting in memory leakage. |
389 | |
390 | NETaa13761: sv_2pv() wrongly preferred IV to NV when SV was readonly |
391 | From: "Jack R. Lawler" |
392 | Files patched: sv.c |
393 | Okay, I understand how this one happened. This is a case where a |
394 | beneficial fix uncovered a bug elsewhere. I changed the constant |
395 | folder to prefer integer results over double if the numbers are the |
396 | same. In this case, they aren't, but it leaves the integer value there |
397 | anyway because the storage is already allocated for it, and it *might* |
398 | be used in an integer context. And since it's producing a constant, it |
399 | sets READONLY. Unfortunately, sv_2pv() bogusly preferred the integer |
400 | value to the double when READONLY was set. This never showed up if you |
401 | just said |
402 | |
403 | print 1.4142135623731; |
404 | |
405 | because in that case, there was already a string value. |
406 | |
407 | |
408 | NETaa13772: shmwrite core dumps consistently |
409 | From: Gabe Schaffer |
410 | Files patched: opcode.h opcode.pl |
411 | The shmwrite operator is a list operator but neglected to push a stack |
412 | mark beforehand, because an 'm' was missing from opcode.pl. |
413 | |
414 | NETaa13773: $. was misdocumented as read-only. |
415 | From: Inaba Hiroto |
416 | Files patched: pod/perlvar.pod |
417 | <1.array-element-read-only> |
418 | % perl -le '$,=", "; $#w=5; for (@w) { $_=1; } print @w' |
419 | Modification of a read-only value attempted at -e line 1. |
420 | % perl4 -le '$,=", "; $#w=5; for (@w) { $_=1; } print @w' |
421 | 1, 1, 1, 1, 1, 1 |
422 | |
423 | This one may stay the way it is for performance reasons. |
424 | |
425 | <2.begin-local-RS> |
426 | % cat abc |
427 | a |
428 | b |
429 | c |
430 | % perl -e 'BEGIN { local $/ = ""; } print "$.:$_" while <>;' abc |
431 | 1:a |
432 | b |
433 | c |
434 | % perl -e '{ local $/ = ""; } print "$.:$_" while <>;' abc |
435 | 1:a |
436 | 2:b |
437 | 3:c |
438 | |
439 | $/ wasn't initialized early enough, so local set it back to permanently |
440 | undefined on exit from the block. |
441 | |
442 | <3.grep-x0-bug> |
443 | % perl -le 'print grep(/^-/ ? ($x=$_) x 0 : 1, "a", "-b", "c");' |
444 | a |
445 | |
446 | % perl4 -le 'print grep(/^-/ ? ($x=$_) x 0 : 1, "a", "-b", "c");' |
447 | ac |
448 | |
449 | An extra mark was left on the stack if (('x') x $repeat) was used in a scalar |
450 | context. |
451 | |
452 | <4.input-lineno-assign> |
453 | # perl -w does not complain about assignment to $. (Is this just a feature?) |
454 | # perlvar.pod says "This variable should be considered read-only." |
455 | % cat abc |
456 | a |
457 | b |
458 | c |
459 | % perl -wnle '$. = 10 if $. == 2; print "$.:$_"' abc |
460 | 1:a |
461 | 10:b |
462 | 11:c |
463 | |
464 | Fixed doc. |
465 | |
466 | <5.local-soft-ref.bug> |
467 | % perl -e 'local ${"a"}=1;' |
468 | zsh: 529 segmentation fault perl -e 'local ${"a"}=1;' |
469 | |
470 | Now says |
471 | Can't localize a reference at -e line 1. |
472 | |
473 | <6.package-readline> |
474 | % perl -e 'package foo; sub foo { 1; } package main; $_ = foo::foo(); print' |
475 | 1 |
476 | % perl -e ' |
477 | package readline; sub foo { 1; } package main; $_ = readline::foo(); print' |
478 | Undefined subroutine &main::foo called at -e line 1. |
479 | % perl -e ' |
480 | package readline; sub foo { 1; } package main; $_ = &readline::foo(); print' |
481 | 1 |
482 | |
483 | Now treats foo::bar correctly even if foo is a keyword. |
484 | |
485 | <7.page-head-set-to-null-string> |
486 | % cat page-head |
487 | #From: russell@ccu1.auckland.ac.nz (Russell Fulton) |
488 | #Newsgroups: comp.lang.perl |
489 | #Subject: This script causes Perl 5.00 to sementation fault |
490 | #Date: 15 Nov 1994 00:11:37 GMT |
491 | #Message-ID: <3a8ubp$jrj@net.auckland.ac.nz> |
492 | |
493 | select((select(STDOUT), $^='')[0]); #this is the critical line |
494 | $a = 'a'; |
495 | write ; |
496 | exit; |
497 | |
498 | format STDOUT = |
499 | @<<<<<< |
500 | $a |
501 | . |
502 | |
503 | % perl page-head |
504 | zsh: 1799 segmentation fault perl /tmp/page-head |
505 | |
506 | Now says |
507 | Undefined top format "main::" called at ./try line 11. |
508 | |
509 | <8.sub-as-index> |
510 | # parser bug? |
511 | % perl -le 'sub foo {0}; $x[0]=0;$x[foo]<=0' |
512 | Unterminated <> operator at -e line 1. |
513 | % perl -le 'sub foo {0}; $x[0]=0;$x[foo()]<=0' |
514 | |
515 | A right square bracket now forces expectation of an operator. |
516 | |
517 | <9.unary-minus-to-regexp-var> |
518 | % cat minus-reg |
519 | #From: Michael Cook <mcook@cognex.com> |
520 | #Newsgroups: comp.lang.perl |
521 | #Subject: bug: print -$1 |
522 | #Date: 01 Feb 1995 15:31:25 GMT |
523 | #Message-ID: <MCOOK.95Feb1103125@erawan.cognex.com> |
524 | |
525 | $_ = "123"; |
526 | /\d+/; |
527 | print $&, "\n"; |
528 | print -$&, "\n"; |
529 | print 0-$&, "\n"; |
530 | |
531 | % perl minus-reg |
532 | 123 |
533 | 123 |
534 | -123 |
535 | |
536 | Apparently already fixed in my copy. |
537 | |
538 | <10.vec-segv> |
539 | % cat vec-bug |
540 | ## Offset values are changed for my machine. |
541 | |
542 | #From: augustin@gdstech.grumman.com (Conrad Augustin) |
543 | #Subject: perl5 vec() bug? |
544 | #Message-ID: <1994Nov22.193728.25762@gdstech.grumman.com> |
545 | #Date: Tue, 22 Nov 1994 19:37:28 GMT |
546 | |
547 | #The following two statements each produce a segmentation fault in perl5: |
548 | |
549 | #vec($a, 21406, 32) = 1; # seg fault |
550 | vec($a, 42813, 16) = 1; # seg fault |
551 | |
552 | #When the offset values are one less, all's well: |
553 | #vec($a, 21405, 32) = 1; # ok |
554 | #vec($a, 42812, 16) = 1; # ok |
555 | |
556 | #Interestingly, this is ok for all high values of N: |
557 | #$N=1000000; vec($a, $N, 8) = 1; |
558 | |
559 | % perl vec-bug |
560 | zsh: 1806 segmentation fault perl vec-bug |
561 | |
562 | Can't reproduce this one. |
563 | |
564 | |
565 | NETaa13773: $/ not correctly localized in BEGIN |
566 | Files patched: perl.c |
567 | (same) |
568 | |
569 | NETaa13773: foo::bar was misparsed if foo was a reserved word |
570 | Files patched: toke.c toke.c |
571 | (same) |
572 | |
573 | NETaa13773: right square bracket didn't force expectation of operator |
574 | Files patched: toke.c |
575 | (same) |
576 | |
577 | NETaa13773: scalar ((x) x $repeat) left stack mark |
578 | Files patched: op.c |
579 | (same) |
580 | |
581 | NETaa13778: -w coredumps on <$> |
582 | From: Hans Mulder |
583 | Files patched: pp_hot.c toke.c |
584 | Now produces suggested error message. Also installed guard in warning code |
585 | that coredumped. |
586 | |
587 | NETaa13779: foreach didn't use savestack mechanism |
588 | From: Hans Mulder |
589 | Files patched: cop.h pp_ctl.c |
590 | The foreach mechanism saved the old scalar value on the context stack |
591 | rather than the savestack. It could consequently get out of sync if |
592 | unexpectedly unwound. |
593 | |
594 | NETaa13785: GIMME sometimes used wrong context frame |
595 | From: Greg Earle |
596 | Files patched: embed.h global.sym op.h pp_ctl.c proto.h |
597 | The expression inside the return was taking its context from the immediately |
598 | surrounding block rather than the innermost surrounding subroutine call. |
599 | |
4633a7c4 |
600 | NETaa13797: could modify sv_undef through auto-vivification |
601 | From: Ilya Zakharevich |
602 | Files patched: pp.c |
603 | Inserted the missing check for readonly values on auto-vivification. |
604 | |
605 | NETaa13798: if (...) {print} treats print as quoted |
606 | From: Larry Wall |
607 | Files patched: toke.c |
608 | The trailing paren of the condition was setting expectations to XOPERATOR |
609 | rather than XBLOCK, so it was being treated like ${print}. |
610 | |
611 | NETaa13926: commonality was not detected in assignments using COND_EXPR |
612 | From: Mark Hanson |
613 | Files patched: opcode.h opcode.pl |
614 | The assignment compiler didn't check the 2nd and 3rd args of a ?: |
615 | for commonality. It still doesn't, but I made ?: into a "dangerous" |
616 | operator so it is forced to treat it as common. |
617 | |
618 | NETaa13957: was marking the PUSHMARK as modifiable rather than the arg |
619 | From: David Couture |
620 | Files patched: op.c sv.c |
621 | It was marking the PUSHMARK as modifiable rather than the arg. |
622 | |
623 | NETaa13962: documentation of behavior of scalar <*> was unclear |
624 | From: Tom Christiansen |
625 | Files patched: pod/perlop.pod |
626 | Added the following to perlop: |
627 | |
628 | A glob only evaluates its (embedded) argument when it is starting a new |
629 | list. All values must be read before it will start over. In a list |
630 | context this isn't important, because you automatically get them all |
631 | anyway. In a scalar context, however, the operator returns the next value |
632 | each time it is called, or a FALSE value if you've just run out. Again, |
633 | FALSE is returned only once. So if you're expecting a single value from |
634 | a glob, it is much better to say |
635 | |
636 | ($file) = <blurch*>; |
637 | |
638 | than |
639 | |
640 | $file = <blurch*>; |
641 | |
642 | because the latter will alternate between returning a filename and |
643 | returning FALSE. |
644 | |
645 | |
a5f75d66 |
646 | NETaa13986: split ignored /m pattern modifier |
647 | From: Winfried Koenig |
648 | Files patched: pp.c |
649 | Fixed to work like m// and s///. |
650 | |
4633a7c4 |
651 | NETaa13992: regexp comments not seen after + in non-extended regexp |
652 | From: Mark Knutsen |
653 | Files patched: regcomp.c |
654 | The code to skip regexp comments was guarded by a conditional that only |
655 | let it work when /x was in effect. |
656 | |
657 | NETaa14014: use subs should not count as definition, only as declaration |
658 | From: Keith Thompson |
659 | Files patched: sv.c |
660 | On *foo = \&bar, doesn't set GVf_IMPORTED if foo and bar are in same package. |
661 | |
662 | NETaa14021: sv_inc and sv_dec "upgraded" magical SV to non-magical |
663 | From: Paul A Sand |
664 | Also: Andreas Koenig |
665 | Files patched: sv.c |
666 | The sv_inc() and sv_dec() routines "upgraded" null magical SVs to non-magical. |
667 | |
668 | NETaa14086: require should check tainting |
669 | From: Karl Simon Berg |
670 | Files patched: pp_ctl.c |
671 | Since we shouldn't allow tainted requires anyway, it now says: |
672 | |
673 | Insecure dependency in require while running with -T switch at tst.pl line 1. |
674 | |
675 | NETaa14104: negation fails on magical variables like $1 |
676 | From: tim |
677 | Files patched: pp.c |
678 | Negation was failing on magical values like $1. It was testing the wrong |
679 | bits and also failed to provide a final "else" if none of the bits matched. |
680 | |
681 | NETaa14107: deep sort return leaked contexts |
682 | From: Quentin Fennessy |
683 | Files patched: pp_ctl.c |
684 | Needed to call dounwind() appropriately. |
685 | |
686 | NETaa14129: attempt to localize via a reference core dumps |
687 | From: Michele Sardo |
688 | Files patched: op.c pod/perldiag.pod |
689 | Now produces an error "Can't localize a reference", with explanation in |
690 | perldiag. |
691 | |
692 | NETaa14138: substr() and s/// can cause core dump |
693 | From: Andrew Vignaux |
694 | Files patched: pp_hot.c |
695 | Forgot to call SvOOK_off() on the SV before freeing its string. |
696 | |
697 | NETaa14145: ${@INC}[0] dumped core in debugger |
698 | From: Hans Mulder |
699 | Files patched: sv.c |
700 | Now croaks "Bizarre copy of ARRAY in block exit", which is better than |
701 | a core dump. The fact that ${@INC}[0] means $INC[0] outside the debugger |
702 | is a different bug. |
703 | |
704 | NETaa14147: bitwise assignment ops wipe out byte of target string |
705 | From: Jim Richardson |
706 | Files patched: doop.c |
707 | The code was assuming that the target was not either of the two operands, |
708 | which is false for an assignment operator. |
709 | |
710 | NETaa14153: lexing of lexicals in patterns fooled by character class |
711 | From: Dave Bianchi |
712 | Files patched: toke.c |
713 | It never called the dwimmer, which is how it fooled it. |
714 | |
715 | NETaa14154: allowed autoloaded methods by recognizing sub method; declaration |
716 | From: Larry Wall |
717 | Files patched: gv.c |
718 | Made sub method declaration sufficient for autoloader to stop searching on. |
719 | |
720 | NETaa14156: shouldn't optimize block scope on tainting |
721 | From: Pete Peterson |
722 | Files patched: op.c toke.c |
723 | I totally disabled the block scope optimization when running tainted. |
724 | |
725 | NETaa14157: -T and -B only allowed 1/30 "odd" characters--changed to 1/3 |
726 | From: Tor Lillqvist |
727 | Files patched: pp_sys.c |
728 | Applied suggested patch. |
729 | |
730 | NETaa14160: deref of null symbol should produce null list |
731 | From: Jared Rhine |
732 | Files patched: pp_hot.c |
733 | It didn't check for list context before returning undef. |
734 | |
735 | NETaa14162: POSIX::gensym now returns a symbol reference |
736 | From: Josh N. Pritikin |
737 | Also: Tim Bunce |
738 | Files patched: ext/POSIX/POSIX.pm |
739 | Applied suggested patch. |
740 | |
741 | NETaa14164: POSIX autoloader now distinguishes non-constant "constants" |
742 | From: Tim Bunce <Tim.Bunce@ig.co.uk> |
743 | Files patched: ext/POSIX/POSIX.pm ext/POSIX/POSIX.xs |
744 | The .xs file now distinguishes non-constant "constants" by setting EAGAIN. |
745 | This will also let us use #ifdef within the .xs file to de-constantify |
746 | any other macros that happen not to be constants even if they don't use |
747 | an argument. |
748 | |
749 | NETaa14166: missing semicolon after "my" induces core dump |
750 | From: Thomas Kofler |
751 | Files patched: toke.c |
752 | The parser was left thinking it was still processing a "my", and flubbed. |
753 | I made it wipe out the "in_my" variable on a syntax error. |
754 | |
755 | NETaa14166: missing semicolon after "my" induces core dump" |
756 | Files patched: toke.c |
757 | (same) |
758 | |
759 | NETaa14206: can now use English and strict at the same time |
760 | From: Andrew Wilcox |
761 | Files patched: sv.c |
762 | It now counts imported symbols as okay under "use strict". |
763 | |
764 | NETaa14206: can now use English and strict at the same time |
765 | Files patched: gv.c pod/perldiag.pod |
766 | (same) |
767 | |
768 | NETaa14265: elseif now produces severe warning |
769 | From: Yutao Feng |
770 | Files patched: pod/perldiag.pod toke.c |
771 | Now complains explicitly about "elseif". |
772 | |
773 | NETaa14279: list assignment propagated taintedness to independent scalars |
774 | From: Tim Freeman |
775 | Files patched: pp_hot.c |
776 | List assignment needed to be modified so that tainting didn't propagate |
777 | between independent scalar values. |
778 | |
779 | NETaa14312: undef in @EXPORTS core dumps |
780 | From: William Setzer |
781 | Files patched: lib/Exporter.pm |
782 | Now says: |
783 | |
784 | Unable to create sub named "t::" at lib/Exporter.pm line 159. |
785 | Illegal null symbol in @t::EXPORT at -e line 1 |
786 | BEGIN failed--compilation aborted at -e line 1. |
787 | |
788 | |
789 | NETaa14312: undef in @EXPORTS core dumps |
790 | Files patched: pod/perldiag.pod sv.c |
791 | (same) |
792 | |
793 | NETaa14321: literal @array check shouldn't happen inside embedded expressions |
794 | From: Mark H. Nodine |
795 | Files patched: toke.c |
796 | The general solution to this is to disable the literal @array check within |
797 | any embedded expression. For instance, this also failed bogusly: |
798 | |
799 | print "$foo{@foo}"; |
800 | |
801 | The reason fixing this also fixes the s///e problem is that the lexer |
802 | effectively puts the RHS into a do {} block, making the expression |
803 | embedded within curlies, as far as the error message is concerned. |
804 | |
805 | NETaa14322: now localizes $! during POSIX::AUTOLOAD |
806 | From: Larry Wall |
807 | Files patched: ext/POSIX/POSIX.pm |
808 | Added local $! = 0. |
809 | |
810 | NETaa14324: defined() causes spurious sub existence |
811 | From: "Andreas Koenig" |
812 | Files patched: op.c pp.c |
813 | It called pp_rv2cv which wrongly assumed it could add any sub it referenced. |
814 | |
815 | NETaa14336: use Module () forces import of nothing |
816 | From: Tim Bunce |
817 | Files patched: op.c |
818 | use Module () now refrains from calling import at all. |
819 | |
820 | NETaa14353: added special HE allocator |
821 | From: Larry Wall |
822 | Files patched: global.sym |
823 | |
824 | NETaa14353: added special HE allocator |
825 | Files patched: hv.c perl.h |
826 | |
827 | NETaa14353: array extension now converts old memory to SV storage. |
828 | Files patched: av.c av.h sv.c |
829 | |
830 | NETaa14353: hashes now convert old storage into SV arenas. |
831 | Files patched: global.sym |
832 | |
833 | NETaa14353: hashes now convert old storage into SV arenas. |
834 | Files patched: hv.c perl.h |
835 | |
836 | NETaa14353: upgraded SV arena allocation |
837 | Files patched: proto.h |
838 | |
839 | NETaa14353: upgraded SV arena allocation |
840 | Files patched: perl.c sv.c |
841 | |
842 | NETaa14422: added rudimentary prototypes |
843 | From: Gisle Aas |
844 | Files patched: Makefile.SH op.c op.c perly.c perly.c.diff perly.h perly.y proto.h sv.c toke.c |
845 | Message-Id: <9509290018.AA21548@scalpel.netlabs.com> |
846 | To: doughera@lafcol.lafayette.edu (Andy Dougherty) |
847 | Cc: perl5-porters@africa.nicoh.com |
848 | Subject: Re: Jumbo Configure patch vs. 1m. |
849 | Date: Thu, 28 Sep 95 17:18:54 -0700 |
850 | From: lwall@scalpel.netlabs.com (Larry Wall) |
851 | |
852 | : No. Larry's currently got the patch pumpkin for all such core perl topics. |
853 | |
854 | I dunno whether you should let me have the patch pumpkin or not. To fix |
855 | a Sev 2 I just hacked in rudimentary prototypes. :-) |
856 | |
857 | We can now define true unary subroutines, as well as argumentless |
858 | subroutines: |
859 | |
860 | sub baz () { 12; } # Must not have argument |
861 | sub bar ($) { $_[0] * 7 } # Must have exactly one argument |
862 | sub foo ($@) { print "@_\n" } # Must have at least one argument |
863 | foo bar baz / 2 || "oops", "is the answer"; |
864 | |
865 | This prints "42 is the answer" on my machine. That is, it's the same as |
866 | |
867 | foo( bar( baz() / 2) || "oops", "is the answer"); |
868 | |
869 | Attempting to compile |
870 | |
871 | foo; |
872 | |
873 | results in |
874 | |
875 | Too few arguments for main::foo at ./try line 8, near "foo;" |
876 | |
877 | Compiling |
878 | |
879 | bar 1,2,3; |
880 | |
881 | results in |
882 | |
883 | Too many arguments for main::bar at ./try line 8, near "foo;" |
884 | |
885 | But |
886 | |
887 | @array = ('a','b','c'); |
888 | foo @array, @array; |
889 | |
890 | prints "3 a b c" because the $ puts the first arg of foo into scalar context. |
891 | |
892 | The main win at this point is that we can say |
893 | |
894 | sub AAA () { 1; } |
895 | sub BBB () { 2; } |
896 | |
897 | and the user can say AAA + BBB and get 3. |
898 | |
899 | I'm not quite sure how this interacts with autoloading though. I fear |
900 | POSIX.pm will need to say |
901 | |
902 | sub E2BIG (); |
903 | sub EACCES (); |
904 | sub EAGAIN (); |
905 | sub EBADF (); |
906 | sub EBUSY (); |
907 | ... |
908 | sub _SC_STREAM_MAX (); |
909 | sub _SC_TZNAME_MAX (); |
910 | sub _SC_VERSION (); |
911 | |
912 | unless we can figure out how to efficiently declare a default prototype |
913 | at import time. Meaning, not using eval. Currently |
914 | |
915 | *foo = \&bar; |
916 | |
917 | (the ordinary import mechanism) implicitly stubs &bar with no prototype if |
918 | &bar is not yet declared. It's almost like you want an AUTOPROTO to |
919 | go with your AUTOLOAD. |
920 | |
921 | Another thing to rub one's 5 o'clock shadow over is that there's no way |
922 | to apply a prototype to a method call at compile time. |
923 | |
924 | And no, I don't want to have the |
925 | |
926 | sub howabout ($formal, @arguments) { ... } |
927 | |
928 | argument right now. |
929 | |
930 | Larry |
931 | |
a5f75d66 |
932 | NETaa14422: couldn't take reference of a prototyped function |
933 | Files patched: op.c |
934 | (same) |
935 | |
936 | NETaa14423: use didn't allow expressions involving the scratch pad |
937 | From: Graham Barr |
938 | Files patched: op.c perly.c perly.c.diff perly.y proto.h vms/perly_c.vms |
939 | Applied suggested patch. |
940 | |
4633a7c4 |
941 | NETaa14444: lexical scalar didn't autovivify |
942 | From: Gurusamy Sarathy |
943 | Files patched: op.c pp_hot.c |
944 | It didn't have code in pp_padsv to do the right thing. |
945 | |
946 | NETaa14448: caller could dump core when used within an eval or require |
947 | From: Danny R. Faught |
948 | Files patched: pp_ctl.c |
949 | caller() was incorrectly assuming the context stack contained a subroutine |
950 | context when it in fact contained an eval context. |
951 | |
952 | NETaa14451: improved error message on bad pipe filehandle |
953 | From: Danny R. Faught |
954 | Files patched: pp_sys.c |
955 | Now says the slightly more informative |
956 | |
957 | Can't use an undefined value as filehandle reference at ./try line 3. |
958 | |
959 | NETaa14462: pp_dbstate had a scope leakage on recursion suppression |
960 | From: Tim Bunce |
961 | Files patched: pp_ctl.c |
962 | Swapped the code in question around. |
963 | |
964 | NETaa14482: sv_unref freed ref prematurely at times |
965 | From: Gurusamy Sarathy |
966 | Files patched: sv.c |
967 | Made sv_unref() mortalize rather than free the old reference. |
968 | |
969 | NETaa14484: appending string to array produced bizarre results |
970 | From: Greg Ward |
971 | Also: Malcolm Beattie |
972 | Files patched: pp_hot.c |
973 | Will now say, "Can't coerce ARRAY to string". |
974 | |
975 | NETaa14525: assignment to globs didn't reset them correctly |
976 | From: Gurusamy Sarathy |
977 | Files patched: sv.c |
978 | Applied parts of patch not overridden by subsequent patch. |
979 | |
980 | NETaa14529: a partially matching subpattern could spoof infinity detector |
981 | From: Wayne Berke |
982 | Files patched: regexec.c |
983 | A partial match on a subpattern could fool the infinite regress detector |
984 | into thinking progress had been made. |
985 | The previous workaround prevented another bug (NETaa14529) from being fixed, |
986 | so I've backed it out. I'll need to think more about how to detect failure |
987 | to progress. I'm still hopeful it's not equivalent to the halting problem. |
988 | |
989 | NETaa14535: patches from Gurusamy Sarathy |
990 | From: Gurusamy Sarathy |
991 | Files patched: op.c pp.c pp_hot.c regexec.c sv.c toke.c |
992 | Applied most recent suggested patches. |
993 | |
a5f75d66 |
994 | NETaa14537: select() can return too soon |
995 | From: Matt Kimball |
996 | Also: Andreas Gustafsson |
997 | Files patched: pp_sys.c |
998 | |
4633a7c4 |
999 | NETaa14538: method calls were treated like do {} under loop modifiers |
1000 | From: Ilya Zakharevich |
1001 | Files patched: perly.c perly.y |
1002 | Needed to take the OPf_SPECIAL flag off of entersubs from method reductions. |
1003 | (It was probably a cut-and-paste error from long ago.) |
1004 | |
1005 | NETaa14540: foreach (@array) no longer does extra stack copy |
1006 | From: darrinm@lmc.com |
1007 | Files patched: Todo op.c pp_ctl.c pp_hot.c |
1008 | Fixed by doing the foreach(@array) optimization, so it iterates |
1009 | directly through the array, and can detect the implicit shift from |
1010 | referencing <>. |
1011 | |
a5f75d66 |
1012 | NETaa14541: new version of perlbug |
1013 | From: Kenneth Albanowski |
1014 | Files patched: README pod/perl.pod utils/perlbug.PL |
1015 | Brought it up to version 1.09. |
1016 | |
1017 | NETaa14541: perlbug 1.11 |
1018 | Files patched: utils/perlbug.PL |
1019 | (same) |
1020 | |
4633a7c4 |
1021 | NETaa14548: magic sets didn't check private OK bits |
1022 | From: W. Bradley Rubenstein |
1023 | Files patched: mg.c |
1024 | The magic code was getting mixed up between private and public POK bits. |
1025 | |
1026 | NETaa14550: made ~ magic magical |
1027 | From: Tim Bunce |
1028 | Files patched: sv.c |
1029 | Applied suggested patch. |
1030 | |
1031 | NETaa14551: humongous header causes infinite loop in format |
1032 | From: Grace Lee |
1033 | Files patched: pp_sys.c |
1034 | Needed to check for page exhaustion after doing top-of-form. |
1035 | |
1036 | NETaa14558: attempt to call undefined top format core dumped |
1037 | From: Hallvard B Furuseth |
1038 | Files patched: pod/perldiag.pod pp_sys.c |
1039 | Now issues an error on attempts to call a non-existent top format. |
1040 | |
1041 | NETaa14561: Gurusamy Sarathy's G_KEEPERR patch |
1042 | From: Andreas Koenig |
1043 | Also: Gurusamy Sarathy |
1044 | Also: Tim Bunce |
1045 | Files patched: cop.h interp.sym perl.c perl.h pp_ctl.c pp_sys.c sv.c toke.c |
1046 | Applied latest patch. |
1047 | |
1048 | NETaa14581: shouldn't execute BEGIN when there are compilation errors |
1049 | From: Rickard Westman |
1050 | Files patched: op.c |
1051 | Perl should not try to execute BEGIN and END blocks if there's been a |
1052 | compilation error. |
1053 | |
1054 | NETaa14582: got SEGV sorting sparse array |
1055 | From: Rick Pluta |
1056 | Files patched: pp_ctl.c |
1057 | Now weeds out undefined values much like Perl 4 did. |
1058 | Now sorts undefined values to the front. |
1059 | |
1060 | NETaa14582: sort was letting unsortable values through to comparison routine |
1061 | Files patched: pp_ctl.c |
1062 | (same) |
1063 | |
a5f75d66 |
1064 | NETaa14585: globs in pad space weren't properly cleaned up |
1065 | From: Gurusamy Sarathy |
1066 | Files patched: op.c pp.c pp_hot.c sv.c |
1067 | Applied suggested patch. |
1068 | |
4633a7c4 |
1069 | NETaa14614: now does dbmopen with perl_eval_sv() |
1070 | From: The Man |
1071 | Files patched: perl.c pp_sys.c proto.h |
1072 | dbmopen now invokes perl_eval_sv(), which should handle error conditions |
1073 | better. |
1074 | |
a5f75d66 |
1075 | NETaa14618: exists doesn't work in GDBM_File |
1076 | From: Andrew Wilcox |
1077 | Files patched: ext/GDBM_File/GDBM_File.xs |
1078 | Applied suggested patch. |
1079 | |
1080 | NETaa14619: tied() |
1081 | From: Larry Wall |
1082 | Also: Paul Marquess |
1083 | Files patched: embed.h global.sym keywords.h keywords.pl opcode.h opcode.pl pp_sys.c toke.c |
1084 | Applied suggested patch. |
1085 | |
4633a7c4 |
1086 | NETaa14636: Jumbo Dynaloader patch |
1087 | From: Tim Bunce |
a5f75d66 |
1088 | Files patched: ext/DynaLoader/DynaLoader.pm ext/DynaLoader/dl_dld.xs ext/DynaLoader/dl_dlopen.xs ext/DynaLoader/dl_hpux.xs ext/DynaLoader/dl_next.xs ext/DynaLoader/dl_vms.xs ext/DynaLoader/dlutils.c |
4633a7c4 |
1089 | Applied suggested patches. |
1090 | |
1091 | NETaa14637: checkcomma routine was stupid about bareword sub calls |
1092 | From: Tim Bunce <Tim.Bunce@ig.co.uk> |
1093 | Files patched: toke.c |
1094 | The checkcomma routine was stupid about bareword sub calls. |
1095 | |
1096 | NETaa14639: (?i) didn't reset on runtime patterns |
1097 | From: Mark A. Scheel |
1098 | Files patched: op.h pp_ctl.c toke.c |
1099 | It didn't distinguish between permanent flags outside the pattern and |
1100 | temporary flags within the pattern. |
1101 | |
1102 | NETaa14649: selecting anonymous globs dumps core |
1103 | From: Chip Salzenberg |
1104 | Files patched: cop.h doio.c embed.h global.sym perl.c pp_sys.c proto.h |
1105 | Applied suggested patch, but reversed the increment and decrement to avoid |
1106 | decrementing and freeing what we're going to increment. |
1107 | |
1108 | NETaa14655: $? returned negative value on AIX |
1109 | From: Kim Frutiger |
1110 | Also: Stephen D. Lee |
1111 | Files patched: pp_sys.c |
1112 | Applied suggested patch. |
1113 | |
4633a7c4 |
1114 | NETaa14668: {2,} could match once |
1115 | From: Hugo van der Sanden |
1116 | Files patched: regexec.c |
1117 | When an internal pattern failed a conjecture, it didn't back off on the |
1118 | number of times it thought it had matched. |
1119 | |
1120 | NETaa14673: open $undefined dumped core |
1121 | From: Samuli K{rkk{inen |
1122 | Files patched: pp_sys.c |
1123 | pp_open() didn't check its argument for globness. |
1124 | |
1125 | NETaa14683: stringifies were running pad out of space |
1126 | From: Robin Barker |
1127 | Files patched: op.h toke.c |
1128 | Increased PADOFFSET to a U32, and made lexer not put double-quoted strings |
1129 | inside OP_STRINGIFY unless they really needed it. |
1130 | |
1131 | NETaa14689: shouldn't have . in @INC when tainting |
1132 | From: William R. Somsky |
1133 | Files patched: perl.c |
1134 | Now does not put . into @INC when tainting. It may still be added with a |
1135 | |
1136 | use lib "."; |
1137 | |
1138 | or, to put it at the end, |
1139 | |
1140 | BEGIN { push(@INC, ".") } |
1141 | |
1142 | but this is not recommended unless a chdir to a known location has been done |
1143 | first. |
1144 | |
1145 | NETaa14690: values inside tainted SVs were ignored |
1146 | From: "James M. Stern" |
1147 | Files patched: pp.c pp_ctl.c |
1148 | It was assuming that a tainted value was a string. |
1149 | |
1150 | NETaa14692: format name required qualification under use strict |
1151 | From: Tom Christiansen |
1152 | Files patched: gv.c |
1153 | Now treats format names the same as subroutine names. |
1154 | |
1155 | NETaa14695: added simple regexp caching |
1156 | From: John Rowe |
1157 | Files patched: pp_ctl.c |
1158 | Applied suggested patch. |
1159 | |
1160 | NETaa14697: regexp comments were sometimes wrongly treated as literal text |
1161 | From: Tom Christiansen |
1162 | Files patched: regcomp.c |
1163 | The literal-character grabber didn't know about extended comments. |
cd48280b |
1164 | N.B. '#' is treated as a comment character whenever the /x option is |
1165 | used now, so you can't include '#' as a simple literal in /x regexps. |
4633a7c4 |
1166 | |
1167 | (By the way, Tom, the boxed form of quoting in the previous enclosure is |
1168 | exceeding antisocial when you want to extract the code from it.) |
1169 | |
1170 | NETaa14704: closure got wrong outer scope if outer sub was predeclared |
1171 | From: Marc Paquette |
1172 | Files patched: op.c |
1173 | The outer scope of the anonymous sub was set to the stub rather than to |
1174 | the actual subroutine. I kludged it by making the outer scope of the |
1175 | stub be the actual subroutine, if anything is depending on the stub. |
1176 | |
1177 | NETaa14705: $foo .= $foo did free memory read |
1178 | From: Gerd Knops |
1179 | Files patched: sv.c |
1180 | Now modifies address to copy if it was reallocated. |
1181 | |
a5f75d66 |
1182 | NETaa14709: Chip's FileHandle stuff |
1183 | From: Larry Wall |
1184 | Also: Chip Salzenberg |
1185 | Files patched: MANIFEST ext/FileHandle/FileHandle.pm ext/FileHandle/FileHandle.xs ext/FileHandle/Makefile.PL ext/POSIX/POSIX.pm ext/POSIX/POSIX.pod ext/POSIX/POSIX.xs lib/FileCache.pm lib/Symbol.pm t/lib/filehand.t t/lib/posix.t |
1186 | Applied suggested patches. |
1187 | |
4633a7c4 |
1188 | NETaa14711: added (&) and (*) prototypes for blocks and symbols |
1189 | From: Kenneth Albanowski |
1190 | Files patched: Makefile.SH op.c perly.c perly.h perly.y toke.c |
1191 | & now means that it must have an anonymous sub as that argument. If |
1192 | it's the first argument, the sub may be specified as a block in the |
1193 | indirect object slot, much like grep or sort, which have prototypes of (&@). |
1194 | |
1195 | Also added * so you can do things like |
1196 | |
1197 | sub myopen (*;$); |
1198 | |
1199 | myopen(FOO, $filename); |
1200 | |
1201 | NETaa14713: setuid FROM root now defaults to not do tainting |
1202 | From: Tony Camas |
1203 | Files patched: mg.c perl.c pp_hot.c |
1204 | Applied suggested patch. |
1205 | |
1206 | NETaa14714: duplicate magics could be added to an SV |
1207 | From: Yary Hluchan |
1208 | Files patched: sv.c sv.c |
1209 | The sv_magic() routine didn't properly check to see if it already had a |
1210 | magic of that type. Ordinarily it would have, but it was called during |
1211 | mg_get(), which forces the magic flags off temporarily. |
1212 | |
a5f75d66 |
1213 | NETaa14721: sub defined during erroneous do-FILE caused core dump |
1214 | From: David Campbell |
1215 | Files patched: op.c |
1216 | Fixed the seg fault. I couldn't reproduce the return problem. |
1217 | |
4633a7c4 |
1218 | NETaa14734: ref should never return undef |
1219 | From: Dale Amon |
1220 | Files patched: pp.c t/op/overload.t |
1221 | Now returns null string. |
1222 | |
1223 | NETaa14751: slice of undefs now returns null list |
1224 | From: Tim Bunce |
1225 | Files patched: pp.c pp_hot.c |
1226 | Null list clobberation is now done in lslice, not aassign. |
1227 | |
1228 | NETaa14789: select coredumped on Linux |
1229 | From: Ulrich Kunitz |
1230 | Files patched: pp_sys.c |
1231 | Applied suggested patches, more or less. |
1232 | |
1233 | NETaa14789: straightened out ins and out of duping |
1234 | Files patched: lib/IPC/Open3.pm |
1235 | (same) |
1236 | |
1237 | NETaa14791: implemented internal SUPER class |
1238 | From: Nick Ing-Simmons |
1239 | Also: Dean Roehrich |
1240 | Files patched: gv.c |
1241 | Applied suggested patch. |
1242 | |
1243 | NETaa14845: s/// didn't handle offset strings |
1244 | From: Ken MacLeod |
1245 | Files patched: pp_ctl.c |
1246 | Needed a call to SvOOK_off(targ) in pp_substcont(). |
1247 | |
1248 | NETaa14851: Use of << to mean <<"" is deprecated |
1249 | From: Larry Wall |
1250 | Files patched: toke.c |
1251 | |
1252 | NETaa14865: added HINT_BLOCK_SCOPE to "elsif" |
1253 | From: Jim Avera |
1254 | Files patched: perly.y |
1255 | Needed to set HINT_BLOCK_SCOPE on "elsif" to prevent the do block from |
1256 | being optimized away, which caused the statement transition in elsif |
1257 | to reset the stack too far back. |
1258 | |
1259 | NETaa14876: couldn't delete localized GV safely |
1260 | From: John Hughes |
1261 | Files patched: pp.c scope.c |
1262 | The reference count of the "borrowed" GV needed to be incremented while |
1263 | there was a reference to it in the savestack. |
1264 | |
1265 | NETaa14887: couldn't negate magical scalars |
1266 | From: ian |
1267 | Also: Gurusamy Sarathy |
1268 | Files patched: pp.c |
1269 | Applied suggested patch, more or less. (It's not necessary to test both |
1270 | SvNIOK and SvNIOKp, since the private bits are always set if the public |
1271 | bits are set.) |
1272 | |
1273 | NETaa14893: /m modifier was sticky |
1274 | From: Jim Avera |
1275 | Files patched: pp_ctl.c |
1276 | pp_match() and pp_subst() were using an improperly scoped SAVEINT to restore |
1277 | the value of the internal variable multiline. |
1278 | |
1279 | NETaa14893: /m modifier was sticky |
1280 | Files patched: cop.h pp_hot.c |
1281 | (same) |
1282 | |
a5f75d66 |
1283 | NETaa14916: complete.pl retained old return value |
1284 | From: Martyn Pearce |
1285 | Files patched: lib/complete.pl |
1286 | Applied suggested patch. |
1287 | |
1288 | NETaa14928: non-const 3rd arg to split assigned to list could coredump |
1289 | From: Hans de Graaff |
1290 | Files patched: op.c |
1291 | The optimizer was assuming the OP was an OP_CONST. |
1292 | |
1293 | NETaa14942: substr as lvalue could disable magic |
1294 | From: Darrell Kindred <dkindred+@cmu.edu> |
1295 | Files patched: pp.c |
1296 | The substr was disabling the magic of $1. |
1297 | |
1298 | NETaa14990: "not" not parseable when expecting term |
1299 | From: "Randal L. Schwartz" |
1300 | Files patched: perly.c perly.c.diff perly.y vms/perly_c.vms |
1301 | The NOTOP production needed to be moved down into the terms. |
1302 | |
1303 | NETaa14993: Bizarre copy of formline |
1304 | From: Tom Christiansen |
1305 | Also: Charles Bailey |
1306 | Files patched: sv.c |
1307 | Applied suggested patch. |
1308 | |
1309 | NETaa14998: sv_add_arena() no longer leaks memory |
1310 | From: Andreas Koenig |
1311 | Files patched: av.c hv.c perl.h sv.c |
1312 | Now keeps one potential arena "on tap", but doesn't use it unless there's |
1313 | demand for SV headers. When an AV or HV is extended, its old memory |
1314 | becomes the next potential arena unless there already is one, in which |
1315 | case it is simply freed. This will have the desired property of not |
1316 | stranding medium-sized chunks of memory when extending a single array |
1317 | repeatedly, but will not degrade when there's no SV demand beyond keeping |
1318 | one chunk of memory on tap, which generally will be about 250 bytes big, |
1319 | since it prefers the earlier freed chunk over the later. See the nice_chunk |
1320 | variable. |
1321 | |
1322 | NETaa14999: $a and $b now protected from use strict and lexical declaration |
1323 | From: Tom Christiansen |
1324 | Files patched: gv.c pod/perldiag.pod toke.c |
1325 | Bare $a and $b are now allowed during "use strict". In addition, |
1326 | the following diag was added: |
1327 | |
1328 | =item Can't use "my %s" in sort comparison |
1329 | |
1330 | (F) The global variables $a and $b are reserved for sort comparisons. |
1331 | You mentioned $a or $b in the same line as the <=> or cmp operator, |
1332 | and the variable had earlier been declared as a lexical variable. |
1333 | Either qualify the sort variable with the package name, or rename the |
1334 | lexical variable. |
1335 | |
1336 | |
1337 | NETaa15034: use strict refs should allow calls to prototyped functions |
1338 | From: Roderick Schertler |
1339 | Files patched: perly.c perly.c.diff perly.y toke.c vms/perly_c.vms |
1340 | Applied patch suggested by Chip. |
1341 | |
1342 | NETaa15083: forced $AUTOLOAD to be untainted |
1343 | From: Tim Bunce |
1344 | Files patched: gv.c pp_hot.c |
1345 | Stripped any taintmagic from $AUTOLOAD after setting it. |
1346 | |
1347 | NETaa15084: patch for Term::Cap |
1348 | From: Mark Kaehny |
1349 | Also: Hugo van der Sanden |
1350 | Files patched: lib/Term/Cap.pm |
1351 | Applied suggested patch. |
1352 | |
1353 | NETaa15086: null pattern could cause coredump in s//_$1_/ |
1354 | From: "Paul E. Maisano" |
1355 | Files patched: cop.h pp_ctl.c |
1356 | If the replacement pattern was complicated enough to cause pp_substcont |
1357 | to be called, then it lost track of which REGEXP* it was supposed to |
1358 | be using. |
1359 | |
1360 | NETaa15087: t/io/pipe.t didn't work on AIX |
1361 | From: Andy Dougherty |
1362 | Files patched: t/io/pipe.t |
1363 | Applied suggested patch. |
1364 | |
1365 | NETaa15088: study was busted |
1366 | From: Hugo van der Sanden |
1367 | Files patched: opcode.h opcode.pl pp.c |
1368 | It was studying its scratch pad target rather than the argument supplied. |
1369 | |
1370 | NETaa15090: MSTATS patch |
1371 | From: Tim Bunce |
1372 | Files patched: global.sym malloc.c perl.c perl.h proto.h |
1373 | Applied suggested patch. |
1374 | |
1375 | NETaa15098: longjmp out of magic leaks memory |
1376 | From: Chip Salzenberg |
1377 | Files patched: mg.c sv.c |
1378 | Applied suggested patch. |
1379 | |
1380 | NETaa15102: getpgrp() is broken if getpgrp2() is available |
1381 | From: Roderick Schertler |
1382 | Files patched: perl.h pp_sys.c |
1383 | Applied suggested patch. |
1384 | |
1385 | NETaa15103: prototypes leaked opcodes |
1386 | From: Chip Salzenberg |
1387 | Files patched: op.c |
1388 | Applied suggested patch. |
1389 | |
1390 | NETaa15107: quotameta memory bug on all metacharacters |
1391 | From: Chip Salzenberg |
1392 | Files patched: pp.c |
1393 | Applied suggested patch. |
1394 | |
1395 | NETaa15108: Fix for incomplete string leak |
1396 | From: Chip Salzenberg |
1397 | Files patched: toke.c |
1398 | Applied suggested patch. |
1399 | |
1400 | NETaa15110: couldn't use $/ with 8th bit set on some architectures |
1401 | From: Chip Salzenberg |
1402 | Files patched: doop.c interp.sym mg.c op.c perl.c perl.h pp_ctl.c pp_hot.c pp_sys.c sv.c toke.c util.c |
1403 | Applied suggested patches. |
1404 | |
1405 | NETaa15112: { a_1 => 2 } didn't parse as expected |
1406 | From: Stuart M. Weinstein |
1407 | Files patched: toke.c |
1408 | The little dwimmer was only skipping ALPHA rather than ALNUM chars. |
1409 | |
1410 | NETaa15123: bitwise ops produce spurious warnings |
1411 | From: Hugo van der Sanden |
1412 | Also: Chip Salzenberg |
1413 | Also: Andreas Gustafsson |
1414 | Files patched: sv.c |
1415 | Decided to suppress the warning in the conversion routines if merely converting |
1416 | a temporary, which can never be a user-supplied value anyway. |
1417 | |
1418 | NETaa15129: #if defined (foo) misparsed in h2ph |
1419 | From: Roderick Schertler <roderick@gate.net> |
1420 | Files patched: utils/h2ph.PL |
1421 | Applied suggested patch. |
1422 | |
1423 | NETaa15131: some POSIX functions assumed valid filehandles |
1424 | From: Chip Salzenberg |
1425 | Files patched: ext/POSIX/POSIX.xs |
1426 | Applied suggested patch. |
1427 | |
1428 | NETaa15151: don't optimize split on OPpASSIGN_COMMON |
1429 | From: Huw Rogers |
1430 | Files patched: op.c |
1431 | Had to swap the optimization down to after the assignment op is generated |
1432 | and COMMON is calculated, and then clean up the resultant tree differently. |
1433 | |
1434 | NETaa15154: MakeMaker-5.18 |
1435 | From: Andreas Koenig |
1436 | Files patched: MANIFEST lib/ExtUtils/Liblist.pm lib/ExtUtils/MM_VMS.pm lib/ExtUtils/MakeMaker.pm lib/ExtUtils/Mksymlists.pm |
1437 | Brought it up to 5.18. |
1438 | |
1439 | NETaa15156: some Exporter tweaks |
1440 | From: Roderick Schertler |
1441 | Also: Tim Bunce |
1442 | Files patched: lib/Exporter.pm |
1443 | Also did Tim's Tiny Trivial patch. |
1444 | |
1445 | NETaa15157: new version of Test::Harness |
1446 | From: Andreas Koenig |
1447 | Files patched: lib/Test/Harness.pm |
1448 | Applied suggested patch. |
1449 | |
1450 | NETaa15175: overloaded nomethod has garbage 4th op |
1451 | From: Ilya Zakharevich |
1452 | Files patched: gv.c |
1453 | Applied suggested patch. |
1454 | |
1455 | NETaa15179: SvPOK_only shouldn't back off on offset pointer |
1456 | From: Gutorm.Hogasen@oslo.teamco.telenor.no |
1457 | Files patched: sv.h |
1458 | SvPOK_only() was calling SvOOK_off(), which adjusted the string pointer |
1459 | after tr/// has already acquired it. It shouldn't really be necessary |
1460 | for SvPOK_only() to undo an offset string pointer, since there's no |
1461 | conflict with a possible integer value where the offset is stored. |
1462 | |
1463 | NETaa15193: & now always bypasses prototype checking |
1464 | From: Larry Wall |
1465 | Files patched: dump.c op.c op.h perly.c perly.c.diff perly.y pod/perlsub.pod pp_hot.c proto.h toke.c vms/perly_c.vms vms/perly_h.vms |
1466 | Turned out to be a big hairy deal because the lexer turns foo() into &foo(). |
1467 | But it works consistently now. Also fixed pod. |
1468 | |
1469 | NETaa15197: 5.002b2 is 'appending' to $@ |
1470 | From: Gurusamy Sarathy |
1471 | Files patched: pp_ctl.c |
1472 | Applied suggested patch. |
1473 | |
1474 | NETaa15201: working around Linux DBL_DIG problems |
1475 | From: Kenneth Albanowski |
1476 | Files patched: hints/linux.sh sv.c |
1477 | Applied suggested patch. |
1478 | |
1479 | NETaa15208: SelectSaver |
1480 | From: Chip Salzenberg |
1481 | Files patched: MANIFEST lib/SelectSaver.pm |
1482 | Applied suggested patch. |
1483 | |
1484 | NETaa15209: DirHandle |
1485 | From: Chip Salzenberg |
1486 | Files patched: MANIFEST lib/DirHandle.pm t/lib/dirhand.t |
1487 | |
1488 | NETaa15210: sysopen() |
1489 | From: Chip Salzenberg |
1490 | Files patched: doio.c keywords.pl lib/ExtUtils/typemap opcode.pl pod/perlfunc.pod pp_hot.c pp_sys.c proto.h toke.c |
1491 | Applied suggested patch. Hope it works... |
1492 | |
1493 | NETaa15211: use mnemonic names in Safe setup |
1494 | From: Chip Salzenberg |
1495 | Files patched: ext/Safe/Safe.pm |
1496 | Applied suggested patch, more or less. |
1497 | |
1498 | NETaa15214: prototype() |
1499 | From: Chip Salzenberg |
1500 | Files patched: ext/Safe/Safe.pm global.sym keywords.pl opcode.pl pp.c toke.c |
1501 | Applied suggested patch. |
1502 | |
1503 | NETaa15217: -w problem with -d:foo |
1504 | From: Tim Bunce |
1505 | Files patched: perl.c |
1506 | Applied suggested patch. |
1507 | |
1508 | NETaa15218: *GLOB{ELEMENT} |
1509 | From: Larry Wall |
1510 | Files patched: Makefile.SH embed.h ext/Safe/Safe.pm keywords.h opcode.h opcode.h opcode.pl perly.c perly.c.diff perly.y pp_hot.c t/lib/safe.t vms/perly_c.vms |
1511 | |
1512 | NETaa15219: Make *x=\*y do like *x=*y |
1513 | From: Chip Salzenberg |
1514 | Files patched: sv.c |
1515 | Applied suggested patch. |
1516 | |
1517 | NETaa15221: Indigestion with Carp::longmess and big eval '...'s |
1518 | From: Tim Bunce |
1519 | Files patched: lib/Carp.pm |
1520 | Applied suggested patch. |
1521 | |
1522 | NETaa15222: VERSION patch for standard extensions |
1523 | From: Paul Marquess |
1524 | Files patched: ext/DB_File/Makefile.PL ext/DynaLoader/DynaLoader.pm ext/DynaLoader/Makefile.PL ext/Fcntl/Fcntl.pm ext/Fcntl/Makefile.PL ext/GDBM_File/GDBM_File.pm ext/GDBM_File/Makefile.PL ext/NDBM_File/Makefile.PL ext/NDBM_File/NDBM_File.pm ext/ODBM_File/Makefile.PL ext/ODBM_File/ODBM_File.pm ext/POSIX/Makefile.PL ext/POSIX/POSIX.pm ext/SDBM_File/Makefile.PL ext/SDBM_File/SDBM_File.pm ext/Safe/Makefile.PL ext/Safe/Safe.pm ext/Socket/Makefile.PL |
1525 | Applied suggested patch. |
1526 | |
1527 | NETaa15222: VERSION patch for standard extensions (reprise) |
1528 | Files patched: ext/DB_File/DB_File.pm ext/DynaLoader/DynaLoader.pm ext/Fcntl/Fcntl.pm ext/GDBM_File/GDBM_File.pm ext/NDBM_File/NDBM_File.pm ext/ODBM_File/ODBM_File.pm ext/POSIX/POSIX.pm ext/SDBM_File/SDBM_File.pm ext/Safe/Safe.pm ext/Socket/Socket.pm |
1529 | (same) |
1530 | |
1531 | NETaa15227: $i < 10000 should optimize to integer op |
1532 | From: Larry Wall |
1533 | Files patched: op.c op.c |
1534 | The program |
1535 | |
1536 | for ($i = 0; $i < 100000; $i++) { |
1537 | push @foo, $i; |
1538 | } |
1539 | |
1540 | takes about one quarter the memory if the optimizer decides that it can |
1541 | use an integer < comparison rather than floating point. It now does so |
1542 | if one side is an integer constant and the other side a simple variable. |
1543 | This should really help some of our benchmarks. You can still force a |
1544 | floating point comparison by using 100000.0 instead. |
1545 | |
1546 | NETaa15228: CPerl-mode patch |
1547 | From: Ilya Zakharevich |
1548 | Files patched: emacs/cperl-mode.el |
1549 | Applied suggested patch. |
1550 | |
1551 | NETaa15231: Symbol::qualify() |
1552 | From: Chip Salzenberg |
1553 | Files patched: ext/FileHandle/FileHandle.pm gv.c lib/SelectSaver.pm lib/Symbol.pm pp_hot.c |
1554 | Applied suggested patch. |
1555 | |
1556 | NETaa15236: select select broke under use strict |
1557 | From: Chip Salzenberg |
1558 | Files patched: op.c |
1559 | Instead of inventing a new bit, I just turned off the HINT_STRICT_REFS bit. |
1560 | I don't think it's worthwhile distinguishing between qualified or unqualified |
1561 | names to select. |
1562 | |
1563 | NETaa15237: use vars |
1564 | From: Larry Wall |
1565 | Files patched: MANIFEST gv.c lib/subs.pm lib/vars.pm sv.c |
1566 | |
1567 | NETaa15240: keep op names _and_ descriptions |
1568 | From: Chip Salzenberg |
1569 | Files patched: doio.c embed.h ext/Safe/Safe.pm ext/Safe/Safe.xs global.sym op.c opcode.h opcode.pl scope.c sv.c |
1570 | Applied suggested patch. |
1571 | |
1572 | NETaa15259: study doesn't unset on string modification |
1573 | From: Larry Wall |
1574 | Files patched: mg.c pp.c |
1575 | Piggybacked on m//g unset magic to unset the study too. |
1576 | |
1577 | NETaa15276: pick a better initial cxstack_max |
1578 | From: Chip Salzenberg |
1579 | Files patched: perl.c |
1580 | Added fudge in, and made it calculate how many it could fit into (most of) 8K, |
1581 | to avoid getting 16K of Kingsley malloc. |
1582 | |
1583 | NETaa15287: numeric comparison optimization adjustments |
1584 | From: Clark Cooper |
1585 | Files patched: op.c |
1586 | Applied patch suggested by Chip, with liberalization to >= and <=. |
1587 | |
1588 | NETaa15299: couldn't eval string containing pod or __DATA__ |
1589 | From: Andreas Koenig |
1590 | Also: Gisle Aas |
1591 | Files patched: toke.c |
1592 | Basically, eval didn't know how to bypass pods correctly. |
1593 | |
1594 | NETaa15300: sv_backoff problems |
1595 | From: Paul Marquess |
1596 | Also: mtr |
1597 | Also: Chip Salzenberg |
1598 | Files patched: op.c sv.c sv.h |
1599 | Applied suggested patch. |
1600 | |
1601 | NETaa15312: Avoid fclose(NULL) |
1602 | From: Chip Salzenberg |
1603 | Files patched: toke.c |
1604 | Applied suggested patch. |
1605 | |
1606 | NETaa15318: didn't set up perl_init_i18nl14n for export |
1607 | From: Ilya Zakharevich |
1608 | Files patched: perl_exp.SH |
1609 | Applied suggested patch. |
1610 | |
1611 | NETaa15331: File::Path::rmtree followed symlinks |
1612 | From: Andreas Koenig |
1613 | Files patched: lib/File/Path.pm |
1614 | Added suggested patch, except I did |
1615 | |
1616 | if (not -l $root and -d _) { |
1617 | |
1618 | for efficiency, since if -d is true, the -l already called lstat on it. |
1619 | |
1620 | NETaa15339: sv_gets() didn't reset count |
1621 | From: alanburlison@unn.unisys.com |
1622 | Files patched: sv.c |
1623 | Applied suggested patch. |
1624 | |
1625 | NETaa15341: differentiated importation of different types |
1626 | From: Chip Salzenberg |
1627 | Files patched: gv.c gv.h op.c perl.c pp.c pp_ctl.c sv.c sv.h toke.c |
1628 | Applied suggested patch. |
1629 | |
1630 | NETaa15342: Consistent handling of e_{fp,tmpname} |
1631 | From: Chip Salzenberg |
1632 | Files patched: perl.c pp_ctl.c util.c |
1633 | Applied suggested patch. |
1634 | |
1635 | NETaa15344: Safe gets confused about malloc on AIX |
1636 | From: Tim Bunce |
1637 | Files patched: ext/Safe/Safe.xs |
1638 | Applied suggested patch. |
1639 | |
1640 | NETaa15348: -M upgrade |
1641 | From: Tim Bunce |
1642 | Files patched: perl.c pod/perlrun.pod |
1643 | Applied suggested patch. |
1644 | |
1645 | NETaa15369: change in split optimization broke scalar context |
1646 | From: Ulrich Pfeifer |
1647 | Files patched: op.c |
1648 | The earlier patch to make the split optimization pay attention to |
1649 | OPpASSIGN_COMMON rearranged how the syntax tree is constructed, but kept |
1650 | the wrong context flags. This causes pp_split() do do the wrong thing. |
1651 | |
1652 | NETaa15423: can't do subversion numbering because of %5.3f assumptions |
1653 | From: Andy Dougherty |
1654 | Files patched: configpm patchlevel.h perl.c perl.h pp_ctl.c |
1655 | Removed the %5.3f assumptions where appropriate. patchlevel.h now |
1656 | defines SUBVERSION, which if greater than 0 indicates a development version. |
1657 | |
1658 | NETaa15424: Sigsetjmp patch |
1659 | From: Kenneth Albanowski |
1660 | Files patched: Configure config_h.SH op.c perl.c perl.h pp_ctl.c util.c |
1661 | Applied suggested patch. |
1662 | |
4633a7c4 |
1663 | Needed to make install paths absolute. |
1664 | Files patched: installperl |
1665 | |
a5f75d66 |
1666 | h2xs 1.14 |
1667 | Files patched: utils/h2xs.PL |
4633a7c4 |
1668 | |
1669 | makedir() looped on a symlink to a directory. |
1670 | Files patched: installperl |
1671 | |
a5f75d66 |
1672 | xsubpp 1.932 |
1673 | Files patched: lib/ExtUtils/xsubpp |
4633a7c4 |
1674 | |
1675 | ------------- |
748a9306 |
1676 | Version 5.001 |
1677 | ------------- |
1678 | |
1679 | Nearly all the changes for 5.001 were bug fixes of one variety or another, |
1680 | so here's the bug list, along with the "resolution" for each of them. If |
1681 | you wish to correspond about any of them, please include the bug number. |
1682 | |
1683 | There were a few that can be construed as enhancements: |
1684 | NETaa13059: now warns of use of \1 where $1 is necessary. |
1685 | NETaa13512: added $SIG{__WARN__} and $SIG{__DIE__} hooks |
1686 | NETaa13520: added closures |
1687 | NETaa13530: scalar keys now resets hash iterator |
1688 | NETaa13641: added Tim's fancy new import whizbangers |
1689 | NETaa13710: cryptswitch needed to be more "useable" |
1690 | NETaa13716: Carp now allows multiple packages to be skipped out of |
1691 | NETaa13716: now counts imported routines as "defined" for redef warnings |
1692 | (and, of course, much of the stuff from the perl5-porters) |
1693 | |
1694 | NETaa12974: README incorrectly said it was a pre-release. |
1695 | Files patched: README |
1696 | |
1697 | NETaa13033: goto pushed a bogus scope on the context stack. |
1698 | From: Steve Vinoski |
1699 | Files patched: pp_ctl.c |
1700 | The goto operator pushed an extra bogus scope onto the context stack. (This |
1701 | often didn't matter, since many things pop extra unrecognized scopes off.) |
1702 | |
1703 | NETaa13034: tried to get valid pointer from undef. |
1704 | From: Castor Fu |
1705 | Also: Achille Hui, the Day Dreamer |
1706 | Also: Eric Arnold |
1707 | Files patched: pp_sys.c |
1708 | Now treats undef specially, and calls SvPV_force on any non-numeric scalar |
1709 | value to get a real pointer to somewhere. |
1710 | |
1711 | NETaa13035: included package info with filehandles. |
1712 | From: Jack Shirazi - BIU |
1713 | Files patched: pp_hot.c pp_sys.c |
1714 | Now passes a glob to filehandle methods to keep the package info intact. |
1715 | |
1716 | NETaa13048: didn't give strict vars message on every occurrence. |
1717 | From: Doug Campbell |
1718 | Files patched: gv.c |
1719 | It now complains about every occurrence. (The bug resulted from an |
1720 | ill-conceived attempt to suppress a duplicate error message in a |
1721 | suboptimal fashion.) |
1722 | |
1723 | NETaa13052: test for numeric sort sub return value fooled by taint magic. |
1724 | From: Peter Jaspers-Fayer |
1725 | Files patched: pp_ctl.c sv.h |
1726 | The test to see if the sort sub return value was numeric looked at the |
1727 | public flags rather than the private flags of the SV, so taint magic |
1728 | hid that info from the sort. |
1729 | |
1730 | NETaa13053: forced a2p to use byacc |
1731 | From: Andy Dougherty |
1732 | Files patched: MANIFEST x2p/Makefile.SH x2p/a2p.c |
1733 | a2p.c is now pre-byacced and shipped with the kit. |
1734 | |
1735 | NETaa13055: misnamed constant in previous patch. |
1736 | From: Conrad Augustin |
1737 | Files patched: op.c op.h toke.c |
1738 | The tokener translates $[ to a constant, but with a special marking in case |
1739 | the constant gets assigned to or localized. Unfortunately, the marking |
1740 | was done with a combination of OPf_SPECIAL and OPf_MOD that was easily |
1741 | spoofed. There is now a private OPpCONST_ARYLEN flag for this purpose. |
1742 | |
1743 | NETaa13055: use of OPf_SPECIAL for $[ lvaluehood was too fragile. |
1744 | Files patched: op.c op.h toke.c |
1745 | (same) |
1746 | |
1747 | NETaa13056: convert needs to throw away any number info on its list. |
1748 | From: Jack Shirazi - BIU |
1749 | Files patched: op.c |
1750 | The listiness of the argument list leaked out to the subroutine call because |
1751 | of how prepend_elem and append_elem reuse an existing list. The convert() |
1752 | routine just needs to discard any listiness it finds on its argument. |
1753 | |
1754 | NETaa13058: AUTOLOAD shouldn't assume size of @_ is meaningful. |
1755 | From: Florent Guillaume |
1756 | Files patched: ext/DB_File/DB_File.pm ext/Fcntl/Fcntl.pm ext/GDBM_File/GDBM_File.pm ext/Socket/Socket.pm h2xs.SH |
1757 | I just deleted the optimization, which is silly anyway since the eventual |
1758 | subroutine definition is cached. |
1759 | |
1760 | NETaa13059: now warns of use of \1 where $1 is necessary. |
1761 | From: Gustaf Neumann |
1762 | Files patched: toke.c |
1763 | Now says |
1764 | |
1765 | Can't use \1 to mean $1 in expression at foo line 2 |
1766 | |
1767 | along with an explanation in perldiag. |
1768 | |
1769 | NETaa13060: no longer warns on attempt to read <> operator's transition state. |
1770 | From: Chaim Frenkel |
1771 | Files patched: pp_hot.c |
1772 | No longer warns on <> operator's transitional state. |
1773 | |
1774 | NETaa13140: warning said $ when @ would be more appropriate. |
1775 | From: David J. MacKenzie |
1776 | Files patched: op.c pod/perldiag.pod |
1777 | Now says |
1778 | |
1779 | (Did you mean $ or @ instead of %?) |
1780 | |
1781 | and added more explanation to perldiag. |
1782 | |
1783 | NETaa13149: was reading freed memory to make incorrect error message. |
1784 | Files patched: pp_ctl.c |
1785 | It was reading freed memory to make an error message that would be |
1786 | incorrect in any event because it had the inner filename rather than |
1787 | the outer. |
1788 | |
1789 | NETaa13149: confess was sometimes less informative than croak |
1790 | From: Jack Shirazi |
1791 | Files patched: lib/Carp.pm |
1792 | (same) |
1793 | |
1794 | NETaa13150: stderr needs to be STDERR in package |
1795 | From: Jack Shirazi |
1796 | Files patched: lib/File/CheckTree.pm |
1797 | Also fixed pl2pm to translate the filehandles to uppercase. |
1798 | |
1799 | NETaa13150: uppercases stdin, stdout and stderr |
1800 | Files patched: pl2pm |
1801 | (same) |
1802 | |
1803 | NETaa13154: array assignment didn't notice package magic. |
1804 | From: Brian Reichert |
1805 | Files patched: pp_hot.c |
1806 | The list assignment operator looked for only set magic, but set magic is |
1807 | only on the elements of a magical hash, not on the hash as a whole. I made |
1808 | the operator look for any magic at all on the target array or hash. |
1809 | |
1810 | NETaa13155: &DB::DB left trash on the stack. |
1811 | From: Thomas Koenig |
1812 | Files patched: lib/perl5db.pl pp_ctl.c |
1813 | The call by pp_dbstate() to &DB::DB left trash on the stack. It now |
1814 | calls DB in list context, and DB returns (). |
1815 | |
1816 | NETaa13156: lexical variables didn't show up in debugger evals. |
1817 | From: Joergen Haegg |
1818 | Files patched: op.c |
1819 | The code that searched back up the context stack for the lexical scope |
1820 | outside the eval only partially took into consideration that there |
1821 | might be extra debugger subroutine frames that shouldn't be used, and |
1822 | ended up comparing the wrong statement sequence number to the range of |
1823 | valid sequence numbers for the scope of the lexical variable. (There |
1824 | was also a bug fixed in passing that caused the scope of lexical to go |
1825 | clear to the end of the subroutine even if it was within an inner block.) |
1826 | |
1827 | NETaa13157: any request for autoloaded DESTROY should create a null one. |
1828 | From: Tom Christiansen |
1829 | Files patched: lib/AutoLoader.pm |
1830 | If DESTROY.al is not located, it now creates sub DESTROY {} automatically. |
1831 | |
1832 | NETaa13158: now preserves $@ around destructors while leaving eval. |
1833 | From: Tim Bunce |
1834 | Files patched: pp_ctl.c |
1835 | Applied supplied patch, except the whole second hunk can be replaced with |
1836 | |
1837 | sv_insert(errsv, 0, 0, message, strlen(message)); |
1838 | |
1839 | NETaa13160: clarified behavior of split without arguments |
1840 | From: Harry Edmon |
1841 | Files patched: pod/perlfunc.pod |
1842 | Clarified the behavior of split without arguments. |
1843 | |
1844 | NETaa13162: eval {} lost list/scalar context |
1845 | From: Dov Grobgeld |
1846 | Files patched: op.c |
1847 | LEAVETRY didn't propagate number to ENTERTRY. |
1848 | |
1849 | NETaa13163: clarified documentation of foreach using my variable |
1850 | From: Tom Christiansen |
1851 | Files patched: pod/perlsyn.pod |
1852 | Explained that foreach using a lexical is still localized. |
1853 | |
1854 | NETaa13164: the dot detector for the end of formats was over-rambunctious. |
1855 | From: John Stoffel |
1856 | Files patched: toke.c |
1857 | The dot detector for the end of formats was over-rambunctious. It would |
1858 | pick up any dot that didn't have a space in front of it. |
1859 | |
1860 | NETaa13165: do {} while 1 never linked outer block into next chain. |
1861 | From: Gisle Aas |
1862 | Files patched: op.c |
1863 | When the conditional of do {} while 1; was optimized away, it confused the |
1864 | postfix order construction so that the block that ordinarily sits around the |
1865 | whole loop was never executed. So when the loop tried to unstack between |
1866 | iterations, it got the wrong context, and blew away the lexical variables |
1867 | of the outer scope. Fixed it by introducing a NULL opcode that will be |
1868 | optimized away later. |
1869 | |
1870 | NETaa13167: coercion was looking at public bits rather than private bits. |
1871 | From: Randal L. Schwartz |
1872 | Also: Thomas Riechmann |
1873 | Also: Shane Castle |
1874 | Files patched: sv.c |
1875 | There were some bad ifdefs around the various varieties of set*id(). In |
1876 | addition, tainting was interacting badly with assignment to $> because |
1877 | sv_2iv() was examining SvPOK rather than SvPOKp, and so couldn't coerce |
1878 | a string uid to an integer one. |
1879 | |
1880 | NETaa13167: had some ifdefs wrong on set*id. |
1881 | Files patched: mg.c pp_hot.c |
1882 | (same) |
1883 | |
1884 | NETaa13168: relaxed test for comparison of new and old fds |
1885 | From: Casper H.S. Dik |
1886 | Files patched: t/lib/posix.t |
1887 | I relaxed the comparison to just check that the new fd is greater. |
1888 | |
1889 | NETaa13169: autoincrement can corrupt scalar value state. |
1890 | From: Gisle Aas |
1891 | Also: Tom Christiansen |
1892 | Files patched: sv.c |
1893 | It assumed a PV didn't need to be upgraded to become an NV. |
1894 | |
1895 | NETaa13169: previous patch could leak a string pointer. |
1896 | Files patched: sv.c |
1897 | (same) |
1898 | |
1899 | NETaa13170: symbols missing from global.sym |
1900 | From: Tim Bunce |
1901 | Files patched: global.sym |
1902 | Applied suggested patch. |
1903 | |
1904 | NETaa13171: \\ in <<'END' shouldn't reduce to \. |
1905 | From: Randal L. Schwartz |
1906 | Files patched: toke.c |
1907 | <<'END' needed to bypass ordinary single-quote processing. |
1908 | |
1909 | NETaa13172: 'use integer' turned off magical autoincrement. |
1910 | From: Erich Rickheit KSC |
1911 | Files patched: pp.c pp_hot.c |
1912 | The integer versions of the increment and decrement operators were trying too |
1913 | hard to be efficient. |
1914 | |
1915 | NETaa13172: deleted duplicate increment and decrement code |
1916 | Files patched: opcode.h opcode.pl pp.c |
1917 | (same) |
1918 | |
1919 | NETaa13173: install should make shared libraries executable. |
1920 | From: Brian Grossman |
1921 | Also: Dave Nadler |
1922 | Also: Eero Pajarre |
1923 | Files patched: installperl |
1924 | Now gives permission 555 to any file ending with extension specified by $dlext. |
1925 | |
1926 | NETaa13176: ck_rvconst didn't free the const it used up. |
1927 | From: Nick Duffek |
1928 | Files patched: op.c |
1929 | I checked in many random memory leaks under this bug number, since it |
1930 | was an eval that brought many of them out. |
1931 | |
1932 | NETaa13176: didn't delete XRV for temp ref of destructor. |
1933 | Files patched: sv.c |
1934 | (same) |
1935 | |
1936 | NETaa13176: didn't delete op_pmshort in matching operators. |
1937 | Files patched: op.c |
1938 | (same) |
1939 | |
1940 | NETaa13176: eval leaked the name of the eval. |
1941 | Files patched: scope.c |
1942 | (same) |
1943 | |
1944 | NETaa13176: gp_free didn't free the format. |
1945 | Files patched: gv.c |
1946 | (same) |
1947 | |
1948 | NETaa13176: minor leaks in loop exits and constant subscript optimization. |
1949 | Files patched: op.c |
1950 | (same) |
1951 | |
1952 | NETaa13176: plugged some duplicate struct allocation memory leaks. |
1953 | Files patched: perl.c |
1954 | (same) |
1955 | |
1956 | NETaa13176: sv_clear of an FM didn't clear anything. |
1957 | Files patched: sv.c |
1958 | (same) |
1959 | |
1960 | NETaa13176: tr/// didn't mortalize its return value. |
1961 | Files patched: pp.c |
1962 | (same) |
1963 | |
1964 | NETaa13177: SCOPE optimization hid line number info |
1965 | From: David J. MacKenzie |
1966 | Also: Hallvard B Furuseth |
1967 | Files patched: op.c |
1968 | Every pass on the syntax tree has to keep track of the current statement. |
1969 | Unfortunately, the single-statement block was optimized into a single |
1970 | statement between the time the variable was parsed and the time the |
1971 | void code scan was done, so that pass didn't see the OP_NEXTSTATE |
1972 | operator, because it has been optimized to an OP_NULL. |
1973 | |
1974 | Fortunately, null operands remember what they were, so it was pretty easy |
1975 | to make it set the correct line number anyway. |
1976 | |
1977 | NETaa13178: some linux doesn't handle nm well |
1978 | From: Alan Modra |
1979 | Files patched: hints/linux.sh |
1980 | Applied supplied patch. |
1981 | |
1982 | NETaa13180: localized slice now pre-extends array |
1983 | From: Larry Schuler |
1984 | Files patched: pp.c |
1985 | A localized slice now pre-extends its array to avoid reallocation during |
1986 | the scope of the local. |
1987 | |
1988 | NETaa13181: m//g didn't keep track of whether previous match matched null. |
1989 | From: "philippe.verdret" |
1990 | Files patched: mg.h pp_hot.c |
1991 | A pattern isn't allowed to match a null string in the same place twice in |
1992 | a row. m//g wasn't keeping track of whether the previous match matched |
1993 | the null string. |
1994 | |
1995 | NETaa13182: now includes whitespace as a regexp metacharacter. |
1996 | From: Larry Wall |
1997 | Files patched: toke.c |
1998 | scan_const() now counts " \t\n\r\f\v" as metacharacters when scanning a pattern. |
1999 | |
2000 | NETaa13183: sv_setsv shouldn't try to clone an object. |
2001 | From: Peter Gordon |
2002 | Files patched: sv.c |
2003 | The sv_mortalcopy() done by the return in STORE called sv_setsv(), |
2004 | which cloned the object. sv_setsv() shouldn't be in the business of |
2005 | cloning objects. |
2006 | |
2007 | NETaa13184: bogus warning on quoted signal handler name removed. |
2008 | From: Dan Carson |
2009 | Files patched: toke.c |
2010 | Now doesn't complain unless the first non-whitespace character after the = |
2011 | is an alphabetic character. |
2012 | |
2013 | NETaa13186: now croaks on chop($') |
2014 | From: Casper H.S. Dik |
2015 | Files patched: doop.c |
2016 | Now croaks on chop($') and such. |
2017 | |
2018 | NETaa13187: "${foo::bar}" now counts as mere delimitation, not as a bareword. |
2019 | From: Jay Rogers |
2020 | Files patched: toke.c |
2021 | "${foo::bar}" now counts as mere delimitation, not as a bareword inside a |
2022 | reference block. |
2023 | |
2024 | NETaa13188: for backward compatibility, looks for "perl -" before "perl". |
2025 | From: Russell Mosemann |
2026 | Files patched: toke.c |
2027 | Now allows non-whitespace characters on the #! line between the "perl" |
2028 | and the "-". |
2029 | |
2030 | NETaa13188: now allows non-whitespace after #!...perl before switches. |
2031 | Files patched: toke.c |
2032 | (same) |
2033 | |
2034 | NETaa13189: derivative files need to be removed before recreation |
2035 | From: Simon Leinen |
2036 | Also: Dick Middleton |
2037 | Also: David J. MacKenzie |
2038 | Files patched: embed_h.sh x2p/Makefile.SH |
2039 | Fixed various little nits as suggested in several messages. |
2040 | |
2041 | NETaa13190: certain assignments can spoof pod directive recognizer |
2042 | From: Ilya Zakharevich |
2043 | Files patched: toke.c |
2044 | The lexer now only recognizes pod directives where a statement is expected. |
2045 | |
2046 | NETaa13194: now returns undef when there is no curpm. |
2047 | From: lusol@Dillon.CC.Lehigh.EDU |
2048 | Files patched: mg.c |
2049 | Since there was no regexp prior to the "use", it was returning whatever the |
2050 | last successful match was within the "use", because there was no current |
2051 | regexp, so it treated it as a normal variable. It now returns undef. |
2052 | |
2053 | NETaa13195: semop had one S too many. |
2054 | From: Joachim Huober |
2055 | Files patched: opcode.pl |
2056 | The entry in opcode.pl had one too many S's. |
2057 | |
2058 | NETaa13196: always assumes it's a Perl script if -c is used. |
2059 | From: Dan Carson |
2060 | Files patched: toke.c |
2061 | It now will assume it's a Perl script if the -c switch is used. |
2062 | |
2063 | NETaa13197: changed implicit -> message to be more understandable. |
2064 | From: Bruce Barnett |
2065 | Files patched: op.c pod/perldiag.pod |
2066 | I changed the error message to be more understandable. It now says |
2067 | |
2068 | Can't use subscript on sort... |
2069 | |
2070 | |
2071 | NETaa13201: added OPpCONST_ENTERED flag to properly enter filehandle symbols. |
2072 | From: E. Jay Berkenbilt |
2073 | Also: Tom Christiansen |
2074 | Files patched: op.c op.h toke.c |
2075 | The grammatical reduction of a print statement didn't properly count |
2076 | the filehandle as a symbol reference because it couldn't distinguish |
2077 | between a symbol entered earlier in the program and a symbol entered |
2078 | for the first time down in the lexer. |
2079 | |
2080 | NETaa13203: README shouldn't mention uperl.o any more. |
2081 | From: Anno Siegel |
2082 | Files patched: README |
2083 | |
2084 | NETaa13204: .= shouldn't warn on uninitialized target. |
2085 | From: Pete Peterson |
2086 | Files patched: pp_hot.c |
2087 | No longer warns on uninitialized target of .= operator. |
2088 | |
2089 | NETaa13206: handy macros in XSUB.h |
2090 | From: Tim Bunce |
2091 | Files patched: XSUB.h |
2092 | Added suggested macros. |
2093 | |
2094 | NETaa13228: commonality checker didn't treat lexicals as variables. |
2095 | From: mcook@cognex.com |
2096 | Files patched: op.c opcode.pl |
2097 | The list assignment operator tries to avoid unnecessary copies by doing the |
2098 | assignment directly if there are no common variables on either side of the |
2099 | equals. Unfortunately, the code that decided that only recognized references |
2100 | to dynamic variables, not lexical variables. |
2101 | |
2102 | NETaa13229: fixed sign stuff for complement, integer coercion. |
2103 | From: Larry Wall |
2104 | Files patched: perl.h pp.c sv.c |
2105 | Fixed ~0 and integer coercions. |
2106 | |
2107 | NETaa13230: no longer tries to reuse scratchpad temps if tainting in effect. |
2108 | From: Luca Fini |
2109 | Files patched: op.c |
2110 | I haven't reproduced it, but I believe the problem is the reuse of scratchpad |
2111 | temporaries between statements. I've made it not try to reuse them if |
2112 | tainting is in effect. |
2113 | |
2114 | NETaa13231: *foo = *bar now prevents typo warnings on "foo" |
2115 | From: Robin Barker |
2116 | Files patched: sv.c |
2117 | Aliasing of the form *foo = *bar is now protected from the typo warnings. |
2118 | Previously only the *foo = \$bar form was. |
2119 | |
2120 | NETaa13235: require BAREWORD now introduces package name immediately. |
2121 | From: Larry Wall |
2122 | Files patched: toke.c |
2123 | require BAREWORD now introduces package name immediately. This lets the |
2124 | method intuit code work right even though the require hasn't actually run |
2125 | yet. |
2126 | |
2127 | NETaa13289: didn't calculate correctly using arybase. |
2128 | From: Jared Rhine |
2129 | Files patched: pp.c pp_hot.c |
2130 | The runtime code didn't use curcop->cop_arybase correctly. |
2131 | |
2132 | NETaa13301: store now throws exception on error |
2133 | From: Barry Friedman |
2134 | Files patched: ext/GDBM_File/GDBM_File.xs ext/NDBM_File/NDBM_File.xs ext/ODBM_File/ODBM_File.xs ext/SDBM_File/SDBM_File.xs |
2135 | Changed warn to croak in ext/*DBM_File/*.xs. |
2136 | |
2137 | NETaa13302: ctime now takes Time_t rather than Time_t*. |
2138 | From: Rodger Anderson |
2139 | Files patched: ext/POSIX/POSIX.xs |
2140 | Now declares a Time_t and takes the address of that in CODE. |
2141 | |
2142 | NETaa13302: shorter way to do this patch |
2143 | Files patched: ext/POSIX/POSIX.xs |
2144 | (same) |
2145 | |
2146 | NETaa13304: could feed too large $@ back into croak, whereupon it croaked. |
2147 | From: Larry Wall |
2148 | Files patched: perl.c |
2149 | callist() could feed $@ back into croak with more than a bare %s. (croak() |
2150 | handles long strings with a bare %s okay.) |
2151 | |
2152 | NETaa13305: compiler misoptimized RHS to outside of s/a/print/e |
2153 | From: Brian S. Cashman <bsc@umich.edu> |
2154 | Files patched: op.c |
2155 | The syntax tree was being misconstructed because the compiler felt that |
2156 | the RHS was invariant, so it did it outside the s///. |
2157 | |
2158 | NETaa13314: assigning mortal to lexical leaks |
2159 | From: Larry Wall |
2160 | Files patched: sv.c |
2161 | In stealing strings, sv_setsv was checking SvPOK to see if it should free |
2162 | the destination string. It should have been checking SvPVX. |
2163 | |
2164 | NETaa13316: wait4pid now recalled when errno == EINTR |
2165 | From: Robert J. Pankratz |
2166 | Files patched: pp_sys.c util.c |
2167 | system() and the close() of a piped open now recall wait4pid if it returned |
2168 | prematurely with errno == EINTR. |
2169 | |
2170 | NETaa13329: needed to localize taint magic |
2171 | From: Brian Katzung |
2172 | Files patched: sv.c doio.c mg.c pp_hot.c pp_sys.c scope.c taint.c |
2173 | Taint magic is now localized better, though I had to resort to a kludge |
2174 | to allow a value to be both tainted and untainted simultaneously during |
2175 | the assignment of |
2176 | |
2177 | local $foo = $_[0]; |
2178 | |
2179 | when $_[0] is a reference to the variable $foo already. |
2180 | |
2181 | NETaa13341: clarified interaction of AnyDBM_File::ISA and "use" |
2182 | From: Ian Phillipps |
2183 | Files patched: pod/modpods/AnyDBMFile.pod |
2184 | The doc was misleading. |
2185 | |
2186 | NETaa13342: grep and map with block would enter block but never leave it. |
2187 | From: Ian Phillipps |
2188 | Files patched: op.c |
2189 | The compiler use some sort-checking code to handle the arguments of |
2190 | grep and map. Unfortunately, this wiped out the block exit opcode while |
2191 | leaving the block entry opcode. This doesn't matter to sort, but did |
2192 | matter to grep and map. It now leave the block entry intact. |
2193 | |
2194 | The reason it worked without the my is because the block entry and exit |
2195 | were optimized away to an OP_SCOPE, which it doesn't matter if it's there |
2196 | or not. |
2197 | |
2198 | NETaa13343: goto needed to longjmp when in a signal handler. |
2199 | From: Robert Partington |
2200 | Files patched: pp_ctl.c |
2201 | goto needed to longjmp() when in a signal handler to get back into the |
2202 | right run() context. |
2203 | |
2204 | |
2205 | NETaa13344: strict vars shouldn't apply to globs or filehandles. |
2206 | From: Andrew Wilcox |
2207 | Files patched: gv.c |
2208 | Filehandles and globs will be excepted from "strict vars", so that you can |
2209 | do the standard Perl 4 trick of |
2210 | |
2211 | use strict; |
2212 | sub foo { |
2213 | local(*IN); |
2214 | open(IN,"file"); |
2215 | } |
2216 | |
2217 | |
2218 | NETaa13345: assert.pl didn't use package DB |
2219 | From: Hans Mulder |
2220 | Files patched: lib/assert.pl |
2221 | Now it does. |
2222 | |
2223 | NETaa13348: av_undef didn't free scalar representing $#foo. |
2224 | From: David Filo |
2225 | Files patched: av.c |
2226 | av_undef didn't free scalar representing $#foo. |
2227 | |
2228 | NETaa13349: sort sub accumulated save stack entries |
2229 | From: David Filo |
2230 | Files patched: pp_ctl.c |
2231 | COMMON only gets set if assigning to @_, which is reasonable. Most of the |
2232 | problem was a memory leak. |
2233 | |
2234 | NETaa13351: didn't treat indirect filehandles as references. |
2235 | From: Andy Dougherty |
2236 | Files patched: op.c |
2237 | Now produces |
2238 | |
2239 | Can't use an undefined value as a symbol reference at ./foo line 3. |
2240 | |
2241 | |
2242 | NETaa13352: OP_SCOPE allocated as UNOP rather than LISTOP. |
2243 | From: Andy Dougherty |
2244 | Files patched: op.c |
2245 | |
2246 | NETaa13353: scope() didn't release filegv on OP_SCOPE optimization. |
2247 | From: Larry Wall |
2248 | Files patched: op.c |
2249 | When scope() nulled out a NEXTSTATE, it didn't release its filegv reference. |
2250 | |
2251 | NETaa13355: hv_delete now avoids useless mortalcopy |
2252 | From: Larry Wall |
2253 | Files patched: hv.c op.c pp.c pp_ctl.c proto.h scope.c util.c |
2254 | hv_delete now avoids useless mortalcopy. |
2255 | |
2256 | |
2257 | NETaa13359: comma operator section missing its heading |
2258 | From: Larry Wall |
2259 | Files patched: pod/perlop.pod |
2260 | |
2261 | NETaa13359: random typo |
2262 | Files patched: pod/perldiag.pod |
2263 | |
2264 | NETaa13360: code to handle partial vec values was bogus. |
2265 | From: Conrad Augustin |
2266 | Files patched: pp.c |
2267 | The code that Mark J. added a long time ago to handle values that were partially |
2268 | off the end of the string was incorrect. |
2269 | |
2270 | NETaa13361: made it not interpolate inside regexp comments |
2271 | From: Martin Jost |
2272 | Files patched: toke.c |
2273 | To avoid surprising people, it no longer interpolates inside regexp |
2274 | comments. |
2275 | |
2276 | NETaa13362: ${q[1]} should be interpreted like it used to |
2277 | From: Hans Mulder |
2278 | Files patched: toke.c |
2279 | Now resolves ${keyword[1]} to $keyword[1] and warns if -w. Likewise for {}. |
2280 | |
2281 | NETaa13363: meaning of repeated search chars undocumented in tr/// |
2282 | From: Stephen P. Potter |
2283 | Files patched: pod/perlop.pod |
2284 | Documented that repeated characters use the first translation given. |
2285 | |
2286 | NETaa13365: if closedir fails, don't try it again. |
2287 | From: Frank Crawford |
2288 | Files patched: pp_sys.c |
2289 | Now does not attempt to closedir a second time. |
2290 | |
2291 | NETaa13366: can't do block scope optimization on $1 et al when tainting. |
2292 | From: Andrew Vignaux |
2293 | Files patched: toke.c |
2294 | The tainting mechanism assumes that every statement starts out |
2295 | untainted. Unfortunately, the scope removal optimization for very |
2296 | short blocks removed the statementhood of statements that were |
2297 | attempting to read $1 as an untainted value, with the effect that $1 |
2298 | appeared to be tainted anyway. The optimization is now disabled when |
2299 | tainting and the block contains $1 (or equivalent). |
2300 | |
2301 | NETaa13366: fixed this a better way in toke.c. |
2302 | Files patched: op.c |
2303 | (same) |
2304 | |
2305 | NETaa13366: need to disable scope optimization when tainting. |
2306 | Files patched: op.c |
2307 | (same) |
2308 | |
2309 | NETaa13367: Did a SvCUR_set without nulling out final char. |
2310 | From: "Rob Henderson" <robh@cs.indiana.edu> |
2311 | Files patched: doop.c pp.c pp_sys.c |
2312 | When do_vop set the length on its result string it neglected to null-terminate |
2313 | it. |
2314 | |
2315 | NETaa13368: bigrat::norm sometimes chucked sign |
2316 | From: Greg Kuperberg |
2317 | Files patched: lib/bigrat.pl |
2318 | The normalization routine was assuming that the gcd of two numbers was |
2319 | never negative, and based on that assumption managed to move the sign |
2320 | to the denominator, where it was deleted on the assumption that the |
2321 | denominator is always positive. |
2322 | |
2323 | NETaa13368: botched previous patch |
2324 | Files patched: lib/bigrat.pl |
2325 | (same) |
2326 | |
2327 | NETaa13369: # is now a comment character, and \# should be left for regcomp. |
2328 | From: Simon Parsons |
2329 | Files patched: toke.c |
2330 | It was not skipping the comment when it skipped the white space, and constructed |
2331 | an opcode that tried to match a null string. Unfortunately, the previous |
2332 | star tried to use the first character of the null string to optimize where |
2333 | to recurse, so it never matched. |
2334 | |
2335 | NETaa13369: comment after regexp quantifier induced non-match. |
2336 | Files patched: regcomp.c |
2337 | (same) |
2338 | |
2339 | NETaa13370: some code assumed SvCUR was of type int. |
2340 | From: Spider Boardman |
2341 | Files patched: pp_sys.c |
2342 | Did something similar to the proposed patch. I also fixed the problem that |
2343 | it assumed the type of SvCUR was int. And fixed get{peer,sock}name the |
2344 | same way. |
2345 | |
2346 | NETaa13375: sometimes dontbother wasn't added back into strend. |
2347 | From: Jamshid Afshar |
2348 | Files patched: regexec.c |
2349 | When the /g modifier was used, the regular expression code would calculate |
2350 | the end of $' too short by the minimum number of characters the pattern could |
2351 | match. |
2352 | |
2353 | NETaa13375: sv_setpvn now disallows negative length. |
2354 | Files patched: sv.c |
2355 | (same) |
2356 | |
2357 | NETaa13376: suspected indirect objecthood prevented recognition of lexical. |
2358 | From: Gisle.Aas@nr.no |
2359 | Files patched: toke.c |
2360 | When $data[0] is used in a spot that might be an indirect object, the lexer |
2361 | was getting confused over the rule that says the $data in $$data[0] isn't |
2362 | an array element. (The lexer uses XREF state for both indirect objects |
2363 | and for variables used as names.) |
2364 | |
2365 | NETaa13377: -I processesing ate remainder of #! line. |
2366 | From: Darrell Schiebel |
2367 | Files patched: perl.c |
2368 | I made the -I processing in moreswitches look for the end of the string, |
2369 | delimited by whitespace. |
2370 | |
2371 | NETaa13379: ${foo} now treated the same outside quotes as inside |
2372 | From: Hans Mulder |
2373 | Files patched: toke.c |
2374 | ${bareword} is now treated the same outside quotes as inside. |
2375 | |
2376 | NETaa13379: previous fix for this bug was botched |
2377 | Files patched: toke.c |
2378 | (same) |
2379 | |
2380 | NETaa13381: TEST should check for perl link |
2381 | From: Andy Dougherty |
2382 | Files patched: t/TEST |
2383 | die "You need to run \"make test\" first to set things up.\n" unless -e 'perl'; |
2384 | |
2385 | |
2386 | NETaa13384: fixed version 0.000 botch. |
2387 | From: Larry Wall |
2388 | Files patched: installperl |
2389 | |
2390 | NETaa13385: return 0 from required file loses message |
2391 | From: Malcolm Beattie |
2392 | Files patched: pp_ctl.c |
2393 | Works right now. |
2394 | |
2395 | NETaa13387: added pod2latex |
2396 | From: Taro KAWAGISHI |
2397 | Files patched: MANIFEST pod/pod2latex |
2398 | Added most recent copy to pod directory. |
2399 | |
2400 | NETaa13388: constant folding now prefers integer results over double |
2401 | From: Ilya Zakharevich |
2402 | Files patched: op.c |
2403 | Constant folding now prefers integer results over double. |
2404 | |
2405 | NETaa13389: now treats . and exec as shell metathingies |
2406 | From: Hans Mulder |
2407 | Files patched: doio.c |
2408 | Now treats . and exec as shell metathingies. |
2409 | |
2410 | NETaa13395: eval didn't check taintedness. |
2411 | From: Larry Wall |
2412 | Files patched: pp_ctl.c |
2413 | |
2414 | NETaa13396: $^ coredumps at end of string |
2415 | From: Paul Rogers |
2416 | Files patched: toke.c |
2417 | The scan_ident() didn't check for a null following $^. |
2418 | |
2419 | NETaa13397: improved error messages when operator expected |
2420 | From: Larry Wall |
2421 | Files patched: toke.c |
2422 | Added message (Do you need to predeclare BAR?). Also fixed the missing |
2423 | semicolon message. |
2424 | |
2425 | NETaa13399: cleanup by Andy |
2426 | From: Larry Wall |
2427 | Files patched: Changes Configure Makefile.SH README cflags.SH config.H config_h.SH deb.c doop.c dump.c ext/DB_File/DB_File.pm ext/DB_File/DB_File.xs ext/DynaLoader/DynaLoader.pm ext/Fcntl/Fcntl.pm ext/GDBM_File/GDBM_File.pm ext/POSIX/POSIX.pm ext/SDBM_File/sdbm/sdbm.h ext/Socket/Socket.pm ext/util/make_ext h2xs.SH hints/aix.sh hints/bsd386.sh hints/dec_osf.sh hints/esix4.sh hints/freebsd.sh hints/irix_5.sh hints/next_3_2.sh hints/sunos_4_1.sh hints/svr4.sh hints/ultrix_4.sh installperl lib/AutoSplit.pm lib/Cwd.pm lib/ExtUtils/MakeMaker.pm lib/ExtUtils/xsubpp lib/Term/Cap.pm mg.c miniperlmain.c perl.c perl.h perl_exp.SH pod/Makefile pod/perldiag.pod pod/pod2html pp.c pp_ctl.c pp_hot.c pp_sys.c proto.h sv.h t/re_tests util.c x2p/Makefile.SH x2p/a2p.h x2p/a2py.c x2p/handy.h x2p/hash.c x2p/hash.h x2p/str.c x2p/str.h x2p/util.c x2p/util.h x2p/walk.c |
2428 | |
2429 | NETaa13399: cleanup from Andy |
2430 | Files patched: MANIFEST |
2431 | |
2432 | NETaa13399: configuration cleanup |
2433 | Files patched: Configure Configure MANIFEST MANIFEST Makefile.SH Makefile.SH README config.H config.H config_h.SH config_h.SH configpm ext/DynaLoader/DynaLoader.pm ext/DynaLoader/dl_hpux.xs ext/NDBM_File/Makefile.PL ext/ODBM_File/Makefile.PL ext/util/make_ext handy.h hints/aix.sh hints/hpux_9.sh hints/hpux_9.sh hints/irix_4.sh hints/linux.sh hints/mpeix.sh hints/next_3_2.sh hints/solaris_2.sh hints/svr4.sh installperl installperl lib/AutoSplit.pm lib/ExtUtils/MakeMaker.pm lib/ExtUtils/MakeMaker.pm lib/ExtUtils/xsubpp lib/Getopt/Long.pm lib/Text/Tabs.pm makedepend.SH makedepend.SH mg.c op.c perl.h perl_exp.SH pod/perl.pod pod/perldiag.pod pod/perlsyn.pod pod/pod2man pp_sys.c proto.h proto.h unixish.h util.c util.c vms/config.vms writemain.SH x2p/a2p.h x2p/a2p.h x2p/a2py.c x2p/a2py.c x2p/handy.h x2p/util.c x2p/walk.c x2p/walk.c |
2434 | |
2435 | NETaa13399: new files from Andy |
2436 | Files patched: ext/DB_File/Makefile.PL ext/DynaLoader/Makefile.PL ext/Fcntl/Makefile.PL ext/GDBM_File/Makefile.PL ext/NDBM_File/Makefile.PL ext/ODBM_File/Makefile.PL ext/POSIX/Makefile.PL ext/SDBM_File/Makefile.PL ext/SDBM_File/sdbm/Makefile.PL ext/Socket/Makefile.PL globals.c hints/convexos.sh hints/irix_6.sh |
2437 | |
2438 | NETaa13399: patch0l from Andy |
2439 | Files patched: Configure MANIFEST Makefile.SH config.H config_h.SH ext/DB_File/Makefile.PL ext/GDBM_File/Makefile.PL ext/NDBM_File/Makefile.PL ext/POSIX/POSIX.xs ext/SDBM_File/sdbm/Makefile.PL ext/util/make_ext h2xs.SH hints/next_3_2.sh hints/solaris_2.sh hints/unicos.sh installperl lib/Cwd.pm lib/ExtUtils/MakeMaker.pm makeaperl.SH vms/config.vms x2p/util.c x2p/util.h |
2440 | |
2441 | NETaa13399: stuff from Andy |
2442 | Files patched: Configure MANIFEST Makefile.SH configpm hints/dec_osf.sh hints/linux.sh hints/machten.sh lib/ExtUtils/MakeMaker.pm util.c |
2443 | |
2444 | NETaa13399: Patch 0k from Andy |
2445 | Files patched: Configure MANIFEST Makefile.SH config.H config_h.SH hints/dec_osf.sh hints/mpeix.sh hints/next_3_0.sh hints/ultrix_4.sh installperl lib/ExtUtils/MakeMaker.pm lib/File/Path.pm makeaperl.SH minimod.PL perl.c proto.h vms/config.vms vms/ext/MM_VMS.pm x2p/a2p.h |
2446 | |
2447 | NETaa13399: Patch 0m from Andy |
2448 | Files patched: Configure MANIFEST Makefile.SH README config.H config_h.SH ext/DynaLoader/README ext/POSIX/POSIX.xs ext/SDBM_File/sdbm/sdbm.h ext/util/extliblist hints/cxux.sh hints/linux.sh hints/powerunix.sh lib/ExtUtils/MakeMaker.pm malloc.c perl.h pp_sys.c util.c |
2449 | |
2450 | NETaa13400: pod2html update from Bill Middleton |
2451 | From: Larry Wall |
2452 | Files patched: pod/pod2html |
2453 | |
2454 | NETaa13401: Boyer-Moore code attempts to compile string longer than 255. |
2455 | From: Kyriakos Georgiou |
2456 | Files patched: util.c |
2457 | The Boyer-Moore table uses unsigned char offsets, but the BM compiler wasn't |
2458 | rejecting strings longer than 255 chars, and was miscompiling them. |
2459 | |
2460 | NETaa13403: missing a $ on variable name |
2461 | From: Wayne Scott |
2462 | Files patched: installperl |
2463 | Yup, it was missing. |
2464 | |
2465 | NETaa13406: didn't wipe out dead match when proceeding to next BRANCH |
2466 | From: Michael P. Clemens |
2467 | Files patched: regexec.c |
2468 | The code to check alternatives didn't invalidate backreferences matched by the |
2469 | failed branch. |
2470 | |
2471 | NETaa13407: overload upgrade |
2472 | From: owner-perl5-porters@nicoh.com |
2473 | Also: Ilya Zakharevich |
2474 | Files patched: MANIFEST gv.c lib/Math/BigInt.pm perl.h pod/perlovl.pod pp.c pp.h pp_hot.c sv.c t/lib/bigintpm.t t/op/overload.t |
2475 | Applied supplied patch, and fixed bug induced by use of sv_setsv to do |
2476 | a deep copy, since sv_setsv no longer copies objecthood. |
2477 | |
2478 | NETaa13409: sv_gets tries to grow string at EOF |
2479 | From: Harold O Morris |
2480 | Files patched: sv.c |
2481 | Applied suggested patch, only two statements earlier, since the end code |
2482 | also does SvCUR_set. |
2483 | |
2484 | NETaa13410: delaymagic did =~ instead of &= ~ |
2485 | From: Andreas Schwab |
2486 | Files patched: pp_hot.c |
2487 | Applied supplied patch. |
2488 | |
2489 | NETaa13411: POSIX didn't compile under -DLEAKTEST |
2490 | From: Frederic Chauveau |
2491 | Files patched: ext/POSIX/POSIX.xs |
2492 | Used NEWSV instead of newSV. |
2493 | |
2494 | NETaa13412: new version from Tony Sanders |
2495 | From: Tony Sanders |
2496 | Files patched: lib/Term/Cap.pm |
2497 | Installed as Term::Cap.pm |
2498 | |
2499 | NETaa13413: regmust extractor needed to restart loop on BRANCH for (?:) to work |
2500 | From: DESARMENIEN |
2501 | Files patched: regcomp.c |
2502 | The BRANCH skipper should have restarted the loop from the top. |
2503 | |
2504 | NETaa13414: the check for accidental list context was done after pm_short check |
2505 | From: Michael H. Coen |
2506 | Files patched: pp_hot.c |
2507 | Moved check for accidental list context to before the pm_short optimization. |
2508 | |
2509 | NETaa13418: perlre.pod babbled nonsense about | in character classes |
2510 | From: Philip Hazel |
2511 | Files patched: pod/perlre.pod |
2512 | Removed bogus brackets. Now reads: |
2513 | Note however that "|" is interpreted as a literal with square brackets, |
2514 | so if you write C<[fee|fie|foe]> you're really only matching C<[feio|]>. |
2515 | |
2516 | NETaa13419: need to document introduction of lexical variables |
2517 | From: "Heading, Anthony" |
2518 | Files patched: pod/perlfunc.pod |
2519 | Now mentions that lexicals aren't introduced till after the current statement. |
2520 | |
2521 | NETaa13420: formats that overflowed a page caused endless top of forms |
2522 | From: Hildo@CONSUL.NL |
2523 | Files patched: pp_sys.c |
2524 | If a record is too large to fit on a page, it now prints whatever will |
2525 | fit and then calls top of form again on the remainder. |
2526 | |
2527 | NETaa13423: the code to do negative list subscript in scalar context was missing |
2528 | From: Steve McDougall |
2529 | Files patched: pp.c |
2530 | The negative subscript code worked right in list context but not in scalar |
2531 | context. In fact, there wasn't code to do it in the scalar context. |
2532 | |
2533 | NETaa13424: existing but undefined CV blocked inheritance |
2534 | From: Spider Boardman |
2535 | Files patched: gv.c |
2536 | Applied supplied patch. |
2537 | |
2538 | NETaa13425: removed extra argument to croak |
2539 | From: "R. Bernstein" |
2540 | Files patched: regcomp.c |
2541 | Removed extra argument. |
2542 | |
2543 | NETaa13427: added return types |
2544 | From: "R. Bernstein" |
2545 | Files patched: x2p/a2py.c |
2546 | Applied suggested patch. |
2547 | |
2548 | NETaa13427: added static declarations |
2549 | Files patched: x2p/walk.c |
2550 | (same) |
2551 | |
2552 | NETaa13428: split was assuming that all backreferences were defined |
2553 | From: Dave Schweisguth |
2554 | Files patched: pp.c |
2555 | split was assuming that all backreferences were defined. |
2556 | |
2557 | NETaa13430: hoistmust wasn't hoisting anchored shortcircuit's length |
2558 | From: Tom Christiansen |
2559 | Also: Rob Hooft |
2560 | Files patched: toke.c |
2561 | |
2562 | NETaa13432: couldn't call code ref under debugger |
2563 | From: Mike Fletcher |
2564 | Files patched: op.c pp_hot.c sv.h |
2565 | The debugging code assumed it could remember a name to represent a subroutine, |
2566 | but anonymous subroutines don't have a name. It now remembers a CV reference |
2567 | in that case. |
2568 | |
2569 | NETaa13435: 1' dumped core |
2570 | From: Larry Wall |
2571 | Files patched: toke.c |
2572 | Didn't check a pointer for nullness. |
2573 | |
2574 | NETaa13436: print foo(123) didn't treat foo as subroutine |
2575 | From: mcook@cognex.com |
2576 | Files patched: toke.c |
2577 | Now treats it as a subroutine rather than a filehandle. |
2578 | |
2579 | NETaa13437: &$::foo didn't think $::foo was a variable name |
2580 | From: mcook@cognex.com |
2581 | Files patched: toke.c |
2582 | Now treats $::foo as a global variable. |
2583 | |
2584 | NETaa13439: referred to old package name |
2585 | From: Tom Christiansen |
2586 | Files patched: lib/Sys/Syslog.pm |
2587 | Wasn't a strict refs problem after all. It was simply referring to package |
2588 | syslog, which had been renamed to Sys::Syslog. |
2589 | |
2590 | NETaa13440: stat operations didn't know what to do with glob or ref to glob |
2591 | From: mcook@cognex.com |
2592 | Files patched: doio.c pp_sys.c |
2593 | Now knows about the kinds of filehandles returned by FileHandle constructors |
2594 | and such. |
2595 | |
2596 | NETaa13442: couldn't find name of copy of deleted symbol table entry |
2597 | From: Spider Boardman |
2598 | Files patched: gv.c gv.h |
2599 | I did a much simpler fix. When gp_free notices that it's freeing the |
2600 | master GV, it nulls out gp_egv. The GvENAME and GvESTASH macros know |
2601 | to revert to gv if egv is null. |
2602 | |
2603 | This has the advantage of not creating a reference loop. |
2604 | |
2605 | NETaa13443: couldn't override an XSUB |
2606 | From: William Setzer |
2607 | Files patched: op.c |
2608 | When the newSUB and newXS routines checked for whether the old sub was |
2609 | defined, they only looked at CvROOT(cv), not CvXSUB(cv). |
2610 | |
2611 | NETaa13443: needed to do same thing in newXS |
2612 | Files patched: op.c |
2613 | (same) |
2614 | |
2615 | NETaa13444: -foo now doesn't warn unless sub foo is defined |
2616 | From: Larry Wall |
2617 | Files patched: toke.c |
2618 | Made it not warn on -foo, unless there is a sub foo defined. |
2619 | |
2620 | NETaa13451: in scalar context, pp_entersub now guarantees one item from XSUB |
2621 | From: Nick Gianniotis |
2622 | Files patched: pp_hot.c |
2623 | The pp_entersub routine now guarantees that an XSUB in scalar context |
2624 | returns one and only one value. If there are fewer, it pushes undef, |
2625 | and if there are more, it returns the last one. |
2626 | |
2627 | NETaa13457: now explicitly disallows printf format with 'n' or '*'. |
2628 | From: lees@cps.msu.edu |
2629 | Files patched: doop.c |
2630 | Now says |
2631 | |
2632 | Use of n in printf format not supported at ./foo line 3. |
2633 | |
2634 | |
2635 | NETaa13458: needed to call SvPOK_only() in pp_substr |
2636 | From: Wayne Scott |
2637 | Files patched: pp.c |
2638 | Needed to call SvPOK_only() in pp_substr. |
2639 | |
2640 | NETaa13459: umask and chmod now warn about missing initial 0 even with paren |
2641 | From: Andreas Koenig |
2642 | Files patched: toke.c |
2643 | Now skips parens as well as whitespace looking for argument. |
2644 | |
2645 | NETaa13460: backtracking didn't work on .*? because reginput got clobbered |
2646 | From: Andreas Koenig |
2647 | Files patched: regexec.c |
2648 | When .*? did a probe of the rest of the string, it clobbered reginput, |
2649 | so the next call to match a . tried to match the newline and failed. |
2650 | |
2651 | NETaa13475: \(@ary) now treats array as list of scalars |
2652 | From: Tim Bunce |
2653 | Files patched: op.c |
2654 | The mod() routine now refrains from marking @ary as an lvalue if it's in parens |
2655 | and is the subject of an OP_REFGEN. |
2656 | |
2657 | NETaa13481: accept buffer wasn't aligned good enough |
2658 | From: Holger Bechtold |
2659 | Also: Christian Murphy |
2660 | Files patched: pp_sys.c |
2661 | Applied suggested patch. |
2662 | |
2663 | NETaa13486: while (<>) now means while (defined($_ = <>)) |
2664 | From: Jim Balter |
2665 | Files patched: op.c pod/perlop.pod |
2666 | while (<HANDLE>) now means while (defined($_ = <HANDLE>)). |
2667 | |
2668 | NETaa13500: needed DESTROY in FileHandle |
2669 | From: Tim Bunce |
2670 | Files patched: ext/POSIX/POSIX.pm |
2671 | Added DESTROY method. Also fixed ungensym to use POSIX:: instead of _POSIX. |
2672 | Removed ungensym from close method, since DESTROY should do that now. |
2673 | |
2674 | NETaa13502: now complains if you use local on a lexical variable |
2675 | From: Larry Wall |
2676 | Files patched: op.c |
2677 | Now says something like |
2678 | |
2679 | Can't localize lexical variable $var at ./try line 6. |
2680 | |
2681 | NETaa13512: added $SIG{__WARN__} and $SIG{__DIE__} hooks |
2682 | From: Larry Wall |
2683 | Files patched: embed.h gv.c interp.sym mg.c perl.h pod/perlvar.pod pp_ctl.c util.c Todo pod/perldiag.pod |
2684 | |
2685 | NETaa13514: statements before intro of lex var could see lex var |
2686 | From: William Setzer |
2687 | Files patched: op.c |
2688 | When a lexical variable is declared, introduction is delayed until |
2689 | the start of the next statement, so that any initialization code runs |
2690 | outside the scope of the new variable. Thus, |
2691 | |
2692 | my $y = 3; |
2693 | my $y = $y; |
2694 | print $y; |
2695 | |
2696 | should print 3. Unfortunately, the declaration was marked with the |
2697 | beginning location at the time that "my $y" was processed instead of |
2698 | when the variable was introduced, so any embedded statements within |
2699 | an anonymous subroutine picked up the wrong "my". The declaration |
2700 | is now labelled correctly when the variable is actually introduced. |
2701 | |
2702 | NETaa13520: added closures |
2703 | From: Larry Wall |
2704 | Files patched: Todo cv.h embed.h global.sym gv.c interp.sym op.c perl.c perl.h pod/perlform.pod pp.c pp_ctl.c pp_hot.c sv.c sv.h toke.c |
2705 | |
2706 | NETaa13520: test to see if lexical works in a format now |
2707 | Files patched: t/op/write.t |
2708 | |
2709 | NETaa13522: substitution couldn't be used on a substr() |
2710 | From: Hans Mulder |
2711 | Files patched: pp_ctl.c pp_hot.c |
2712 | Changed pp_subst not to use sv_replace() anymore, which didn't handle lvalues |
2713 | and was overkill anyway. Should be slightly faster this way too. |
2714 | |
2715 | NETaa13525: G_EVAL mode in perl_call_sv didn't return values right. |
2716 | Files patched: perl.c |
2717 | |
2718 | NETaa13525: consolidated error message |
2719 | From: Larry Wall |
2720 | Files patched: perl.h toke.c |
2721 | |
2722 | NETaa13525: derived it |
2723 | Files patched: perly.h |
2724 | |
2725 | NETaa13525: missing some values from embed.h |
2726 | Files patched: embed.h |
2727 | |
2728 | NETaa13525: random cleanup |
2729 | Files patched: MANIFEST Todo cop.h lib/TieHash.pm lib/perl5db.pl opcode.h patchlevel.h pod/perldata.pod pod/perlsub.pod t/op/ref.t toke.c |
2730 | |
2731 | NETaa13525: random cleanup |
2732 | Files patched: pp_ctl.c util.c |
2733 | |
2734 | NETaa13527: File::Find needed to export $name and $dir |
2735 | From: Chaim Frenkel |
2736 | Files patched: lib/File/Find.pm |
2737 | They are now exported. |
2738 | |
2739 | NETaa13528: cv_undef left unaccounted-for GV pointer in CV |
2740 | From: Tye McQueen |
2741 | Also: Spider Boardman |
2742 | Files patched: op.c |
2743 | |
2744 | NETaa13530: scalar keys now resets hash iterator |
2745 | From: Tim Bunce |
2746 | Files patched: doop.c |
2747 | scalar keys() now resets the hash iterator. |
2748 | |
2749 | NETaa13531: h2ph doesn't check defined right |
2750 | From: Casper H.S. Dik |
2751 | Files patched: h2ph.SH |
2752 | |
2753 | NETaa13540: VMS update |
2754 | From: Larry Wall |
2755 | Files patched: MANIFEST README.vms doio.c embed.h ext/DynaLoader/dl_vms.xs interp.sym lib/Cwd.pm lib/ExtUtils/xsubpp lib/File/Basename.pm lib/File/Find.pm lib/File/Path.pm mg.c miniperlmain.c perl.c perl.h perly.c perly.c.diff pod/perldiag.pod pp_ctl.c pp_hot.c pp_sys.c proto.h util.c vms/Makefile vms/config.vms vms/descrip.mms vms/ext/Filespec.pm vms/ext/MM_VMS.pm vms/ext/VMS/stdio/Makefile.PL vms/ext/VMS/stdio/stdio.pm vms/ext/VMS/stdio/stdio.xs vms/genconfig.pl vms/perlvms.pod vms/sockadapt.c vms/sockadapt.h vms/vms.c vms/vmsish.h vms/writemain.pl |
2756 | |
2757 | NETaa13540: got some duplicate code |
2758 | Files patched: lib/File/Path.pm |
2759 | |
2760 | NETaa13540: stuff from Charles |
2761 | Files patched: MANIFEST README.vms lib/ExtUtils/MakeMaker.pm lib/ExtUtils/MakeMaker.pm lib/ExtUtils/xsubpp lib/File/Basename.pm lib/File/Path.pm perl.c perl.h pod/perldiag.pod pod/perldiag.pod vms/Makefile vms/Makefile vms/config.vms vms/config.vms vms/descrip.mms vms/descrip.mms vms/ext/Filespec.pm vms/ext/Filespec.pm vms/ext/MM_VMS.pm vms/ext/MM_VMS.pm vms/ext/VMS/stdio/stdio.pm vms/ext/VMS/stdio/stdio.xs vms/gen_shrfls.pl vms/gen_shrfls.pl vms/genconfig.pl vms/genconfig.pl vms/mms2make.pl vms/perlvms.pod vms/sockadapt.h vms/test.com vms/vms.c vms/vms.c vms/vmsish.h vms/vmsish.h vms/writemain.pl |
2762 | |
2763 | NETaa13540: tweak from Charles |
2764 | Files patched: lib/File/Path.pm |
2765 | |
2766 | NETaa13552: scalar unpack("P4",...) ignored the 4 |
2767 | From: Eric Arnold |
2768 | Files patched: pp.c |
2769 | The optimization that tried to do only one item in a scalar context didn't |
2770 | realize that the argument to P was not a repeat count. |
2771 | |
2772 | NETaa13553: now warns about 8 or 9 in octal escapes |
2773 | From: Mike Rogers |
2774 | Files patched: util.c |
2775 | Now warns if it finds 8 or 9 before the end of the octal escape sequence. |
2776 | So \039 produces a warning, but \0339 does not. |
2777 | |
2778 | NETaa13554: now allows foreach ${"name"} |
2779 | From: Johan Holtman |
2780 | Files patched: op.c |
2781 | Instead of trying to remove OP_RV2SV, the compiler now just transmutes it into an |
2782 | OP_RV2GV, which is a no-op for ordinary variables and does the right |
2783 | thing for ${"name"}. |
2784 | |
2785 | NETaa13559: substitution now always checks for readonly |
2786 | From: Rodger Anderson |
2787 | Files patched: pp_hot.c |
2788 | Substitution now always checks for readonly. |
2789 | |
2790 | NETaa13561: added explanations of closures and curly-quotes |
2791 | From: Larry Wall |
2792 | Files patched: pod/perlref.pod |
2793 | |
2794 | NETaa13562: null components in path cause indigestion |
2795 | From: Ambrose Kofi Laing |
2796 | Files patched: lib/Cwd.pm lib/pwd.pl |
2797 | |
2798 | NETaa13575: documented semantics of negative substr length |
2799 | From: Jeff Bouis |
2800 | Files patched: pod/perlfunc.pod |
2801 | Documented the fact that negative length now leaves characters off the end, |
2802 | and while I was at it, made it work right even if offset wasn't 0. |
2803 | |
2804 | NETaa13575: negative length to substr didn't work when offset non-zero |
2805 | Files patched: pp.c |
2806 | (same) |
2807 | |
2808 | NETaa13575: random cleanup |
2809 | Files patched: pod/perlfunc.pod |
2810 | (same) |
2811 | |
2812 | NETaa13580: couldn't localize $ACCUMULATOR |
2813 | From: Larry Wall |
2814 | Files patched: gv.c lib/English.pm mg.c perl.c sv.c |
2815 | Needed to make $^A a real magical variable. Also lib/English.pm wasn't |
2816 | exporting good. |
2817 | |
2818 | NETaa13583: doc mods from Tom |
2819 | From: Larry Wall |
2820 | Files patched: pod/modpods/AnyDBMFile.pod pod/modpods/Basename.pod pod/modpods/Benchmark.pod pod/modpods/Cwd.pod pod/modpods/Dynaloader.pod pod/modpods/Exporter.pod pod/modpods/Find.pod pod/modpods/Finddepth.pod pod/modpods/Getopt.pod pod/modpods/MakeMaker.pod pod/modpods/Open2.pod pod/modpods/POSIX.pod pod/modpods/Ping.pod pod/modpods/less.pod pod/modpods/strict.pod pod/perlapi.pod pod/perlbook.pod pod/perldata.pod pod/perlform.pod pod/perlfunc.pod pod/perlipc.pod pod/perlmod.pod pod/perlobj.pod pod/perlref.pod pod/perlrun.pod pod/perlsec.pod pod/perlsub.pod pod/perltrap.pod pod/perlvar.pod |
2821 | |
2822 | NETaa13589: return was enforcing list context on its arguments |
2823 | From: Tim Freeman |
2824 | Files patched: opcode.pl |
2825 | A return was being treated like a normal list operator, in that it was |
2826 | setting list context on its arguments. This was bogus. |
2827 | |
2828 | NETaa13591: POSIX::creat used wrong argument |
2829 | From: Paul Marquess |
2830 | Files patched: ext/POSIX/POSIX.pm |
2831 | Applied suggested patch. |
2832 | |
2833 | NETaa13605: use strict refs error message now displays bad ref |
2834 | From: Peter Gordon |
2835 | Files patched: perl.h pod/perldiag.pod pp.c pp_hot.c |
2836 | Now says |
2837 | |
2838 | Can't use string ("2") as a HASH ref while "strict refs" in use at ./foo line 12. |
2839 | |
2840 | NETaa13630: eof docs were unclear |
2841 | From: Hallvard B Furuseth |
2842 | Files patched: pod/perlfunc.pod |
2843 | Applied suggested patch. |
2844 | |
2845 | NETaa13636: $< and $> weren't refetched on undump restart |
2846 | From: Steve Pearlmutter |
2847 | Files patched: perl.c |
2848 | The code in main() bypassed perl_construct on an undump restart, which bypassed |
2849 | the code that set $< and $>. |
2850 | |
2851 | NETaa13641: added Tim's fancy new import whizbangers |
2852 | From: Tim Bunce |
2853 | Files patched: lib/Exporter.pm |
2854 | Applied suggested patch. |
2855 | |
2856 | NETaa13649: couldn't AUTOLOAD a symbol reference |
2857 | From: Larry Wall |
2858 | Files patched: pp_hot.c |
2859 | pp_entersub needed to guarantee a CV so it would get to the AUTOLOAD code. |
2860 | |
2861 | NETaa13651: renamed file had wrong package name |
2862 | From: Andreas Koenig |
2863 | Files patched: lib/File/Path.pm |
2864 | Applied suggested patch. |
2865 | |
2866 | NETaa13660: now that we're testing distribution we can diagnose RANDBITS errors |
2867 | From: Karl Glazebrook |
2868 | Files patched: t/op/rand.t |
2869 | Changed to suggested algorithm. Also duplicated it to test rand(100) too. |
2870 | |
2871 | NETaa13660: rand.t didn't test for proper distribution within range |
2872 | Files patched: t/op/rand.t |
2873 | (same) |
2874 | |
2875 | NETaa13671: array slice misbehaved in a scalar context |
2876 | From: Tye McQueen |
2877 | Files patched: pp.c |
2878 | A spurious else prevented the scalar-context-handling code from running. |
2879 | |
2880 | NETaa13672: filehandle constructors in POSIX don't return failure successfully |
2881 | From: Ian Phillipps |
2882 | Files patched: ext/POSIX/POSIX.pm |
2883 | Applied suggested patch. |
2884 | |
2885 | |
2886 | NETaa13678: forced $1 to always be untainted |
2887 | From: Ka-Ping Yee |
2888 | Files patched: mg.c |
2889 | I believe the bug that triggered this was fixed elsewhere, but just in case, |
2890 | I put in explicit code to force $1 et al not to be tainted regardless. |
2891 | |
2892 | NETaa13682: formline doc need to discuss ~ and ~~ policy |
2893 | From: Peter Gordon |
2894 | Files patched: pod/perlfunc.pod |
2895 | |
2896 | NETaa13686: POSIX::open and POSIX::mkfifo didn't check tainting |
2897 | From: Larry Wall |
2898 | Files patched: ext/POSIX/POSIX.xs |
2899 | open() and mkfifo() now check tainting. |
2900 | |
2901 | NETaa13687: new Exporter.pm |
2902 | From: Tim Bunce |
2903 | Files patched: lib/Exporter.pm |
2904 | Added suggested changes, except for @EXPORTABLE, because it looks too much |
2905 | like @EXPORTTABLE. Decided to stick with @EXPORT_OK because it looks more |
2906 | like an adjunct. Also added an export_tags routine. The keys in the |
2907 | %EXPORT_TAGS hash no longer use colons, to make the initializers prettier. |
2908 | |
2909 | NETaa13687: new Exporter.pm |
2910 | Files patched: ext/POSIX/POSIX.pm |
2911 | (same) |
2912 | |
2913 | NETaa13694: add sockaddr_in to Socket.pm |
2914 | From: Tim Bunce |
2915 | Files patched: ext/Socket/Socket.pm |
2916 | Applied suggested patch. |
2917 | |
2918 | NETaa13695: library routines should use qw() as good example |
2919 | From: Dean Roehrich |
2920 | Files patched: ext/DB_File/DB_File.pm ext/DynaLoader/DynaLoader.pm ext/Fcntl/Fcntl.pm ext/GDBM_File/GDBM_File.pm ext/POSIX/POSIX.pm ext/Socket/Socket.pm |
2921 | Applied suggested patch. |
2922 | |
2923 | NETaa13696: myconfig should be a routine in Config.pm |
2924 | From: Kenneth Albanowski |
2925 | Files patched: configpm |
2926 | Applied suggested patch. |
2927 | |
2928 | NETaa13704: fdopen closed fd on failure |
2929 | From: Hallvard B Furuseth |
2930 | Files patched: doio.c |
2931 | Applied suggested patch. |
2932 | |
2933 | NETaa13706: Term::Cap doesn't work |
2934 | From: Dean Roehrich |
2935 | Files patched: lib/Term/Cap.pm |
2936 | Applied suggested patch. |
2937 | |
2938 | NETaa13710: cryptswitch needed to be more "useable" |
2939 | From: Tim Bunce |
2940 | Files patched: embed.h global.sym perl.h toke.c |
2941 | The cryptswitch_fp function now can operate in two modes. It can |
2942 | modify the global rsfp to redirect input as before, or it can modify |
2943 | linestr and return true, indicating that it is not necessary for yylex |
2944 | to read another line since cryptswitch_fp has just done it. |
2945 | |
2946 | NETaa13712: new_tmpfile() can't be called as constructor |
2947 | From: Hans Mulder |
2948 | Files patched: ext/POSIX/POSIX.xs |
2949 | Now allows new_tmpfile() to be called as a constructor. |
2950 | |
2951 | NETaa13714: variable method call not documented |
2952 | From: "Randal L. Schwartz" |
2953 | Files patched: pod/perlobj.pod |
2954 | Now indicates that OBJECT->$method() works. |
2955 | |
2956 | NETaa13715: PACK->$method produces spurious warning |
2957 | From: Larry Wall |
2958 | Files patched: toke.c |
2959 | The -> operator was telling the lexer to expect an operator when the |
2960 | next thing was a variable. |
2961 | |
2962 | NETaa13716: Carp now allows multiple packages to be skipped out of |
2963 | From: Larry Wall |
2964 | Files patched: lib/Carp.pm |
2965 | The subroutine redefinition warnings now warn on import collisions. |
2966 | |
2967 | NETaa13716: Exporter catches warnings and gives a better line number |
2968 | Files patched: lib/Exporter.pm |
2969 | (same) |
2970 | |
2971 | NETaa13716: now counts imported routines as "defined" for redef warnings |
2972 | Files patched: op.c sv.c |
2973 | (same) |
2974 | |
2975 | ------------- |
2976 | Version 5.000 |
2977 | ------------- |
2978 | |
93a17b20 |
2979 | New things |
2980 | ---------- |
2981 | The -w switch is much more informative. |
2982 | |
463ee0b2 |
2983 | References. See t/op/ref.t for examples. All entities in Perl 5 are |
2984 | reference counted so that it knows when each item should be destroyed. |
93a17b20 |
2985 | |
2986 | Objects. See t/op/ref.t for examples. |
2987 | |
2988 | => is now a synonym for comma. This is useful as documentation for |
2989 | arguments that come in pairs, such as initializers for associative arrays, |
2990 | or named arguments to a subroutine. |
2991 | |
2992 | All functions have been turned into list operators or unary operators, |
2993 | meaning the parens are optional. Even subroutines may be called as |
2994 | list operators if they've already been declared. |
2995 | |
3edbfbe5 |
2996 | More embeddible. See main.c and embed_h.sh. Multiple interpreters |
463ee0b2 |
2997 | in the same process are supported (though not with interleaved |
2998 | execution yet). |
93a17b20 |
2999 | |
3000 | The interpreter is now flattened out. Compare Perl 4's eval.c with |
3001 | the perl 5's pp.c. Compare Perl 4's 900 line interpreter loop in cmd.c |
3002 | with Perl 5's 1 line interpreter loop in run.c. Eventually we'll make |
3003 | everything non-blocking so we can interface nicely with a scheduler. |
3004 | |
3005 | eval is now treated more like a subroutine call. Among other things, |
3006 | this means you can return from it. |
3007 | |
3008 | Format value lists may be spread over multiple lines by enclosing in |
85e6fe83 |
3009 | a do {} block. |
93a17b20 |
3010 | |
3011 | You may now define BEGIN and END subroutines for each package. The BEGIN |
3012 | subroutine executes the moment it's parsed. The END subroutine executes |
3013 | just before exiting. |
3014 | |
3015 | Flags on the #! line are interpreted even if the script wasn't |
3016 | executed directly. (And even if the script was located by "perl -x"!) |
3017 | |
3018 | The ?: operator is now legal as an lvalue. |
3019 | |
3020 | List context now propagates to the right side of && and ||, as well |
3021 | as the 2nd and 3rd arguments to ?:. |
3022 | |
3023 | The "defined" function can now take a general expression. |
3024 | |
3025 | Lexical scoping available via "my". eval can see the current lexical |
3026 | variables. |
3027 | |
463ee0b2 |
3028 | The preferred package delimiter is now :: rather than '. |
3029 | |
3030 | tie/untie are now preferred to dbmopen/dbmclose. Multiple DBM |
3031 | implementations are allowed in the same executable, so you can |
3032 | write scripts to interchange data among different formats. |
3033 | |
3034 | New "and" and "or" operators work just like && and || but with |
3035 | a precedence lower than comma, so they work better with list operators. |
3036 | |
a0d0e21e |
3037 | New functions include: abs(), chr(), uc(), ucfirst(), lc(), lcfirst(), |
3038 | chomp(), glob() |
8990e307 |
3039 | |
3040 | require with a number checks to see that the version of Perl that is |
3041 | currently running is at least that number. |
3042 | |
3043 | Dynamic loading of external modules is now supported. |
3044 | |
3045 | There is a new quote form qw//, which is equivalent to split(' ', q//). |
3046 | |
3047 | Assignment of a reference to a glob value now just replaces the |
3048 | single element of the glob corresponding to the reference type: |
3049 | *foo = \$bar, *foo = \&bletch; |
3050 | |
3051 | Filehandle methods are now supported: |
3052 | output_autoflush STDOUT 1; |
3053 | |
3054 | There is now an "English" module that provides human readable translations |
3055 | for cryptic variable names. |
3056 | |
3057 | Autoload stubs can now call the replacement subroutine with goto &realsub. |
3058 | |
3059 | Subroutines can be defined lazily in any package by declaring an AUTOLOAD |
3060 | routine, which will be called if a non-existent subroutine is called in |
3061 | that package. |
3062 | |
a0d0e21e |
3063 | Several previously added features have been subsumed under the new |
3064 | keywords "use" and "no". Saying "use Module LIST" is short for |
3065 | BEGIN { require Module; import Module LIST; } |
3066 | The "no" keyword is identical except that it calls "unimport" instead. |
3067 | The earlier pragma mechanism now uses this mechanism, and two new |
3068 | modules have been added to the library to implement "use integer" |
3069 | and variations of "use strict vars, refs, subs". |
3070 | |
3071 | Variables may now be interpolated literally into a pattern by prefixing |
3072 | them with \Q, which works just like \U, but backwhacks non-alphanumerics |
3073 | instead. There is also a corresponding quotemeta function. |
3074 | |
3075 | Any quantifier in a regular expression may now be followed by a ? to |
3076 | indicate that the pattern is supposed to match as little as possible. |
3077 | |
3078 | Pattern matches may now be followed by an m or s modifier to explicitly |
3079 | request multiline or singleline semantics. An s modifier makes . match |
3080 | newline. |
3081 | |
3082 | Patterns may now contain \A to match only at the beginning of the string, |
3083 | and \Z to match only at the end. These differ from ^ and $ in that |
3084 | they ignore multiline semantics. In addition, \G matches where the |
3085 | last interation of m//g or s///g left off. |
3086 | |
3087 | Non-backreference-producing parens of various sorts may now be |
3088 | indicated by placing a ? directly after the opening parenthesis, |
3089 | followed by a character that indicates the purpose of the parens. |
3090 | An :, for instance, indicates simple grouping. (?:a|b|c) will |
3091 | match any of a, b or c without producing a backreference. It does |
3092 | "eat" the input. There are also assertions which do not eat the |
3093 | input but do lookahead for you. (?=stuff) indicates that the next |
3094 | thing must be "stuff". (?!nonsense) indicates that the next thing |
3095 | must not be "nonsense". |
3096 | |
3097 | The negation operator now treats non-numeric strings specially. |
3098 | A -"text" is turned into "-text", so that -bareword is the same |
3099 | as "-bareword". If the string already begins with a + or -, it |
3100 | is flipped to the other sign. |
85e6fe83 |
3101 | |
463ee0b2 |
3102 | Incompatibilities |
3103 | ----------------- |
3104 | @ now always interpolates an array in double-quotish strings. Some programs |
3105 | may now need to use backslash to protect any @ that shouldn't interpolate. |
3106 | |
a0d0e21e |
3107 | Ordinary variables starting with underscore are no longer forced into |
3108 | package main. |
3109 | |
463ee0b2 |
3110 | s'$lhs'$rhs' now does no interpolation on either side. It used to |
3111 | interplolate $lhs but not $rhs. |
3112 | |
3113 | The second and third arguments of splice are now evaluated in scalar |
3114 | context (like the book says) rather than list context. |
3115 | |
3116 | Saying "shift @foo + 20" is now a semantic error because of precedence. |
3117 | |
3118 | "open FOO || die" is now incorrect. You need parens around the filehandle. |
3119 | |
3120 | The elements of argument lists for formats are now evaluated in list |
3121 | context. This means you can interpolate list values now. |
3122 | |
3123 | You can't do a goto into a block that is optimized away. Darn. |
3124 | |
3125 | It is no longer syntactically legal to use whitespace as the name |
a0d0e21e |
3126 | of a variable, or as a delimiter for any kind of quote construct. |
463ee0b2 |
3127 | |
3128 | Some error messages will be different. |
3129 | |
3130 | The caller function now returns a false value in a scalar context if there |
3131 | is no caller. This lets library files determine if they're being required. |
3132 | |
3133 | m//g now attaches its state to the searched string rather than the |
3134 | regular expression. |
3135 | |
3136 | "reverse" is no longer allowed as the name of a sort subroutine. |
3137 | |
3138 | taintperl is no longer a separate executable. There is now a -T |
3139 | switch to turn on tainting when it isn't turned on automatically. |
3140 | |
ed6116ce |
3141 | Symbols starting with _ are no longer forced into package main, except |
3142 | for $_ itself (and @_, etc.). |
3143 | |
8990e307 |
3144 | Double-quoted strings may no longer end with an unescaped $ or @. |
3145 | |
3146 | Negative array subscripts now count from the end of the array. |
3147 | |
3148 | The comma operator in a scalar context is now guaranteed to give a |
3149 | scalar context to its arguments. |
a0d0e21e |
3150 | |
3151 | The ** operator now binds more tightly than unary minus. |
3152 | |
3153 | Setting $#array lower now discards array elements so that destructors |
3154 | work reasonably. |
3155 | |
3156 | delete is not guaranteed to return the old value for tied arrays, |
3157 | since this capability may be onerous for some modules to implement. |
3158 | |
3159 | Attempts to set $1 through $9 now result in a run-time error. |