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
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:
21 o Visible Changes to Core Functionality
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.
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.
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.
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.
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.
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.
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
53 o Changes in Core Internals
55 - Symbol table and method lookups have been made faster.
57 - Perl subroutines which just return a constant value are now
58 optimized at compile time into inline constants.
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
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
70 - A bug which caused suiperl to fail silently, albeit securely,
71 in version 5.003 on some systems has been fixed.
73 - Management of Unix-style signal handlers via the %SIG associative
74 array has been made safer.
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
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.
93 - Several memory leaks in the creation and destruction of
94 multiple interpreters have been fixed.
96 o Changes in the Standard Library and Utilities
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
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.
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.
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.
120 - The FindBin library module, which determines the full path
121 to the currently executing program, has been added to the
122 standard distribution.
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.
128 - The Carp library module now considers the @ISA chain when
129 determining the caller's package for inclusion in error messages.
131 - The h2xs, perlbug, and xsubpp utilities have been updated.
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.
138 - The pod documentation formatting tools in the standard distribution
139 can now handle characters in the input stream whose high bit is set.
141 - The cperl-mode EMACS editing mode has been updated.
143 o Changes in Documentation
145 - Typographic and formatting errors have been corrected in the pod
146 documentation for the core and standard library files
148 - Explanations of several core operators have been improved
150 - The perldebug, perlembed, perlipc, perlsec, and perltrap documents
153 o Changes in OS-specific and Build-time Support
155 - Support for the NeXT platform has been extended through
156 NeXTSTEP/OPENSTEP 4.0, and now includes the ability to create MABs.
158 - Support for OS/2 has been extended as well, and now includes
159 options for building a.out binaries.
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.
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).
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).
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.
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:
192 - Plugs security hole in suidperl mechanism on affected systems
194 - MakeMaker was also updated to version 5.34, and extension Makefile.PLs
195 were modified to match it.
197 - The following hints files were updated: bsdos.sh, hpux.sh, linux.sh,
198 machten.sh, solaris_2.sh
200 - A fix was added to installperl to insure that file permissions were
201 set correctly for the installed C header files.
203 - t/op/stat.t was modified to work around MachTen's belief that /dev/null
204 is a terminal device.
206 - Incorporation of Perl version information into the VMS' version of
207 config.h was changed to make it compatible with the older VAXC.
209 - Minor fixes were made to VMS-specific C code, and the routine
210 VMS::Filespec::rmsexpand was added.
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
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
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
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.
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'}.
247 - A mechanism was added to allow listing of locally applied patches
248 in the output of perl -v.
250 - Miscellaneous minor corrections and updates were made to the documentation.
252 - Extensive updates were made to the OS/2 and VMS ports
254 - The following hints file were updated: bsdos.sh, dynixptx.sh,
255 irix_6_2.sh, linux.sh, os2.sh
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,
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
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.
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.
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.
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).
290 Added APPLLIB_EXP for embedded perl library support.
291 Files patched: perl.c
293 Couldn't define autoloaded routine by assignment to typeglob.
294 Files patched: pp_hot.c sv.c
296 NETaa13525: Tiny patch to fix installman -n
298 Files patched: installman
300 NETaa13525: de-documented \v
301 Files patched: pod/perlop.pod pod/perlre.pod
303 NETaa13525: doc changes
304 Files patched: pod/perlop.pod pod/perltrap.pod
306 NETaa13525: perlxs update from Dean Roehrich
307 Files patched: pod/perlxs.pod
309 NETaa13525: rename powerunix to powerux
310 Files patched: MANIFEST hints/powerux.sh
312 NETaa13540: VMS uses CLK_TCK for HZ
313 Files patched: pp_sys.c
315 NETaa13721: pad_findlex core dumps on bad CvOUTSIDE()
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
323 NETaa13721: warning suppression
324 Files patched: toke.c
327 NETaa13722: walk.c had inconsistent static declarations
329 Files patched: x2p/walk.c
330 Consolidated the various declarations and made them consistent with
331 the actual definitions.
333 NETaa13724: -MPackage=args patch
335 Files patched: perl.c pod/perlrun.pod
336 Added in the -MPackage=args patch too.
338 NETaa13729: order-of-evaluation dependency in scope.c on leaving REGCONTEXT
340 Files patched: scope.c
343 I32 delta = SSPOPINT;
344 savestack_ix -= delta; /* regexp must have croaked */
348 NETaa13731: couldn't assign external lexical array to itself
349 From: oneill@cs.sfu.ca
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
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
368 NETaa13733: s/// doesn't free old string when using copy mode
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*.
373 NETaa13736: closures leaked memory
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.
379 NETaa13739: XSUB interface caches gimme in case XSUB clobbers it
381 Files patched: pp_hot.c
382 Applied suggest patch. Also deleted second gimme declaration as redundant.
384 NETaa13760: comppad reference counts were inconsistent
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.
390 NETaa13761: sv_2pv() wrongly preferred IV to NV when SV was readonly
391 From: "Jack R. Lawler"
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
403 print 1.4142135623731;
405 because in that case, there was already a string value.
408 NETaa13772: shmwrite core dumps consistently
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.
414 NETaa13773: $. was misdocumented as read-only.
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'
423 This one may stay the way it is for performance reasons.
430 % perl -e 'BEGIN { local $/ = ""; } print "$.:$_" while <>;' abc
434 % perl -e '{ local $/ = ""; } print "$.:$_" while <>;' abc
439 $/ wasn't initialized early enough, so local set it back to permanently
440 undefined on exit from the block.
443 % perl -le 'print grep(/^-/ ? ($x=$_) x 0 : 1, "a", "-b", "c");'
446 % perl4 -le 'print grep(/^-/ ? ($x=$_) x 0 : 1, "a", "-b", "c");'
449 An extra mark was left on the stack if (('x') x $repeat) was used in a scalar
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."
459 % perl -wnle '$. = 10 if $. == 2; print "$.:$_"' abc
466 <5.local-soft-ref.bug>
467 % perl -e 'local ${"a"}=1;'
468 zsh: 529 segmentation fault perl -e 'local ${"a"}=1;'
471 Can't localize a reference at -e line 1.
474 % perl -e 'package foo; sub foo { 1; } package main; $_ = foo::foo(); print'
477 package readline; sub foo { 1; } package main; $_ = readline::foo(); print'
478 Undefined subroutine &main::foo called at -e line 1.
480 package readline; sub foo { 1; } package main; $_ = &readline::foo(); print'
483 Now treats foo::bar correctly even if foo is a keyword.
485 <7.page-head-set-to-null-string>
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>
493 select((select(STDOUT), $^='')[0]); #this is the critical line
504 zsh: 1799 segmentation fault perl /tmp/page-head
507 Undefined top format "main::" called at ./try line 11.
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'
515 A right square bracket now forces expectation of an operator.
517 <9.unary-minus-to-regexp-var>
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>
536 Apparently already fixed in my copy.
540 ## Offset values are changed for my machine.
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
547 #The following two statements each produce a segmentation fault in perl5:
549 #vec($a, 21406, 32) = 1; # seg fault
550 vec($a, 42813, 16) = 1; # seg fault
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
556 #Interestingly, this is ok for all high values of N:
557 #$N=1000000; vec($a, $N, 8) = 1;
560 zsh: 1806 segmentation fault perl vec-bug
562 Can't reproduce this one.
565 NETaa13773: $/ not correctly localized in BEGIN
566 Files patched: perl.c
569 NETaa13773: foo::bar was misparsed if foo was a reserved word
570 Files patched: toke.c toke.c
573 NETaa13773: right square bracket didn't force expectation of operator
574 Files patched: toke.c
577 NETaa13773: scalar ((x) x $repeat) left stack mark
581 NETaa13778: -w coredumps on <$>
583 Files patched: pp_hot.c toke.c
584 Now produces suggested error message. Also installed guard in warning code
587 NETaa13779: foreach didn't use savestack mechanism
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.
594 NETaa13785: GIMME sometimes used wrong context frame
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.
600 NETaa13797: could modify sv_undef through auto-vivification
601 From: Ilya Zakharevich
603 Inserted the missing check for readonly values on auto-vivification.
605 NETaa13798: if (...) {print} treats print as quoted
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}.
611 NETaa13926: commonality was not detected in assignments using COND_EXPR
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.
618 NETaa13957: was marking the PUSHMARK as modifiable rather than the arg
620 Files patched: op.c sv.c
621 It was marking the PUSHMARK as modifiable rather than the arg.
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:
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
642 because the latter will alternate between returning a filename and
646 NETaa13986: split ignored /m pattern modifier
647 From: Winfried Koenig
649 Fixed to work like m// and s///.
651 NETaa13992: regexp comments not seen after + in non-extended regexp
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.
657 NETaa14014: use subs should not count as definition, only as declaration
660 On *foo = \&bar, doesn't set GVf_IMPORTED if foo and bar are in same package.
662 NETaa14021: sv_inc and sv_dec "upgraded" magical SV to non-magical
666 The sv_inc() and sv_dec() routines "upgraded" null magical SVs to non-magical.
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:
673 Insecure dependency in require while running with -T switch at tst.pl line 1.
675 NETaa14104: negation fails on magical variables like $1
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.
681 NETaa14107: deep sort return leaked contexts
682 From: Quentin Fennessy
683 Files patched: pp_ctl.c
684 Needed to call dounwind() appropriately.
686 NETaa14129: attempt to localize via a reference core dumps
688 Files patched: op.c pod/perldiag.pod
689 Now produces an error "Can't localize a reference", with explanation in
692 NETaa14138: substr() and s/// can cause core dump
694 Files patched: pp_hot.c
695 Forgot to call SvOOK_off() on the SV before freeing its string.
697 NETaa14145: ${@INC}[0] dumped core in debugger
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
704 NETaa14147: bitwise assignment ops wipe out byte of target string
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.
710 NETaa14153: lexing of lexicals in patterns fooled by character class
712 Files patched: toke.c
713 It never called the dwimmer, which is how it fooled it.
715 NETaa14154: allowed autoloaded methods by recognizing sub method; declaration
718 Made sub method declaration sufficient for autoloader to stop searching on.
720 NETaa14156: shouldn't optimize block scope on tainting
722 Files patched: op.c toke.c
723 I totally disabled the block scope optimization when running tainted.
725 NETaa14157: -T and -B only allowed 1/30 "odd" characters--changed to 1/3
727 Files patched: pp_sys.c
728 Applied suggested patch.
730 NETaa14160: deref of null symbol should produce null list
732 Files patched: pp_hot.c
733 It didn't check for list context before returning undef.
735 NETaa14162: POSIX::gensym now returns a symbol reference
736 From: Josh N. Pritikin
738 Files patched: ext/POSIX/POSIX.pm
739 Applied suggested patch.
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
749 NETaa14166: missing semicolon after "my" induces core dump
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.
755 NETaa14166: missing semicolon after "my" induces core dump"
756 Files patched: toke.c
759 NETaa14206: can now use English and strict at the same time
762 It now counts imported symbols as okay under "use strict".
764 NETaa14206: can now use English and strict at the same time
765 Files patched: gv.c pod/perldiag.pod
768 NETaa14265: elseif now produces severe warning
770 Files patched: pod/perldiag.pod toke.c
771 Now complains explicitly about "elseif".
773 NETaa14279: list assignment propagated taintedness to independent scalars
775 Files patched: pp_hot.c
776 List assignment needed to be modified so that tainting didn't propagate
777 between independent scalar values.
779 NETaa14312: undef in @EXPORTS core dumps
781 Files patched: lib/Exporter.pm
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.
789 NETaa14312: undef in @EXPORTS core dumps
790 Files patched: pod/perldiag.pod sv.c
793 NETaa14321: literal @array check shouldn't happen inside embedded expressions
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:
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.
805 NETaa14322: now localizes $! during POSIX::AUTOLOAD
807 Files patched: ext/POSIX/POSIX.pm
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.
815 NETaa14336: use Module () forces import of nothing
818 use Module () now refrains from calling import at all.
820 NETaa14353: added special HE allocator
822 Files patched: global.sym
824 NETaa14353: added special HE allocator
825 Files patched: hv.c perl.h
827 NETaa14353: array extension now converts old memory to SV storage.
828 Files patched: av.c av.h sv.c
830 NETaa14353: hashes now convert old storage into SV arenas.
831 Files patched: global.sym
833 NETaa14353: hashes now convert old storage into SV arenas.
834 Files patched: hv.c perl.h
836 NETaa14353: upgraded SV arena allocation
837 Files patched: proto.h
839 NETaa14353: upgraded SV arena allocation
840 Files patched: perl.c sv.c
842 NETaa14422: added rudimentary prototypes
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)
852 : No. Larry's currently got the patch pumpkin for all such core perl topics.
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. :-)
857 We can now define true unary subroutines, as well as argumentless
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";
865 This prints "42 is the answer" on my machine. That is, it's the same as
867 foo( bar( baz() / 2) || "oops", "is the answer");
869 Attempting to compile
875 Too few arguments for main::foo at ./try line 8, near "foo;"
883 Too many arguments for main::bar at ./try line 8, near "foo;"
887 @array = ('a','b','c');
890 prints "3 a b c" because the $ puts the first arg of foo into scalar context.
892 The main win at this point is that we can say
897 and the user can say AAA + BBB and get 3.
899 I'm not quite sure how this interacts with autoloading though. I fear
900 POSIX.pm will need to say
908 sub _SC_STREAM_MAX ();
909 sub _SC_TZNAME_MAX ();
912 unless we can figure out how to efficiently declare a default prototype
913 at import time. Meaning, not using eval. Currently
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.
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.
924 And no, I don't want to have the
926 sub howabout ($formal, @arguments) { ... }
932 NETaa14422: couldn't take reference of a prototyped function
936 NETaa14423: use didn't allow expressions involving the scratch pad
938 Files patched: op.c perly.c perly.c.diff perly.y proto.h vms/perly_c.vms
939 Applied suggested patch.
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.
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.
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
957 Can't use an undefined value as filehandle reference at ./try line 3.
959 NETaa14462: pp_dbstate had a scope leakage on recursion suppression
961 Files patched: pp_ctl.c
962 Swapped the code in question around.
964 NETaa14482: sv_unref freed ref prematurely at times
965 From: Gurusamy Sarathy
967 Made sv_unref() mortalize rather than free the old reference.
969 NETaa14484: appending string to array produced bizarre results
971 Also: Malcolm Beattie
972 Files patched: pp_hot.c
973 Will now say, "Can't coerce ARRAY to string".
975 NETaa14525: assignment to globs didn't reset them correctly
976 From: Gurusamy Sarathy
978 Applied parts of patch not overridden by subsequent patch.
980 NETaa14529: a partially matching subpattern could spoof infinity detector
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.
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.
994 NETaa14537: select() can return too soon
996 Also: Andreas Gustafsson
997 Files patched: pp_sys.c
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.)
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
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.
1017 NETaa14541: perlbug 1.11
1018 Files patched: utils/perlbug.PL
1021 NETaa14548: magic sets didn't check private OK bits
1022 From: W. Bradley Rubenstein
1024 The magic code was getting mixed up between private and public POK bits.
1026 NETaa14550: made ~ magic magical
1029 Applied suggested patch.
1031 NETaa14551: humongous header causes infinite loop in format
1033 Files patched: pp_sys.c
1034 Needed to check for page exhaustion after doing top-of-form.
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.
1041 NETaa14561: Gurusamy Sarathy's G_KEEPERR patch
1042 From: Andreas Koenig
1043 Also: Gurusamy Sarathy
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.
1048 NETaa14581: shouldn't execute BEGIN when there are compilation errors
1049 From: Rickard Westman
1051 Perl should not try to execute BEGIN and END blocks if there's been a
1054 NETaa14582: got SEGV sorting sparse array
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.
1060 NETaa14582: sort was letting unsortable values through to comparison routine
1061 Files patched: pp_ctl.c
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.
1069 NETaa14614: now does dbmopen with perl_eval_sv()
1071 Files patched: perl.c pp_sys.c proto.h
1072 dbmopen now invokes perl_eval_sv(), which should handle error conditions
1075 NETaa14618: exists doesn't work in GDBM_File
1077 Files patched: ext/GDBM_File/GDBM_File.xs
1078 Applied suggested patch.
1083 Files patched: embed.h global.sym keywords.h keywords.pl opcode.h opcode.pl pp_sys.c toke.c
1084 Applied suggested patch.
1086 NETaa14636: Jumbo Dynaloader patch
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
1089 Applied suggested patches.
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.
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.
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.
1108 NETaa14655: $? returned negative value on AIX
1110 Also: Stephen D. Lee
1111 Files patched: pp_sys.c
1112 Applied suggested patch.
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.
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.
1125 NETaa14683: stringifies were running pad out of space
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.
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
1138 or, to put it at the end,
1140 BEGIN { push(@INC, ".") }
1142 but this is not recommended unless a chdir to a known location has been done
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.
1150 NETaa14692: format name required qualification under use strict
1151 From: Tom Christiansen
1153 Now treats format names the same as subroutine names.
1155 NETaa14695: added simple regexp caching
1157 Files patched: pp_ctl.c
1158 Applied suggested patch.
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.
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.
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.)
1170 NETaa14704: closure got wrong outer scope if outer sub was predeclared
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.
1177 NETaa14705: $foo .= $foo did free memory read
1180 Now modifies address to copy if it was reallocated.
1182 NETaa14709: Chip's FileHandle stuff
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.
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 (&@).
1195 Also added * so you can do things like
1199 myopen(FOO, $filename);
1201 NETaa14713: setuid FROM root now defaults to not do tainting
1203 Files patched: mg.c perl.c pp_hot.c
1204 Applied suggested patch.
1206 NETaa14714: duplicate magics could be added to an SV
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.
1213 NETaa14721: sub defined during erroneous do-FILE caused core dump
1214 From: David Campbell
1216 Fixed the seg fault. I couldn't reproduce the return problem.
1218 NETaa14734: ref should never return undef
1220 Files patched: pp.c t/op/overload.t
1221 Now returns null string.
1223 NETaa14751: slice of undefs now returns null list
1225 Files patched: pp.c pp_hot.c
1226 Null list clobberation is now done in lslice, not aassign.
1228 NETaa14789: select coredumped on Linux
1230 Files patched: pp_sys.c
1231 Applied suggested patches, more or less.
1233 NETaa14789: straightened out ins and out of duping
1234 Files patched: lib/IPC/Open3.pm
1237 NETaa14791: implemented internal SUPER class
1238 From: Nick Ing-Simmons
1241 Applied suggested patch.
1243 NETaa14845: s/// didn't handle offset strings
1245 Files patched: pp_ctl.c
1246 Needed a call to SvOOK_off(targ) in pp_substcont().
1248 NETaa14851: Use of << to mean <<"" is deprecated
1250 Files patched: toke.c
1252 NETaa14865: added HINT_BLOCK_SCOPE to "elsif"
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.
1259 NETaa14876: couldn't delete localized GV safely
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.
1265 NETaa14887: couldn't negate magical scalars
1267 Also: Gurusamy Sarathy
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
1273 NETaa14893: /m modifier was sticky
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.
1279 NETaa14893: /m modifier was sticky
1280 Files patched: cop.h pp_hot.c
1283 NETaa14916: complete.pl retained old return value
1285 Files patched: lib/complete.pl
1286 Applied suggested patch.
1288 NETaa14928: non-const 3rd arg to split assigned to list could coredump
1289 From: Hans de Graaff
1291 The optimizer was assuming the OP was an OP_CONST.
1293 NETaa14942: substr as lvalue could disable magic
1294 From: Darrell Kindred <dkindred+@cmu.edu>
1296 The substr was disabling the magic of $1.
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.
1303 NETaa14993: Bizarre copy of formline
1304 From: Tom Christiansen
1305 Also: Charles Bailey
1307 Applied suggested patch.
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
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:
1328 =item Can't use "my %s" in sort comparison
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
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.
1342 NETaa15083: forced $AUTOLOAD to be untainted
1344 Files patched: gv.c pp_hot.c
1345 Stripped any taintmagic from $AUTOLOAD after setting it.
1347 NETaa15084: patch for Term::Cap
1349 Also: Hugo van der Sanden
1350 Files patched: lib/Term/Cap.pm
1351 Applied suggested patch.
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
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.
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.
1370 NETaa15090: MSTATS patch
1372 Files patched: global.sym malloc.c perl.c perl.h proto.h
1373 Applied suggested patch.
1375 NETaa15098: longjmp out of magic leaks memory
1376 From: Chip Salzenberg
1377 Files patched: mg.c sv.c
1378 Applied suggested patch.
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.
1385 NETaa15103: prototypes leaked opcodes
1386 From: Chip Salzenberg
1388 Applied suggested patch.
1390 NETaa15107: quotameta memory bug on all metacharacters
1391 From: Chip Salzenberg
1393 Applied suggested patch.
1395 NETaa15108: Fix for incomplete string leak
1396 From: Chip Salzenberg
1397 Files patched: toke.c
1398 Applied suggested patch.
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.
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.
1410 NETaa15123: bitwise ops produce spurious warnings
1411 From: Hugo van der Sanden
1412 Also: Chip Salzenberg
1413 Also: Andreas Gustafsson
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.
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.
1423 NETaa15131: some POSIX functions assumed valid filehandles
1424 From: Chip Salzenberg
1425 Files patched: ext/POSIX/POSIX.xs
1426 Applied suggested patch.
1428 NETaa15151: don't optimize split on OPpASSIGN_COMMON
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.
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.
1439 NETaa15156: some Exporter tweaks
1440 From: Roderick Schertler
1442 Files patched: lib/Exporter.pm
1443 Also did Tim's Tiny Trivial patch.
1445 NETaa15157: new version of Test::Harness
1446 From: Andreas Koenig
1447 Files patched: lib/Test/Harness.pm
1448 Applied suggested patch.
1450 NETaa15175: overloaded nomethod has garbage 4th op
1451 From: Ilya Zakharevich
1453 Applied suggested patch.
1455 NETaa15179: SvPOK_only shouldn't back off on offset pointer
1456 From: Gutorm.Hogasen@oslo.teamco.telenor.no
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.
1463 NETaa15193: & now always bypasses prototype checking
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.
1469 NETaa15197: 5.002b2 is 'appending' to $@
1470 From: Gurusamy Sarathy
1471 Files patched: pp_ctl.c
1472 Applied suggested patch.
1474 NETaa15201: working around Linux DBL_DIG problems
1475 From: Kenneth Albanowski
1476 Files patched: hints/linux.sh sv.c
1477 Applied suggested patch.
1479 NETaa15208: SelectSaver
1480 From: Chip Salzenberg
1481 Files patched: MANIFEST lib/SelectSaver.pm
1482 Applied suggested patch.
1484 NETaa15209: DirHandle
1485 From: Chip Salzenberg
1486 Files patched: MANIFEST lib/DirHandle.pm t/lib/dirhand.t
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...
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.
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.
1503 NETaa15217: -w problem with -d:foo
1505 Files patched: perl.c
1506 Applied suggested patch.
1508 NETaa15218: *GLOB{ELEMENT}
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
1512 NETaa15219: Make *x=\*y do like *x=*y
1513 From: Chip Salzenberg
1515 Applied suggested patch.
1517 NETaa15221: Indigestion with Carp::longmess and big eval '...'s
1519 Files patched: lib/Carp.pm
1520 Applied suggested patch.
1522 NETaa15222: VERSION patch for standard extensions
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.
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
1531 NETaa15227: $i < 10000 should optimize to integer op
1533 Files patched: op.c op.c
1536 for ($i = 0; $i < 100000; $i++) {
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.
1546 NETaa15228: CPerl-mode patch
1547 From: Ilya Zakharevich
1548 Files patched: emacs/cperl-mode.el
1549 Applied suggested patch.
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.
1556 NETaa15236: select select broke under use strict
1557 From: Chip Salzenberg
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
1563 NETaa15237: use vars
1565 Files patched: MANIFEST gv.c lib/subs.pm lib/vars.pm sv.c
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.
1572 NETaa15259: study doesn't unset on string modification
1574 Files patched: mg.c pp.c
1575 Piggybacked on m//g unset magic to unset the study too.
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.
1583 NETaa15287: numeric comparison optimization adjustments
1586 Applied patch suggested by Chip, with liberalization to >= and <=.
1588 NETaa15299: couldn't eval string containing pod or __DATA__
1589 From: Andreas Koenig
1591 Files patched: toke.c
1592 Basically, eval didn't know how to bypass pods correctly.
1594 NETaa15300: sv_backoff problems
1597 Also: Chip Salzenberg
1598 Files patched: op.c sv.c sv.h
1599 Applied suggested patch.
1601 NETaa15312: Avoid fclose(NULL)
1602 From: Chip Salzenberg
1603 Files patched: toke.c
1604 Applied suggested patch.
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.
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
1616 if (not -l $root and -d _) {
1618 for efficiency, since if -d is true, the -l already called lstat on it.
1620 NETaa15339: sv_gets() didn't reset count
1621 From: alanburlison@unn.unisys.com
1623 Applied suggested patch.
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.
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.
1635 NETaa15344: Safe gets confused about malloc on AIX
1637 Files patched: ext/Safe/Safe.xs
1638 Applied suggested patch.
1640 NETaa15348: -M upgrade
1642 Files patched: perl.c pod/perlrun.pod
1643 Applied suggested patch.
1645 NETaa15369: change in split optimization broke scalar context
1646 From: Ulrich Pfeifer
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.
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.
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.
1663 Needed to make install paths absolute.
1664 Files patched: installperl
1667 Files patched: utils/h2xs.PL
1669 makedir() looped on a symlink to a directory.
1670 Files patched: installperl
1673 Files patched: lib/ExtUtils/xsubpp
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.
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)
1694 NETaa12974: README incorrectly said it was a pre-release.
1695 Files patched: README
1697 NETaa13033: goto pushed a bogus scope on the context stack.
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.)
1703 NETaa13034: tried to get valid pointer from undef.
1705 Also: Achille Hui, the Day Dreamer
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.
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.
1716 NETaa13048: didn't give strict vars message on every occurrence.
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.)
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.
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.
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.
1743 NETaa13055: use of OPf_SPECIAL for $[ lvaluehood was too fragile.
1744 Files patched: op.c op.h toke.c
1747 NETaa13056: convert needs to throw away any number info on its list.
1748 From: Jack Shirazi - BIU
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.
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.
1760 NETaa13059: now warns of use of \1 where $1 is necessary.
1761 From: Gustaf Neumann
1762 Files patched: toke.c
1765 Can't use \1 to mean $1 in expression at foo line 2
1767 along with an explanation in perldiag.
1769 NETaa13060: no longer warns on attempt to read <> operator's transition state.
1771 Files patched: pp_hot.c
1772 No longer warns on <> operator's transitional state.
1774 NETaa13140: warning said $ when @ would be more appropriate.
1775 From: David J. MacKenzie
1776 Files patched: op.c pod/perldiag.pod
1779 (Did you mean $ or @ instead of %?)
1781 and added more explanation to perldiag.
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
1789 NETaa13149: confess was sometimes less informative than croak
1791 Files patched: lib/Carp.pm
1794 NETaa13150: stderr needs to be STDERR in package
1796 Files patched: lib/File/CheckTree.pm
1797 Also fixed pl2pm to translate the filehandles to uppercase.
1799 NETaa13150: uppercases stdin, stdout and stderr
1800 Files patched: pl2pm
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.
1810 NETaa13155: &DB::DB left trash on the stack.
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 ().
1816 NETaa13156: lexical variables didn't show up in debugger evals.
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.)
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.
1832 NETaa13158: now preserves $@ around destructors while leaving eval.
1834 Files patched: pp_ctl.c
1835 Applied supplied patch, except the whole second hunk can be replaced with
1837 sv_insert(errsv, 0, 0, message, strlen(message));
1839 NETaa13160: clarified behavior of split without arguments
1841 Files patched: pod/perlfunc.pod
1842 Clarified the behavior of split without arguments.
1844 NETaa13162: eval {} lost list/scalar context
1847 LEAVETRY didn't propagate number to ENTERTRY.
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.
1854 NETaa13164: the dot detector for the end of formats was over-rambunctious.
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.
1860 NETaa13165: do {} while 1 never linked outer block into next chain.
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.
1870 NETaa13167: coercion was looking at public bits rather than private bits.
1871 From: Randal L. Schwartz
1872 Also: Thomas Riechmann
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.
1880 NETaa13167: had some ifdefs wrong on set*id.
1881 Files patched: mg.c pp_hot.c
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.
1889 NETaa13169: autoincrement can corrupt scalar value state.
1891 Also: Tom Christiansen
1893 It assumed a PV didn't need to be upgraded to become an NV.
1895 NETaa13169: previous patch could leak a string pointer.
1899 NETaa13170: symbols missing from global.sym
1901 Files patched: global.sym
1902 Applied suggested patch.
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.
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.
1915 NETaa13172: deleted duplicate increment and decrement code
1916 Files patched: opcode.h opcode.pl pp.c
1919 NETaa13173: install should make shared libraries executable.
1920 From: Brian Grossman
1923 Files patched: installperl
1924 Now gives permission 555 to any file ending with extension specified by $dlext.
1926 NETaa13176: ck_rvconst didn't free the const it used up.
1929 I checked in many random memory leaks under this bug number, since it
1930 was an eval that brought many of them out.
1932 NETaa13176: didn't delete XRV for temp ref of destructor.
1936 NETaa13176: didn't delete op_pmshort in matching operators.
1940 NETaa13176: eval leaked the name of the eval.
1941 Files patched: scope.c
1944 NETaa13176: gp_free didn't free the format.
1948 NETaa13176: minor leaks in loop exits and constant subscript optimization.
1952 NETaa13176: plugged some duplicate struct allocation memory leaks.
1953 Files patched: perl.c
1956 NETaa13176: sv_clear of an FM didn't clear anything.
1960 NETaa13176: tr/// didn't mortalize its return value.
1964 NETaa13177: SCOPE optimization hid line number info
1965 From: David J. MacKenzie
1966 Also: Hallvard B Furuseth
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.
1974 Fortunately, null operands remember what they were, so it was pretty easy
1975 to make it set the correct line number anyway.
1977 NETaa13178: some linux doesn't handle nm well
1979 Files patched: hints/linux.sh
1980 Applied supplied patch.
1982 NETaa13180: localized slice now pre-extends array
1985 A localized slice now pre-extends its array to avoid reallocation during
1986 the scope of the local.
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
1995 NETaa13182: now includes whitespace as a regexp metacharacter.
1997 Files patched: toke.c
1998 scan_const() now counts " \t\n\r\f\v" as metacharacters when scanning a pattern.
2000 NETaa13183: sv_setsv shouldn't try to clone an object.
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
2007 NETaa13184: bogus warning on quoted signal handler name removed.
2009 Files patched: toke.c
2010 Now doesn't complain unless the first non-whitespace character after the =
2011 is an alphabetic character.
2013 NETaa13186: now croaks on chop($')
2014 From: Casper H.S. Dik
2015 Files patched: doop.c
2016 Now croaks on chop($') and such.
2018 NETaa13187: "${foo::bar}" now counts as mere delimitation, not as a bareword.
2020 Files patched: toke.c
2021 "${foo::bar}" now counts as mere delimitation, not as a bareword inside a
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"
2030 NETaa13188: now allows non-whitespace after #!...perl before switches.
2031 Files patched: toke.c
2034 NETaa13189: derivative files need to be removed before recreation
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.
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.
2046 NETaa13194: now returns undef when there is no curpm.
2047 From: lusol@Dillon.CC.Lehigh.EDU
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.
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.
2058 NETaa13196: always assumes it's a Perl script if -c is used.
2060 Files patched: toke.c
2061 It now will assume it's a Perl script if the -c switch is used.
2063 NETaa13197: changed implicit -> message to be more understandable.
2065 Files patched: op.c pod/perldiag.pod
2066 I changed the error message to be more understandable. It now says
2068 Can't use subscript on sort...
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.
2080 NETaa13203: README shouldn't mention uperl.o any more.
2082 Files patched: README
2084 NETaa13204: .= shouldn't warn on uninitialized target.
2086 Files patched: pp_hot.c
2087 No longer warns on uninitialized target of .= operator.
2089 NETaa13206: handy macros in XSUB.h
2091 Files patched: XSUB.h
2092 Added suggested macros.
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.
2102 NETaa13229: fixed sign stuff for complement, integer coercion.
2104 Files patched: perl.h pp.c sv.c
2105 Fixed ~0 and integer coercions.
2107 NETaa13230: no longer tries to reuse scratchpad temps if tainting in effect.
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.
2114 NETaa13231: *foo = *bar now prevents typo warnings on "foo"
2117 Aliasing of the form *foo = *bar is now protected from the typo warnings.
2118 Previously only the *foo = \$bar form was.
2120 NETaa13235: require BAREWORD now introduces package name immediately.
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
2127 NETaa13289: didn't calculate correctly using arybase.
2129 Files patched: pp.c pp_hot.c
2130 The runtime code didn't use curcop->cop_arybase correctly.
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.
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.
2142 NETaa13302: shorter way to do this patch
2143 Files patched: ext/POSIX/POSIX.xs
2146 NETaa13304: could feed too large $@ back into croak, whereupon it croaked.
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.)
2152 NETaa13305: compiler misoptimized RHS to outside of s/a/print/e
2153 From: Brian S. Cashman <bsc@umich.edu>
2155 The syntax tree was being misconstructed because the compiler felt that
2156 the RHS was invariant, so it did it outside the s///.
2158 NETaa13314: assigning mortal to lexical leaks
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.
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.
2170 NETaa13329: needed to localize taint magic
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
2179 when $_[0] is a reference to the variable $foo already.
2181 NETaa13341: clarified interaction of AnyDBM_File::ISA and "use"
2183 Files patched: pod/modpods/AnyDBMFile.pod
2184 The doc was misleading.
2186 NETaa13342: grep and map with block would enter block but never leave it.
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.
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
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.
2205 NETaa13344: strict vars shouldn't apply to globs or filehandles.
2208 Filehandles and globs will be excepted from "strict vars", so that you can
2209 do the standard Perl 4 trick of
2218 NETaa13345: assert.pl didn't use package DB
2220 Files patched: lib/assert.pl
2223 NETaa13348: av_undef didn't free scalar representing $#foo.
2226 av_undef didn't free scalar representing $#foo.
2228 NETaa13349: sort sub accumulated save stack entries
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.
2234 NETaa13351: didn't treat indirect filehandles as references.
2235 From: Andy Dougherty
2239 Can't use an undefined value as a symbol reference at ./foo line 3.
2242 NETaa13352: OP_SCOPE allocated as UNOP rather than LISTOP.
2243 From: Andy Dougherty
2246 NETaa13353: scope() didn't release filegv on OP_SCOPE optimization.
2249 When scope() nulled out a NEXTSTATE, it didn't release its filegv reference.
2251 NETaa13355: hv_delete now avoids useless mortalcopy
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.
2257 NETaa13359: comma operator section missing its heading
2259 Files patched: pod/perlop.pod
2261 NETaa13359: random typo
2262 Files patched: pod/perldiag.pod
2264 NETaa13360: code to handle partial vec values was bogus.
2265 From: Conrad Augustin
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.
2270 NETaa13361: made it not interpolate inside regexp comments
2272 Files patched: toke.c
2273 To avoid surprising people, it no longer interpolates inside regexp
2276 NETaa13362: ${q[1]} should be interpreted like it used to
2278 Files patched: toke.c
2279 Now resolves ${keyword[1]} to $keyword[1] and warns if -w. Likewise for {}.
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.
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.
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).
2301 NETaa13366: fixed this a better way in toke.c.
2305 NETaa13366: need to disable scope optimization when tainting.
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
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.
2323 NETaa13368: botched previous patch
2324 Files patched: lib/bigrat.pl
2327 NETaa13369: # is now a comment character, and \# should be left for regcomp.
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.
2335 NETaa13369: comment after regexp quantifier induced non-match.
2336 Files patched: regcomp.c
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
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
2353 NETaa13375: sv_setpvn now disallows negative length.
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.)
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.
2371 NETaa13379: ${foo} now treated the same outside quotes as inside
2373 Files patched: toke.c
2374 ${bareword} is now treated the same outside quotes as inside.
2376 NETaa13379: previous fix for this bug was botched
2377 Files patched: toke.c
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';
2386 NETaa13384: fixed version 0.000 botch.
2388 Files patched: installperl
2390 NETaa13385: return 0 from required file loses message
2391 From: Malcolm Beattie
2392 Files patched: pp_ctl.c
2395 NETaa13387: added pod2latex
2396 From: Taro KAWAGISHI
2397 Files patched: MANIFEST pod/pod2latex
2398 Added most recent copy to pod directory.
2400 NETaa13388: constant folding now prefers integer results over double
2401 From: Ilya Zakharevich
2403 Constant folding now prefers integer results over double.
2405 NETaa13389: now treats . and exec as shell metathingies
2407 Files patched: doio.c
2408 Now treats . and exec as shell metathingies.
2410 NETaa13395: eval didn't check taintedness.
2412 Files patched: pp_ctl.c
2414 NETaa13396: $^ coredumps at end of string
2416 Files patched: toke.c
2417 The scan_ident() didn't check for a null following $^.
2419 NETaa13397: improved error messages when operator expected
2421 Files patched: toke.c
2422 Added message (Do you need to predeclare BAR?). Also fixed the missing
2425 NETaa13399: cleanup by Andy
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
2429 NETaa13399: cleanup from Andy
2430 Files patched: MANIFEST
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
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
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
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
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
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
2450 NETaa13400: pod2html update from Bill Middleton
2452 Files patched: pod/pod2html
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.
2460 NETaa13403: missing a $ on variable name
2462 Files patched: installperl
2463 Yup, it was missing.
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
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.
2478 NETaa13409: sv_gets tries to grow string at EOF
2479 From: Harold O Morris
2481 Applied suggested patch, only two statements earlier, since the end code
2482 also does SvCUR_set.
2484 NETaa13410: delaymagic did =~ instead of &= ~
2485 From: Andreas Schwab
2486 Files patched: pp_hot.c
2487 Applied supplied patch.
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.
2494 NETaa13412: new version from Tony Sanders
2496 Files patched: lib/Term/Cap.pm
2497 Installed as Term::Cap.pm
2499 NETaa13413: regmust extractor needed to restart loop on BRANCH for (?:) to work
2501 Files patched: regcomp.c
2502 The BRANCH skipper should have restarted the loop from the top.
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.
2509 NETaa13418: perlre.pod babbled nonsense about | in character classes
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|]>.
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.
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.
2527 NETaa13423: the code to do negative list subscript in scalar context was missing
2528 From: Steve McDougall
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.
2533 NETaa13424: existing but undefined CV blocked inheritance
2534 From: Spider Boardman
2536 Applied supplied patch.
2538 NETaa13425: removed extra argument to croak
2539 From: "R. Bernstein"
2540 Files patched: regcomp.c
2541 Removed extra argument.
2543 NETaa13427: added return types
2544 From: "R. Bernstein"
2545 Files patched: x2p/a2py.c
2546 Applied suggested patch.
2548 NETaa13427: added static declarations
2549 Files patched: x2p/walk.c
2552 NETaa13428: split was assuming that all backreferences were defined
2553 From: Dave Schweisguth
2555 split was assuming that all backreferences were defined.
2557 NETaa13430: hoistmust wasn't hoisting anchored shortcircuit's length
2558 From: Tom Christiansen
2560 Files patched: toke.c
2562 NETaa13432: couldn't call code ref under debugger
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
2569 NETaa13435: 1' dumped core
2571 Files patched: toke.c
2572 Didn't check a pointer for nullness.
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.
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.
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.
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
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.
2603 This has the advantage of not creating a reference loop.
2605 NETaa13443: couldn't override an XSUB
2606 From: William Setzer
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).
2611 NETaa13443: needed to do same thing in newXS
2615 NETaa13444: -foo now doesn't warn unless sub foo is defined
2617 Files patched: toke.c
2618 Made it not warn on -foo, unless there is a sub foo defined.
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.
2627 NETaa13457: now explicitly disallows printf format with 'n' or '*'.
2628 From: lees@cps.msu.edu
2629 Files patched: doop.c
2632 Use of n in printf format not supported at ./foo line 3.
2635 NETaa13458: needed to call SvPOK_only() in pp_substr
2638 Needed to call SvPOK_only() in pp_substr.
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.
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.
2651 NETaa13475: \(@ary) now treats array as list of scalars
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.
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.
2663 NETaa13486: while (<>) now means while (defined($_ = <>))
2665 Files patched: op.c pod/perlop.pod
2666 while (<HANDLE>) now means while (defined($_ = <HANDLE>)).
2668 NETaa13500: needed DESTROY in FileHandle
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.
2674 NETaa13502: now complains if you use local on a lexical variable
2677 Now says something like
2679 Can't localize lexical variable $var at ./try line 6.
2681 NETaa13512: added $SIG{__WARN__} and $SIG{__DIE__} hooks
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
2685 NETaa13514: statements before intro of lex var could see lex var
2686 From: William Setzer
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,
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.
2702 NETaa13520: added closures
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
2706 NETaa13520: test to see if lexical works in a format now
2707 Files patched: t/op/write.t
2709 NETaa13522: substitution couldn't be used on a substr()
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.
2715 NETaa13525: G_EVAL mode in perl_call_sv didn't return values right.
2716 Files patched: perl.c
2718 NETaa13525: consolidated error message
2720 Files patched: perl.h toke.c
2722 NETaa13525: derived it
2723 Files patched: perly.h
2725 NETaa13525: missing some values from embed.h
2726 Files patched: embed.h
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
2731 NETaa13525: random cleanup
2732 Files patched: pp_ctl.c util.c
2734 NETaa13527: File::Find needed to export $name and $dir
2736 Files patched: lib/File/Find.pm
2737 They are now exported.
2739 NETaa13528: cv_undef left unaccounted-for GV pointer in CV
2741 Also: Spider Boardman
2744 NETaa13530: scalar keys now resets hash iterator
2746 Files patched: doop.c
2747 scalar keys() now resets the hash iterator.
2749 NETaa13531: h2ph doesn't check defined right
2750 From: Casper H.S. Dik
2751 Files patched: h2ph.SH
2753 NETaa13540: VMS update
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
2757 NETaa13540: got some duplicate code
2758 Files patched: lib/File/Path.pm
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
2763 NETaa13540: tweak from Charles
2764 Files patched: lib/File/Path.pm
2766 NETaa13552: scalar unpack("P4",...) ignored the 4
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.
2772 NETaa13553: now warns about 8 or 9 in octal escapes
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.
2778 NETaa13554: now allows foreach ${"name"}
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"}.
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.
2790 NETaa13561: added explanations of closures and curly-quotes
2792 Files patched: pod/perlref.pod
2794 NETaa13562: null components in path cause indigestion
2795 From: Ambrose Kofi Laing
2796 Files patched: lib/Cwd.pm lib/pwd.pl
2798 NETaa13575: documented semantics of negative substr length
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.
2804 NETaa13575: negative length to substr didn't work when offset non-zero
2808 NETaa13575: random cleanup
2809 Files patched: pod/perlfunc.pod
2812 NETaa13580: couldn't localize $ACCUMULATOR
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
2818 NETaa13583: doc mods from Tom
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
2822 NETaa13589: return was enforcing list context on its arguments
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.
2828 NETaa13591: POSIX::creat used wrong argument
2830 Files patched: ext/POSIX/POSIX.pm
2831 Applied suggested patch.
2833 NETaa13605: use strict refs error message now displays bad ref
2835 Files patched: perl.h pod/perldiag.pod pp.c pp_hot.c
2838 Can't use string ("2") as a HASH ref while "strict refs" in use at ./foo line 12.
2840 NETaa13630: eof docs were unclear
2841 From: Hallvard B Furuseth
2842 Files patched: pod/perlfunc.pod
2843 Applied suggested patch.
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 $>.
2851 NETaa13641: added Tim's fancy new import whizbangers
2853 Files patched: lib/Exporter.pm
2854 Applied suggested patch.
2856 NETaa13649: couldn't AUTOLOAD a symbol reference
2858 Files patched: pp_hot.c
2859 pp_entersub needed to guarantee a CV so it would get to the AUTOLOAD code.
2861 NETaa13651: renamed file had wrong package name
2862 From: Andreas Koenig
2863 Files patched: lib/File/Path.pm
2864 Applied suggested patch.
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.
2871 NETaa13660: rand.t didn't test for proper distribution within range
2872 Files patched: t/op/rand.t
2875 NETaa13671: array slice misbehaved in a scalar context
2878 A spurious else prevented the scalar-context-handling code from running.
2880 NETaa13672: filehandle constructors in POSIX don't return failure successfully
2882 Files patched: ext/POSIX/POSIX.pm
2883 Applied suggested patch.
2886 NETaa13678: forced $1 to always be untainted
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.
2892 NETaa13682: formline doc need to discuss ~ and ~~ policy
2894 Files patched: pod/perlfunc.pod
2896 NETaa13686: POSIX::open and POSIX::mkfifo didn't check tainting
2898 Files patched: ext/POSIX/POSIX.xs
2899 open() and mkfifo() now check tainting.
2901 NETaa13687: new Exporter.pm
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.
2909 NETaa13687: new Exporter.pm
2910 Files patched: ext/POSIX/POSIX.pm
2913 NETaa13694: add sockaddr_in to Socket.pm
2915 Files patched: ext/Socket/Socket.pm
2916 Applied suggested patch.
2918 NETaa13695: library routines should use qw() as good example
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.
2923 NETaa13696: myconfig should be a routine in Config.pm
2924 From: Kenneth Albanowski
2925 Files patched: configpm
2926 Applied suggested patch.
2928 NETaa13704: fdopen closed fd on failure
2929 From: Hallvard B Furuseth
2930 Files patched: doio.c
2931 Applied suggested patch.
2933 NETaa13706: Term::Cap doesn't work
2935 Files patched: lib/Term/Cap.pm
2936 Applied suggested patch.
2938 NETaa13710: cryptswitch needed to be more "useable"
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.
2946 NETaa13712: new_tmpfile() can't be called as constructor
2948 Files patched: ext/POSIX/POSIX.xs
2949 Now allows new_tmpfile() to be called as a constructor.
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.
2956 NETaa13715: PACK->$method produces spurious warning
2958 Files patched: toke.c
2959 The -> operator was telling the lexer to expect an operator when the
2960 next thing was a variable.
2962 NETaa13716: Carp now allows multiple packages to be skipped out of
2964 Files patched: lib/Carp.pm
2965 The subroutine redefinition warnings now warn on import collisions.
2967 NETaa13716: Exporter catches warnings and gives a better line number
2968 Files patched: lib/Exporter.pm
2971 NETaa13716: now counts imported routines as "defined" for redef warnings
2972 Files patched: op.c sv.c
2981 The -w switch is much more informative.
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.
2986 Objects. See t/op/ref.t for examples.
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.
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.
2996 More embeddible. See main.c and embed_h.sh. Multiple interpreters
2997 in the same process are supported (though not with interleaved
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.
3005 eval is now treated more like a subroutine call. Among other things,
3006 this means you can return from it.
3008 Format value lists may be spread over multiple lines by enclosing in
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.
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"!)
3018 The ?: operator is now legal as an lvalue.
3020 List context now propagates to the right side of && and ||, as well
3021 as the 2nd and 3rd arguments to ?:.
3023 The "defined" function can now take a general expression.
3025 Lexical scoping available via "my". eval can see the current lexical
3028 The preferred package delimiter is now :: rather than '.
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.
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.
3037 New functions include: abs(), chr(), uc(), ucfirst(), lc(), lcfirst(),
3040 require with a number checks to see that the version of Perl that is
3041 currently running is at least that number.
3043 Dynamic loading of external modules is now supported.
3045 There is a new quote form qw//, which is equivalent to split(' ', q//).
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;
3051 Filehandle methods are now supported:
3052 output_autoflush STDOUT 1;
3054 There is now an "English" module that provides human readable translations
3055 for cryptic variable names.
3057 Autoload stubs can now call the replacement subroutine with goto &realsub.
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
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".
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.
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.
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
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.
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".
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.
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.
3107 Ordinary variables starting with underscore are no longer forced into
3110 s'$lhs'$rhs' now does no interpolation on either side. It used to
3111 interplolate $lhs but not $rhs.
3113 The second and third arguments of splice are now evaluated in scalar
3114 context (like the book says) rather than list context.
3116 Saying "shift @foo + 20" is now a semantic error because of precedence.
3118 "open FOO || die" is now incorrect. You need parens around the filehandle.
3120 The elements of argument lists for formats are now evaluated in list
3121 context. This means you can interpolate list values now.
3123 You can't do a goto into a block that is optimized away. Darn.
3125 It is no longer syntactically legal to use whitespace as the name
3126 of a variable, or as a delimiter for any kind of quote construct.
3128 Some error messages will be different.
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.
3133 m//g now attaches its state to the searched string rather than the
3136 "reverse" is no longer allowed as the name of a sort subroutine.
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.
3141 Symbols starting with _ are no longer forced into package main, except
3142 for $_ itself (and @_, etc.).
3144 Double-quoted strings may no longer end with an unescaped $ or @.
3146 Negative array subscripts now count from the end of the array.
3148 The comma operator in a scalar context is now guaranteed to give a
3149 scalar context to its arguments.
3151 The ** operator now binds more tightly than unary minus.
3153 Setting $#array lower now discards array elements so that destructors
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.
3159 Attempts to set $1 through $9 now result in a run-time error.