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