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
13 o Visible Changes to Core Functionality
14 - Redefining constant subs, or changing sub's prototype now give warnings.
15 - Fixes for ++/-- of values close to max/min size of an integer
16 - Warning for un-qualified bareword as handler in $SIG{}.
17 - UNIVERSAL::isa can now be called as static method.
19 o Changes in Core Internals
20 - PerlIO abstraction added.
21 Perl core and standard extensions no longer assume ANSI C's stdio is IO
22 mechanism, Default Configure mode is still to use stdio via set of C macros.
23 Alternate modes are to use stdio via one perlio.c module, or
24 to use sfio if available.
26 - Several bug fixs from perl5-porters
27 - Make sources non-ANSI C correct again.
29 - Last of shared-hash-key patches
30 - eval '(0,1..3)'; # --> SegFault
31 - coredumps after simple subsitutes.
32 - Correction to UNIVERSAL::VERSION docs.
34 - Fixed another abuse of malloc'ed memory.
35 - Enabled DEBUGING_MSTATS whenever perl's malloc() is used.
36 - Reverted to default of not hiding perl's malloc (if used).
38 o Changes in the Standard Library and Utilities
39 - Fixed MakeMaker for static SDBM and builing in a link tree.
40 - Upgraded to IO-1.09, and includes latest (still experimental) IO::Select.
41 - Documentation/test tweak to DB_File
42 - h2xs upgrade to allow use C::Scan module
44 o Changes in OS-specific and Build-time Support
45 - Attempted to re-created 5.003_01's NeXT support with metaconfig units.
47 - make minitest now depends on lib/Config.pm, as some of tests require it.
48 - Included latest plan9 sub-directory
49 - Applied OS/2 patches.
56 Version 5.003_01 contains bugfixes and additions accumulated since
57 version 5.002_01, since the patch to version 5.003 was deliberately
58 kept simple. In addition to numerous small bugfixes in the core,
59 library files, and documentation, this patch contains several
60 significant revisions, summarized below:
62 o Visible Changes to Core Functionality
64 - A port to Plan9 has been started, and changes are integrated into
65 the standard distribution. As of this release, the Perl core
66 and several common extensions are working.
68 - A set of basic methods in the UNIVERSAL class have been added to
69 the Perl core. Since UNIVERSAL is an implicit member of every
70 class's @ISA, the methods can be called via any object.
72 - A mandatory warning has been added for 'declarations' of lexical
73 variables using the "my" operator which mask an existing lexical
74 variable declared in the same scope, making the previous variable
75 inaccessible by its name.
77 - The "use" and "require" operators have been extended to allow
78 checking of the required module's version. The "use" operator
79 can now be used for an immediate version check of Perl itself.
81 - A new "strict" pragma, "strict untie", has been added, which
82 produces an error if a tied value is untied when other references
83 exist to the internal object implementing the tie.
85 - Barewords used as associative array keys (i.e. when specifying
86 an associative array element like $foo{__BAR} or on the left
87 side of the => operator) may now begin with an underscore as
88 well as an alphabetic character.
90 - Some of the configuration information previously produced by the
91 -v switch has been moved to the -V switch, in order to keep -v
94 o Changes in Core Internals
96 - Symbol table and method lookups have been made faster.
98 - Perl subroutines which just return a constant value are now
99 optimized at compile time into inline constants.
101 - Management of keys for associative arrays has been improved to
102 conserve space when the same keys are reused frequently, and
103 to pass true Perl values to tie functions, instead of stringified
106 - Messages normally output to stderr may be directed to another
107 stream when Perl is built. This allows some platforms to
108 present diagnostic output in a separate window from normal
111 - A bug which caused suiperl to fail silently, albeit securely,
112 in version 5.003 on some systems has been fixed.
114 - Management of Unix-style signal handlers via the %SIG associative
115 array has been made safer.
117 - Several global C symbols have been renamed to eliminate collisions
118 with system C header files or libraries on some platforms.
119 Unfortunately, this means that dynamic extensions compiled under
120 previous versions of Perl will need to be rebuilt for Perl
121 5.003_01. We're in the process of cleaning up Perl's C
122 namespace to make it easier to link Perl with other binaries,
123 so this will probably happen again between now and version 5.004.
124 After that, we'll do our best to maintain binary compatibility
127 - An alternate allocation strategy has been added to Perl's
128 optional private memory management routines. This strategy,
129 which may be selected when Perl is built, is designed to
130 conserve memory in programs which allocate many small
131 chunks of memory with sizes near a power of 2, as is often
132 the case in Perl programs.
134 - Several memory leaks in the creation and destruction of
135 multiple interpreters have been fixed.
137 o Changes in the Standard Library and Utilities
139 - The Opcode extension, which allows you to control a program's
140 access to Perl operations, has been added to the standard
141 distribution. This extends the work begun in the original
142 Safe extension, and subsumes it. The Safe interface is still
145 - The IO extension, which provides a set of classes for object-
146 oriented handling of common I/O tasks, has been added to the
147 standard distribution. The IO classes will form the basis
148 for future development of Perl's I/O interface, and will
149 subsume the FileHandle class in the near future. The default
150 class to which all Perl I/O handles belong is now IO::Handle,
151 rather than FileHandle.
153 - The ExtUtils::Embed library module, which provides a set
154 of utility function to help in embedding Perl in other
155 applications, has been added to the standard distribution.
157 - The Fatal library module, which provides a simple interface
158 for creating "do-or-die" equivalents of existing functions,
159 has been added to the standard distribution.
161 - The FindBin library module, which determines the full path
162 to the currently executing program, has been added to the
163 standard distribution.
165 - The DB_File extension, and the Getopt::Long, Test::Harness,
166 Text::Tabs, Text::Wrap, Time::Local and sigtrap library modules
167 have been updated to the authors' latest versions.
169 - The Carp library module now considers the @ISA chain when
170 determining the caller's package for inclusion in error messages.
172 - The h2xs, perlbug, and xsubpp utilities have been updated.
174 - The standard Perl debugger has been updated, and the information
175 provided to the debugger when an XSUB is called has been improved,
176 making it possible for alternate debuggers (such as Devel::DProf)
177 to do a better job of tracking XSUB calls.
179 - The pod documentation formatting tools in the standard distribution
180 can now handle characters in the input stream whose high bit is set.
182 - The cperl-mode EMACS editing mode has been updated.
184 o Changes in Documentation
186 - Typographic and formatting errors have been corrected in the pod
187 documentation for the core and standard library files
189 - Explanations of several core operators have been improved
191 - The perldebug, perlembed, perlipc, perlsec, and perltrap documents
194 o Changes in OS-specific and Build-time Support
196 - Support for the NeXT platform has been extended through
197 NeXTSTEP/OPENSTEP 4.0, and now includes the ability to create MABs.
199 - Support for OS/2 has been extended as well, and now includes
200 options for building a.out binaries.
202 - Support for VMS has also been extended, incorporating improved
203 processing of file specification strings, optional suppression of
204 carriage control interpretation for record-structured files,
205 improved support for the -S command line switch, a number of
206 VMS-specific bugfixes, and significantly improved performance
207 in line-oriented reading of files.
209 - Several hints files have been added or updated: aux.sh (updated),
210 convexos.sh (updated), irix_4.sh (updated), irix_5.sh (updated),
211 irix_6_2.sh (updated), next_3.sh (updated), next_3_2.sh (new),
212 next_3_3.sh (new), next_4.sh (new), os2/sh (updated),
213 sco.sh (updated), and solaris_2.sh (updated).
215 - The test driver for the regression tests now reports when a set
216 of tests have been skipped (presumable because the operation
217 they're designed to test isn't supported on the current system).
223 ***> IMPORTANT NOTICE: <***
224 The main reason for this release was to fix a security bug affecting
225 suidperl on some systems. If you build suidperl on your system, it
226 is strongly recommended that you replace any existing copies with
227 version 5.003 or later immediately.
229 The changes in 5.003 have been held to a minimum, in the hope that this
230 will simplify installation and testing at sites which may be affected
231 by the security hole in suidperl. In brief, 5.003 does the following:
233 - Plugs security hole in suidperl mechanism on affected systems
235 - MakeMaker was also updated to version 5.34, and extension Makefile.PLs
236 were modified to match it.
238 - The following hints files were updated: bsdos.sh, hpux.sh, linux.sh,
239 machten.sh, solaris_2.sh
241 - A fix was added to installperl to insure that file permissions were
242 set correctly for the installed C header files.
244 - t/op/stat.t was modified to work around MachTen's belief that /dev/null
245 is a terminal device.
247 - Incorporation of Perl version information into the VMS' version of
248 config.h was changed to make it compatible with the older VAXC.
250 - Minor fixes were made to VMS-specific C code, and the routine
251 VMS::Filespec::rmsexpand was added.
257 - The EMBED namespace changes are now used by default, in order to better
258 segregate Perl's C global symbols from those belonging to embedding
259 applications or to libraries. This makes it necessary to rebuild dynamic
260 extensions built under previous versions of Perl without the EMBED option.
261 The default use of EMBED can be overridden by placing -DNO_EMBED on the
264 The EMBED change is the beginning of a general cleanup of C global
265 symbols used by Perl, so binary compatibility with previously
266 compiled dynamic extensions may be broken again in the next few
269 - Several bugs in the core were fixed, including the following:
270 - made sure FILE * for -e temp file was closed only once
271 - improved form of single-statement macro definitions to keep
272 as many ccs as possible happy
273 - fixed file tests to insure that signed values were used when
274 computing differences between times.
275 - fixed toke.c so implicit loop isn't doubled when perl is
276 invoked with both the -p and -n switches
278 - The new SUBVERSION number has been included in the default value for
279 architecture-specific library directories, so development and
280 production architecture-dependent libraries can coexist.
282 - Two new magic variables, $^E and $^O, have been added. $^E contains the
283 OS-specific equivalent of $!. $^O contains the name of the operating
284 system, in order to make it easily available to Perl code whose behavior
285 differs according to its environment. The standard library files have
286 been converted to use $^O in preference to $Config{'osname'}.
288 - A mechanism was added to allow listing of locally applied patches
289 in the output of perl -v.
291 - Miscellaneous minor corrections and updates were made to the documentation.
293 - Extensive updates were made to the OS/2 and VMS ports
295 - The following hints file were updated: bsdos.sh, dynixptx.sh,
296 irix_6_2.sh, linux.sh, os2.sh
298 - Several changes were made to standard library files:
299 - reduced use of English.pm and $`, $', and $& in library modules,
300 since these degrade module loading and evaluation of regular expressions,
302 - File/Basename.pm: Added path separator to dirname('.')
303 - File/Copy.pm: Added support for VMS and OS/2 system-level copy
304 - MakeMaker updated to v5.26
305 - Symbol.pm now accepts old (') and new (::) package delimiters
306 - Sys/Syslog.pm uses Sys::Hostname only when necessary
307 - chat2.pl picks up necessary constants from socket.ph
308 - syslog.pl: Corrected thinko 'Socket' --> 'Syslog'
309 - xsubpp updated to v1.935
312 - The perlbug utility is now more cautious about sending mail, in order
313 to reduce the chance of accidentally send a bug report by giving the
314 wrong response to a prompt.
316 - The -m switch has been added to perldoc, causing it to display the
317 Perl code in target file as well as any documentation.
323 The main enhancement to the Perl core was the addition of prototypes.
324 Many of the modules that come with Perl have been extensively upgraded.
326 Other than that, nearly all the changes for 5.002 were bug fixes of one
327 variety or another, so here's the bug list, along with the "resolution"
328 for each of them. If you wish to correspond about any of them, please
329 include the bug number (if any).
331 Added APPLLIB_EXP for embedded perl library support.
332 Files patched: perl.c
334 Couldn't define autoloaded routine by assignment to typeglob.
335 Files patched: pp_hot.c sv.c
337 NETaa13525: Tiny patch to fix installman -n
339 Files patched: installman
341 NETaa13525: de-documented \v
342 Files patched: pod/perlop.pod pod/perlre.pod
344 NETaa13525: doc changes
345 Files patched: pod/perlop.pod pod/perltrap.pod
347 NETaa13525: perlxs update from Dean Roehrich
348 Files patched: pod/perlxs.pod
350 NETaa13525: rename powerunix to powerux
351 Files patched: MANIFEST hints/powerux.sh
353 NETaa13540: VMS uses CLK_TCK for HZ
354 Files patched: pp_sys.c
356 NETaa13721: pad_findlex core dumps on bad CvOUTSIDE()
358 Files patched: op.c sv.c toke.c
359 Each CV has a reference to the CV containing it lexically. Unfortunately,
360 it didn't reference-count this reference, so when the outer CV was freed,
361 we ended up with a pointer to memory that got reused later as some other kind
364 NETaa13721: warning suppression
365 Files patched: toke.c
368 NETaa13722: walk.c had inconsistent static declarations
370 Files patched: x2p/walk.c
371 Consolidated the various declarations and made them consistent with
372 the actual definitions.
374 NETaa13724: -MPackage=args patch
376 Files patched: perl.c pod/perlrun.pod
377 Added in the -MPackage=args patch too.
379 NETaa13729: order-of-evaluation dependency in scope.c on leaving REGCONTEXT
381 Files patched: scope.c
384 I32 delta = SSPOPINT;
385 savestack_ix -= delta; /* regexp must have croaked */
389 NETaa13731: couldn't assign external lexical array to itself
390 From: oneill@cs.sfu.ca
392 The pad_findmy routine was only checking previous statements for previous
393 mention of external lexicals, so the fact that the current statement
394 already mentioned @list was not noted. It therefore allocated another
395 reference to the outside lexical, and this didn't compare equal when
396 the assigment parsing code was trying to determine whether there was a
397 common variable on either side of the equals. Since it didn't see the
398 same variable, it thought it could avoid making copies of the values on
399 the stack during list assignment. Unfortunately, before using those
400 values, the list assignment has to zero out the target array, which
403 The fix was to make pad_findmy search the current statement as well. This
404 was actually a holdover from some old code that was trying to delay
405 introduction of "my" variables until the next statement. This is now
406 done with a different mechanism, so the fix should not adversely affect
409 NETaa13733: s/// doesn't free old string when using copy mode
411 Files patched: pp_ctl.c pp_hot.c
412 When I removed the use of sv_replace(), I simply forgot to free the old char*.
414 NETaa13736: closures leaked memory
416 Files patched: op.c pp.c
417 This is a specific example of a more general bug, fixed as NETaa13760, having
418 to do with reference counts on comppads.
420 NETaa13739: XSUB interface caches gimme in case XSUB clobbers it
422 Files patched: pp_hot.c
423 Applied suggest patch. Also deleted second gimme declaration as redundant.
425 NETaa13760: comppad reference counts were inconsistent
427 Files patched: op.c perl.c pp_ctl.c toke.c
428 All official references to comppads are supposed to be through compcv now,
429 but the transformation was not complete, resulting in memory leakage.
431 NETaa13761: sv_2pv() wrongly preferred IV to NV when SV was readonly
432 From: "Jack R. Lawler"
434 Okay, I understand how this one happened. This is a case where a
435 beneficial fix uncovered a bug elsewhere. I changed the constant
436 folder to prefer integer results over double if the numbers are the
437 same. In this case, they aren't, but it leaves the integer value there
438 anyway because the storage is already allocated for it, and it *might*
439 be used in an integer context. And since it's producing a constant, it
440 sets READONLY. Unfortunately, sv_2pv() bogusly preferred the integer
441 value to the double when READONLY was set. This never showed up if you
444 print 1.4142135623731;
446 because in that case, there was already a string value.
449 NETaa13772: shmwrite core dumps consistently
451 Files patched: opcode.h opcode.pl
452 The shmwrite operator is a list operator but neglected to push a stack
453 mark beforehand, because an 'm' was missing from opcode.pl.
455 NETaa13773: $. was misdocumented as read-only.
457 Files patched: pod/perlvar.pod
458 <1.array-element-read-only>
459 % perl -le '$,=", "; $#w=5; for (@w) { $_=1; } print @w'
460 Modification of a read-only value attempted at -e line 1.
461 % perl4 -le '$,=", "; $#w=5; for (@w) { $_=1; } print @w'
464 This one may stay the way it is for performance reasons.
471 % perl -e 'BEGIN { local $/ = ""; } print "$.:$_" while <>;' abc
475 % perl -e '{ local $/ = ""; } print "$.:$_" while <>;' abc
480 $/ wasn't initialized early enough, so local set it back to permanently
481 undefined on exit from the block.
484 % perl -le 'print grep(/^-/ ? ($x=$_) x 0 : 1, "a", "-b", "c");'
487 % perl4 -le 'print grep(/^-/ ? ($x=$_) x 0 : 1, "a", "-b", "c");'
490 An extra mark was left on the stack if (('x') x $repeat) was used in a scalar
493 <4.input-lineno-assign>
494 # perl -w does not complain about assignment to $. (Is this just a feature?)
495 # perlvar.pod says "This variable should be considered read-only."
500 % perl -wnle '$. = 10 if $. == 2; print "$.:$_"' abc
507 <5.local-soft-ref.bug>
508 % perl -e 'local ${"a"}=1;'
509 zsh: 529 segmentation fault perl -e 'local ${"a"}=1;'
512 Can't localize a reference at -e line 1.
515 % perl -e 'package foo; sub foo { 1; } package main; $_ = foo::foo(); print'
518 package readline; sub foo { 1; } package main; $_ = readline::foo(); print'
519 Undefined subroutine &main::foo called at -e line 1.
521 package readline; sub foo { 1; } package main; $_ = &readline::foo(); print'
524 Now treats foo::bar correctly even if foo is a keyword.
526 <7.page-head-set-to-null-string>
528 #From: russell@ccu1.auckland.ac.nz (Russell Fulton)
529 #Newsgroups: comp.lang.perl
530 #Subject: This script causes Perl 5.00 to sementation fault
531 #Date: 15 Nov 1994 00:11:37 GMT
532 #Message-ID: <3a8ubp$jrj@net.auckland.ac.nz>
534 select((select(STDOUT), $^='')[0]); #this is the critical line
545 zsh: 1799 segmentation fault perl /tmp/page-head
548 Undefined top format "main::" called at ./try line 11.
552 % perl -le 'sub foo {0}; $x[0]=0;$x[foo]<=0'
553 Unterminated <> operator at -e line 1.
554 % perl -le 'sub foo {0}; $x[0]=0;$x[foo()]<=0'
556 A right square bracket now forces expectation of an operator.
558 <9.unary-minus-to-regexp-var>
560 #From: Michael Cook <mcook@cognex.com>
561 #Newsgroups: comp.lang.perl
562 #Subject: bug: print -$1
563 #Date: 01 Feb 1995 15:31:25 GMT
564 #Message-ID: <MCOOK.95Feb1103125@erawan.cognex.com>
577 Apparently already fixed in my copy.
581 ## Offset values are changed for my machine.
583 #From: augustin@gdstech.grumman.com (Conrad Augustin)
584 #Subject: perl5 vec() bug?
585 #Message-ID: <1994Nov22.193728.25762@gdstech.grumman.com>
586 #Date: Tue, 22 Nov 1994 19:37:28 GMT
588 #The following two statements each produce a segmentation fault in perl5:
590 #vec($a, 21406, 32) = 1; # seg fault
591 vec($a, 42813, 16) = 1; # seg fault
593 #When the offset values are one less, all's well:
594 #vec($a, 21405, 32) = 1; # ok
595 #vec($a, 42812, 16) = 1; # ok
597 #Interestingly, this is ok for all high values of N:
598 #$N=1000000; vec($a, $N, 8) = 1;
601 zsh: 1806 segmentation fault perl vec-bug
603 Can't reproduce this one.
606 NETaa13773: $/ not correctly localized in BEGIN
607 Files patched: perl.c
610 NETaa13773: foo::bar was misparsed if foo was a reserved word
611 Files patched: toke.c toke.c
614 NETaa13773: right square bracket didn't force expectation of operator
615 Files patched: toke.c
618 NETaa13773: scalar ((x) x $repeat) left stack mark
622 NETaa13778: -w coredumps on <$>
624 Files patched: pp_hot.c toke.c
625 Now produces suggested error message. Also installed guard in warning code
628 NETaa13779: foreach didn't use savestack mechanism
630 Files patched: cop.h pp_ctl.c
631 The foreach mechanism saved the old scalar value on the context stack
632 rather than the savestack. It could consequently get out of sync if
633 unexpectedly unwound.
635 NETaa13785: GIMME sometimes used wrong context frame
637 Files patched: embed.h global.sym op.h pp_ctl.c proto.h
638 The expression inside the return was taking its context from the immediately
639 surrounding block rather than the innermost surrounding subroutine call.
641 NETaa13797: could modify sv_undef through auto-vivification
642 From: Ilya Zakharevich
644 Inserted the missing check for readonly values on auto-vivification.
646 NETaa13798: if (...) {print} treats print as quoted
648 Files patched: toke.c
649 The trailing paren of the condition was setting expectations to XOPERATOR
650 rather than XBLOCK, so it was being treated like ${print}.
652 NETaa13926: commonality was not detected in assignments using COND_EXPR
654 Files patched: opcode.h opcode.pl
655 The assignment compiler didn't check the 2nd and 3rd args of a ?:
656 for commonality. It still doesn't, but I made ?: into a "dangerous"
657 operator so it is forced to treat it as common.
659 NETaa13957: was marking the PUSHMARK as modifiable rather than the arg
661 Files patched: op.c sv.c
662 It was marking the PUSHMARK as modifiable rather than the arg.
664 NETaa13962: documentation of behavior of scalar <*> was unclear
665 From: Tom Christiansen
666 Files patched: pod/perlop.pod
667 Added the following to perlop:
669 A glob only evaluates its (embedded) argument when it is starting a new
670 list. All values must be read before it will start over. In a list
671 context this isn't important, because you automatically get them all
672 anyway. In a scalar context, however, the operator returns the next value
673 each time it is called, or a FALSE value if you've just run out. Again,
674 FALSE is returned only once. So if you're expecting a single value from
675 a glob, it is much better to say
683 because the latter will alternate between returning a filename and
687 NETaa13986: split ignored /m pattern modifier
688 From: Winfried Koenig
690 Fixed to work like m// and s///.
692 NETaa13992: regexp comments not seen after + in non-extended regexp
694 Files patched: regcomp.c
695 The code to skip regexp comments was guarded by a conditional that only
696 let it work when /x was in effect.
698 NETaa14014: use subs should not count as definition, only as declaration
701 On *foo = \&bar, doesn't set GVf_IMPORTED if foo and bar are in same package.
703 NETaa14021: sv_inc and sv_dec "upgraded" magical SV to non-magical
707 The sv_inc() and sv_dec() routines "upgraded" null magical SVs to non-magical.
709 NETaa14086: require should check tainting
710 From: Karl Simon Berg
711 Files patched: pp_ctl.c
712 Since we shouldn't allow tainted requires anyway, it now says:
714 Insecure dependency in require while running with -T switch at tst.pl line 1.
716 NETaa14104: negation fails on magical variables like $1
719 Negation was failing on magical values like $1. It was testing the wrong
720 bits and also failed to provide a final "else" if none of the bits matched.
722 NETaa14107: deep sort return leaked contexts
723 From: Quentin Fennessy
724 Files patched: pp_ctl.c
725 Needed to call dounwind() appropriately.
727 NETaa14129: attempt to localize via a reference core dumps
729 Files patched: op.c pod/perldiag.pod
730 Now produces an error "Can't localize a reference", with explanation in
733 NETaa14138: substr() and s/// can cause core dump
735 Files patched: pp_hot.c
736 Forgot to call SvOOK_off() on the SV before freeing its string.
738 NETaa14145: ${@INC}[0] dumped core in debugger
741 Now croaks "Bizarre copy of ARRAY in block exit", which is better than
742 a core dump. The fact that ${@INC}[0] means $INC[0] outside the debugger
745 NETaa14147: bitwise assignment ops wipe out byte of target string
747 Files patched: doop.c
748 The code was assuming that the target was not either of the two operands,
749 which is false for an assignment operator.
751 NETaa14153: lexing of lexicals in patterns fooled by character class
753 Files patched: toke.c
754 It never called the dwimmer, which is how it fooled it.
756 NETaa14154: allowed autoloaded methods by recognizing sub method; declaration
759 Made sub method declaration sufficient for autoloader to stop searching on.
761 NETaa14156: shouldn't optimize block scope on tainting
763 Files patched: op.c toke.c
764 I totally disabled the block scope optimization when running tainted.
766 NETaa14157: -T and -B only allowed 1/30 "odd" characters--changed to 1/3
768 Files patched: pp_sys.c
769 Applied suggested patch.
771 NETaa14160: deref of null symbol should produce null list
773 Files patched: pp_hot.c
774 It didn't check for list context before returning undef.
776 NETaa14162: POSIX::gensym now returns a symbol reference
777 From: Josh N. Pritikin
779 Files patched: ext/POSIX/POSIX.pm
780 Applied suggested patch.
782 NETaa14164: POSIX autoloader now distinguishes non-constant "constants"
783 From: Tim Bunce <Tim.Bunce@ig.co.uk>
784 Files patched: ext/POSIX/POSIX.pm ext/POSIX/POSIX.xs
785 The .xs file now distinguishes non-constant "constants" by setting EAGAIN.
786 This will also let us use #ifdef within the .xs file to de-constantify
787 any other macros that happen not to be constants even if they don't use
790 NETaa14166: missing semicolon after "my" induces core dump
792 Files patched: toke.c
793 The parser was left thinking it was still processing a "my", and flubbed.
794 I made it wipe out the "in_my" variable on a syntax error.
796 NETaa14166: missing semicolon after "my" induces core dump"
797 Files patched: toke.c
800 NETaa14206: can now use English and strict at the same time
803 It now counts imported symbols as okay under "use strict".
805 NETaa14206: can now use English and strict at the same time
806 Files patched: gv.c pod/perldiag.pod
809 NETaa14265: elseif now produces severe warning
811 Files patched: pod/perldiag.pod toke.c
812 Now complains explicitly about "elseif".
814 NETaa14279: list assignment propagated taintedness to independent scalars
816 Files patched: pp_hot.c
817 List assignment needed to be modified so that tainting didn't propagate
818 between independent scalar values.
820 NETaa14312: undef in @EXPORTS core dumps
822 Files patched: lib/Exporter.pm
825 Unable to create sub named "t::" at lib/Exporter.pm line 159.
826 Illegal null symbol in @t::EXPORT at -e line 1
827 BEGIN failed--compilation aborted at -e line 1.
830 NETaa14312: undef in @EXPORTS core dumps
831 Files patched: pod/perldiag.pod sv.c
834 NETaa14321: literal @array check shouldn't happen inside embedded expressions
836 Files patched: toke.c
837 The general solution to this is to disable the literal @array check within
838 any embedded expression. For instance, this also failed bogusly:
842 The reason fixing this also fixes the s///e problem is that the lexer
843 effectively puts the RHS into a do {} block, making the expression
844 embedded within curlies, as far as the error message is concerned.
846 NETaa14322: now localizes $! during POSIX::AUTOLOAD
848 Files patched: ext/POSIX/POSIX.pm
851 NETaa14324: defined() causes spurious sub existence
852 From: "Andreas Koenig"
853 Files patched: op.c pp.c
854 It called pp_rv2cv which wrongly assumed it could add any sub it referenced.
856 NETaa14336: use Module () forces import of nothing
859 use Module () now refrains from calling import at all.
861 NETaa14353: added special HE allocator
863 Files patched: global.sym
865 NETaa14353: added special HE allocator
866 Files patched: hv.c perl.h
868 NETaa14353: array extension now converts old memory to SV storage.
869 Files patched: av.c av.h sv.c
871 NETaa14353: hashes now convert old storage into SV arenas.
872 Files patched: global.sym
874 NETaa14353: hashes now convert old storage into SV arenas.
875 Files patched: hv.c perl.h
877 NETaa14353: upgraded SV arena allocation
878 Files patched: proto.h
880 NETaa14353: upgraded SV arena allocation
881 Files patched: perl.c sv.c
883 NETaa14422: added rudimentary prototypes
885 Files patched: Makefile.SH op.c op.c perly.c perly.c.diff perly.h perly.y proto.h sv.c toke.c
886 Message-Id: <9509290018.AA21548@scalpel.netlabs.com>
887 To: doughera@lafcol.lafayette.edu (Andy Dougherty)
888 Cc: perl5-porters@africa.nicoh.com
889 Subject: Re: Jumbo Configure patch vs. 1m.
890 Date: Thu, 28 Sep 95 17:18:54 -0700
891 From: lwall@scalpel.netlabs.com (Larry Wall)
893 : No. Larry's currently got the patch pumpkin for all such core perl topics.
895 I dunno whether you should let me have the patch pumpkin or not. To fix
896 a Sev 2 I just hacked in rudimentary prototypes. :-)
898 We can now define true unary subroutines, as well as argumentless
901 sub baz () { 12; } # Must not have argument
902 sub bar ($) { $_[0] * 7 } # Must have exactly one argument
903 sub foo ($@) { print "@_\n" } # Must have at least one argument
904 foo bar baz / 2 || "oops", "is the answer";
906 This prints "42 is the answer" on my machine. That is, it's the same as
908 foo( bar( baz() / 2) || "oops", "is the answer");
910 Attempting to compile
916 Too few arguments for main::foo at ./try line 8, near "foo;"
924 Too many arguments for main::bar at ./try line 8, near "foo;"
928 @array = ('a','b','c');
931 prints "3 a b c" because the $ puts the first arg of foo into scalar context.
933 The main win at this point is that we can say
938 and the user can say AAA + BBB and get 3.
940 I'm not quite sure how this interacts with autoloading though. I fear
941 POSIX.pm will need to say
949 sub _SC_STREAM_MAX ();
950 sub _SC_TZNAME_MAX ();
953 unless we can figure out how to efficiently declare a default prototype
954 at import time. Meaning, not using eval. Currently
958 (the ordinary import mechanism) implicitly stubs &bar with no prototype if
959 &bar is not yet declared. It's almost like you want an AUTOPROTO to
960 go with your AUTOLOAD.
962 Another thing to rub one's 5 o'clock shadow over is that there's no way
963 to apply a prototype to a method call at compile time.
965 And no, I don't want to have the
967 sub howabout ($formal, @arguments) { ... }
973 NETaa14422: couldn't take reference of a prototyped function
977 NETaa14423: use didn't allow expressions involving the scratch pad
979 Files patched: op.c perly.c perly.c.diff perly.y proto.h vms/perly_c.vms
980 Applied suggested patch.
982 NETaa14444: lexical scalar didn't autovivify
983 From: Gurusamy Sarathy
984 Files patched: op.c pp_hot.c
985 It didn't have code in pp_padsv to do the right thing.
987 NETaa14448: caller could dump core when used within an eval or require
988 From: Danny R. Faught
989 Files patched: pp_ctl.c
990 caller() was incorrectly assuming the context stack contained a subroutine
991 context when it in fact contained an eval context.
993 NETaa14451: improved error message on bad pipe filehandle
994 From: Danny R. Faught
995 Files patched: pp_sys.c
996 Now says the slightly more informative
998 Can't use an undefined value as filehandle reference at ./try line 3.
1000 NETaa14462: pp_dbstate had a scope leakage on recursion suppression
1002 Files patched: pp_ctl.c
1003 Swapped the code in question around.
1005 NETaa14482: sv_unref freed ref prematurely at times
1006 From: Gurusamy Sarathy
1008 Made sv_unref() mortalize rather than free the old reference.
1010 NETaa14484: appending string to array produced bizarre results
1012 Also: Malcolm Beattie
1013 Files patched: pp_hot.c
1014 Will now say, "Can't coerce ARRAY to string".
1016 NETaa14525: assignment to globs didn't reset them correctly
1017 From: Gurusamy Sarathy
1019 Applied parts of patch not overridden by subsequent patch.
1021 NETaa14529: a partially matching subpattern could spoof infinity detector
1023 Files patched: regexec.c
1024 A partial match on a subpattern could fool the infinite regress detector
1025 into thinking progress had been made.
1026 The previous workaround prevented another bug (NETaa14529) from being fixed,
1027 so I've backed it out. I'll need to think more about how to detect failure
1028 to progress. I'm still hopeful it's not equivalent to the halting problem.
1030 NETaa14535: patches from Gurusamy Sarathy
1031 From: Gurusamy Sarathy
1032 Files patched: op.c pp.c pp_hot.c regexec.c sv.c toke.c
1033 Applied most recent suggested patches.
1035 NETaa14537: select() can return too soon
1037 Also: Andreas Gustafsson
1038 Files patched: pp_sys.c
1040 NETaa14538: method calls were treated like do {} under loop modifiers
1041 From: Ilya Zakharevich
1042 Files patched: perly.c perly.y
1043 Needed to take the OPf_SPECIAL flag off of entersubs from method reductions.
1044 (It was probably a cut-and-paste error from long ago.)
1046 NETaa14540: foreach (@array) no longer does extra stack copy
1047 From: darrinm@lmc.com
1048 Files patched: Todo op.c pp_ctl.c pp_hot.c
1049 Fixed by doing the foreach(@array) optimization, so it iterates
1050 directly through the array, and can detect the implicit shift from
1053 NETaa14541: new version of perlbug
1054 From: Kenneth Albanowski
1055 Files patched: README pod/perl.pod utils/perlbug.PL
1056 Brought it up to version 1.09.
1058 NETaa14541: perlbug 1.11
1059 Files patched: utils/perlbug.PL
1062 NETaa14548: magic sets didn't check private OK bits
1063 From: W. Bradley Rubenstein
1065 The magic code was getting mixed up between private and public POK bits.
1067 NETaa14550: made ~ magic magical
1070 Applied suggested patch.
1072 NETaa14551: humongous header causes infinite loop in format
1074 Files patched: pp_sys.c
1075 Needed to check for page exhaustion after doing top-of-form.
1077 NETaa14558: attempt to call undefined top format core dumped
1078 From: Hallvard B Furuseth
1079 Files patched: pod/perldiag.pod pp_sys.c
1080 Now issues an error on attempts to call a non-existent top format.
1082 NETaa14561: Gurusamy Sarathy's G_KEEPERR patch
1083 From: Andreas Koenig
1084 Also: Gurusamy Sarathy
1086 Files patched: cop.h interp.sym perl.c perl.h pp_ctl.c pp_sys.c sv.c toke.c
1087 Applied latest patch.
1089 NETaa14581: shouldn't execute BEGIN when there are compilation errors
1090 From: Rickard Westman
1092 Perl should not try to execute BEGIN and END blocks if there's been a
1095 NETaa14582: got SEGV sorting sparse array
1097 Files patched: pp_ctl.c
1098 Now weeds out undefined values much like Perl 4 did.
1099 Now sorts undefined values to the front.
1101 NETaa14582: sort was letting unsortable values through to comparison routine
1102 Files patched: pp_ctl.c
1105 NETaa14585: globs in pad space weren't properly cleaned up
1106 From: Gurusamy Sarathy
1107 Files patched: op.c pp.c pp_hot.c sv.c
1108 Applied suggested patch.
1110 NETaa14614: now does dbmopen with perl_eval_sv()
1112 Files patched: perl.c pp_sys.c proto.h
1113 dbmopen now invokes perl_eval_sv(), which should handle error conditions
1116 NETaa14618: exists doesn't work in GDBM_File
1118 Files patched: ext/GDBM_File/GDBM_File.xs
1119 Applied suggested patch.
1124 Files patched: embed.h global.sym keywords.h keywords.pl opcode.h opcode.pl pp_sys.c toke.c
1125 Applied suggested patch.
1127 NETaa14636: Jumbo Dynaloader patch
1129 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
1130 Applied suggested patches.
1132 NETaa14637: checkcomma routine was stupid about bareword sub calls
1133 From: Tim Bunce <Tim.Bunce@ig.co.uk>
1134 Files patched: toke.c
1135 The checkcomma routine was stupid about bareword sub calls.
1137 NETaa14639: (?i) didn't reset on runtime patterns
1138 From: Mark A. Scheel
1139 Files patched: op.h pp_ctl.c toke.c
1140 It didn't distinguish between permanent flags outside the pattern and
1141 temporary flags within the pattern.
1143 NETaa14649: selecting anonymous globs dumps core
1144 From: Chip Salzenberg
1145 Files patched: cop.h doio.c embed.h global.sym perl.c pp_sys.c proto.h
1146 Applied suggested patch, but reversed the increment and decrement to avoid
1147 decrementing and freeing what we're going to increment.
1149 NETaa14655: $? returned negative value on AIX
1151 Also: Stephen D. Lee
1152 Files patched: pp_sys.c
1153 Applied suggested patch.
1155 NETaa14668: {2,} could match once
1156 From: Hugo van der Sanden
1157 Files patched: regexec.c
1158 When an internal pattern failed a conjecture, it didn't back off on the
1159 number of times it thought it had matched.
1161 NETaa14673: open $undefined dumped core
1162 From: Samuli K{rkk{inen
1163 Files patched: pp_sys.c
1164 pp_open() didn't check its argument for globness.
1166 NETaa14683: stringifies were running pad out of space
1168 Files patched: op.h toke.c
1169 Increased PADOFFSET to a U32, and made lexer not put double-quoted strings
1170 inside OP_STRINGIFY unless they really needed it.
1172 NETaa14689: shouldn't have . in @INC when tainting
1173 From: William R. Somsky
1174 Files patched: perl.c
1175 Now does not put . into @INC when tainting. It may still be added with a
1179 or, to put it at the end,
1181 BEGIN { push(@INC, ".") }
1183 but this is not recommended unless a chdir to a known location has been done
1186 NETaa14690: values inside tainted SVs were ignored
1187 From: "James M. Stern"
1188 Files patched: pp.c pp_ctl.c
1189 It was assuming that a tainted value was a string.
1191 NETaa14692: format name required qualification under use strict
1192 From: Tom Christiansen
1194 Now treats format names the same as subroutine names.
1196 NETaa14695: added simple regexp caching
1198 Files patched: pp_ctl.c
1199 Applied suggested patch.
1201 NETaa14697: regexp comments were sometimes wrongly treated as literal text
1202 From: Tom Christiansen
1203 Files patched: regcomp.c
1204 The literal-character grabber didn't know about extended comments.
1205 N.B. '#' is treated as a comment character whenever the /x option is
1206 used now, so you can't include '#' as a simple literal in /x regexps.
1208 (By the way, Tom, the boxed form of quoting in the previous enclosure is
1209 exceeding antisocial when you want to extract the code from it.)
1211 NETaa14704: closure got wrong outer scope if outer sub was predeclared
1214 The outer scope of the anonymous sub was set to the stub rather than to
1215 the actual subroutine. I kludged it by making the outer scope of the
1216 stub be the actual subroutine, if anything is depending on the stub.
1218 NETaa14705: $foo .= $foo did free memory read
1221 Now modifies address to copy if it was reallocated.
1223 NETaa14709: Chip's FileHandle stuff
1225 Also: Chip Salzenberg
1226 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
1227 Applied suggested patches.
1229 NETaa14711: added (&) and (*) prototypes for blocks and symbols
1230 From: Kenneth Albanowski
1231 Files patched: Makefile.SH op.c perly.c perly.h perly.y toke.c
1232 & now means that it must have an anonymous sub as that argument. If
1233 it's the first argument, the sub may be specified as a block in the
1234 indirect object slot, much like grep or sort, which have prototypes of (&@).
1236 Also added * so you can do things like
1240 myopen(FOO, $filename);
1242 NETaa14713: setuid FROM root now defaults to not do tainting
1244 Files patched: mg.c perl.c pp_hot.c
1245 Applied suggested patch.
1247 NETaa14714: duplicate magics could be added to an SV
1249 Files patched: sv.c sv.c
1250 The sv_magic() routine didn't properly check to see if it already had a
1251 magic of that type. Ordinarily it would have, but it was called during
1252 mg_get(), which forces the magic flags off temporarily.
1254 NETaa14721: sub defined during erroneous do-FILE caused core dump
1255 From: David Campbell
1257 Fixed the seg fault. I couldn't reproduce the return problem.
1259 NETaa14734: ref should never return undef
1261 Files patched: pp.c t/op/overload.t
1262 Now returns null string.
1264 NETaa14751: slice of undefs now returns null list
1266 Files patched: pp.c pp_hot.c
1267 Null list clobberation is now done in lslice, not aassign.
1269 NETaa14789: select coredumped on Linux
1271 Files patched: pp_sys.c
1272 Applied suggested patches, more or less.
1274 NETaa14789: straightened out ins and out of duping
1275 Files patched: lib/IPC/Open3.pm
1278 NETaa14791: implemented internal SUPER class
1279 From: Nick Ing-Simmons
1282 Applied suggested patch.
1284 NETaa14845: s/// didn't handle offset strings
1286 Files patched: pp_ctl.c
1287 Needed a call to SvOOK_off(targ) in pp_substcont().
1289 NETaa14851: Use of << to mean <<"" is deprecated
1291 Files patched: toke.c
1293 NETaa14865: added HINT_BLOCK_SCOPE to "elsif"
1295 Files patched: perly.y
1296 Needed to set HINT_BLOCK_SCOPE on "elsif" to prevent the do block from
1297 being optimized away, which caused the statement transition in elsif
1298 to reset the stack too far back.
1300 NETaa14876: couldn't delete localized GV safely
1302 Files patched: pp.c scope.c
1303 The reference count of the "borrowed" GV needed to be incremented while
1304 there was a reference to it in the savestack.
1306 NETaa14887: couldn't negate magical scalars
1308 Also: Gurusamy Sarathy
1310 Applied suggested patch, more or less. (It's not necessary to test both
1311 SvNIOK and SvNIOKp, since the private bits are always set if the public
1314 NETaa14893: /m modifier was sticky
1316 Files patched: pp_ctl.c
1317 pp_match() and pp_subst() were using an improperly scoped SAVEINT to restore
1318 the value of the internal variable multiline.
1320 NETaa14893: /m modifier was sticky
1321 Files patched: cop.h pp_hot.c
1324 NETaa14916: complete.pl retained old return value
1326 Files patched: lib/complete.pl
1327 Applied suggested patch.
1329 NETaa14928: non-const 3rd arg to split assigned to list could coredump
1330 From: Hans de Graaff
1332 The optimizer was assuming the OP was an OP_CONST.
1334 NETaa14942: substr as lvalue could disable magic
1335 From: Darrell Kindred <dkindred+@cmu.edu>
1337 The substr was disabling the magic of $1.
1339 NETaa14990: "not" not parseable when expecting term
1340 From: "Randal L. Schwartz"
1341 Files patched: perly.c perly.c.diff perly.y vms/perly_c.vms
1342 The NOTOP production needed to be moved down into the terms.
1344 NETaa14993: Bizarre copy of formline
1345 From: Tom Christiansen
1346 Also: Charles Bailey
1348 Applied suggested patch.
1350 NETaa14998: sv_add_arena() no longer leaks memory
1351 From: Andreas Koenig
1352 Files patched: av.c hv.c perl.h sv.c
1353 Now keeps one potential arena "on tap", but doesn't use it unless there's
1354 demand for SV headers. When an AV or HV is extended, its old memory
1355 becomes the next potential arena unless there already is one, in which
1356 case it is simply freed. This will have the desired property of not
1357 stranding medium-sized chunks of memory when extending a single array
1358 repeatedly, but will not degrade when there's no SV demand beyond keeping
1359 one chunk of memory on tap, which generally will be about 250 bytes big,
1360 since it prefers the earlier freed chunk over the later. See the nice_chunk
1363 NETaa14999: $a and $b now protected from use strict and lexical declaration
1364 From: Tom Christiansen
1365 Files patched: gv.c pod/perldiag.pod toke.c
1366 Bare $a and $b are now allowed during "use strict". In addition,
1367 the following diag was added:
1369 =item Can't use "my %s" in sort comparison
1371 (F) The global variables $a and $b are reserved for sort comparisons.
1372 You mentioned $a or $b in the same line as the <=> or cmp operator,
1373 and the variable had earlier been declared as a lexical variable.
1374 Either qualify the sort variable with the package name, or rename the
1378 NETaa15034: use strict refs should allow calls to prototyped functions
1379 From: Roderick Schertler
1380 Files patched: perly.c perly.c.diff perly.y toke.c vms/perly_c.vms
1381 Applied patch suggested by Chip.
1383 NETaa15083: forced $AUTOLOAD to be untainted
1385 Files patched: gv.c pp_hot.c
1386 Stripped any taintmagic from $AUTOLOAD after setting it.
1388 NETaa15084: patch for Term::Cap
1390 Also: Hugo van der Sanden
1391 Files patched: lib/Term/Cap.pm
1392 Applied suggested patch.
1394 NETaa15086: null pattern could cause coredump in s//_$1_/
1395 From: "Paul E. Maisano"
1396 Files patched: cop.h pp_ctl.c
1397 If the replacement pattern was complicated enough to cause pp_substcont
1398 to be called, then it lost track of which REGEXP* it was supposed to
1401 NETaa15087: t/io/pipe.t didn't work on AIX
1402 From: Andy Dougherty
1403 Files patched: t/io/pipe.t
1404 Applied suggested patch.
1406 NETaa15088: study was busted
1407 From: Hugo van der Sanden
1408 Files patched: opcode.h opcode.pl pp.c
1409 It was studying its scratch pad target rather than the argument supplied.
1411 NETaa15090: MSTATS patch
1413 Files patched: global.sym malloc.c perl.c perl.h proto.h
1414 Applied suggested patch.
1416 NETaa15098: longjmp out of magic leaks memory
1417 From: Chip Salzenberg
1418 Files patched: mg.c sv.c
1419 Applied suggested patch.
1421 NETaa15102: getpgrp() is broken if getpgrp2() is available
1422 From: Roderick Schertler
1423 Files patched: perl.h pp_sys.c
1424 Applied suggested patch.
1426 NETaa15103: prototypes leaked opcodes
1427 From: Chip Salzenberg
1429 Applied suggested patch.
1431 NETaa15107: quotameta memory bug on all metacharacters
1432 From: Chip Salzenberg
1434 Applied suggested patch.
1436 NETaa15108: Fix for incomplete string leak
1437 From: Chip Salzenberg
1438 Files patched: toke.c
1439 Applied suggested patch.
1441 NETaa15110: couldn't use $/ with 8th bit set on some architectures
1442 From: Chip Salzenberg
1443 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
1444 Applied suggested patches.
1446 NETaa15112: { a_1 => 2 } didn't parse as expected
1447 From: Stuart M. Weinstein
1448 Files patched: toke.c
1449 The little dwimmer was only skipping ALPHA rather than ALNUM chars.
1451 NETaa15123: bitwise ops produce spurious warnings
1452 From: Hugo van der Sanden
1453 Also: Chip Salzenberg
1454 Also: Andreas Gustafsson
1456 Decided to suppress the warning in the conversion routines if merely converting
1457 a temporary, which can never be a user-supplied value anyway.
1459 NETaa15129: #if defined (foo) misparsed in h2ph
1460 From: Roderick Schertler <roderick@gate.net>
1461 Files patched: utils/h2ph.PL
1462 Applied suggested patch.
1464 NETaa15131: some POSIX functions assumed valid filehandles
1465 From: Chip Salzenberg
1466 Files patched: ext/POSIX/POSIX.xs
1467 Applied suggested patch.
1469 NETaa15151: don't optimize split on OPpASSIGN_COMMON
1472 Had to swap the optimization down to after the assignment op is generated
1473 and COMMON is calculated, and then clean up the resultant tree differently.
1475 NETaa15154: MakeMaker-5.18
1476 From: Andreas Koenig
1477 Files patched: MANIFEST lib/ExtUtils/Liblist.pm lib/ExtUtils/MM_VMS.pm lib/ExtUtils/MakeMaker.pm lib/ExtUtils/Mksymlists.pm
1478 Brought it up to 5.18.
1480 NETaa15156: some Exporter tweaks
1481 From: Roderick Schertler
1483 Files patched: lib/Exporter.pm
1484 Also did Tim's Tiny Trivial patch.
1486 NETaa15157: new version of Test::Harness
1487 From: Andreas Koenig
1488 Files patched: lib/Test/Harness.pm
1489 Applied suggested patch.
1491 NETaa15175: overloaded nomethod has garbage 4th op
1492 From: Ilya Zakharevich
1494 Applied suggested patch.
1496 NETaa15179: SvPOK_only shouldn't back off on offset pointer
1497 From: Gutorm.Hogasen@oslo.teamco.telenor.no
1499 SvPOK_only() was calling SvOOK_off(), which adjusted the string pointer
1500 after tr/// has already acquired it. It shouldn't really be necessary
1501 for SvPOK_only() to undo an offset string pointer, since there's no
1502 conflict with a possible integer value where the offset is stored.
1504 NETaa15193: & now always bypasses prototype checking
1506 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
1507 Turned out to be a big hairy deal because the lexer turns foo() into &foo().
1508 But it works consistently now. Also fixed pod.
1510 NETaa15197: 5.002b2 is 'appending' to $@
1511 From: Gurusamy Sarathy
1512 Files patched: pp_ctl.c
1513 Applied suggested patch.
1515 NETaa15201: working around Linux DBL_DIG problems
1516 From: Kenneth Albanowski
1517 Files patched: hints/linux.sh sv.c
1518 Applied suggested patch.
1520 NETaa15208: SelectSaver
1521 From: Chip Salzenberg
1522 Files patched: MANIFEST lib/SelectSaver.pm
1523 Applied suggested patch.
1525 NETaa15209: DirHandle
1526 From: Chip Salzenberg
1527 Files patched: MANIFEST lib/DirHandle.pm t/lib/dirhand.t
1529 NETaa15210: sysopen()
1530 From: Chip Salzenberg
1531 Files patched: doio.c keywords.pl lib/ExtUtils/typemap opcode.pl pod/perlfunc.pod pp_hot.c pp_sys.c proto.h toke.c
1532 Applied suggested patch. Hope it works...
1534 NETaa15211: use mnemonic names in Safe setup
1535 From: Chip Salzenberg
1536 Files patched: ext/Safe/Safe.pm
1537 Applied suggested patch, more or less.
1539 NETaa15214: prototype()
1540 From: Chip Salzenberg
1541 Files patched: ext/Safe/Safe.pm global.sym keywords.pl opcode.pl pp.c toke.c
1542 Applied suggested patch.
1544 NETaa15217: -w problem with -d:foo
1546 Files patched: perl.c
1547 Applied suggested patch.
1549 NETaa15218: *GLOB{ELEMENT}
1551 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
1553 NETaa15219: Make *x=\*y do like *x=*y
1554 From: Chip Salzenberg
1556 Applied suggested patch.
1558 NETaa15221: Indigestion with Carp::longmess and big eval '...'s
1560 Files patched: lib/Carp.pm
1561 Applied suggested patch.
1563 NETaa15222: VERSION patch for standard extensions
1565 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
1566 Applied suggested patch.
1568 NETaa15222: VERSION patch for standard extensions (reprise)
1569 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
1572 NETaa15227: $i < 10000 should optimize to integer op
1574 Files patched: op.c op.c
1577 for ($i = 0; $i < 100000; $i++) {
1581 takes about one quarter the memory if the optimizer decides that it can
1582 use an integer < comparison rather than floating point. It now does so
1583 if one side is an integer constant and the other side a simple variable.
1584 This should really help some of our benchmarks. You can still force a
1585 floating point comparison by using 100000.0 instead.
1587 NETaa15228: CPerl-mode patch
1588 From: Ilya Zakharevich
1589 Files patched: emacs/cperl-mode.el
1590 Applied suggested patch.
1592 NETaa15231: Symbol::qualify()
1593 From: Chip Salzenberg
1594 Files patched: ext/FileHandle/FileHandle.pm gv.c lib/SelectSaver.pm lib/Symbol.pm pp_hot.c
1595 Applied suggested patch.
1597 NETaa15236: select select broke under use strict
1598 From: Chip Salzenberg
1600 Instead of inventing a new bit, I just turned off the HINT_STRICT_REFS bit.
1601 I don't think it's worthwhile distinguishing between qualified or unqualified
1604 NETaa15237: use vars
1606 Files patched: MANIFEST gv.c lib/subs.pm lib/vars.pm sv.c
1608 NETaa15240: keep op names _and_ descriptions
1609 From: Chip Salzenberg
1610 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
1611 Applied suggested patch.
1613 NETaa15259: study doesn't unset on string modification
1615 Files patched: mg.c pp.c
1616 Piggybacked on m//g unset magic to unset the study too.
1618 NETaa15276: pick a better initial cxstack_max
1619 From: Chip Salzenberg
1620 Files patched: perl.c
1621 Added fudge in, and made it calculate how many it could fit into (most of) 8K,
1622 to avoid getting 16K of Kingsley malloc.
1624 NETaa15287: numeric comparison optimization adjustments
1627 Applied patch suggested by Chip, with liberalization to >= and <=.
1629 NETaa15299: couldn't eval string containing pod or __DATA__
1630 From: Andreas Koenig
1632 Files patched: toke.c
1633 Basically, eval didn't know how to bypass pods correctly.
1635 NETaa15300: sv_backoff problems
1638 Also: Chip Salzenberg
1639 Files patched: op.c sv.c sv.h
1640 Applied suggested patch.
1642 NETaa15312: Avoid fclose(NULL)
1643 From: Chip Salzenberg
1644 Files patched: toke.c
1645 Applied suggested patch.
1647 NETaa15318: didn't set up perl_init_i18nl14n for export
1648 From: Ilya Zakharevich
1649 Files patched: perl_exp.SH
1650 Applied suggested patch.
1652 NETaa15331: File::Path::rmtree followed symlinks
1653 From: Andreas Koenig
1654 Files patched: lib/File/Path.pm
1655 Added suggested patch, except I did
1657 if (not -l $root and -d _) {
1659 for efficiency, since if -d is true, the -l already called lstat on it.
1661 NETaa15339: sv_gets() didn't reset count
1662 From: alanburlison@unn.unisys.com
1664 Applied suggested patch.
1666 NETaa15341: differentiated importation of different types
1667 From: Chip Salzenberg
1668 Files patched: gv.c gv.h op.c perl.c pp.c pp_ctl.c sv.c sv.h toke.c
1669 Applied suggested patch.
1671 NETaa15342: Consistent handling of e_{fp,tmpname}
1672 From: Chip Salzenberg
1673 Files patched: perl.c pp_ctl.c util.c
1674 Applied suggested patch.
1676 NETaa15344: Safe gets confused about malloc on AIX
1678 Files patched: ext/Safe/Safe.xs
1679 Applied suggested patch.
1681 NETaa15348: -M upgrade
1683 Files patched: perl.c pod/perlrun.pod
1684 Applied suggested patch.
1686 NETaa15369: change in split optimization broke scalar context
1687 From: Ulrich Pfeifer
1689 The earlier patch to make the split optimization pay attention to
1690 OPpASSIGN_COMMON rearranged how the syntax tree is constructed, but kept
1691 the wrong context flags. This causes pp_split() do do the wrong thing.
1693 NETaa15423: can't do subversion numbering because of %5.3f assumptions
1694 From: Andy Dougherty
1695 Files patched: configpm patchlevel.h perl.c perl.h pp_ctl.c
1696 Removed the %5.3f assumptions where appropriate. patchlevel.h now
1697 defines SUBVERSION, which if greater than 0 indicates a development version.
1699 NETaa15424: Sigsetjmp patch
1700 From: Kenneth Albanowski
1701 Files patched: Configure config_h.SH op.c perl.c perl.h pp_ctl.c util.c
1702 Applied suggested patch.
1704 Needed to make install paths absolute.
1705 Files patched: installperl
1708 Files patched: utils/h2xs.PL
1710 makedir() looped on a symlink to a directory.
1711 Files patched: installperl
1714 Files patched: lib/ExtUtils/xsubpp
1720 Nearly all the changes for 5.001 were bug fixes of one variety or another,
1721 so here's the bug list, along with the "resolution" for each of them. If
1722 you wish to correspond about any of them, please include the bug number.
1724 There were a few that can be construed as enhancements:
1725 NETaa13059: now warns of use of \1 where $1 is necessary.
1726 NETaa13512: added $SIG{__WARN__} and $SIG{__DIE__} hooks
1727 NETaa13520: added closures
1728 NETaa13530: scalar keys now resets hash iterator
1729 NETaa13641: added Tim's fancy new import whizbangers
1730 NETaa13710: cryptswitch needed to be more "useable"
1731 NETaa13716: Carp now allows multiple packages to be skipped out of
1732 NETaa13716: now counts imported routines as "defined" for redef warnings
1733 (and, of course, much of the stuff from the perl5-porters)
1735 NETaa12974: README incorrectly said it was a pre-release.
1736 Files patched: README
1738 NETaa13033: goto pushed a bogus scope on the context stack.
1740 Files patched: pp_ctl.c
1741 The goto operator pushed an extra bogus scope onto the context stack. (This
1742 often didn't matter, since many things pop extra unrecognized scopes off.)
1744 NETaa13034: tried to get valid pointer from undef.
1746 Also: Achille Hui, the Day Dreamer
1748 Files patched: pp_sys.c
1749 Now treats undef specially, and calls SvPV_force on any non-numeric scalar
1750 value to get a real pointer to somewhere.
1752 NETaa13035: included package info with filehandles.
1753 From: Jack Shirazi - BIU
1754 Files patched: pp_hot.c pp_sys.c
1755 Now passes a glob to filehandle methods to keep the package info intact.
1757 NETaa13048: didn't give strict vars message on every occurrence.
1760 It now complains about every occurrence. (The bug resulted from an
1761 ill-conceived attempt to suppress a duplicate error message in a
1762 suboptimal fashion.)
1764 NETaa13052: test for numeric sort sub return value fooled by taint magic.
1765 From: Peter Jaspers-Fayer
1766 Files patched: pp_ctl.c sv.h
1767 The test to see if the sort sub return value was numeric looked at the
1768 public flags rather than the private flags of the SV, so taint magic
1769 hid that info from the sort.
1771 NETaa13053: forced a2p to use byacc
1772 From: Andy Dougherty
1773 Files patched: MANIFEST x2p/Makefile.SH x2p/a2p.c
1774 a2p.c is now pre-byacced and shipped with the kit.
1776 NETaa13055: misnamed constant in previous patch.
1777 From: Conrad Augustin
1778 Files patched: op.c op.h toke.c
1779 The tokener translates $[ to a constant, but with a special marking in case
1780 the constant gets assigned to or localized. Unfortunately, the marking
1781 was done with a combination of OPf_SPECIAL and OPf_MOD that was easily
1782 spoofed. There is now a private OPpCONST_ARYLEN flag for this purpose.
1784 NETaa13055: use of OPf_SPECIAL for $[ lvaluehood was too fragile.
1785 Files patched: op.c op.h toke.c
1788 NETaa13056: convert needs to throw away any number info on its list.
1789 From: Jack Shirazi - BIU
1791 The listiness of the argument list leaked out to the subroutine call because
1792 of how prepend_elem and append_elem reuse an existing list. The convert()
1793 routine just needs to discard any listiness it finds on its argument.
1795 NETaa13058: AUTOLOAD shouldn't assume size of @_ is meaningful.
1796 From: Florent Guillaume
1797 Files patched: ext/DB_File/DB_File.pm ext/Fcntl/Fcntl.pm ext/GDBM_File/GDBM_File.pm ext/Socket/Socket.pm h2xs.SH
1798 I just deleted the optimization, which is silly anyway since the eventual
1799 subroutine definition is cached.
1801 NETaa13059: now warns of use of \1 where $1 is necessary.
1802 From: Gustaf Neumann
1803 Files patched: toke.c
1806 Can't use \1 to mean $1 in expression at foo line 2
1808 along with an explanation in perldiag.
1810 NETaa13060: no longer warns on attempt to read <> operator's transition state.
1812 Files patched: pp_hot.c
1813 No longer warns on <> operator's transitional state.
1815 NETaa13140: warning said $ when @ would be more appropriate.
1816 From: David J. MacKenzie
1817 Files patched: op.c pod/perldiag.pod
1820 (Did you mean $ or @ instead of %?)
1822 and added more explanation to perldiag.
1824 NETaa13149: was reading freed memory to make incorrect error message.
1825 Files patched: pp_ctl.c
1826 It was reading freed memory to make an error message that would be
1827 incorrect in any event because it had the inner filename rather than
1830 NETaa13149: confess was sometimes less informative than croak
1832 Files patched: lib/Carp.pm
1835 NETaa13150: stderr needs to be STDERR in package
1837 Files patched: lib/File/CheckTree.pm
1838 Also fixed pl2pm to translate the filehandles to uppercase.
1840 NETaa13150: uppercases stdin, stdout and stderr
1841 Files patched: pl2pm
1844 NETaa13154: array assignment didn't notice package magic.
1845 From: Brian Reichert
1846 Files patched: pp_hot.c
1847 The list assignment operator looked for only set magic, but set magic is
1848 only on the elements of a magical hash, not on the hash as a whole. I made
1849 the operator look for any magic at all on the target array or hash.
1851 NETaa13155: &DB::DB left trash on the stack.
1853 Files patched: lib/perl5db.pl pp_ctl.c
1854 The call by pp_dbstate() to &DB::DB left trash on the stack. It now
1855 calls DB in list context, and DB returns ().
1857 NETaa13156: lexical variables didn't show up in debugger evals.
1860 The code that searched back up the context stack for the lexical scope
1861 outside the eval only partially took into consideration that there
1862 might be extra debugger subroutine frames that shouldn't be used, and
1863 ended up comparing the wrong statement sequence number to the range of
1864 valid sequence numbers for the scope of the lexical variable. (There
1865 was also a bug fixed in passing that caused the scope of lexical to go
1866 clear to the end of the subroutine even if it was within an inner block.)
1868 NETaa13157: any request for autoloaded DESTROY should create a null one.
1869 From: Tom Christiansen
1870 Files patched: lib/AutoLoader.pm
1871 If DESTROY.al is not located, it now creates sub DESTROY {} automatically.
1873 NETaa13158: now preserves $@ around destructors while leaving eval.
1875 Files patched: pp_ctl.c
1876 Applied supplied patch, except the whole second hunk can be replaced with
1878 sv_insert(errsv, 0, 0, message, strlen(message));
1880 NETaa13160: clarified behavior of split without arguments
1882 Files patched: pod/perlfunc.pod
1883 Clarified the behavior of split without arguments.
1885 NETaa13162: eval {} lost list/scalar context
1888 LEAVETRY didn't propagate number to ENTERTRY.
1890 NETaa13163: clarified documentation of foreach using my variable
1891 From: Tom Christiansen
1892 Files patched: pod/perlsyn.pod
1893 Explained that foreach using a lexical is still localized.
1895 NETaa13164: the dot detector for the end of formats was over-rambunctious.
1897 Files patched: toke.c
1898 The dot detector for the end of formats was over-rambunctious. It would
1899 pick up any dot that didn't have a space in front of it.
1901 NETaa13165: do {} while 1 never linked outer block into next chain.
1904 When the conditional of do {} while 1; was optimized away, it confused the
1905 postfix order construction so that the block that ordinarily sits around the
1906 whole loop was never executed. So when the loop tried to unstack between
1907 iterations, it got the wrong context, and blew away the lexical variables
1908 of the outer scope. Fixed it by introducing a NULL opcode that will be
1909 optimized away later.
1911 NETaa13167: coercion was looking at public bits rather than private bits.
1912 From: Randal L. Schwartz
1913 Also: Thomas Riechmann
1916 There were some bad ifdefs around the various varieties of set*id(). In
1917 addition, tainting was interacting badly with assignment to $> because
1918 sv_2iv() was examining SvPOK rather than SvPOKp, and so couldn't coerce
1919 a string uid to an integer one.
1921 NETaa13167: had some ifdefs wrong on set*id.
1922 Files patched: mg.c pp_hot.c
1925 NETaa13168: relaxed test for comparison of new and old fds
1926 From: Casper H.S. Dik
1927 Files patched: t/lib/posix.t
1928 I relaxed the comparison to just check that the new fd is greater.
1930 NETaa13169: autoincrement can corrupt scalar value state.
1932 Also: Tom Christiansen
1934 It assumed a PV didn't need to be upgraded to become an NV.
1936 NETaa13169: previous patch could leak a string pointer.
1940 NETaa13170: symbols missing from global.sym
1942 Files patched: global.sym
1943 Applied suggested patch.
1945 NETaa13171: \\ in <<'END' shouldn't reduce to \.
1946 From: Randal L. Schwartz
1947 Files patched: toke.c
1948 <<'END' needed to bypass ordinary single-quote processing.
1950 NETaa13172: 'use integer' turned off magical autoincrement.
1951 From: Erich Rickheit KSC
1952 Files patched: pp.c pp_hot.c
1953 The integer versions of the increment and decrement operators were trying too
1954 hard to be efficient.
1956 NETaa13172: deleted duplicate increment and decrement code
1957 Files patched: opcode.h opcode.pl pp.c
1960 NETaa13173: install should make shared libraries executable.
1961 From: Brian Grossman
1964 Files patched: installperl
1965 Now gives permission 555 to any file ending with extension specified by $dlext.
1967 NETaa13176: ck_rvconst didn't free the const it used up.
1970 I checked in many random memory leaks under this bug number, since it
1971 was an eval that brought many of them out.
1973 NETaa13176: didn't delete XRV for temp ref of destructor.
1977 NETaa13176: didn't delete op_pmshort in matching operators.
1981 NETaa13176: eval leaked the name of the eval.
1982 Files patched: scope.c
1985 NETaa13176: gp_free didn't free the format.
1989 NETaa13176: minor leaks in loop exits and constant subscript optimization.
1993 NETaa13176: plugged some duplicate struct allocation memory leaks.
1994 Files patched: perl.c
1997 NETaa13176: sv_clear of an FM didn't clear anything.
2001 NETaa13176: tr/// didn't mortalize its return value.
2005 NETaa13177: SCOPE optimization hid line number info
2006 From: David J. MacKenzie
2007 Also: Hallvard B Furuseth
2009 Every pass on the syntax tree has to keep track of the current statement.
2010 Unfortunately, the single-statement block was optimized into a single
2011 statement between the time the variable was parsed and the time the
2012 void code scan was done, so that pass didn't see the OP_NEXTSTATE
2013 operator, because it has been optimized to an OP_NULL.
2015 Fortunately, null operands remember what they were, so it was pretty easy
2016 to make it set the correct line number anyway.
2018 NETaa13178: some linux doesn't handle nm well
2020 Files patched: hints/linux.sh
2021 Applied supplied patch.
2023 NETaa13180: localized slice now pre-extends array
2026 A localized slice now pre-extends its array to avoid reallocation during
2027 the scope of the local.
2029 NETaa13181: m//g didn't keep track of whether previous match matched null.
2030 From: "philippe.verdret"
2031 Files patched: mg.h pp_hot.c
2032 A pattern isn't allowed to match a null string in the same place twice in
2033 a row. m//g wasn't keeping track of whether the previous match matched
2036 NETaa13182: now includes whitespace as a regexp metacharacter.
2038 Files patched: toke.c
2039 scan_const() now counts " \t\n\r\f\v" as metacharacters when scanning a pattern.
2041 NETaa13183: sv_setsv shouldn't try to clone an object.
2044 The sv_mortalcopy() done by the return in STORE called sv_setsv(),
2045 which cloned the object. sv_setsv() shouldn't be in the business of
2048 NETaa13184: bogus warning on quoted signal handler name removed.
2050 Files patched: toke.c
2051 Now doesn't complain unless the first non-whitespace character after the =
2052 is an alphabetic character.
2054 NETaa13186: now croaks on chop($')
2055 From: Casper H.S. Dik
2056 Files patched: doop.c
2057 Now croaks on chop($') and such.
2059 NETaa13187: "${foo::bar}" now counts as mere delimitation, not as a bareword.
2061 Files patched: toke.c
2062 "${foo::bar}" now counts as mere delimitation, not as a bareword inside a
2065 NETaa13188: for backward compatibility, looks for "perl -" before "perl".
2066 From: Russell Mosemann
2067 Files patched: toke.c
2068 Now allows non-whitespace characters on the #! line between the "perl"
2071 NETaa13188: now allows non-whitespace after #!...perl before switches.
2072 Files patched: toke.c
2075 NETaa13189: derivative files need to be removed before recreation
2077 Also: Dick Middleton
2078 Also: David J. MacKenzie
2079 Files patched: embed_h.sh x2p/Makefile.SH
2080 Fixed various little nits as suggested in several messages.
2082 NETaa13190: certain assignments can spoof pod directive recognizer
2083 From: Ilya Zakharevich
2084 Files patched: toke.c
2085 The lexer now only recognizes pod directives where a statement is expected.
2087 NETaa13194: now returns undef when there is no curpm.
2088 From: lusol@Dillon.CC.Lehigh.EDU
2090 Since there was no regexp prior to the "use", it was returning whatever the
2091 last successful match was within the "use", because there was no current
2092 regexp, so it treated it as a normal variable. It now returns undef.
2094 NETaa13195: semop had one S too many.
2095 From: Joachim Huober
2096 Files patched: opcode.pl
2097 The entry in opcode.pl had one too many S's.
2099 NETaa13196: always assumes it's a Perl script if -c is used.
2101 Files patched: toke.c
2102 It now will assume it's a Perl script if the -c switch is used.
2104 NETaa13197: changed implicit -> message to be more understandable.
2106 Files patched: op.c pod/perldiag.pod
2107 I changed the error message to be more understandable. It now says
2109 Can't use subscript on sort...
2112 NETaa13201: added OPpCONST_ENTERED flag to properly enter filehandle symbols.
2113 From: E. Jay Berkenbilt
2114 Also: Tom Christiansen
2115 Files patched: op.c op.h toke.c
2116 The grammatical reduction of a print statement didn't properly count
2117 the filehandle as a symbol reference because it couldn't distinguish
2118 between a symbol entered earlier in the program and a symbol entered
2119 for the first time down in the lexer.
2121 NETaa13203: README shouldn't mention uperl.o any more.
2123 Files patched: README
2125 NETaa13204: .= shouldn't warn on uninitialized target.
2127 Files patched: pp_hot.c
2128 No longer warns on uninitialized target of .= operator.
2130 NETaa13206: handy macros in XSUB.h
2132 Files patched: XSUB.h
2133 Added suggested macros.
2135 NETaa13228: commonality checker didn't treat lexicals as variables.
2136 From: mcook@cognex.com
2137 Files patched: op.c opcode.pl
2138 The list assignment operator tries to avoid unnecessary copies by doing the
2139 assignment directly if there are no common variables on either side of the
2140 equals. Unfortunately, the code that decided that only recognized references
2141 to dynamic variables, not lexical variables.
2143 NETaa13229: fixed sign stuff for complement, integer coercion.
2145 Files patched: perl.h pp.c sv.c
2146 Fixed ~0 and integer coercions.
2148 NETaa13230: no longer tries to reuse scratchpad temps if tainting in effect.
2151 I haven't reproduced it, but I believe the problem is the reuse of scratchpad
2152 temporaries between statements. I've made it not try to reuse them if
2153 tainting is in effect.
2155 NETaa13231: *foo = *bar now prevents typo warnings on "foo"
2158 Aliasing of the form *foo = *bar is now protected from the typo warnings.
2159 Previously only the *foo = \$bar form was.
2161 NETaa13235: require BAREWORD now introduces package name immediately.
2163 Files patched: toke.c
2164 require BAREWORD now introduces package name immediately. This lets the
2165 method intuit code work right even though the require hasn't actually run
2168 NETaa13289: didn't calculate correctly using arybase.
2170 Files patched: pp.c pp_hot.c
2171 The runtime code didn't use curcop->cop_arybase correctly.
2173 NETaa13301: store now throws exception on error
2174 From: Barry Friedman
2175 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
2176 Changed warn to croak in ext/*DBM_File/*.xs.
2178 NETaa13302: ctime now takes Time_t rather than Time_t*.
2179 From: Rodger Anderson
2180 Files patched: ext/POSIX/POSIX.xs
2181 Now declares a Time_t and takes the address of that in CODE.
2183 NETaa13302: shorter way to do this patch
2184 Files patched: ext/POSIX/POSIX.xs
2187 NETaa13304: could feed too large $@ back into croak, whereupon it croaked.
2189 Files patched: perl.c
2190 callist() could feed $@ back into croak with more than a bare %s. (croak()
2191 handles long strings with a bare %s okay.)
2193 NETaa13305: compiler misoptimized RHS to outside of s/a/print/e
2194 From: Brian S. Cashman <bsc@umich.edu>
2196 The syntax tree was being misconstructed because the compiler felt that
2197 the RHS was invariant, so it did it outside the s///.
2199 NETaa13314: assigning mortal to lexical leaks
2202 In stealing strings, sv_setsv was checking SvPOK to see if it should free
2203 the destination string. It should have been checking SvPVX.
2205 NETaa13316: wait4pid now recalled when errno == EINTR
2206 From: Robert J. Pankratz
2207 Files patched: pp_sys.c util.c
2208 system() and the close() of a piped open now recall wait4pid if it returned
2209 prematurely with errno == EINTR.
2211 NETaa13329: needed to localize taint magic
2213 Files patched: sv.c doio.c mg.c pp_hot.c pp_sys.c scope.c taint.c
2214 Taint magic is now localized better, though I had to resort to a kludge
2215 to allow a value to be both tainted and untainted simultaneously during
2220 when $_[0] is a reference to the variable $foo already.
2222 NETaa13341: clarified interaction of AnyDBM_File::ISA and "use"
2224 Files patched: pod/modpods/AnyDBMFile.pod
2225 The doc was misleading.
2227 NETaa13342: grep and map with block would enter block but never leave it.
2230 The compiler use some sort-checking code to handle the arguments of
2231 grep and map. Unfortunately, this wiped out the block exit opcode while
2232 leaving the block entry opcode. This doesn't matter to sort, but did
2233 matter to grep and map. It now leave the block entry intact.
2235 The reason it worked without the my is because the block entry and exit
2236 were optimized away to an OP_SCOPE, which it doesn't matter if it's there
2239 NETaa13343: goto needed to longjmp when in a signal handler.
2240 From: Robert Partington
2241 Files patched: pp_ctl.c
2242 goto needed to longjmp() when in a signal handler to get back into the
2243 right run() context.
2246 NETaa13344: strict vars shouldn't apply to globs or filehandles.
2249 Filehandles and globs will be excepted from "strict vars", so that you can
2250 do the standard Perl 4 trick of
2259 NETaa13345: assert.pl didn't use package DB
2261 Files patched: lib/assert.pl
2264 NETaa13348: av_undef didn't free scalar representing $#foo.
2267 av_undef didn't free scalar representing $#foo.
2269 NETaa13349: sort sub accumulated save stack entries
2271 Files patched: pp_ctl.c
2272 COMMON only gets set if assigning to @_, which is reasonable. Most of the
2273 problem was a memory leak.
2275 NETaa13351: didn't treat indirect filehandles as references.
2276 From: Andy Dougherty
2280 Can't use an undefined value as a symbol reference at ./foo line 3.
2283 NETaa13352: OP_SCOPE allocated as UNOP rather than LISTOP.
2284 From: Andy Dougherty
2287 NETaa13353: scope() didn't release filegv on OP_SCOPE optimization.
2290 When scope() nulled out a NEXTSTATE, it didn't release its filegv reference.
2292 NETaa13355: hv_delete now avoids useless mortalcopy
2294 Files patched: hv.c op.c pp.c pp_ctl.c proto.h scope.c util.c
2295 hv_delete now avoids useless mortalcopy.
2298 NETaa13359: comma operator section missing its heading
2300 Files patched: pod/perlop.pod
2302 NETaa13359: random typo
2303 Files patched: pod/perldiag.pod
2305 NETaa13360: code to handle partial vec values was bogus.
2306 From: Conrad Augustin
2308 The code that Mark J. added a long time ago to handle values that were partially
2309 off the end of the string was incorrect.
2311 NETaa13361: made it not interpolate inside regexp comments
2313 Files patched: toke.c
2314 To avoid surprising people, it no longer interpolates inside regexp
2317 NETaa13362: ${q[1]} should be interpreted like it used to
2319 Files patched: toke.c
2320 Now resolves ${keyword[1]} to $keyword[1] and warns if -w. Likewise for {}.
2322 NETaa13363: meaning of repeated search chars undocumented in tr///
2323 From: Stephen P. Potter
2324 Files patched: pod/perlop.pod
2325 Documented that repeated characters use the first translation given.
2327 NETaa13365: if closedir fails, don't try it again.
2328 From: Frank Crawford
2329 Files patched: pp_sys.c
2330 Now does not attempt to closedir a second time.
2332 NETaa13366: can't do block scope optimization on $1 et al when tainting.
2333 From: Andrew Vignaux
2334 Files patched: toke.c
2335 The tainting mechanism assumes that every statement starts out
2336 untainted. Unfortunately, the scope removal optimization for very
2337 short blocks removed the statementhood of statements that were
2338 attempting to read $1 as an untainted value, with the effect that $1
2339 appeared to be tainted anyway. The optimization is now disabled when
2340 tainting and the block contains $1 (or equivalent).
2342 NETaa13366: fixed this a better way in toke.c.
2346 NETaa13366: need to disable scope optimization when tainting.
2350 NETaa13367: Did a SvCUR_set without nulling out final char.
2351 From: "Rob Henderson" <robh@cs.indiana.edu>
2352 Files patched: doop.c pp.c pp_sys.c
2353 When do_vop set the length on its result string it neglected to null-terminate
2356 NETaa13368: bigrat::norm sometimes chucked sign
2357 From: Greg Kuperberg
2358 Files patched: lib/bigrat.pl
2359 The normalization routine was assuming that the gcd of two numbers was
2360 never negative, and based on that assumption managed to move the sign
2361 to the denominator, where it was deleted on the assumption that the
2362 denominator is always positive.
2364 NETaa13368: botched previous patch
2365 Files patched: lib/bigrat.pl
2368 NETaa13369: # is now a comment character, and \# should be left for regcomp.
2370 Files patched: toke.c
2371 It was not skipping the comment when it skipped the white space, and constructed
2372 an opcode that tried to match a null string. Unfortunately, the previous
2373 star tried to use the first character of the null string to optimize where
2374 to recurse, so it never matched.
2376 NETaa13369: comment after regexp quantifier induced non-match.
2377 Files patched: regcomp.c
2380 NETaa13370: some code assumed SvCUR was of type int.
2381 From: Spider Boardman
2382 Files patched: pp_sys.c
2383 Did something similar to the proposed patch. I also fixed the problem that
2384 it assumed the type of SvCUR was int. And fixed get{peer,sock}name the
2387 NETaa13375: sometimes dontbother wasn't added back into strend.
2388 From: Jamshid Afshar
2389 Files patched: regexec.c
2390 When the /g modifier was used, the regular expression code would calculate
2391 the end of $' too short by the minimum number of characters the pattern could
2394 NETaa13375: sv_setpvn now disallows negative length.
2398 NETaa13376: suspected indirect objecthood prevented recognition of lexical.
2399 From: Gisle.Aas@nr.no
2400 Files patched: toke.c
2401 When $data[0] is used in a spot that might be an indirect object, the lexer
2402 was getting confused over the rule that says the $data in $$data[0] isn't
2403 an array element. (The lexer uses XREF state for both indirect objects
2404 and for variables used as names.)
2406 NETaa13377: -I processesing ate remainder of #! line.
2407 From: Darrell Schiebel
2408 Files patched: perl.c
2409 I made the -I processing in moreswitches look for the end of the string,
2410 delimited by whitespace.
2412 NETaa13379: ${foo} now treated the same outside quotes as inside
2414 Files patched: toke.c
2415 ${bareword} is now treated the same outside quotes as inside.
2417 NETaa13379: previous fix for this bug was botched
2418 Files patched: toke.c
2421 NETaa13381: TEST should check for perl link
2422 From: Andy Dougherty
2423 Files patched: t/TEST
2424 die "You need to run \"make test\" first to set things up.\n" unless -e 'perl';
2427 NETaa13384: fixed version 0.000 botch.
2429 Files patched: installperl
2431 NETaa13385: return 0 from required file loses message
2432 From: Malcolm Beattie
2433 Files patched: pp_ctl.c
2436 NETaa13387: added pod2latex
2437 From: Taro KAWAGISHI
2438 Files patched: MANIFEST pod/pod2latex
2439 Added most recent copy to pod directory.
2441 NETaa13388: constant folding now prefers integer results over double
2442 From: Ilya Zakharevich
2444 Constant folding now prefers integer results over double.
2446 NETaa13389: now treats . and exec as shell metathingies
2448 Files patched: doio.c
2449 Now treats . and exec as shell metathingies.
2451 NETaa13395: eval didn't check taintedness.
2453 Files patched: pp_ctl.c
2455 NETaa13396: $^ coredumps at end of string
2457 Files patched: toke.c
2458 The scan_ident() didn't check for a null following $^.
2460 NETaa13397: improved error messages when operator expected
2462 Files patched: toke.c
2463 Added message (Do you need to predeclare BAR?). Also fixed the missing
2466 NETaa13399: cleanup by Andy
2468 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
2470 NETaa13399: cleanup from Andy
2471 Files patched: MANIFEST
2473 NETaa13399: configuration cleanup
2474 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
2476 NETaa13399: new files from Andy
2477 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
2479 NETaa13399: patch0l from Andy
2480 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
2482 NETaa13399: stuff from Andy
2483 Files patched: Configure MANIFEST Makefile.SH configpm hints/dec_osf.sh hints/linux.sh hints/machten.sh lib/ExtUtils/MakeMaker.pm util.c
2485 NETaa13399: Patch 0k from Andy
2486 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
2488 NETaa13399: Patch 0m from Andy
2489 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
2491 NETaa13400: pod2html update from Bill Middleton
2493 Files patched: pod/pod2html
2495 NETaa13401: Boyer-Moore code attempts to compile string longer than 255.
2496 From: Kyriakos Georgiou
2497 Files patched: util.c
2498 The Boyer-Moore table uses unsigned char offsets, but the BM compiler wasn't
2499 rejecting strings longer than 255 chars, and was miscompiling them.
2501 NETaa13403: missing a $ on variable name
2503 Files patched: installperl
2504 Yup, it was missing.
2506 NETaa13406: didn't wipe out dead match when proceeding to next BRANCH
2507 From: Michael P. Clemens
2508 Files patched: regexec.c
2509 The code to check alternatives didn't invalidate backreferences matched by the
2512 NETaa13407: overload upgrade
2513 From: owner-perl5-porters@nicoh.com
2514 Also: Ilya Zakharevich
2515 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
2516 Applied supplied patch, and fixed bug induced by use of sv_setsv to do
2517 a deep copy, since sv_setsv no longer copies objecthood.
2519 NETaa13409: sv_gets tries to grow string at EOF
2520 From: Harold O Morris
2522 Applied suggested patch, only two statements earlier, since the end code
2523 also does SvCUR_set.
2525 NETaa13410: delaymagic did =~ instead of &= ~
2526 From: Andreas Schwab
2527 Files patched: pp_hot.c
2528 Applied supplied patch.
2530 NETaa13411: POSIX didn't compile under -DLEAKTEST
2531 From: Frederic Chauveau
2532 Files patched: ext/POSIX/POSIX.xs
2533 Used NEWSV instead of newSV.
2535 NETaa13412: new version from Tony Sanders
2537 Files patched: lib/Term/Cap.pm
2538 Installed as Term::Cap.pm
2540 NETaa13413: regmust extractor needed to restart loop on BRANCH for (?:) to work
2542 Files patched: regcomp.c
2543 The BRANCH skipper should have restarted the loop from the top.
2545 NETaa13414: the check for accidental list context was done after pm_short check
2546 From: Michael H. Coen
2547 Files patched: pp_hot.c
2548 Moved check for accidental list context to before the pm_short optimization.
2550 NETaa13418: perlre.pod babbled nonsense about | in character classes
2552 Files patched: pod/perlre.pod
2553 Removed bogus brackets. Now reads:
2554 Note however that "|" is interpreted as a literal with square brackets,
2555 so if you write C<[fee|fie|foe]> you're really only matching C<[feio|]>.
2557 NETaa13419: need to document introduction of lexical variables
2558 From: "Heading, Anthony"
2559 Files patched: pod/perlfunc.pod
2560 Now mentions that lexicals aren't introduced till after the current statement.
2562 NETaa13420: formats that overflowed a page caused endless top of forms
2563 From: Hildo@CONSUL.NL
2564 Files patched: pp_sys.c
2565 If a record is too large to fit on a page, it now prints whatever will
2566 fit and then calls top of form again on the remainder.
2568 NETaa13423: the code to do negative list subscript in scalar context was missing
2569 From: Steve McDougall
2571 The negative subscript code worked right in list context but not in scalar
2572 context. In fact, there wasn't code to do it in the scalar context.
2574 NETaa13424: existing but undefined CV blocked inheritance
2575 From: Spider Boardman
2577 Applied supplied patch.
2579 NETaa13425: removed extra argument to croak
2580 From: "R. Bernstein"
2581 Files patched: regcomp.c
2582 Removed extra argument.
2584 NETaa13427: added return types
2585 From: "R. Bernstein"
2586 Files patched: x2p/a2py.c
2587 Applied suggested patch.
2589 NETaa13427: added static declarations
2590 Files patched: x2p/walk.c
2593 NETaa13428: split was assuming that all backreferences were defined
2594 From: Dave Schweisguth
2596 split was assuming that all backreferences were defined.
2598 NETaa13430: hoistmust wasn't hoisting anchored shortcircuit's length
2599 From: Tom Christiansen
2601 Files patched: toke.c
2603 NETaa13432: couldn't call code ref under debugger
2605 Files patched: op.c pp_hot.c sv.h
2606 The debugging code assumed it could remember a name to represent a subroutine,
2607 but anonymous subroutines don't have a name. It now remembers a CV reference
2610 NETaa13435: 1' dumped core
2612 Files patched: toke.c
2613 Didn't check a pointer for nullness.
2615 NETaa13436: print foo(123) didn't treat foo as subroutine
2616 From: mcook@cognex.com
2617 Files patched: toke.c
2618 Now treats it as a subroutine rather than a filehandle.
2620 NETaa13437: &$::foo didn't think $::foo was a variable name
2621 From: mcook@cognex.com
2622 Files patched: toke.c
2623 Now treats $::foo as a global variable.
2625 NETaa13439: referred to old package name
2626 From: Tom Christiansen
2627 Files patched: lib/Sys/Syslog.pm
2628 Wasn't a strict refs problem after all. It was simply referring to package
2629 syslog, which had been renamed to Sys::Syslog.
2631 NETaa13440: stat operations didn't know what to do with glob or ref to glob
2632 From: mcook@cognex.com
2633 Files patched: doio.c pp_sys.c
2634 Now knows about the kinds of filehandles returned by FileHandle constructors
2637 NETaa13442: couldn't find name of copy of deleted symbol table entry
2638 From: Spider Boardman
2639 Files patched: gv.c gv.h
2640 I did a much simpler fix. When gp_free notices that it's freeing the
2641 master GV, it nulls out gp_egv. The GvENAME and GvESTASH macros know
2642 to revert to gv if egv is null.
2644 This has the advantage of not creating a reference loop.
2646 NETaa13443: couldn't override an XSUB
2647 From: William Setzer
2649 When the newSUB and newXS routines checked for whether the old sub was
2650 defined, they only looked at CvROOT(cv), not CvXSUB(cv).
2652 NETaa13443: needed to do same thing in newXS
2656 NETaa13444: -foo now doesn't warn unless sub foo is defined
2658 Files patched: toke.c
2659 Made it not warn on -foo, unless there is a sub foo defined.
2661 NETaa13451: in scalar context, pp_entersub now guarantees one item from XSUB
2662 From: Nick Gianniotis
2663 Files patched: pp_hot.c
2664 The pp_entersub routine now guarantees that an XSUB in scalar context
2665 returns one and only one value. If there are fewer, it pushes undef,
2666 and if there are more, it returns the last one.
2668 NETaa13457: now explicitly disallows printf format with 'n' or '*'.
2669 From: lees@cps.msu.edu
2670 Files patched: doop.c
2673 Use of n in printf format not supported at ./foo line 3.
2676 NETaa13458: needed to call SvPOK_only() in pp_substr
2679 Needed to call SvPOK_only() in pp_substr.
2681 NETaa13459: umask and chmod now warn about missing initial 0 even with paren
2682 From: Andreas Koenig
2683 Files patched: toke.c
2684 Now skips parens as well as whitespace looking for argument.
2686 NETaa13460: backtracking didn't work on .*? because reginput got clobbered
2687 From: Andreas Koenig
2688 Files patched: regexec.c
2689 When .*? did a probe of the rest of the string, it clobbered reginput,
2690 so the next call to match a . tried to match the newline and failed.
2692 NETaa13475: \(@ary) now treats array as list of scalars
2695 The mod() routine now refrains from marking @ary as an lvalue if it's in parens
2696 and is the subject of an OP_REFGEN.
2698 NETaa13481: accept buffer wasn't aligned good enough
2699 From: Holger Bechtold
2700 Also: Christian Murphy
2701 Files patched: pp_sys.c
2702 Applied suggested patch.
2704 NETaa13486: while (<>) now means while (defined($_ = <>))
2706 Files patched: op.c pod/perlop.pod
2707 while (<HANDLE>) now means while (defined($_ = <HANDLE>)).
2709 NETaa13500: needed DESTROY in FileHandle
2711 Files patched: ext/POSIX/POSIX.pm
2712 Added DESTROY method. Also fixed ungensym to use POSIX:: instead of _POSIX.
2713 Removed ungensym from close method, since DESTROY should do that now.
2715 NETaa13502: now complains if you use local on a lexical variable
2718 Now says something like
2720 Can't localize lexical variable $var at ./try line 6.
2722 NETaa13512: added $SIG{__WARN__} and $SIG{__DIE__} hooks
2724 Files patched: embed.h gv.c interp.sym mg.c perl.h pod/perlvar.pod pp_ctl.c util.c Todo pod/perldiag.pod
2726 NETaa13514: statements before intro of lex var could see lex var
2727 From: William Setzer
2729 When a lexical variable is declared, introduction is delayed until
2730 the start of the next statement, so that any initialization code runs
2731 outside the scope of the new variable. Thus,
2737 should print 3. Unfortunately, the declaration was marked with the
2738 beginning location at the time that "my $y" was processed instead of
2739 when the variable was introduced, so any embedded statements within
2740 an anonymous subroutine picked up the wrong "my". The declaration
2741 is now labelled correctly when the variable is actually introduced.
2743 NETaa13520: added closures
2745 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
2747 NETaa13520: test to see if lexical works in a format now
2748 Files patched: t/op/write.t
2750 NETaa13522: substitution couldn't be used on a substr()
2752 Files patched: pp_ctl.c pp_hot.c
2753 Changed pp_subst not to use sv_replace() anymore, which didn't handle lvalues
2754 and was overkill anyway. Should be slightly faster this way too.
2756 NETaa13525: G_EVAL mode in perl_call_sv didn't return values right.
2757 Files patched: perl.c
2759 NETaa13525: consolidated error message
2761 Files patched: perl.h toke.c
2763 NETaa13525: derived it
2764 Files patched: perly.h
2766 NETaa13525: missing some values from embed.h
2767 Files patched: embed.h
2769 NETaa13525: random cleanup
2770 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
2772 NETaa13525: random cleanup
2773 Files patched: pp_ctl.c util.c
2775 NETaa13527: File::Find needed to export $name and $dir
2777 Files patched: lib/File/Find.pm
2778 They are now exported.
2780 NETaa13528: cv_undef left unaccounted-for GV pointer in CV
2782 Also: Spider Boardman
2785 NETaa13530: scalar keys now resets hash iterator
2787 Files patched: doop.c
2788 scalar keys() now resets the hash iterator.
2790 NETaa13531: h2ph doesn't check defined right
2791 From: Casper H.S. Dik
2792 Files patched: h2ph.SH
2794 NETaa13540: VMS update
2796 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
2798 NETaa13540: got some duplicate code
2799 Files patched: lib/File/Path.pm
2801 NETaa13540: stuff from Charles
2802 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
2804 NETaa13540: tweak from Charles
2805 Files patched: lib/File/Path.pm
2807 NETaa13552: scalar unpack("P4",...) ignored the 4
2810 The optimization that tried to do only one item in a scalar context didn't
2811 realize that the argument to P was not a repeat count.
2813 NETaa13553: now warns about 8 or 9 in octal escapes
2815 Files patched: util.c
2816 Now warns if it finds 8 or 9 before the end of the octal escape sequence.
2817 So \039 produces a warning, but \0339 does not.
2819 NETaa13554: now allows foreach ${"name"}
2822 Instead of trying to remove OP_RV2SV, the compiler now just transmutes it into an
2823 OP_RV2GV, which is a no-op for ordinary variables and does the right
2824 thing for ${"name"}.
2826 NETaa13559: substitution now always checks for readonly
2827 From: Rodger Anderson
2828 Files patched: pp_hot.c
2829 Substitution now always checks for readonly.
2831 NETaa13561: added explanations of closures and curly-quotes
2833 Files patched: pod/perlref.pod
2835 NETaa13562: null components in path cause indigestion
2836 From: Ambrose Kofi Laing
2837 Files patched: lib/Cwd.pm lib/pwd.pl
2839 NETaa13575: documented semantics of negative substr length
2841 Files patched: pod/perlfunc.pod
2842 Documented the fact that negative length now leaves characters off the end,
2843 and while I was at it, made it work right even if offset wasn't 0.
2845 NETaa13575: negative length to substr didn't work when offset non-zero
2849 NETaa13575: random cleanup
2850 Files patched: pod/perlfunc.pod
2853 NETaa13580: couldn't localize $ACCUMULATOR
2855 Files patched: gv.c lib/English.pm mg.c perl.c sv.c
2856 Needed to make $^A a real magical variable. Also lib/English.pm wasn't
2859 NETaa13583: doc mods from Tom
2861 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
2863 NETaa13589: return was enforcing list context on its arguments
2865 Files patched: opcode.pl
2866 A return was being treated like a normal list operator, in that it was
2867 setting list context on its arguments. This was bogus.
2869 NETaa13591: POSIX::creat used wrong argument
2871 Files patched: ext/POSIX/POSIX.pm
2872 Applied suggested patch.
2874 NETaa13605: use strict refs error message now displays bad ref
2876 Files patched: perl.h pod/perldiag.pod pp.c pp_hot.c
2879 Can't use string ("2") as a HASH ref while "strict refs" in use at ./foo line 12.
2881 NETaa13630: eof docs were unclear
2882 From: Hallvard B Furuseth
2883 Files patched: pod/perlfunc.pod
2884 Applied suggested patch.
2886 NETaa13636: $< and $> weren't refetched on undump restart
2887 From: Steve Pearlmutter
2888 Files patched: perl.c
2889 The code in main() bypassed perl_construct on an undump restart, which bypassed
2890 the code that set $< and $>.
2892 NETaa13641: added Tim's fancy new import whizbangers
2894 Files patched: lib/Exporter.pm
2895 Applied suggested patch.
2897 NETaa13649: couldn't AUTOLOAD a symbol reference
2899 Files patched: pp_hot.c
2900 pp_entersub needed to guarantee a CV so it would get to the AUTOLOAD code.
2902 NETaa13651: renamed file had wrong package name
2903 From: Andreas Koenig
2904 Files patched: lib/File/Path.pm
2905 Applied suggested patch.
2907 NETaa13660: now that we're testing distribution we can diagnose RANDBITS errors
2908 From: Karl Glazebrook
2909 Files patched: t/op/rand.t
2910 Changed to suggested algorithm. Also duplicated it to test rand(100) too.
2912 NETaa13660: rand.t didn't test for proper distribution within range
2913 Files patched: t/op/rand.t
2916 NETaa13671: array slice misbehaved in a scalar context
2919 A spurious else prevented the scalar-context-handling code from running.
2921 NETaa13672: filehandle constructors in POSIX don't return failure successfully
2923 Files patched: ext/POSIX/POSIX.pm
2924 Applied suggested patch.
2927 NETaa13678: forced $1 to always be untainted
2930 I believe the bug that triggered this was fixed elsewhere, but just in case,
2931 I put in explicit code to force $1 et al not to be tainted regardless.
2933 NETaa13682: formline doc need to discuss ~ and ~~ policy
2935 Files patched: pod/perlfunc.pod
2937 NETaa13686: POSIX::open and POSIX::mkfifo didn't check tainting
2939 Files patched: ext/POSIX/POSIX.xs
2940 open() and mkfifo() now check tainting.
2942 NETaa13687: new Exporter.pm
2944 Files patched: lib/Exporter.pm
2945 Added suggested changes, except for @EXPORTABLE, because it looks too much
2946 like @EXPORTTABLE. Decided to stick with @EXPORT_OK because it looks more
2947 like an adjunct. Also added an export_tags routine. The keys in the
2948 %EXPORT_TAGS hash no longer use colons, to make the initializers prettier.
2950 NETaa13687: new Exporter.pm
2951 Files patched: ext/POSIX/POSIX.pm
2954 NETaa13694: add sockaddr_in to Socket.pm
2956 Files patched: ext/Socket/Socket.pm
2957 Applied suggested patch.
2959 NETaa13695: library routines should use qw() as good example
2961 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
2962 Applied suggested patch.
2964 NETaa13696: myconfig should be a routine in Config.pm
2965 From: Kenneth Albanowski
2966 Files patched: configpm
2967 Applied suggested patch.
2969 NETaa13704: fdopen closed fd on failure
2970 From: Hallvard B Furuseth
2971 Files patched: doio.c
2972 Applied suggested patch.
2974 NETaa13706: Term::Cap doesn't work
2976 Files patched: lib/Term/Cap.pm
2977 Applied suggested patch.
2979 NETaa13710: cryptswitch needed to be more "useable"
2981 Files patched: embed.h global.sym perl.h toke.c
2982 The cryptswitch_fp function now can operate in two modes. It can
2983 modify the global rsfp to redirect input as before, or it can modify
2984 linestr and return true, indicating that it is not necessary for yylex
2985 to read another line since cryptswitch_fp has just done it.
2987 NETaa13712: new_tmpfile() can't be called as constructor
2989 Files patched: ext/POSIX/POSIX.xs
2990 Now allows new_tmpfile() to be called as a constructor.
2992 NETaa13714: variable method call not documented
2993 From: "Randal L. Schwartz"
2994 Files patched: pod/perlobj.pod
2995 Now indicates that OBJECT->$method() works.
2997 NETaa13715: PACK->$method produces spurious warning
2999 Files patched: toke.c
3000 The -> operator was telling the lexer to expect an operator when the
3001 next thing was a variable.
3003 NETaa13716: Carp now allows multiple packages to be skipped out of
3005 Files patched: lib/Carp.pm
3006 The subroutine redefinition warnings now warn on import collisions.
3008 NETaa13716: Exporter catches warnings and gives a better line number
3009 Files patched: lib/Exporter.pm
3012 NETaa13716: now counts imported routines as "defined" for redef warnings
3013 Files patched: op.c sv.c
3022 The -w switch is much more informative.
3024 References. See t/op/ref.t for examples. All entities in Perl 5 are
3025 reference counted so that it knows when each item should be destroyed.
3027 Objects. See t/op/ref.t for examples.
3029 => is now a synonym for comma. This is useful as documentation for
3030 arguments that come in pairs, such as initializers for associative arrays,
3031 or named arguments to a subroutine.
3033 All functions have been turned into list operators or unary operators,
3034 meaning the parens are optional. Even subroutines may be called as
3035 list operators if they've already been declared.
3037 More embeddible. See main.c and embed_h.sh. Multiple interpreters
3038 in the same process are supported (though not with interleaved
3041 The interpreter is now flattened out. Compare Perl 4's eval.c with
3042 the perl 5's pp.c. Compare Perl 4's 900 line interpreter loop in cmd.c
3043 with Perl 5's 1 line interpreter loop in run.c. Eventually we'll make
3044 everything non-blocking so we can interface nicely with a scheduler.
3046 eval is now treated more like a subroutine call. Among other things,
3047 this means you can return from it.
3049 Format value lists may be spread over multiple lines by enclosing in
3052 You may now define BEGIN and END subroutines for each package. The BEGIN
3053 subroutine executes the moment it's parsed. The END subroutine executes
3054 just before exiting.
3056 Flags on the #! line are interpreted even if the script wasn't
3057 executed directly. (And even if the script was located by "perl -x"!)
3059 The ?: operator is now legal as an lvalue.
3061 List context now propagates to the right side of && and ||, as well
3062 as the 2nd and 3rd arguments to ?:.
3064 The "defined" function can now take a general expression.
3066 Lexical scoping available via "my". eval can see the current lexical
3069 The preferred package delimiter is now :: rather than '.
3071 tie/untie are now preferred to dbmopen/dbmclose. Multiple DBM
3072 implementations are allowed in the same executable, so you can
3073 write scripts to interchange data among different formats.
3075 New "and" and "or" operators work just like && and || but with
3076 a precedence lower than comma, so they work better with list operators.
3078 New functions include: abs(), chr(), uc(), ucfirst(), lc(), lcfirst(),
3081 require with a number checks to see that the version of Perl that is
3082 currently running is at least that number.
3084 Dynamic loading of external modules is now supported.
3086 There is a new quote form qw//, which is equivalent to split(' ', q//).
3088 Assignment of a reference to a glob value now just replaces the
3089 single element of the glob corresponding to the reference type:
3090 *foo = \$bar, *foo = \&bletch;
3092 Filehandle methods are now supported:
3093 output_autoflush STDOUT 1;
3095 There is now an "English" module that provides human readable translations
3096 for cryptic variable names.
3098 Autoload stubs can now call the replacement subroutine with goto &realsub.
3100 Subroutines can be defined lazily in any package by declaring an AUTOLOAD
3101 routine, which will be called if a non-existent subroutine is called in
3104 Several previously added features have been subsumed under the new
3105 keywords "use" and "no". Saying "use Module LIST" is short for
3106 BEGIN { require Module; import Module LIST; }
3107 The "no" keyword is identical except that it calls "unimport" instead.
3108 The earlier pragma mechanism now uses this mechanism, and two new
3109 modules have been added to the library to implement "use integer"
3110 and variations of "use strict vars, refs, subs".
3112 Variables may now be interpolated literally into a pattern by prefixing
3113 them with \Q, which works just like \U, but backwhacks non-alphanumerics
3114 instead. There is also a corresponding quotemeta function.
3116 Any quantifier in a regular expression may now be followed by a ? to
3117 indicate that the pattern is supposed to match as little as possible.
3119 Pattern matches may now be followed by an m or s modifier to explicitly
3120 request multiline or singleline semantics. An s modifier makes . match
3123 Patterns may now contain \A to match only at the beginning of the string,
3124 and \Z to match only at the end. These differ from ^ and $ in that
3125 they ignore multiline semantics. In addition, \G matches where the
3126 last interation of m//g or s///g left off.
3128 Non-backreference-producing parens of various sorts may now be
3129 indicated by placing a ? directly after the opening parenthesis,
3130 followed by a character that indicates the purpose of the parens.
3131 An :, for instance, indicates simple grouping. (?:a|b|c) will
3132 match any of a, b or c without producing a backreference. It does
3133 "eat" the input. There are also assertions which do not eat the
3134 input but do lookahead for you. (?=stuff) indicates that the next
3135 thing must be "stuff". (?!nonsense) indicates that the next thing
3136 must not be "nonsense".
3138 The negation operator now treats non-numeric strings specially.
3139 A -"text" is turned into "-text", so that -bareword is the same
3140 as "-bareword". If the string already begins with a + or -, it
3141 is flipped to the other sign.
3145 @ now always interpolates an array in double-quotish strings. Some programs
3146 may now need to use backslash to protect any @ that shouldn't interpolate.
3148 Ordinary variables starting with underscore are no longer forced into
3151 s'$lhs'$rhs' now does no interpolation on either side. It used to
3152 interplolate $lhs but not $rhs.
3154 The second and third arguments of splice are now evaluated in scalar
3155 context (like the book says) rather than list context.
3157 Saying "shift @foo + 20" is now a semantic error because of precedence.
3159 "open FOO || die" is now incorrect. You need parens around the filehandle.
3161 The elements of argument lists for formats are now evaluated in list
3162 context. This means you can interpolate list values now.
3164 You can't do a goto into a block that is optimized away. Darn.
3166 It is no longer syntactically legal to use whitespace as the name
3167 of a variable, or as a delimiter for any kind of quote construct.
3169 Some error messages will be different.
3171 The caller function now returns a false value in a scalar context if there
3172 is no caller. This lets library files determine if they're being required.
3174 m//g now attaches its state to the searched string rather than the
3177 "reverse" is no longer allowed as the name of a sort subroutine.
3179 taintperl is no longer a separate executable. There is now a -T
3180 switch to turn on tainting when it isn't turned on automatically.
3182 Symbols starting with _ are no longer forced into package main, except
3183 for $_ itself (and @_, etc.).
3185 Double-quoted strings may no longer end with an unescaped $ or @.
3187 Negative array subscripts now count from the end of the array.
3189 The comma operator in a scalar context is now guaranteed to give a
3190 scalar context to its arguments.
3192 The ** operator now binds more tightly than unary minus.
3194 Setting $#array lower now discards array elements so that destructors
3197 delete is not guaranteed to return the old value for tied arrays,
3198 since this capability may be onerous for some modules to implement.
3200 Attempts to set $1 through $9 now result in a run-time error.