Patch for LONG_MAX & co.
[perl.git] / Changes
1 Please note: This file provides a summary of significant changes
2 between versions and sub-versions of Perl, not a complete list
3 of each modification.  If you'd like more detailed information,
4 please consult the comments in the patches on which the relevant
5 release of Perl is based.  (Patches can be found on any CPAN
6 site, in the .../src/5.0 directory for full version releases,
7 or in the .../src/5/0/unsupported directory for sub-version
8 releases.)
9
10 ----------------
11 Version 5.003_04
12 ----------------
13
14 This patch was primarily to fix bugs and to clean up some of
15 the changes made in 5.003_03.  The details are described below.
16 A very brief summary is:
17
18 o Visible Changes to Core Functionality
19
20    -Allow and document permissions for FileHandle::new and
21     IO::File::new.
22    -glob in Safe compartment used to allow shell access; now
23     it's in the same category as `` and system().
24
25 o Configure and build enhancements
26    
27    -perl library name is again -lperl, not -lperl5 in some cases.
28    -Several hint files no longer set -g -DDEBUGGING by default.
29     Instead, they just turn off optimization, since that is
30     probably what was intended.
31    -Include OS/2 and Plan9 updates.
32
33 o Bug fixes
34
35    -SEGV with $_[0] and circular references fixed.
36    -Ilya's debugger patch.
37    -FAKE typeglobs fixed.
38    -truncate with file name now works.
39    -lval substr() no longer coredumps with refs
40    -lval substr now clears lexicals in re-entered scopes.
41    -core dump in caller() for signal handler for __DIE__.
42
43 o Specific Changes
44
45 Here are the specific file-by-file changes.
46     
47 # This is my patch perl5.003_04.pat to perl5.003_03
48 # The full description is below.
49 # Please execute the following commands before applying this patch.
50 # (You can feed this patch to 'sh' to do so.)
51 #  Andy Dougherty               <doughera@lafcol.lafayette.edu>
52
53 # Obsolete perl4 hint file.
54 rm -f hints/dnix.sh
55 # Obsolete
56 rm -f os2/notes
57
58 # We'll create a new test, but patch won't automatically make it
59 # executable.
60 touch t/op/gv.t
61 chmod +x t/op/gv.t
62
63 exit 0
64
65
66 This is patch perl5.003_04.pat to perl version 5.003_03.
67 This takes you from 5.003_03 to 5.003_04.
68
69 To apply this patch, run the above commands,
70 cd to your perl source directory and then type
71
72         patch -p1 -N < perl5.003_04.pat
73
74 The changes are described after each /^Index/ line below.  This is
75 designed so you can examine each change with a command such as
76
77         csplit -k perl5.003_04.pat '/^Index:/' '{99}'
78
79 Patch and enjoy,
80
81     Andy Dougherty              doughera@lafcol.lafayette.edu
82     Dept. of Physics
83     Lafayette College, Easton PA 18042
84
85
86 Index: Changes
87
88     Updated for 5.003_04.
89
90 Index: Configure
91
92     Change name of shared libperl library back to libperl.so.xxx,
93     so that a simple -lperl picks up either libperl.a or
94     libperl.so.xxx.
95
96     Check if $sh='' in case we've reloaded an old config.sh
97
98 Index: INSTALL
99
100     Change name of shared perl library to libperl, instead of
101     libperl5.
102
103     Add notes about fragility of shared libperl and the usefulness
104     of archlib to separate different binaries.
105
106 Index: MANIFEST
107
108     os2/notes removed
109
110     obsolete hints/dnix.sh removed.
111
112     New typeglob test.
113
114 Index: Makefile.SH
115
116     For building shared libperl, relocate whole rule to
117     inside the if test -f $osname/Makefile.SHs case.
118
119 Index: Porting/Glossary
120
121     Updated.
122
123 Index: README.os2
124
125     Updated.
126
127 Index: av.c
128
129     Subject: Re: SEGV with $_[0] and circular references
130
131     Subject: random cleanup
132
133     This patch removes a few obvious redundancies in the source.
134
135 Index: config_H
136
137     Updated.  Note new comments to make AIX happy.
138
139 Index: config_h.SH
140
141     Change /*#define../**/ into /*#define../ **/
142     to make IBM's xlc compiler shut up about nested comments.
143     The /*#define FOO /**/ is a perfectly legal un-nested comment, and
144     I wish IBM would fix it's blasted compiler instead.  In the meantime
145     we'll take mercy on the poor AIX user and get rid of the screenfulls
146     of stupid warning messages.  Thanks to Hallvard B Furuseth
147     <h.b.furuseth@usit.uio.no> for the fix.
148
149 Index: dump.c
150
151     This patch changes neither behavior nor performance.  However, it does
152     reduce code size and improve maintainability by combining some common
153     code in gv_fullname() and gv_efullname().
154
155 Index: ext/FileHandle/FileHandle.pm
156
157     This patch documents the behavior of FileHandle::{new,open} with
158     regard to open modes.  It also documents the exportation of Fcntl
159     constants.
160
161     This patch fixes a bug observed by Tom Christiansen: FileHandle::new
162     didn't allow for file permissions after the file mode.  Here's a patch.
163
164 Index: ext/IO/lib/IO/File.pm
165
166     This patch fixes a bug observed by Tom Christiansen: IO::File::new
167     didn't allow for file permissions after the file mode.  Here's a patch.
168
169     This patch documents the behavior of IO::File::{new,open} with
170     regard to open modes.  It also documents the exportation of Fcntl
171     constants.
172
173 Index: ext/Opcode/Opcode.pm
174
175     Subject: Re: glob in Safe compartment allows shell access
176
177     I've moved the glob op into the same opcode tag as backticks and system
178     and added a comment.
179
180 Index: gv.c
181
182     This patch changes neither behavior nor performance.  However, it does
183     reduce code size and improve maintainability by combining some common
184     code in gv_fullname() and gv_efullname().
185
186 Index: handy.h
187
188     Subject: Patch for LONG_MAX & co.
189
190     Sorry about adding yet another #ifdef forest, but hopefully this
191     should resolve the *_MAX issues permanently. It adds to the
192     previously defined PERL_LONG_MAX, PERL_LONG_MIN, and PERL_ULONG_MAX
193     symbols the complete set of
194     /PERL_U?(CHAR|SHORT|INT|LONG)_(MAX|MIN)/, and installs aliases to
195     those from /(I|U)(8|16|32|V)_(MAX|MIN)/ so that for any standard
196     Perl typedef, like I32 or UV, you can reference I32_MAX or UV_MIN,
197     and get appropriate figures. All references to LONG_(MIN|MAX) are
198     changed appropriately.
199
200     The .c changes have the side effect of making cast_uv properly use quad
201     limits if quads are in use, but longs aren't 64 bit. Hopefully this all
202     works, but I don't have any handy Crays to try it out on.
203
204     Add notes on perl's internal types, specifically Quad_t and IV.
205
206 Index: hints/hpux.sh
207
208     Remove the d_bsdpgrp hint.  The defaults should be ok.
209
210 Index: hints/irix_6_2.sh
211
212     Change optimize=-g to optimize=none to avoid pulling in -DDEBUGGING,
213     unless that's what the user really wants.
214
215 Index: hints/mpeix.sh
216
217     Change optimize=-g to optimize=none to avoid pulling in -DDEBUGGING,
218     unless that's what the user really wants.
219
220 Index: hints/os2.sh
221
222     Fixes for sh vs. bin_sh + cleanup.
223
224 Index: hints/ultrix_4.sh
225
226     Don't call optimize=-g, just call optimize=none.  The -g
227     pulls in -DDEBUGGING, which might not be wanted.
228
229 Index: lib/ExtUtils/MM_Unix.pm
230
231     .C$(obj_ext) removed under OS/2 - conflicts with .c$(obj_ext).
232
233 Index: lib/ExtUtils/xsubpp
234
235     Fix SCOPE?  (See pod/perlxs.pod).
236     Up version number to 1.938.
237
238 Index: lib/Test/Harness.pm
239
240     Add a return value to runtests - non-zero if all tests ran ok,
241     zero otherwise.
242
243 Index: lib/perl5db.pl
244
245     Ilya's debugger patch.
246         Undefined subroutine &Carp::longmess called at
247             /opt/perl5.003_03/lib/perl5db.pl line 1423.
248
249
250     Make perl5db compatible with the recent 'strict refs' enforcement
251     in %SIG.
252
253 Index: malloc.c
254
255     A patch to perl5.003_02/malloc to give a sensible error abort() message
256     in ANSI C, and to give it to stderr instead of stdout.
257
258     Use config_h's STRINGIFY macro instead of pre-ANSI "p".
259
260 Index: mg.c
261
262     Subject: FAKE typeglobs seriously busted (with patch)
263
264     Handling of fake typeglobs (scalars that are really globs
265     in disguise) is seriously busted since 5.002 (it wasn't
266     so in 5.001n).
267     The problem is that mg_get() on a glob calls gv_efullname()
268     which might coerce its first arg to a string.
269
270     Sub-critical patch to conceivably fix some %SIG problems. (Shared hash key
271     weren't being properly detected by some of the sig magic, but as shared
272     hash keys wouldn't normally be used in %SIG it's unlikely this is a
273     significant problem.)
274
275     This patch changes neither behavior nor performance.  However, it does
276     reduce code size and improve maintainability by combining some common
277     code in gv_fullname() and gv_efullname().
278
279 Index: myconfig
280
281     Update perlio-related variables.
282
283 Index: op.c
284
285     This patch changes neither behavior nor performance.  However, it does
286     reduce code size and improve maintainability by combining some common
287     code in gv_fullname() and gv_efullname().
288
289 Index: opcode.h
290
291     Updated.  See opcode.pl.
292
293 Index: opcode.pl
294
295     Subject: Re: truncate with file name does not work (with patch)
296
297     The prototype for truncate was changed so that perl won't die
298     with C<use strict;> when the first arg is a bareword (filehandle).
299     I think it was Tom (as in "tchrist") who brought this up.
300
301     Here's a patch that undoes the damage, makes it work with
302     C<use strict;>, and adds to the testsuite.
303
304 Index: os2/Makefile.SHs
305
306     perllib vs. LIBPERL
307
308 Index: os2/diff.configure
309
310     Updated.
311
312 Index: os2/os2.c
313
314     SH_PATH_INI vs. BIN_SH
315
316 Index: os2/os2ish.h
317
318     SH_PATH_INI added (needed to redefine SH_PATH for binary
319             distribution).
320     SH_PATH is redefined.
321
322 Index: patchlevel.h
323
324     SUBVERSION 4.
325
326 Index: perl.h
327
328     Subject: Patch for LONG_MAX & co.
329
330     Sorry about adding yet another #ifdef forest, but hopefully this
331     should resolve the *_MAX issues permanently. It adds to the
332     previously defined PERL_LONG_MAX, PERL_LONG_MIN, and PERL_ULONG_MAX
333     symbols the complete set of
334     /PERL_U?(CHAR|SHORT|INT|LONG)_(MAX|MIN)/, and installs aliases to
335     those from /(I|U)(8|16|32|V)_(MAX|MIN)/ so that for any standard
336     Perl typedef, like I32 or UV, you can reference I32_MAX or UV_MIN,
337     and get appropriate figures. All references to LONG_(MIN|MAX) are
338     changed appropriately.
339
340     The .c changes have the side effect of making cast_uv properly use quad
341     limits if quads are in use, but longs aren't 64 bit. Hopefully this all
342     works, but I don't have any handy Crays to try it out on.
343
344     Add notes on perl's internal types, specifically Quad_t and IV.
345
346 Index: perlio.c
347
348     Removes an incorrect prototype for setlinebuf from
349     perlio.c because it conflicts with the correct declaration in
350     MachTen's stdio.h (and possibly other stdio's as well).
351
352     Secondly, the code in perlio.c is not handling the (!PERLIO_IS_STDIO &
353     HAS_F[GS]ETPOS) case.  The patch fixes this omission (in a rather lumpen
354     manner).  I don't think this should affect platforms which try to hack a
355     different path through the #ifdef forest, but this assertion would benefit
356     from testing...
357
358     Dominic Dunlop
359
360 Index: plan9/config.plan9
361
362     Updated.
363
364 Index: plan9/fndvers
365
366     Updated.
367
368 Index: plan9/mkfile
369
370     Updated.
371
372 Index: plan9/setup.rc
373
374     Updated.
375
376 Index: pod/perldiag.pod
377
378     Subject: lval substr() coredumps with refs (with patch)
379
380     substr() coredumps with a target that is a ref, when it is used in
381     an lvalue context.
382     The patch below corrects the problem by stringifying the reference
383     first (and emitting a warning when appropriate).
384
385 Index: pod/perlxs.pod
386
387     document xsubpp SCOPE:
388
389 Index: pp.c
390
391     Subject: lval substr() fails to clear lexicals in re-entered scopes (with patch)
392
393     substr() in lvalue context interacts in buggy fashion with SVs that
394     are !SvOK.  This manifests itself with lexicals that have a REFCNT of
395     1, since these are merely "cleared in place" by setting SvOK_off.
396
397     Subject: lval substr() coredumps with refs (with patch)
398
399     substr() coredumps with a target that is a ref, when it is used in
400     an lvalue context.
401     The patch below corrects the problem by stringifying the reference
402     first (and emitting a warning when appropriate).
403
404     Subject: Patch for LONG_MAX & co.
405
406 Index: pp_ctl.c
407
408     This patch changes neither behavior nor performance.  However, it does
409     reduce code size and improve maintainability by combining some common
410     code in gv_fullname() and gv_efullname().
411
412 Index: pp_hot.c
413
414     Subject: Patch for LONG_MAX & co.
415
416     This patch changes neither behavior nor performance.  However, it does
417     reduce code size and improve maintainability by combining some common
418     code in gv_fullname() and gv_efullname().
419
420 Index: pp_sys.c
421
422     This patch changes neither behavior nor performance.  However, it does
423     reduce code size and improve maintainability by combining some common
424     code in gv_fullname() and gv_efullname().
425
426 Index: proto.h
427
428     This patch changes neither behavior nor performance.  However, it does
429     reduce code size and improve maintainability by combining some common
430     code in gv_fullname() and gv_efullname().
431
432 Index: run.c
433
434     This patch changes neither behavior nor performance.  However, it does
435     reduce code size and improve maintainability by combining some common
436     code in gv_fullname() and gv_efullname().
437
438 Index: sv.c
439
440     Subject: random cleanup
441
442     This patch removes a few obvious redundancies in the source.
443
444     Subject: sv_setsv patch
445
446     This patch changes neither behavior nor performance.  However, it does
447     reduce code size and improve maintainability by combining some common
448     code in gv_fullname() and gv_efullname().
449
450     From: Chip Salzenberg <salzench@nielsenmedia.com>
451     Subject: Track SVs for destruction when -DPURIFY
452
453     When checking for memory leaks, I compiled Perl with "-DPURIFY".
454     Although that flag improves the leak checking, it also breaks
455     destruction of global objects, because SVs aren't kept in captive
456     arenas any more.
457
458     This patch rectifies the problem by providing an alternative
459     method for keeping track of SVs when Perl is compiled for Purify.
460     It has no effect on normal operation.
461
462
463     Add comment about assert(len >=0) when len is unsigned anyway.
464
465 Index: t/io/fs.t
466
467     Subject: Re: truncate with file name does not work (with patch)
468
469     The prototype for truncate was changed so that perl won't die
470     with C<use strict;> when the first arg is a bareword (filehandle).
471     I think it was Tom (as in "tchrist") who brought this up.
472
473     Here's a patch that undoes the damage, makes it work with
474     C<use strict;>, and adds to the testsuite.
475
476     The "not implemented" branch is missing a "\n".
477
478 Index: t/op/gv.t
479
480     Subject: FAKE typeglobs seriously busted (with patch)
481
482     Handling of fake typeglobs (scalars that are really globs
483     in disguise) is seriously busted since 5.002 (it wasn't
484     so in 5.001n).
485
486     The problem is that mg_get() on a glob calls gv_efullname()
487     which might coerce its first arg to a string.
488
489 Index: t/op/substr.t
490
491
492     Subject: lval substr() fails to clear lexicals in re-entered scopes (with patch)
493
494     substr() in lvalue context interacts in buggy fashion with SVs that
495     are !SvOK.  This manifests itself with lexicals that have a REFCNT of
496     1, since these are merely "cleared in place" by setting SvOK_off.
497
498     Subject: lval substr() coredumps with refs (with patch)
499
500     substr() coredumps with a target that is a ref, when it is used in
501     an lvalue context.
502     The patch below corrects the problem by stringifying the reference
503     first (and emitting a warning when appropriate).
504
505 Index: toke.c
506
507     Subject: Re: truncate with file name does not work (with patch)
508
509     The prototype for truncate was changed so that perl won't die
510     with C<use strict;> when the first arg is a bareword (filehandle).
511     I think it was Tom (as in "tchrist") who brought this up.
512
513     Here's a patch that undoes the damage, makes it work with
514     C<use strict;>, and adds to the testsuite.
515
516 Index: util.c
517
518     Subject: Re: Perl 5.003 dumps core executing caller() in signal handler for
519             __DIE__ (with patch)
520
521     sv_2pv() might call croak() (which is not prepared to handle that
522     when it calls sv_2pv(), itself).  Likewise for warn() (but under
523     slightly more esoteric circumstances--mg_get() in sv_2pv() might
524     trigger a call to warn()).
525
526
527     Subject: Patch for LONG_MAX & co.
528
529     PERL_BADLANG is examined by default before issuing a warning during
530             internationalization.
531
532 Index: utils/h2xs.PL
533
534     Make leading =head NAME item a paragraph so pod2man finds it.
535
536 Index: utils/perldoc.PL
537
538     Use col -x to filter out half-line feeds (ESC-9) from
539     HP-UX nroff -man output.  (col -x isn't portable -- SunOS
540     doesn't support the -x option.)
541
542 ----------------
543 Version 5.003_03
544 ----------------
545
546 Most of the changes in 5.003_03 are to make the build and installation
547 process more robust.  The details are described below.  A very brief
548 summary is:
549
550 o Visible Changes to Core Functionality
551
552    -Support for tied filehandles.
553
554 o Configure enhancements
555
556    -How to build and install a shared libperl.so is now documented
557     and supported, though it's not the default for most platforms.
558
559 o Bug fixes
560
561    -Support bit operations on strings longer than 15 bytes.
562
563    -If a regex supplied to split() contains paranthesized subpatterns
564     that can result in null matches, perl no longer coredumps.
565
566    -Fix problems with each() on tied hashes.
567
568    -Make h2ph architecture-independent by using Config at run-time
569     rather than extraction time.
570
571 o Specific Changes
572
573 Here are the specific file-by-file changes.
574
575 # This is my patch perl5.003_03.pat to perl5.003_02
576 # The full description is below.
577 # Please execute the following commands before applying this patch.
578 # (You can feed this patch to 'sh' to do so.)
579 #  Andy Dougherty               <doughera@lafcol.lafayette.edu>
580
581 # Absorbed into Changes5.002
582 rm -f Changes.Conf
583
584 # Not needed.
585 rm -f ext/POSIX/mkposixman.pl
586
587 # Moved to README.os2.  I'm not sure why the README files are
588 # here rather than in the appropriate subdirectories.
589 rm -f os2/README
590
591 # Not needed.
592 rm -f pod/Makefile.PL
593
594 # New test for bit ops.
595 touch t/op/bob.t
596
597 # Patches that create new tests don't always make them executable.
598 chmod +x t/*/*.t
599
600 # Create a new directory for Porting and Patching info.
601 mkdir Porting
602
603 exit 0
604
605 This is patch perl5.003_03.pat to perl version 5.003_02.
606 This takes you from 5.003_02 to 5.003_03.
607
608 To apply this patch, run the above commands,
609 cd to your perl source directory and then type
610
611         patch -p1 -N < perl5.003_03.pat
612
613 The changes are described after each /^Index/ line below.  This is
614 designed so you can examine each change with a command such as
615
616         csplit -k perl5.003_03.pat '/^Index:/' '{99}'
617
618 Patch and enjoy,
619
620     Andy Dougherty              doughera@lafcol.lafayette.edu
621     Dept. of Physics
622     Lafayette College, Easton PA 18042
623
624 Index: Changes
625
626         Include 5.003_03 change notes.
627
628         Move older change notes to separate files.
629
630 Index: Changes5.000
631
632         New file.  Changes from perl4.036 to 5.000.
633
634 Index: Changes5.001
635
636         New file.  Changes from 5.000 to 5.001
637
638 Index: Changes5.002
639
640         New file.  Changes from 5.001 to 5.002
641
642 Index: Changes5.003
643
644         New file.  Changes from 5.002 to 5.003
645
646 Index: Configure
647
648         Relaxed warning about ksh on exotic machines.
649
650         Changed usesafe to useopcode.
651
652         Add search for gzip and zip.
653
654         Look more carefully for $sh (the Bourne-ish shell).
655         Use that info to set $startsh correctly.
656
657         Change prompts for PerlIO interface.  See INSTALL
658         for how this is supposed to work.  The default is
659         still the same as in 5.003_02, namely don't use
660         any fancy new PerlIO stuff.
661
662         Don't look for sigvec() since we don't actually use it.
663         (Plus, it used to print an alarming misleading message about
664         race conditions.)
665
666         Look for stdio's _filbuf under the possible names of
667         _filbuf, __filbuf, and _fill.
668
669         New $useshrplib variable to control whether we build a shared
670         libperl.so.  The name of the library is in $libperl.
671         Always install it in $installarchlib/CORE/$libperl.
672
673         Check for <sys/resource.h> and <sys/wait.h> for NetBSD.
674
675         Replace old $altmake stuff with newer autoconf-ish
676         $make_set_make, which checks if $make sets $(MAKE).  Now you
677         choose an alternate make with sh Configure -Dmake=gmake (or
678         whatever).
679
680         Remove 'ln' for the list of essential commands.  Simulate
681         it with 'cp' if necessary.
682
683         Change `logname` prompts to handle extra gratuitous spaces in
684         Ultrix output.
685
686         Autodetect os2.
687
688         Fix silly bug in checking for fully-qualified names in /etc/hosts.
689
690         Generalize Gconvert tests.  Give correct and more useful
691         error messages.
692
693         Use $obj_ext instead of literal '.o' in the dynaloader test.
694
695         Include appropriate header files in bcopy() and memcpy()
696         tests.  Note whether memmove is available.
697
698         Check whether struct sigaction works (needed for Solaris 2.5
699         with -Xc).
700
701         Include appropriate header files for randbits test.
702
703 Index: INSTALL
704
705         Add note about space requirements.
706
707         Update to match Configure changes (Opcode vs. Safe,
708         useperlio, useshrplib, etc.)
709
710         Reorganize the structure of some of the hints.
711
712         Miscellaneous clarifications.
713
714 Index: MANIFEST
715
716         Updated.  5.003_02 introduced some massive patches, mostly
717         due to spacing changes.  I didn't bother to sort them all out;
718         I just started with 5.003's MANIEFST.
719
720 Index: Makefile.SH
721
722         Support the new simplified shared libperl mechanism.
723
724         Use new $make_set_make directive.
725
726         Remove redundant libperl Make variable.
727
728         Remove unnecessary MAB variable.
729
730         Remove dependency of minitest on lib/Config.pm, since it could
731         well have been a failure of configpm that inspired testing
732         miniperl in the first place!
733
734 Index: Porting/Glossary
735
736         New file describing all the config.sh variables.
737         Eventually, I hope to fill this directory with other useful
738         stuff.
739
740 Index: README.os2
741
742         Replace old README.os2 with more up-to-date os2/README.
743
744 Index: config_H
745
746         Updated to match current Configure and config_h.SH.
747         Some rearrangement of parts has occurred due to new
748         dependencies in the metaconfig units.
749
750 Index: config_h.SH
751
752         Updated to match current Configure and config_h.SH.
753         Some rearrangement of parts has occurred due to new
754         dependencies in the metaconfig units.
755
756         Include full descriptions of ARCHLIB, OLDARCHLIB, PRIVLIB,
757         SITEARCH, and SITELIB.  Previous versions just included the
758         ~-expanded names (with unhelpful descriptions).  No functionality
759         is changed, but maybe it's a little better documented now.
760
761 Index: doio.c
762
763         Possibly Include <signal.h> and <unistd.h>
764
765 Index: doop.c
766
767         No longer prefer bcmp over memcmp when order doesn't matter.
768
769         Support bit operations on strings longer than 15 bytes.
770
771 Index: embed.h
772
773         Auto-generated.
774
775 Index: embed.pl
776
777         Expand warning at the top.
778
779 Index: ext/IO/IO.pm
780
781         Clean up docmentation installation errors.
782
783 Index: ext/IO/lib/IO/Seekable.pm
784
785         Clean up docmentation installation errors.
786
787 Index: ext/IO/lib/IO/Select.pm
788
789         Clean up docmentation installation errors.
790
791 Index: ext/Opcode/Opcode.xs
792
793         Add support for tied filehandles.
794
795 Index: ext/SDBM_File/sdbm/sdbm.h
796
797         Change the Mymalloc to match Perl_malloc in perl.h.
798
799 Index: ext/util/make_ext
800
801         Typo change.
802         Get rid of unused altmake.
803
804 Index: global.sym
805
806         Fix problems with each() on tied hashes.
807
808 Index: handy.h
809
810         Change safe*alloc functions to have prototypes that
811         match the system's malloc and free types.  That is, use
812         Malloc_t instead of char *, and Free_t instead of void.
813         This is necessary so . . .
814
815         Safefree cast matches type of free() whether it's perl's
816         malloc/free or the system's malloc/free.
817
818 Index: hints/README.hints
819
820         Remove out-of-date info.
821
822         Document a bit about how hint files work.
823
824 Index: hints/aix.sh
825
826         qmaxmem hint doesn't apply to gcc.
827
828 Index: hints/dgux.sh
829
830         Configure will now automatically detect shared libperl stuff.
831
832 Index: hints/dynixptx.sh
833
834         Fix typo in comment.
835         
836         Configure will now automatically detect shared libperl stuff.
837
838 Index: hints/epix.sh
839
840         Use glibpth instead of libpth.  This allows Configure to
841         add local directories, such as /opt/local/lib, etc.
842
843 Index: hints/irix_6_2.sh
844
845         Include some info on cc -n32 compile.
846
847 Index: hints/linux.sh
848
849         Configure now tests gcvt() more thoroughly.
850
851 Index: hints/machten_2.sh
852
853         Update where to find dld.
854
855 Index: hints/mips.sh
856
857         Use glibpth instead of libpth.
858
859 Index: hints/next_3.sh
860
861         Build up $mab dynamically.  Since $mab isn't used anywhere
862         anymore, this is useless.  However, $mab was never used for
863         next_3.sh anyway, so there's been no change in functionality.
864
865 Index: hints/next_4.sh
866
867         Get rid of extraneous isnext_4 variable.  Configure and
868         Makefile.SH will use $osname and $osvers instead.
869
870         Build up $mab dynamically based on available architectures.
871
872         Absorb $mab into ccflags and ccdlflags.  I hope that will
873         cover everything.  (Configure should automatically remove
874         the -arch stuff from cppflags.)
875
876         Configure now knows next4 needs to use a shared libperl.5.so.
877
878         Allow users to use -Dprefix.
879
880 Index: hints/os2.sh
881
882         Try to update to reflect newer shared libperl stuff.
883         I probably goofed :-).
884
885 Index: hints/sco.sh
886
887         Additional notes on using icc.
888
889         Additional flags for dynamic loading.
890
891 Index: hints/solaris_2.sh
892
893         Perl.h no longer prefers bcmp, so it's again ok if Configure
894         finds them, since perl will prefer the mem* versions anyway.
895
896 Index: hints/sunos_4_0.sh
897
898         Don't include <unistd.h>
899
900 Index: hints/sunos_4_1.sh
901
902         Add brief note about GNU as and ld.
903
904         Don't include <unistd.h>
905
906         Add notes about WHOA THERE messages.
907
908 Index: hints/titanos.sh
909
910         Include sfio in libswanted.
911
912         Don't set libpth any more.
913
914 Index: hints/umips.sh
915
916         New hint file.
917
918 Index: hv.c
919
920         Use memcmp even in cases where ordering doesn't matter.
921
922         Fix problems with each() on tied hashes.
923
924 Index: installperl
925
926         Simplify installation of shared libperl.so.
927
928         Avoid reaching Command Failed!!! with /usr/bin/perl.
929
930 Index: lib/AutoSplit.pm
931
932         Clean up docmentation installation errors.
933
934 Index: lib/ExtUtils/MM_Unix.pm
935
936         Remove MAB references.
937
938         Use 'useshrplib' instead of 'd_shrplib'
939
940 Index: lib/ExtUtils/MakeMaker.pm
941
942         Remove mab references.
943
944 Index: lib/FindBin.pm
945
946         Clean up docmentation installation errors.
947
948 Index: lib/Symbol.pm
949
950         Put back in the BEGIN { require 5.002; }.  The version in
951         5.003_02 wouldn't work in 5.002 anyway.  Further, the whole
952         point of the construct is to catch 5.001m, so we can't use
953         syntax introduced after 5.001m to do that.
954
955 Index: lib/Text/Wrap.pm
956
957         Remove double 'use strict'.
958
959 Index: lib/perl5db.pl
960
961         Add explicit '&' to avoid warnings under strict refs.
962
963 Index: lib/sigtrap.pm
964
965         Clean up docmentation installation errors.
966
967 Index: makedepend.SH
968
969         Use Configure's $sh and $make_set_make variables.
970
971 Index: mg.c
972
973         Include <unistd.h>
974
975         Use Safefree() macro instead of safefree() function with
976         a (possibly) incorrect cast.  The whole point of the
977         Safefree() macro is that it does the correct cast for you.
978
979
980 Index: patchlevel.h
981
982         Change to SUBVERSION 3.
983
984 Index: perl.c
985
986         Include <unistd.h>
987
988 Index: perl.h
989
990         No longer prefer bcmp slightly for comparisons that don't care
991         about ordering.
992
993         Rely on Configure setting SH_PATH.
994
995         Change the function name to Pause() instead of pause() to
996         avoid potential prototype problems.  (This naming convention
997         is similar to the Fwrite and Fflush macros.)
998
999         Fix problems with each() on tied hashes.
1000
1001         Work around crypt prototype problem on NeXT.
1002
1003 Index: perlio.c
1004
1005         Fixes to support non-std stdio.
1006
1007 Index: perlio.h
1008
1009         Try to document the various #defines a bit.  This is far from
1010         finished.
1011
1012         Remove a lot of trailing whitespace.  (It's of no consequence, but
1013         but I'm not going to redo the patch just to put back in the trailing
1014         whitespace either.)
1015
1016 Index: perlsdio.h
1017
1018         Fixes to support non-std stdio.
1019
1020 Index: perly.c
1021
1022         Restore use of Safefree() macro.
1023
1024 Index: perly.c.diff
1025
1026         Restore use of Safefree() macro.
1027
1028 Index: perly.h
1029
1030         Delete duplicate line.
1031
1032 Index: plan9/buildinfo
1033
1034         Update.
1035
1036 Index: pod/perlapio.pod
1037
1038         Clean up docmentation installation errors.
1039
1040 Index: pod/perlipc.pod
1041
1042         Fix typo.
1043
1044         Untaint port number.
1045
1046 Index: pod/perlmod.pod
1047
1048         Fix a minor nit regarding Exporter.
1049
1050 Index: pod/perlre.pod
1051
1052         Clean up docmentation installation errors.
1053
1054 Index: pod/perltie.pod
1055
1056         Add support for tied filehandles.
1057
1058 Index: pod/perltrap.pod
1059
1060         Clean up docmentation installation errors.
1061
1062 Index: pod/perlxstut.pod
1063
1064         Clean up docmentation installation errors.
1065
1066 Index: pod/pod2man.PL
1067
1068         Clean up docmentation installation errors.
1069
1070 Index: pp.c
1071
1072         Add support for tied filehandles.
1073
1074         If a regex supplied to split() contains paranthesized subpatterns
1075         that can result in null matches, perl coredumps.
1076
1077 Index: pp_hot.c
1078
1079         Use memcmp instead of bcmp even when we don't care about order.
1080
1081         Add support for tied filehandles.
1082
1083 Index: pp_sys.c
1084
1085         Include <unistd.h>, <sys/wait.h>, and <sys/resource.h>.
1086         (The latter two are especially for NetBSD.)
1087
1088         Don't assume sys/time.h and sys/select.h can't coexist.
1089
1090         Use Pause macro.
1091
1092 Index: proto.h
1093
1094         Fix safe*alloc and safefree prototypes.
1095
1096 Index: regexec.c
1097
1098         Use memcmp instead of bcmp even when we don't care about order.
1099
1100 Index: sv.c
1101
1102         Use memcmp instead of bcmp even when we don't care about order.
1103
1104 Index: t/lib/opcode.t
1105
1106         Add support for tied filehandles.
1107
1108 Index: t/op/bop.t
1109
1110         Support bit operations on strings longer than 15 bytes.
1111
1112 Index: t/op/misc.t
1113
1114         Add support for tied filehandles.
1115
1116 Index: t/op/split.t
1117
1118         If a regex supplied to split() contains paranthesized subpatterns
1119         that can result in null matches, perl coredumps.
1120
1121 Index: toke.c
1122
1123         Include <unistd.h>.
1124
1125         Use memcmp instead of bcmp even when we don't care about order.
1126
1127 Index: util.c
1128
1129         Include <unistd.h>.
1130
1131         Use correct types for safe*alloc and safefree functions.
1132
1133 Index: utils/h2ph.PL
1134
1135         Make h2ph architecture-independent by using Config at run-time
1136         rather than extraction time.
1137
1138 Index: writemain.SH
1139
1140         Remove unnecessary curlies.  (They are a leftover from
1141         an older auto_init mechanism.)
1142
1143 Index: x2p/Makefile.SH
1144
1145         Use Configure's $sh and $make_set_make.
1146
1147         Remove MAB stuff, since it's now in ccflags.
1148
1149         Keep 5.003's RCS info.
1150
1151 Index: x2p/a2p.h
1152
1153         Keep 5.003's RCS info.
1154
1155 Index: x2p/str.c
1156
1157         Use Configure's FILE_filbuf macro instead of a raw _filbuf.
1158
1159 ----------------
1160 Version 5.003_02
1161 ----------------
1162 o Visible Changes to Core Functionality
1163   - Redefining constant subs, or changing sub's prototype now give warnings.
1164   - Fixes for ++/-- of values close to max/min size of an integer 
1165   - Warning for un-qualified bareword as handler in $SIG{}. 
1166   - UNIVERSAL::isa can now be called as static method. 
1167
1168 o Changes in Core Internals
1169   - PerlIO abstraction added.
1170     Perl core and standard extensions no longer assume ANSI C's stdio is IO
1171     mechanism, Default Configure mode is still to use stdio via set of C macros.
1172     Alternate modes are to use stdio via one perlio.c module, or 
1173     to use sfio if available.
1174     
1175   - Several bug fixs from perl5-porters
1176       - Make sources non-ANSI C correct again.
1177       - SUPER in gv.c 
1178       - Last of shared-hash-key patches
1179       - eval '(0,1..3)'; # --> SegFault
1180       - coredumps after simple subsitutes.
1181       - Correction to UNIVERSAL::VERSION docs.
1182       - Fixed io_udp test.
1183       - Fixed another abuse of malloc'ed memory.
1184   - Enabled DEBUGING_MSTATS whenever perl's malloc() is used.
1185   - Reverted to default of not hiding perl's malloc (if used). 
1186
1187 o Changes in the Standard Library and Utilities
1188   - Fixed MakeMaker for static SDBM and builing in a link tree.
1189   - Upgraded to IO-1.09, and includes latest (still experimental) IO::Select. 
1190   - Documentation/test tweak to DB_File
1191   - h2xs upgrade to allow use C::Scan module 
1192
1193 o Changes in OS-specific and Build-time Support
1194   - Attempted to re-created 5.003_01's NeXT support with metaconfig units.
1195   - Updated MANIFEST 
1196   - make minitest now depends on lib/Config.pm, as some of tests require it. 
1197   - Included latest plan9 sub-directory
1198   - Applied OS/2 patches.
1199   - Typo patch for VMS.
1200
1201 ----------------
1202 Version 5.003_01
1203 ----------------
1204
1205 Version 5.003_01 contains bugfixes and additions accumulated since
1206 version 5.002_01, since the patch to version 5.003 was deliberately
1207 kept simple.  In addition to numerous small bugfixes in the core,
1208 library files, and documentation, this patch contains several
1209 significant revisions, summarized below:
1210
1211 o Visible Changes to Core Functionality
1212
1213   - A port to Plan9 has been started, and changes are integrated into
1214     the standard distribution.  As of this release, the Perl core
1215     and several common extensions are working.
1216
1217   - A set of basic methods in the UNIVERSAL class have been added to
1218     the Perl core.  Since UNIVERSAL is an implicit member of every
1219     class's @ISA, the methods can be called via any object.
1220
1221   - A mandatory warning has been added for 'declarations' of lexical
1222     variables using the "my" operator which mask an existing lexical
1223     variable declared in the same scope, making the previous variable
1224     inaccessible by its name.
1225
1226   - The "use" and "require" operators have been extended to allow
1227     checking of the required module's version.  The "use" operator
1228     can now be used for an immediate version check of Perl itself.
1229
1230   - A new "strict" pragma, "strict untie", has been added, which
1231     produces an error if a tied value is untied when other references
1232     exist to the internal object implementing the tie.
1233
1234   - Barewords used as associative array keys (i.e. when specifying
1235     an associative array element like $foo{__BAR} or on the left
1236     side of the => operator) may now begin with an underscore as
1237     well as an alphabetic character.
1238
1239   - Some of the configuration information previously produced by the
1240     -v switch has been moved to the -V switch, in order to keep -v
1241     output concise.
1242
1243 o Changes in Core Internals
1244
1245   - Symbol table and method lookups have been made faster.
1246
1247   - Perl subroutines which just return a constant value are now
1248     optimized at compile time into inline constants.
1249
1250   - Management of keys for associative arrays has been improved to
1251     conserve space when the same keys are reused frequently, and
1252     to pass true Perl values to tie functions, instead of stringified
1253     representations.
1254
1255   - Messages normally output to stderr may be directed to another
1256     stream when Perl is built.  This allows some platforms to
1257     present diagnostic output in a separate window from normal
1258     program results.
1259
1260   - A bug which caused suiperl to fail silently, albeit securely,
1261     in version 5.003 on some systems has been fixed.
1262
1263   - Management of Unix-style signal handlers via the %SIG associative
1264     array has been made safer.
1265
1266   - Several global C symbols have been renamed to eliminate collisions
1267     with system C header files or libraries on some platforms.
1268     Unfortunately, this means that dynamic extensions compiled under
1269     previous versions of Perl will need to be rebuilt for Perl
1270     5.003_01.  We're in the process of cleaning up Perl's C
1271     namespace to make it easier to link Perl with other binaries,
1272     so this will probably happen again between now and version 5.004.
1273     After that, we'll do our best to maintain binary compatibility
1274     between versions.
1275
1276   - An alternate allocation strategy has been added to Perl's
1277     optional private memory management routines.  This strategy,
1278     which may be selected when Perl is built, is designed to
1279     conserve memory in programs which allocate many small
1280     chunks of memory with sizes near a power of 2, as is often
1281     the case in Perl programs.
1282
1283   - Several memory leaks in the creation and destruction of
1284     multiple interpreters have been fixed.
1285
1286 o Changes in the Standard Library and Utilities
1287
1288   - The Opcode extension, which allows you to control a program's
1289     access to Perl operations, has been added to the standard
1290     distribution.  This extends the work begun in the original
1291     Safe extension, and subsumes it.  The Safe interface is still
1292     available.
1293
1294   - The IO extension, which provides a set of classes for object-
1295     oriented handling of common I/O tasks, has been added to the
1296     standard distribution.  The IO classes will form the basis
1297     for future development of Perl's I/O interface, and will
1298     subsume the FileHandle class in the near future.  The default
1299     class to which all Perl I/O handles belong is now IO::Handle,
1300     rather than FileHandle.
1301
1302   - The ExtUtils::Embed library module, which provides a set
1303     of utility function to help in embedding Perl in other
1304     applications, has been added to the standard distribution.
1305
1306   - The Fatal library module, which provides a simple interface
1307     for creating "do-or-die" equivalents of existing functions,
1308     has been added to the standard distribution.
1309
1310   - The FindBin library module, which determines the full path
1311     to the currently executing program, has been added to the
1312     standard distribution.
1313
1314   - The DB_File extension, and the Getopt::Long, Test::Harness,
1315     Text::Tabs, Text::Wrap, Time::Local and sigtrap library modules
1316     have been updated to the authors' latest versions.
1317
1318   - The Carp library module now considers the @ISA chain when
1319     determining the caller's package for inclusion in error messages.
1320
1321   - The h2xs, perlbug, and xsubpp utilities have been updated.
1322
1323   - The standard Perl debugger has been updated, and the information
1324     provided to the debugger when an XSUB is called has been improved,
1325     making it possible for alternate debuggers (such as Devel::DProf)
1326     to do a better job of tracking XSUB calls.
1327
1328   - The pod documentation formatting tools in the standard distribution
1329     can now handle characters in the input stream whose high bit is set.
1330
1331   - The cperl-mode EMACS editing mode has been updated.
1332
1333 o Changes in Documentation
1334
1335   - Typographic and formatting errors have been corrected in the pod
1336     documentation for the core and standard library files
1337
1338   - Explanations of several core operators have been improved
1339
1340   - The perldebug, perlembed, perlipc, perlsec, and perltrap documents
1341     extensively revised.
1342
1343 o Changes in OS-specific and Build-time Support
1344
1345   - Support for the NeXT platform has been extended through
1346     NeXTSTEP/OPENSTEP 4.0, and now includes the ability to create MABs.
1347
1348   - Support for OS/2 has been extended as well, and now includes
1349     options for building a.out binaries.
1350
1351   - Support for VMS has also been extended, incorporating improved
1352     processing of file specification strings, optional suppression of
1353     carriage control interpretation for record-structured files,
1354     improved support for the -S command line switch, a number of
1355     VMS-specific bugfixes, and significantly improved performance
1356     in line-oriented reading of files.
1357
1358   - Several hints files have been added or updated: aux.sh (updated),
1359     convexos.sh (updated), irix_4.sh (updated), irix_5.sh (updated),
1360     irix_6_2.sh (updated), next_3.sh (updated), next_3_2.sh (new),
1361     next_3_3.sh (new), next_4.sh (new), os2/sh (updated),
1362     sco.sh (updated), and solaris_2.sh (updated).
1363
1364   - The test driver for the regression tests now reports when a set
1365     of tests have been skipped (presumable because the operation
1366     they're designed to test isn't supported on the current system).