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
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
18 o Visible Changes to Core Functionality
20 -Support for tied filehandles.
22 o Configure enhancements
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.
29 -Support bit operations on strings longer than 15 bytes.
31 -If a regex supplied to split() contains paranthesized subpatterns
32 that can result in null matches, perl no longer coredumps.
34 -Fix problems with each() on tied hashes.
36 -Make h2ph architecture-independent by using Config at run-time
37 rather than extraction time.
41 Here are the specific file-by-file changes.
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>
49 # Absorbed into Changes5.002
53 rm -f ext/POSIX/mkposixman.pl
55 # Moved to README.os2. I'm not sure why the README files are
56 # here rather than in the appropriate subdirectories.
62 # New test for bit ops.
65 # Patches that create new tests don't always make them executable.
68 # Create a new directory for Porting and Patching info.
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.
76 To apply this patch, run the above commands,
77 cd to your perl source directory and then type
79 patch -p1 -N < perl5.003_03.pat
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
84 csplit -k perl5.003_03.pat '/^Index:/' '{99}'
88 Andy Dougherty doughera@lafcol.lafayette.edu
90 Lafayette College, Easton PA 18042
94 Include 5.003_03 change notes.
96 Move older change notes to separate files.
100 New file. Changes from perl4.036 to 5.000.
104 New file. Changes from 5.000 to 5.001
108 New file. Changes from 5.001 to 5.002
112 New file. Changes from 5.002 to 5.003
116 Relaxed warning about ksh on exotic machines.
118 Changed usesafe to useopcode.
120 Add search for gzip and zip.
122 Look more carefully for $sh (the Bourne-ish shell).
123 Use that info to set $startsh correctly.
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.
130 Don't look for sigvec() since we don't actually use it.
131 (Plus, it used to print an alarming misleading message about
134 Look for stdio's _filbuf under the possible names of
135 _filbuf, __filbuf, and _fill.
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.
141 Check for <sys/resource.h> and <sys/wait.h> for NetBSD.
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
148 Remove 'ln' for the list of essential commands. Simulate
149 it with 'cp' if necessary.
151 Change `logname` prompts to handle extra gratuitous spaces in
156 Fix silly bug in checking for fully-qualified names in /etc/hosts.
158 Generalize Gconvert tests. Give correct and more useful
161 Use $obj_ext instead of literal '.o' in the dynaloader test.
163 Include appropriate header files in bcopy() and memcpy()
164 tests. Note whether memmove is available.
166 Check whether struct sigaction works (needed for Solaris 2.5
169 Include appropriate header files for randbits test.
173 Add note about space requirements.
175 Update to match Configure changes (Opcode vs. Safe,
176 useperlio, useshrplib, etc.)
178 Reorganize the structure of some of the hints.
180 Miscellaneous clarifications.
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.
190 Support the new simplified shared libperl mechanism.
192 Use new $make_set_make directive.
194 Remove redundant libperl Make variable.
196 Remove unnecessary MAB variable.
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!
202 Index: Porting/Glossary
204 New file describing all the config.sh variables.
205 Eventually, I hope to fill this directory with other useful
210 Replace old README.os2 with more up-to-date os2/README.
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.
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.
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.
231 Possibly Include <signal.h> and <unistd.h>
235 No longer prefer bcmp over memcmp when order doesn't matter.
237 Support bit operations on strings longer than 15 bytes.
245 Expand warning at the top.
249 Clean up docmentation installation errors.
251 Index: ext/IO/lib/IO/Seekable.pm
253 Clean up docmentation installation errors.
255 Index: ext/IO/lib/IO/Select.pm
257 Clean up docmentation installation errors.
259 Index: ext/Opcode/Opcode.xs
261 Add support for tied filehandles.
263 Index: ext/SDBM_File/sdbm/sdbm.h
265 Change the Mymalloc to match Perl_malloc in perl.h.
267 Index: ext/util/make_ext
270 Get rid of unused altmake.
274 Fix problems with each() on tied hashes.
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 . . .
283 Safefree cast matches type of free() whether it's perl's
284 malloc/free or the system's malloc/free.
286 Index: hints/README.hints
288 Remove out-of-date info.
290 Document a bit about how hint files work.
294 qmaxmem hint doesn't apply to gcc.
298 Configure will now automatically detect shared libperl stuff.
300 Index: hints/dynixptx.sh
304 Configure will now automatically detect shared libperl stuff.
308 Use glibpth instead of libpth. This allows Configure to
309 add local directories, such as /opt/local/lib, etc.
311 Index: hints/irix_6_2.sh
313 Include some info on cc -n32 compile.
315 Index: hints/linux.sh
317 Configure now tests gcvt() more thoroughly.
319 Index: hints/machten_2.sh
321 Update where to find dld.
325 Use glibpth instead of libpth.
327 Index: hints/next_3.sh
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.
333 Index: hints/next_4.sh
335 Get rid of extraneous isnext_4 variable. Configure and
336 Makefile.SH will use $osname and $osvers instead.
338 Build up $mab dynamically based on available architectures.
340 Absorb $mab into ccflags and ccdlflags. I hope that will
341 cover everything. (Configure should automatically remove
342 the -arch stuff from cppflags.)
344 Configure now knows next4 needs to use a shared libperl.5.so.
346 Allow users to use -Dprefix.
350 Try to update to reflect newer shared libperl stuff.
351 I probably goofed :-).
355 Additional notes on using icc.
357 Additional flags for dynamic loading.
359 Index: hints/solaris_2.sh
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.
364 Index: hints/sunos_4_0.sh
366 Don't include <unistd.h>
368 Index: hints/sunos_4_1.sh
370 Add brief note about GNU as and ld.
372 Don't include <unistd.h>
374 Add notes about WHOA THERE messages.
376 Index: hints/titanos.sh
378 Include sfio in libswanted.
380 Don't set libpth any more.
382 Index: hints/umips.sh
388 Use memcmp even in cases where ordering doesn't matter.
390 Fix problems with each() on tied hashes.
394 Simplify installation of shared libperl.so.
396 Avoid reaching Command Failed!!! with /usr/bin/perl.
398 Index: lib/AutoSplit.pm
400 Clean up docmentation installation errors.
402 Index: lib/ExtUtils/MM_Unix.pm
404 Remove MAB references.
406 Use 'useshrplib' instead of 'd_shrplib'
408 Index: lib/ExtUtils/MakeMaker.pm
410 Remove mab references.
412 Index: lib/FindBin.pm
414 Clean up docmentation installation errors.
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.
423 Index: lib/Text/Wrap.pm
425 Remove double 'use strict'.
427 Index: lib/perl5db.pl
429 Add explicit '&' to avoid warnings under strict refs.
431 Index: lib/sigtrap.pm
433 Clean up docmentation installation errors.
437 Use Configure's $sh and $make_set_make variables.
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.
450 Change to SUBVERSION 3.
458 No longer prefer bcmp slightly for comparisons that don't care
461 Rely on Configure setting SH_PATH.
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.)
467 Fix problems with each() on tied hashes.
469 Work around crypt prototype problem on NeXT.
473 Fixes to support non-std stdio.
477 Try to document the various #defines a bit. This is far from
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
486 Fixes to support non-std stdio.
490 Restore use of Safefree() macro.
494 Restore use of Safefree() macro.
498 Delete duplicate line.
500 Index: plan9/buildinfo
504 Index: pod/perlapio.pod
506 Clean up docmentation installation errors.
508 Index: pod/perlipc.pod
514 Index: pod/perlmod.pod
516 Fix a minor nit regarding Exporter.
518 Index: pod/perlre.pod
520 Clean up docmentation installation errors.
522 Index: pod/perltie.pod
524 Add support for tied filehandles.
526 Index: pod/perltrap.pod
528 Clean up docmentation installation errors.
530 Index: pod/perlxstut.pod
532 Clean up docmentation installation errors.
534 Index: pod/pod2man.PL
536 Clean up docmentation installation errors.
540 Add support for tied filehandles.
542 If a regex supplied to split() contains paranthesized subpatterns
543 that can result in null matches, perl coredumps.
547 Use memcmp instead of bcmp even when we don't care about order.
549 Add support for tied filehandles.
553 Include <unistd.h>, <sys/wait.h>, and <sys/resource.h>.
554 (The latter two are especially for NetBSD.)
556 Don't assume sys/time.h and sys/select.h can't coexist.
562 Fix safe*alloc and safefree prototypes.
566 Use memcmp instead of bcmp even when we don't care about order.
570 Use memcmp instead of bcmp even when we don't care about order.
572 Index: t/lib/opcode.t
574 Add support for tied filehandles.
578 Support bit operations on strings longer than 15 bytes.
582 Add support for tied filehandles.
586 If a regex supplied to split() contains paranthesized subpatterns
587 that can result in null matches, perl coredumps.
593 Use memcmp instead of bcmp even when we don't care about order.
599 Use correct types for safe*alloc and safefree functions.
603 Make h2ph architecture-independent by using Config at run-time
604 rather than extraction time.
608 Remove unnecessary curlies. (They are a leftover from
609 an older auto_init mechanism.)
611 Index: x2p/Makefile.SH
613 Use Configure's $sh and $make_set_make.
615 Remove MAB stuff, since it's now in ccflags.
617 Keep 5.003's RCS info.
621 Keep 5.003's RCS info.
625 Use Configure's FILE_filbuf macro instead of a raw _filbuf.
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.
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.
643 - Several bug fixs from perl5-porters
644 - Make sources non-ANSI C correct again.
646 - Last of shared-hash-key patches
647 - eval '(0,1..3)'; # --> SegFault
648 - coredumps after simple subsitutes.
649 - Correction to UNIVERSAL::VERSION docs.
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).
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
661 o Changes in OS-specific and Build-time Support
662 - Attempted to re-created 5.003_01's NeXT support with metaconfig units.
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.
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:
679 o Visible Changes to Core Functionality
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.
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.
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.
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.
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.
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.
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
711 o Changes in Core Internals
713 - Symbol table and method lookups have been made faster.
715 - Perl subroutines which just return a constant value are now
716 optimized at compile time into inline constants.
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
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
728 - A bug which caused suiperl to fail silently, albeit securely,
729 in version 5.003 on some systems has been fixed.
731 - Management of Unix-style signal handlers via the %SIG associative
732 array has been made safer.
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
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.
751 - Several memory leaks in the creation and destruction of
752 multiple interpreters have been fixed.
754 o Changes in the Standard Library and Utilities
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
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.
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.
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.
778 - The FindBin library module, which determines the full path
779 to the currently executing program, has been added to the
780 standard distribution.
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.
786 - The Carp library module now considers the @ISA chain when
787 determining the caller's package for inclusion in error messages.
789 - The h2xs, perlbug, and xsubpp utilities have been updated.
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.
796 - The pod documentation formatting tools in the standard distribution
797 can now handle characters in the input stream whose high bit is set.
799 - The cperl-mode EMACS editing mode has been updated.
801 o Changes in Documentation
803 - Typographic and formatting errors have been corrected in the pod
804 documentation for the core and standard library files
806 - Explanations of several core operators have been improved
808 - The perldebug, perlembed, perlipc, perlsec, and perltrap documents
811 o Changes in OS-specific and Build-time Support
813 - Support for the NeXT platform has been extended through
814 NeXTSTEP/OPENSTEP 4.0, and now includes the ability to create MABs.
816 - Support for OS/2 has been extended as well, and now includes
817 options for building a.out binaries.
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.
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).
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).