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