perl 5.003_03: perl.h
[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_03
12 ----------------
13
14 Most of the changes in 5.003_03 are to make the build and installation
15 process more robust.  The details are described below.  A very brief
16 summary is:
17
18 o Visible Changes to Core Functionality
19
20    -Support for tied filehandles.
21
22 o Configure enhancements
23
24    -How to build and install a shared libperl.so is now documented
25     and supported, though it's not the default for most platforms.
26
27 o Bug fixes
28
29    -Support bit operations on strings longer than 15 bytes.
30
31    -If a regex supplied to split() contains paranthesized subpatterns
32     that can result in null matches, perl no longer coredumps.
33
34    -Fix problems with each() on tied hashes.
35
36    -Make h2ph architecture-independent by using Config at run-time
37     rather than extraction time.
38
39 o Specific Changes
40
41 Here are the specific file-by-file changes.
42
43 # This is my patch perl5.003_03.pat to perl5.003_02
44 # The full description is below.
45 # Please execute the following commands before applying this patch.
46 # (You can feed this patch to 'sh' to do so.)
47 #  Andy Dougherty               <doughera@lafcol.lafayette.edu>
48
49 # Absorbed into Changes5.002
50 rm -f Changes.Conf
51
52 # Not needed.
53 rm -f ext/POSIX/mkposixman.pl
54
55 # Moved to README.os2.  I'm not sure why the README files are
56 # here rather than in the appropriate subdirectories.
57 rm -f os2/README
58
59 # Not needed.
60 rm -f pod/Makefile.PL
61
62 # New test for bit ops.
63 touch t/op/bob.t
64
65 # Patches that create new tests don't always make them executable.
66 chmod +x t/*/*.t
67
68 # Create a new directory for Porting and Patching info.
69 mkdir Porting
70
71 exit 0
72
73 This is patch perl5.003_03.pat to perl version 5.003_02.
74 This takes you from 5.003_02 to 5.003_03.
75
76 To apply this patch, run the above commands,
77 cd to your perl source directory and then type
78
79         patch -p1 -N < perl5.003_03.pat
80
81 The changes are described after each /^Index/ line below.  This is
82 designed so you can examine each change with a command such as
83
84         csplit -k perl5.003_03.pat '/^Index:/' '{99}'
85
86 Patch and enjoy,
87
88     Andy Dougherty              doughera@lafcol.lafayette.edu
89     Dept. of Physics
90     Lafayette College, Easton PA 18042
91
92 Index: Changes
93
94         Include 5.003_03 change notes.
95
96         Move older change notes to separate files.
97
98 Index: Changes5.000
99
100         New file.  Changes from perl4.036 to 5.000.
101
102 Index: Changes5.001
103
104         New file.  Changes from 5.000 to 5.001
105
106 Index: Changes5.002
107
108         New file.  Changes from 5.001 to 5.002
109
110 Index: Changes5.003
111
112         New file.  Changes from 5.002 to 5.003
113
114 Index: Configure
115
116         Relaxed warning about ksh on exotic machines.
117
118         Changed usesafe to useopcode.
119
120         Add search for gzip and zip.
121
122         Look more carefully for $sh (the Bourne-ish shell).
123         Use that info to set $startsh correctly.
124
125         Change prompts for PerlIO interface.  See INSTALL
126         for how this is supposed to work.  The default is
127         still the same as in 5.003_02, namely don't use
128         any fancy new PerlIO stuff.
129
130         Don't look for sigvec() since we don't actually use it.
131         (Plus, it used to print an alarming misleading message about
132         race conditions.)
133
134         Look for stdio's _filbuf under the possible names of
135         _filbuf, __filbuf, and _fill.
136
137         New $useshrplib variable to control whether we build a shared
138         libperl.so.  The name of the library is in $libperl.
139         Always install it in $installarchlib/CORE/$libperl.
140
141         Check for <sys/resource.h> and <sys/wait.h> for NetBSD.
142
143         Replace old $altmake stuff with newer autoconf-ish
144         $make_set_make, which checks if $make sets $(MAKE).  Now you
145         choose an alternate make with sh Configure -Dmake=gmake (or
146         whatever).
147
148         Remove 'ln' for the list of essential commands.  Simulate
149         it with 'cp' if necessary.
150
151         Change `logname` prompts to handle extra gratuitous spaces in
152         Ultrix output.
153
154         Autodetect os2.
155
156         Fix silly bug in checking for fully-qualified names in /etc/hosts.
157
158         Generalize Gconvert tests.  Give correct and more useful
159         error messages.
160
161         Use $obj_ext instead of literal '.o' in the dynaloader test.
162
163         Include appropriate header files in bcopy() and memcpy()
164         tests.  Note whether memmove is available.
165
166         Check whether struct sigaction works (needed for Solaris 2.5
167         with -Xc).
168
169         Include appropriate header files for randbits test.
170
171 Index: INSTALL
172
173         Add note about space requirements.
174
175         Update to match Configure changes (Opcode vs. Safe,
176         useperlio, useshrplib, etc.)
177
178         Reorganize the structure of some of the hints.
179
180         Miscellaneous clarifications.
181
182 Index: MANIFEST
183
184         Updated.  5.003_02 introduced some massive patches, mostly
185         due to spacing changes.  I didn't bother to sort them all out;
186         I just started with 5.003's MANIEFST.
187
188 Index: Makefile.SH
189
190         Support the new simplified shared libperl mechanism.
191
192         Use new $make_set_make directive.
193
194         Remove redundant libperl Make variable.
195
196         Remove unnecessary MAB variable.
197
198         Remove dependency of minitest on lib/Config.pm, since it could
199         well have been a failure of configpm that inspired testing
200         miniperl in the first place!
201
202 Index: Porting/Glossary
203
204         New file describing all the config.sh variables.
205         Eventually, I hope to fill this directory with other useful
206         stuff.
207
208 Index: README.os2
209
210         Replace old README.os2 with more up-to-date os2/README.
211
212 Index: config_H
213
214         Updated to match current Configure and config_h.SH.
215         Some rearrangement of parts has occurred due to new
216         dependencies in the metaconfig units.
217
218 Index: config_h.SH
219
220         Updated to match current Configure and config_h.SH.
221         Some rearrangement of parts has occurred due to new
222         dependencies in the metaconfig units.
223
224         Include full descriptions of ARCHLIB, OLDARCHLIB, PRIVLIB,
225         SITEARCH, and SITELIB.  Previous versions just included the
226         ~-expanded names (with unhelpful descriptions).  No functionality
227         is changed, but maybe it's a little better documented now.
228
229 Index: doio.c
230
231         Possibly Include <signal.h> and <unistd.h>
232
233 Index: doop.c
234
235         No longer prefer bcmp over memcmp when order doesn't matter.
236
237         Support bit operations on strings longer than 15 bytes.
238
239 Index: embed.h
240
241         Auto-generated.
242
243 Index: embed.pl
244
245         Expand warning at the top.
246
247 Index: ext/IO/IO.pm
248
249         Clean up docmentation installation errors.
250
251 Index: ext/IO/lib/IO/Seekable.pm
252
253         Clean up docmentation installation errors.
254
255 Index: ext/IO/lib/IO/Select.pm
256
257         Clean up docmentation installation errors.
258
259 Index: ext/Opcode/Opcode.xs
260
261         Add support for tied filehandles.
262
263 Index: ext/SDBM_File/sdbm/sdbm.h
264
265         Change the Mymalloc to match Perl_malloc in perl.h.
266
267 Index: ext/util/make_ext
268
269         Typo change.
270         Get rid of unused altmake.
271
272 Index: global.sym
273
274         Fix problems with each() on tied hashes.
275
276 Index: handy.h
277
278         Change safe*alloc functions to have prototypes that
279         match the system's malloc and free types.  That is, use
280         Malloc_t instead of char *, and Free_t instead of void.
281         This is necessary so . . .
282
283         Safefree cast matches type of free() whether it's perl's
284         malloc/free or the system's malloc/free.
285
286 Index: hints/README.hints
287
288         Remove out-of-date info.
289
290         Document a bit about how hint files work.
291
292 Index: hints/aix.sh
293
294         qmaxmem hint doesn't apply to gcc.
295
296 Index: hints/dgux.sh
297
298         Configure will now automatically detect shared libperl stuff.
299
300 Index: hints/dynixptx.sh
301
302         Fix typo in comment.
303         
304         Configure will now automatically detect shared libperl stuff.
305
306 Index: hints/epix.sh
307
308         Use glibpth instead of libpth.  This allows Configure to
309         add local directories, such as /opt/local/lib, etc.
310
311 Index: hints/irix_6_2.sh
312
313         Include some info on cc -n32 compile.
314
315 Index: hints/linux.sh
316
317         Configure now tests gcvt() more thoroughly.
318
319 Index: hints/machten_2.sh
320
321         Update where to find dld.
322
323 Index: hints/mips.sh
324
325         Use glibpth instead of libpth.
326
327 Index: hints/next_3.sh
328
329         Build up $mab dynamically.  Since $mab isn't used anywhere
330         anymore, this is useless.  However, $mab was never used for
331         next_3.sh anyway, so there's been no change in functionality.
332
333 Index: hints/next_4.sh
334
335         Get rid of extraneous isnext_4 variable.  Configure and
336         Makefile.SH will use $osname and $osvers instead.
337
338         Build up $mab dynamically based on available architectures.
339
340         Absorb $mab into ccflags and ccdlflags.  I hope that will
341         cover everything.  (Configure should automatically remove
342         the -arch stuff from cppflags.)
343
344         Configure now knows next4 needs to use a shared libperl.5.so.
345
346         Allow users to use -Dprefix.
347
348 Index: hints/os2.sh
349
350         Try to update to reflect newer shared libperl stuff.
351         I probably goofed :-).
352
353 Index: hints/sco.sh
354
355         Additional notes on using icc.
356
357         Additional flags for dynamic loading.
358
359 Index: hints/solaris_2.sh
360
361         Perl.h no longer prefers bcmp, so it's again ok if Configure
362         finds them, since perl will prefer the mem* versions anyway.
363
364 Index: hints/sunos_4_0.sh
365
366         Don't include <unistd.h>
367
368 Index: hints/sunos_4_1.sh
369
370         Add brief note about GNU as and ld.
371
372         Don't include <unistd.h>
373
374         Add notes about WHOA THERE messages.
375
376 Index: hints/titanos.sh
377
378         Include sfio in libswanted.
379
380         Don't set libpth any more.
381
382 Index: hints/umips.sh
383
384         New hint file.
385
386 Index: hv.c
387
388         Use memcmp even in cases where ordering doesn't matter.
389
390         Fix problems with each() on tied hashes.
391
392 Index: installperl
393
394         Simplify installation of shared libperl.so.
395
396         Avoid reaching Command Failed!!! with /usr/bin/perl.
397
398 Index: lib/AutoSplit.pm
399
400         Clean up docmentation installation errors.
401
402 Index: lib/ExtUtils/MM_Unix.pm
403
404         Remove MAB references.
405
406         Use 'useshrplib' instead of 'd_shrplib'
407
408 Index: lib/ExtUtils/MakeMaker.pm
409
410         Remove mab references.
411
412 Index: lib/FindBin.pm
413
414         Clean up docmentation installation errors.
415
416 Index: lib/Symbol.pm
417
418         Put back in the BEGIN { require 5.002; }.  The version in
419         5.003_02 wouldn't work in 5.002 anyway.  Further, the whole
420         point of the construct is to catch 5.001m, so we can't use
421         syntax introduced after 5.001m to do that.
422
423 Index: lib/Text/Wrap.pm
424
425         Remove double 'use strict'.
426
427 Index: lib/perl5db.pl
428
429         Add explicit '&' to avoid warnings under strict refs.
430
431 Index: lib/sigtrap.pm
432
433         Clean up docmentation installation errors.
434
435 Index: makedepend.SH
436
437         Use Configure's $sh and $make_set_make variables.
438
439 Index: mg.c
440
441         Include <unistd.h>
442
443         Use Safefree() macro instead of safefree() function with
444         a (possibly) incorrect cast.  The whole point of the
445         Safefree() macro is that it does the correct cast for you.
446
447
448 Index: patchlevel.h
449
450         Change to SUBVERSION 3.
451
452 Index: perl.c
453
454         Include <unistd.h>
455
456 Index: perl.h
457
458         No longer prefer bcmp slightly for comparisons that don't care
459         about ordering.
460
461         Rely on Configure setting SH_PATH.
462
463         Change the function name to Pause() instead of pause() to
464         avoid potential prototype problems.  (This naming convention
465         is similar to the Fwrite and Fflush macros.)
466
467         Fix problems with each() on tied hashes.
468
469         Work around crypt prototype problem on NeXT.
470
471 Index: perlio.c
472
473         Fixes to support non-std stdio.
474
475 Index: perlio.h
476
477         Try to document the various #defines a bit.  This is far from
478         finished.
479
480         Remove a lot of trailing whitespace.  (It's of no consequence, but
481         but I'm not going to redo the patch just to put back in the trailing
482         whitespace either.)
483
484 Index: perlsdio.h
485
486         Fixes to support non-std stdio.
487
488 Index: perly.c
489
490         Restore use of Safefree() macro.
491
492 Index: perly.c.diff
493
494         Restore use of Safefree() macro.
495
496 Index: perly.h
497
498         Delete duplicate line.
499
500 Index: plan9/buildinfo
501
502         Update.
503
504 Index: pod/perlapio.pod
505
506         Clean up docmentation installation errors.
507
508 Index: pod/perlipc.pod
509
510         Fix typo.
511
512         Untaint port number.
513
514 Index: pod/perlmod.pod
515
516         Fix a minor nit regarding Exporter.
517
518 Index: pod/perlre.pod
519
520         Clean up docmentation installation errors.
521
522 Index: pod/perltie.pod
523
524         Add support for tied filehandles.
525
526 Index: pod/perltrap.pod
527
528         Clean up docmentation installation errors.
529
530 Index: pod/perlxstut.pod
531
532         Clean up docmentation installation errors.
533
534 Index: pod/pod2man.PL
535
536         Clean up docmentation installation errors.
537
538 Index: pp.c
539
540         Add support for tied filehandles.
541
542         If a regex supplied to split() contains paranthesized subpatterns
543         that can result in null matches, perl coredumps.
544
545 Index: pp_hot.c
546
547         Use memcmp instead of bcmp even when we don't care about order.
548
549         Add support for tied filehandles.
550
551 Index: pp_sys.c
552
553         Include <unistd.h>, <sys/wait.h>, and <sys/resource.h>.
554         (The latter two are especially for NetBSD.)
555
556         Don't assume sys/time.h and sys/select.h can't coexist.
557
558         Use Pause macro.
559
560 Index: proto.h
561
562         Fix safe*alloc and safefree prototypes.
563
564 Index: regexec.c
565
566         Use memcmp instead of bcmp even when we don't care about order.
567
568 Index: sv.c
569
570         Use memcmp instead of bcmp even when we don't care about order.
571
572 Index: t/lib/opcode.t
573
574         Add support for tied filehandles.
575
576 Index: t/op/bop.t
577
578         Support bit operations on strings longer than 15 bytes.
579
580 Index: t/op/misc.t
581
582         Add support for tied filehandles.
583
584 Index: t/op/split.t
585
586         If a regex supplied to split() contains paranthesized subpatterns
587         that can result in null matches, perl coredumps.
588
589 Index: toke.c
590
591         Include <unistd.h>.
592
593         Use memcmp instead of bcmp even when we don't care about order.
594
595 Index: util.c
596
597         Include <unistd.h>.
598
599         Use correct types for safe*alloc and safefree functions.
600
601 Index: utils/h2ph.PL
602
603         Make h2ph architecture-independent by using Config at run-time
604         rather than extraction time.
605
606 Index: writemain.SH
607
608         Remove unnecessary curlies.  (They are a leftover from
609         an older auto_init mechanism.)
610
611 Index: x2p/Makefile.SH
612
613         Use Configure's $sh and $make_set_make.
614
615         Remove MAB stuff, since it's now in ccflags.
616
617         Keep 5.003's RCS info.
618
619 Index: x2p/a2p.h
620
621         Keep 5.003's RCS info.
622
623 Index: x2p/str.c
624
625         Use Configure's FILE_filbuf macro instead of a raw _filbuf.
626
627 ----------------
628 Version 5.003_02
629 ----------------
630 o Visible Changes to Core Functionality
631   - Redefining constant subs, or changing sub's prototype now give warnings.
632   - Fixes for ++/-- of values close to max/min size of an integer 
633   - Warning for un-qualified bareword as handler in $SIG{}. 
634   - UNIVERSAL::isa can now be called as static method. 
635
636 o Changes in Core Internals
637   - PerlIO abstraction added.
638     Perl core and standard extensions no longer assume ANSI C's stdio is IO
639     mechanism, Default Configure mode is still to use stdio via set of C macros.
640     Alternate modes are to use stdio via one perlio.c module, or 
641     to use sfio if available.
642     
643   - Several bug fixs from perl5-porters
644       - Make sources non-ANSI C correct again.
645       - SUPER in gv.c 
646       - Last of shared-hash-key patches
647       - eval '(0,1..3)'; # --> SegFault
648       - coredumps after simple subsitutes.
649       - Correction to UNIVERSAL::VERSION docs.
650       - Fixed io_udp test.
651       - Fixed another abuse of malloc'ed memory.
652   - Enabled DEBUGING_MSTATS whenever perl's malloc() is used.
653   - Reverted to default of not hiding perl's malloc (if used). 
654
655 o Changes in the Standard Library and Utilities
656   - Fixed MakeMaker for static SDBM and builing in a link tree.
657   - Upgraded to IO-1.09, and includes latest (still experimental) IO::Select. 
658   - Documentation/test tweak to DB_File
659   - h2xs upgrade to allow use C::Scan module 
660
661 o Changes in OS-specific and Build-time Support
662   - Attempted to re-created 5.003_01's NeXT support with metaconfig units.
663   - Updated MANIFEST 
664   - make minitest now depends on lib/Config.pm, as some of tests require it. 
665   - Included latest plan9 sub-directory
666   - Applied OS/2 patches.
667   - Typo patch for VMS.
668
669 ----------------
670 Version 5.003_01
671 ----------------
672
673 Version 5.003_01 contains bugfixes and additions accumulated since
674 version 5.002_01, since the patch to version 5.003 was deliberately
675 kept simple.  In addition to numerous small bugfixes in the core,
676 library files, and documentation, this patch contains several
677 significant revisions, summarized below:
678
679 o Visible Changes to Core Functionality
680
681   - A port to Plan9 has been started, and changes are integrated into
682     the standard distribution.  As of this release, the Perl core
683     and several common extensions are working.
684
685   - A set of basic methods in the UNIVERSAL class have been added to
686     the Perl core.  Since UNIVERSAL is an implicit member of every
687     class's @ISA, the methods can be called via any object.
688
689   - A mandatory warning has been added for 'declarations' of lexical
690     variables using the "my" operator which mask an existing lexical
691     variable declared in the same scope, making the previous variable
692     inaccessible by its name.
693
694   - The "use" and "require" operators have been extended to allow
695     checking of the required module's version.  The "use" operator
696     can now be used for an immediate version check of Perl itself.
697
698   - A new "strict" pragma, "strict untie", has been added, which
699     produces an error if a tied value is untied when other references
700     exist to the internal object implementing the tie.
701
702   - Barewords used as associative array keys (i.e. when specifying
703     an associative array element like $foo{__BAR} or on the left
704     side of the => operator) may now begin with an underscore as
705     well as an alphabetic character.
706
707   - Some of the configuration information previously produced by the
708     -v switch has been moved to the -V switch, in order to keep -v
709     output concise.
710
711 o Changes in Core Internals
712
713   - Symbol table and method lookups have been made faster.
714
715   - Perl subroutines which just return a constant value are now
716     optimized at compile time into inline constants.
717
718   - Management of keys for associative arrays has been improved to
719     conserve space when the same keys are reused frequently, and
720     to pass true Perl values to tie functions, instead of stringified
721     representations.
722
723   - Messages normally output to stderr may be directed to another
724     stream when Perl is built.  This allows some platforms to
725     present diagnostic output in a separate window from normal
726     program results.
727
728   - A bug which caused suiperl to fail silently, albeit securely,
729     in version 5.003 on some systems has been fixed.
730
731   - Management of Unix-style signal handlers via the %SIG associative
732     array has been made safer.
733
734   - Several global C symbols have been renamed to eliminate collisions
735     with system C header files or libraries on some platforms.
736     Unfortunately, this means that dynamic extensions compiled under
737     previous versions of Perl will need to be rebuilt for Perl
738     5.003_01.  We're in the process of cleaning up Perl's C
739     namespace to make it easier to link Perl with other binaries,
740     so this will probably happen again between now and version 5.004.
741     After that, we'll do our best to maintain binary compatibility
742     between versions.
743
744   - An alternate allocation strategy has been added to Perl's
745     optional private memory management routines.  This strategy,
746     which may be selected when Perl is built, is designed to
747     conserve memory in programs which allocate many small
748     chunks of memory with sizes near a power of 2, as is often
749     the case in Perl programs.
750
751   - Several memory leaks in the creation and destruction of
752     multiple interpreters have been fixed.
753
754 o Changes in the Standard Library and Utilities
755
756   - The Opcode extension, which allows you to control a program's
757     access to Perl operations, has been added to the standard
758     distribution.  This extends the work begun in the original
759     Safe extension, and subsumes it.  The Safe interface is still
760     available.
761
762   - The IO extension, which provides a set of classes for object-
763     oriented handling of common I/O tasks, has been added to the
764     standard distribution.  The IO classes will form the basis
765     for future development of Perl's I/O interface, and will
766     subsume the FileHandle class in the near future.  The default
767     class to which all Perl I/O handles belong is now IO::Handle,
768     rather than FileHandle.
769
770   - The ExtUtils::Embed library module, which provides a set
771     of utility function to help in embedding Perl in other
772     applications, has been added to the standard distribution.
773
774   - The Fatal library module, which provides a simple interface
775     for creating "do-or-die" equivalents of existing functions,
776     has been added to the standard distribution.
777
778   - The FindBin library module, which determines the full path
779     to the currently executing program, has been added to the
780     standard distribution.
781
782   - The DB_File extension, and the Getopt::Long, Test::Harness,
783     Text::Tabs, Text::Wrap, Time::Local and sigtrap library modules
784     have been updated to the authors' latest versions.
785
786   - The Carp library module now considers the @ISA chain when
787     determining the caller's package for inclusion in error messages.
788
789   - The h2xs, perlbug, and xsubpp utilities have been updated.
790
791   - The standard Perl debugger has been updated, and the information
792     provided to the debugger when an XSUB is called has been improved,
793     making it possible for alternate debuggers (such as Devel::DProf)
794     to do a better job of tracking XSUB calls.
795
796   - The pod documentation formatting tools in the standard distribution
797     can now handle characters in the input stream whose high bit is set.
798
799   - The cperl-mode EMACS editing mode has been updated.
800
801 o Changes in Documentation
802
803   - Typographic and formatting errors have been corrected in the pod
804     documentation for the core and standard library files
805
806   - Explanations of several core operators have been improved
807
808   - The perldebug, perlembed, perlipc, perlsec, and perltrap documents
809     extensively revised.
810
811 o Changes in OS-specific and Build-time Support
812
813   - Support for the NeXT platform has been extended through
814     NeXTSTEP/OPENSTEP 4.0, and now includes the ability to create MABs.
815
816   - Support for OS/2 has been extended as well, and now includes
817     options for building a.out binaries.
818
819   - Support for VMS has also been extended, incorporating improved
820     processing of file specification strings, optional suppression of
821     carriage control interpretation for record-structured files,
822     improved support for the -S command line switch, a number of
823     VMS-specific bugfixes, and significantly improved performance
824     in line-oriented reading of files.
825
826   - Several hints files have been added or updated: aux.sh (updated),
827     convexos.sh (updated), irix_4.sh (updated), irix_5.sh (updated),
828     irix_6_2.sh (updated), next_3.sh (updated), next_3_2.sh (new),
829     next_3_3.sh (new), next_4.sh (new), os2/sh (updated),
830     sco.sh (updated), and solaris_2.sh (updated).
831
832   - The test driver for the regression tests now reports when a set
833     of tests have been skipped (presumable because the operation
834     they're designed to test isn't supported on the current system).