summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJarkko Hietaniemi <jhi@iki.fi>1999-08-29 09:29:08 +0000
committerJarkko Hietaniemi <jhi@iki.fi>1999-08-29 09:29:08 +0000
commitcbca01e195aef313c02c9c3d2c845e117bfcafa4 (patch)
treec30e8fc1a78350e12e7606c784e07fa939986483
parentc5a0f51aeadf6b8a7ed259c017c10b71dbc08619 (diff)
parentfc0dc3b334ed07492841d4d27f3f4100c92588d2 (diff)
downloadperl-cbca01e195aef313c02c9c3d2c845e117bfcafa4.tar.gz
Integrate with Sarathy.
p4raw-id: //depot/cfgperl@4036
-rw-r--r--Changes885
-rw-r--r--Porting/patching.pod138
-rw-r--r--Todo54
-rw-r--r--Todo-5.0053
-rw-r--r--XSUB.h15
-rwxr-xr-xembed.pl121
-rw-r--r--embedvar.h993
-rw-r--r--ext/Thread/Thread.xs8
-rw-r--r--lib/unicode/Is/SylA.pl2
-rw-r--r--lib/unicode/Is/SylC.pl2
-rw-r--r--lib/unicode/Is/SylE.pl2
-rw-r--r--lib/unicode/Is/SylI.pl2
-rw-r--r--lib/unicode/Is/SylO.pl2
-rw-r--r--lib/unicode/Is/SylU.pl2
-rw-r--r--lib/unicode/Is/SylV.pl2
-rw-r--r--lib/unicode/Is/SylWA.pl2
-rw-r--r--lib/unicode/Is/SylWC.pl2
-rw-r--r--lib/unicode/Is/SylWE.pl2
-rw-r--r--lib/unicode/Is/SylWI.pl2
-rw-r--r--lib/unicode/Is/SylWV.pl2
-rw-r--r--malloc.c14
-rw-r--r--mg.c20
-rw-r--r--op.c8
-rw-r--r--patchlevel.h2
-rw-r--r--perl.c31
-rw-r--r--perl.h61
-rwxr-xr-xperlapi.h2
-rw-r--r--pod/perldelta.pod7
-rw-r--r--pod/perlguts.pod53
-rw-r--r--pp_ctl.c8
-rw-r--r--run.c10
-rw-r--r--sv.c8
-rw-r--r--util.c41
-rw-r--r--win32/Makefile2
-rw-r--r--win32/config.bc1
-rw-r--r--win32/config.gc1
-rw-r--r--win32/config.vc1
-rw-r--r--win32/config_H.bc225
-rw-r--r--win32/config_H.gc225
-rw-r--r--win32/config_H.vc225
-rw-r--r--win32/makefile.mk2
41 files changed, 2024 insertions, 1164 deletions
diff --git a/Changes b/Changes
index 6131644c75..e23e88ee2c 100644
--- a/Changes
+++ b/Changes
@@ -75,7 +75,890 @@ indicator:
----------------
-Version 5.005_60 Development release working toward 5.006
+Version 5.005_61 Development release working toward 5.006
+----------------
+
+____________________________________________________________________________
+[ 4015] By: gsar on 1999/08/20 22:17:41
+ Log: perl_free() should use PerlMem_free()
+ Branch: perl
+ ! perl.c
+____________________________________________________________________________
+[ 4014] By: gsar on 1999/08/20 22:10:46
+ Log: win32 tweaks
+ Branch: perl
+ ! XSUB.h mg.c perl.c win32/config.bc win32/config.gc
+ ! win32/config.vc win32/config_H.bc win32/config_H.gc
+ ! win32/config_H.vc
+____________________________________________________________________________
+[ 4013] By: gsar on 1999/08/20 22:09:56
+ Log: DEBUG_m() adjusted to internalize dTHX
+ Branch: perl
+ ! malloc.c perl.h util.c
+____________________________________________________________________________
+[ 4012] By: gsar on 1999/08/20 17:51:06
+ Log: make autogenerated files writable
+ Branch: perl
+ ! (edit 171 files)
+____________________________________________________________________________
+[ 4011] By: gsar on 1999/08/20 17:43:47
+ Log: update Changes
+ Branch: perl
+ ! Changes perl.h pod/perldelta.pod pod/perlguts.pod
+____________________________________________________________________________
+[ 4010] By: gsar on 1999/08/20 17:21:53
+ Log: up patchlevel &c
+ Branch: perl
+ ! Changes patchlevel.h win32/Makefile win32/config_H.bc
+ ! win32/config_H.gc win32/config_H.vc win32/makefile.mk
+____________________________________________________________________________
+[ 4009] By: gsar on 1999/08/20 16:46:26
+ Log: add missing Is/Syl*.pl files
+ Branch: perl
+ + lib/unicode/Is/SylA.pl lib/unicode/Is/SylC.pl
+ + lib/unicode/Is/SylE.pl lib/unicode/Is/SylI.pl
+ + lib/unicode/Is/SylO.pl lib/unicode/Is/SylU.pl
+ + lib/unicode/Is/SylV.pl lib/unicode/Is/SylWA.pl
+ + lib/unicode/Is/SylWC.pl lib/unicode/Is/SylWE.pl
+ + lib/unicode/Is/SylWI.pl lib/unicode/Is/SylWV.pl
+____________________________________________________________________________
+[ 4008] By: gsar on 1999/08/20 16:31:02
+ Log: integrate cfgperl contents into mainline
+ Branch: perl
+ +> ext/ByteLoader/hints/sunos.pl lib/charnames.pm
+ +> lib/unicode/Eq/Latin1 lib/unicode/Eq/Unicode
+ +> lib/unicode/syllables.txt t/lib/charnames.t t/lib/syslfs.t
+ +> t/op/lfs.t
+ - lib/unicode/EthiopicSyllables.txt
+ - lib/unicode/MakeEthiopicSyllables.PL
+ !> (integrate 261 files)
+____________________________________________________________________________
+[ 4007] By: gsar on 1999/08/20 15:24:08
+ Log: support USE_THREADS+MULTIPLICITY; source compat tweaks for
+ USE_THREADS and MULTIPLICITY; minor pod adjustments
+ Branch: perl
+ ! Porting/patching.pod Todo Todo-5.005 XSUB.h embed.pl
+ ! embedvar.h perl.c perl.h pod/perlguts.pod util.c
+____________________________________________________________________________
+[ 4006] By: jhi on 1999/08/19 19:01:41
+ Log: Tighten the vec() code so that naughty BITS cause an error.
+ Branch: cfgperl
+ ! doop.c
+____________________________________________________________________________
+[ 4005] By: jhi on 1999/08/19 15:55:09
+ Log: Don't document ill-defined vec() bits cases
+ (for which the code doesn't work right in any case)
+ Branch: cfgperl
+ ! pod/perldiag.pod pod/perlfunc.pod
+____________________________________________________________________________
+[ 4004] By: jhi on 1999/08/19 12:49:41
+ Log: Removed duplicated code (in pp.c and mg.c) by introducing
+ do_vecget(). NOTE: the calling convention of do_vecset()
+ changes, too: the `offset' that is assigned to LvTARGOFF(TARG)
+ in pp_vec() is no more multiplied by `size' in pp_vec(),
+ the multiplication is now done in do_vecset().
+
+ Also fix a cpp thinko in change #4002.
+ Branch: cfgperl
+ ! doop.c embed.h embed.pl embedvar.h global.sym mg.c objXSUB.h
+ ! perl.h perlapi.c pod/perldiag.pod pod/perlfunc.pod pp.c
+ ! proto.h
+____________________________________________________________________________
+[ 4003] By: jhi on 1999/08/18 08:27:22
+ Log: Warn about small spherical distances.
+ Branch: cfgperl
+ ! lib/Math/Trig.pm
+____________________________________________________________________________
+[ 4002] By: jhi on 1999/08/17 09:11:51
+ Log: Enhance IV_FITS_IN_IV (though it's still unused).
+ Branch: cfgperl
+ ! perl.h
+____________________________________________________________________________
+[ 4001] By: jhi on 1999/08/17 08:13:34
+ Log: From: andreas.koenig@anima.de (Andreas J. Koenig)
+ Message-ID: <sfcogg7ylk7.fsf@hohenstaufen.in-berlin.de>
+ To: The Perl5 Porters Mailing List <perl5-porters@perl.org>
+ Subject: [PATCH] overload.pm str/num confu
+ Date: 17 Aug 1999 08:21:12 +0200
+ Branch: cfgperl
+ ! lib/overload.pm
+____________________________________________________________________________
+[ 4000] By: jhi on 1999/08/17 07:20:23
+ Log: From: merlyn@stonehenge.com (Randal L. Schwartz)
+ To: perl5-porters@perl.org
+ Subject: [ID 19990816.006] small patch to perlobj.pod from 5.005_03
+ Date: 16 Aug 1999 14:24:28 -0700
+ Message-Id: <m1ogg7to4z.fsf@halfdome.holdit.com>
+ Branch: cfgperl
+ ! pod/perlobj.pod
+____________________________________________________________________________
+[ 3999] By: jhi on 1999/08/16 19:49:09
+ Log: Integrate with Nick.
+ Branch: cfgperl
+ !> cop.h op.c perl.c t/op/eval.t t/pragma/warn/op util.c
+____________________________________________________________________________
+[ 3998] By: jhi on 1999/08/16 19:44:29
+ Log: Fix most of the pod2man moanings reported in
+
+ From: "Larry W. Virden" <lvirden@cas.org>
+ To: perl5-porters@perl.org
+ Subject: [ID 19990803.011] Not OK: perl 5.00560 on sun4-solaris 2.6
+ (UNINSTALLED)
+ Date: Tue, 3 Aug 1999 15:35:06 -0400 (EDT)
+ Message-Id: <199908031935.PAA27692@cas.org>
+
+ Configure regen'ed.
+ Branch: cfgperl
+ ! Configure Porting/Glossary Porting/config.sh Porting/config_H
+ ! config_h.SH ext/B/B/Stash.pm lib/Carp/Heavy.pm
+ ! lib/Dumpvalue.pm lib/Exporter/Heavy.pm lib/filetest.pm
+ ! lib/utf8.pm pod/perllexwarn.pod pod/perlxstut.pod
+ ! utils/h2xs.PL utils/perlcc.PL
+____________________________________________________________________________
+[ 3997] By: jhi on 1999/08/16 19:20:37
+ Log: A fix of sorts for the flush-before-dup scenario.
+ Branch: cfgperl
+ ! doio.c
+____________________________________________________________________________
+[ 3996] By: jhi on 1999/08/16 19:14:37
+ Log: More paranoia.
+ Branch: cfgperl
+ ! sv.c
+____________________________________________________________________________
+[ 3995] By: jhi on 1999/08/16 18:55:35
+ Log: Batch of small 64-bit/long double/large file support tweaks:
+ - scan for LDBL_DIG
+ - from DBL_DIG and LDBL_DIG select NV_DIG
+ - introduce IVSIZE, UVSIZE, NVSIZE
+ - introduce IV_DIG
+ - remove stdio64
+ - AIX uses `oslevel` when others use `uname -r`
+ - already AIX 4.2 goes 64-bit
+ - in HP-UX require the 64-bit libc, just the directory isn't enough
+ - group ids are not NVs
+ - #undef USE_LONG_DOUBLE if long double is no better than double
+ - introduce NV_WITHIN_*() and IV_FITS_IN_IV
+ - mention large file support in perldelta
+ - introduce quad TOPpin' and POPpin'
+ - the svcat... buffer was tiny for printing quads in %b
+ - fix the multiplication test in 64bit.t
+ - try to make VMS to comply with all this removal and "introducal"
+ of symbols
+ Branch: cfgperl
+ ! Configure config_h.SH dump.c hints/aix.sh hints/hpux.sh mg.c
+ ! perl.h perlio.c pod/perldelta.pod pp.h sv.c t/lib/syslfs.t
+ ! t/op/64bit.t t/op/lfs.t utf8.c vms/subconfigure.com
+ Branch: metaconfig
+ ! U/modified/d_longdbl.U
+ Branch: metaconfig/U/perl
+ + d_ldbl_dig.U
+____________________________________________________________________________
+[ 3994] By: jhi on 1999/08/16 07:53:44
+ Log: More Configure/subconfigure.com syncing.
+ Branch: cfgperl
+ ! vms/subconfigure.com
+____________________________________________________________________________
+[ 3993] By: jhi on 1999/08/14 22:09:26
+ Log: Remove from VMS what the change #3982 took away from Configure lands.
+ Branch: cfgperl
+ ! vms/subconfigure.com
+____________________________________________________________________________
+[ 3992] By: jhi on 1999/08/14 13:29:13
+ Log: Small test tweaks.
+ Branch: cfgperl
+ ! t/io/dup.t t/lib/dprof.t t/lib/odbm.t
+____________________________________________________________________________
+[ 3991] By: jhi on 1999/08/14 13:08:41
+ Log: Augment filesize limit note.
+ Branch: cfgperl
+ ! doio.c
+____________________________________________________________________________
+[ 3990] By: jhi on 1999/08/14 13:06:12
+ Log: Note about filesize limits.
+ Branch: cfgperl
+ ! doio.c pp_sys.c
+____________________________________________________________________________
+[ 3989] By: jhi on 1999/08/14 11:31:58
+ Log: Catch the case of filesize limits.
+ Branch: cfgperl
+ ! t/lib/syslfs.t t/op/lfs.t
+____________________________________________________________________________
+[ 3988] By: nick on 1999/08/14 09:20:58
+ Log: New lightweight Carp has a require. If Carp is used in a __DIE__ handler
+ this causes a POPSTACK panic. The problem seems to be that although
+ die_where() has unwound the tail of perl_vdie() top_env setjmp has been
+ set to resume execution there. Avoiding setting CATCH_SET(TRUE) in
+ call_sv() avoids this. So invent a new G_NOCATCH flag to disable
+ messing with CATCH_SET() in call_sv, use it in perl_vdie().
+ Add test to op/eval.t which will fail (panic) if bug comes back.
+ >>> I AM NOT CONVINCED THIS IS CORRECT LONG TERM FIX <<<
+ Branch: perl
+ ! cop.h perl.c t/op/eval.t util.c
+____________________________________________________________________________
+[ 3987] By: jhi on 1999/08/13 23:57:52
+ Log: From: "Craig A. Berry" <craig.berry@metamor.com>
+ To: perl5-porters@perl.org, vmsperl@perl.org, sarathy@activestate.com
+ Subject: [PATCH 5.005_60] fix MM_VMS.pm for space-delimited lists
+ Date: Fri, 13 Aug 1999 17:42:47 -0500
+ Message-Id: <v04210105b3da3ed9599d@[172.16.246.133]>
+ Branch: cfgperl
+ ! lib/ExtUtils/MM_VMS.pm
+____________________________________________________________________________
+[ 3986] By: jhi on 1999/08/13 23:56:44
+ Log: Don't quit before printing out the message.
+ Branch: cfgperl
+ ! t/lib/syslfs.t t/op/lfs.t
+____________________________________________________________________________
+[ 3985] By: jhi on 1999/08/13 23:35:49
+ Log: Remove more t/ trash on target "clean".
+ Branch: cfgperl
+ ! Makefile.SH
+____________________________________________________________________________
+[ 3984] By: jhi on 1999/08/13 23:02:53
+ Log: Avoid double long double.
+ Branch: cfgperl
+ ! Configure config_h.SH
+ Branch: metaconfig/U/perl
+ ! uselongdbl.U
+____________________________________________________________________________
+[ 3983] By: jhi on 1999/08/13 22:59:56
+ Log: BYTEORDER fix.
+ Branch: cfgperl
+ ! Configure config_h.SH
+ Branch: metaconfig
+ ! U/compline/byteorder.U
+____________________________________________________________________________
+[ 3982] By: jhi on 1999/08/13 22:48:40
+ Log: Jumbo Configure and large file support update.
+ Remove a lot of unneeded 64-bitness cruft;
+ re-introduce BYTEORDER; update 64-bitness hints;
+ lfs should now work in Solaris; long doubles in AIX.
+ Branch: cfgperl
+ ! Configure config_h.SH doio.c hints/aix.sh hints/hpux.sh
+ ! hints/irix_6.sh hints/solaris_2.sh iperlsys.h perl.h perlio.c
+ ! perlsdio.h pp.h pp_sys.c
+ Branch: metaconfig
+ ! U/compline/byteorder.U U/compline/ccflags.U
+ Branch: metaconfig/U/perl
+ ! d_dlsymun.U io64.U uselongdbl.U
+____________________________________________________________________________
+[ 3981] By: jhi on 1999/08/13 15:11:51
+ Log: Retract change #3977 (do_open9() adds O_LARGEFILE automagically).
+ Branch: cfgperl
+ ! t/lib/syslfs.t
+____________________________________________________________________________
+[ 3980] By: jhi on 1999/08/13 15:09:11
+ Log: Introduce HAS_LLSEEK.
+ Branch: cfgperl
+ ! Configure config_h.SH perl.h
+____________________________________________________________________________
+[ 3979] By: jhi on 1999/08/13 14:29:47
+ Log: From: <dan@sidhe.org>
+ To: perl5-porters@perl.org, vmsperl@perl.org, bailey@newman.upenn.edu,
+ sarathy@activestate.com
+ Subject: [PATCH 5.005_60]fix up VMS->unix filename translation a bit
+ Date: Fri, 13 Aug 1999 09:00:42 -0700 (PDT)
+ Message-ID: <Pine.LNX.4.10.9908130849390.3950-100000@tuatha.sidhe.org>
+ Branch: cfgperl
+ ! vms/vms.c
+____________________________________________________________________________
+[ 3978] By: jhi on 1999/08/13 09:56:46
+ Log: Make the 64-bit tests more paranoid.
+ Branch: cfgperl
+ ! t/op/64bit.t
+____________________________________________________________________________
+[ 3977] By: jhi on 1999/08/13 09:56:25
+ Log: Use O_LARGEFILE if available.
+ Branch: cfgperl
+ ! t/lib/syslfs.t
+____________________________________________________________________________
+[ 3976] By: jhi on 1999/08/12 21:49:16
+ Log: IRIX64 needs more -mabi=64 with gcc.
+ Branch: cfgperl
+ ! hints/irix_6.sh
+____________________________________________________________________________
+[ 3975] By: jhi on 1999/08/12 21:02:03
+ Log: Reincarnate change #3967, now in more modest form.
+ Branch: cfgperl
+ ! hints/irix_6.sh
+____________________________________________________________________________
+[ 3974] By: jhi on 1999/08/12 20:49:36
+ Log: Remove rt from libswanted (I added it many moons ago
+ when I thought it would be useful in Digital UNIX,
+ I was wrong); undo the recent IRIX hints changes,
+ getting rid of one warning brought new ones.
+ Branch: cfgperl
+ ! Configure config_h.SH hints/irix_6.sh
+ Branch: metaconfig
+ ! U/modified/Myinit.U
+____________________________________________________________________________
+[ 3973] By: jhi on 1999/08/12 19:42:53
+ Log: st_blocks is in 512 byte blocks.
+ Branch: cfgperl
+ ! t/lib/syslfs.t t/op/lfs.t
+____________________________________________________________________________
+[ 3972] By: jhi on 1999/08/12 19:27:31
+ Log: Don't claim defeat too early.
+ Branch: cfgperl
+ ! Configure config_h.SH
+ Branch: metaconfig/U/perl
+ ! longdblfio.U
+____________________________________________________________________________
+[ 3971] By: jhi on 1999/08/12 19:24:14
+ Log: IRIX 64-bit hint tweak.
+ Branch: cfgperl
+ ! hints/irix_6.sh
+____________________________________________________________________________
+[ 3970] By: nick on 1999/08/12 19:17:20
+ Log: Turn of deprecated warnings for defined(@Sompack::ISA) type
+ tests i.e. RV2AV and RV2HV
+ Branch: perl
+ ! op.c t/pragma/warn/op
+____________________________________________________________________________
+[ 3969] By: jhi on 1999/08/12 19:06:17
+ Log: Add Configure -Duselongdouble and add a missing semicolon.
+ Branch: cfgperl
+ ! Configure config_h.SH sv.c
+ Branch: metaconfig/U/perl
+ + uselongdbl.U
+____________________________________________________________________________
+[ 3968] By: jhi on 1999/08/12 18:46:00
+ Log: Simply exit() early if lfs support seems unlikely.
+ Branch: cfgperl
+ ! t/lib/syslfs.t t/op/lfs.t
+____________________________________________________________________________
+[ 3967] By: jhi on 1999/08/12 18:44:05
+ Log: Suffer silently for unused libraries.
+ Branch: cfgperl
+ ! hints/irix_6.sh
+____________________________________________________________________________
+[ 3966] By: jhi on 1999/08/12 13:18:44
+ Log: Update MANIFEST to follow change #3965.
+ Branch: cfgperl
+ ! MANIFEST
+____________________________________________________________________________
+[ 3965] By: jhi on 1999/08/12 13:15:38
+ Log: Regenerate Unicode tables based on new syllable lists
+ from Daniel Yacob.
+ Branch: cfgperl
+ ! (edit 159 files)
+____________________________________________________________________________
+[ 3964] By: jhi on 1999/08/12 10:06:24
+ Log: Remove more spurious casting.
+ Branch: cfgperl
+ ! pp_sys.c
+____________________________________________________________________________
+[ 3963] By: jhi on 1999/08/12 08:18:53
+ Log: Minor niggles on the lfs tests.
+ Branch: cfgperl
+ ! t/lib/syslfs.t t/op/lfs.t
+____________________________________________________________________________
+[ 3962] By: jhi on 1999/08/11 22:48:25
+ Log: Don't bother with lfs testing if off_t is too small.
+ Branch: cfgperl
+ ! t/lib/syslfs.t t/op/lfs.t
+____________________________________________________________________________
+[ 3961] By: jhi on 1999/08/11 22:22:54
+ Log: Long double patches from Dan Sugalski.
+ Branch: cfgperl
+ ! sv.c
+____________________________________________________________________________
+[ 3960] By: jhi on 1999/08/11 22:17:55
+ Log: Flush buffer before duplicating file descriptor.
+
+ From: Mark-Jason Dominus <mjd@plover.com>
+ To: Graham Barr <gbarr@pobox.com>
+ cc: Vicki Brown <vlb@cfcl.com>, perl5-porters@perl.org, mjd@plover.com
+ Subject: Re: [ID 19990811.002] can't dup DATA? (PATCH (5.005_57))
+ Date: Wed, 11 Aug 1999 15:56:09 -0400
+ Message-ID: <19990811195610.5933.qmail@plover.com>
+
+ From: Mark-Jason Dominus <mjd@plover.com>
+ To: perl5-porters@perl.org
+ Subject: Re: [ID 19990811.002] can't dup DATA? (PATCH (5.005_57))
+ Date: Wed, 11 Aug 1999 16:05:46 -0400
+ Message-ID: <19990811200546.6165.qmail@plover.com>
+ Branch: cfgperl
+ ! doio.c pod/perldelta.pod
+____________________________________________________________________________
+[ 3959] By: jhi on 1999/08/11 22:11:35
+ Log: Bypass fsync(NULL) (crashes miniperl compiled with DEC C 5.2)
+
+ From: "Craig A. Berry" <craig.berry@metamor.com>
+ Sender: owner-perl5-porters@perl.org
+ To: vmsperl@perl.org, perl5-porters@perl.org, sarathy@activestate.com,
+ bailey@newman.upenn.edu
+ Subject: [PATCH 5.005_60] vms.c my_flush patch to circumvent fileno
+ problem
+ Date: Wed, 11 Aug 1999 14:31:11 -0500
+ Message-Id: <4.2.0.58.19990811141007.00b8f8a0@mmtnt11.metamor.com>
+ Branch: cfgperl
+ ! vms/vms.c
+____________________________________________________________________________
+[ 3958] By: jhi on 1999/08/11 15:35:45
+ Log: Add a hopefully comforting message if there seems to be no LFS.
+ This seems to be the case with e.g. ext2fs, a somewhat popular fs.
+ The tests will fail on lfs tests only if quad is available,
+ if ENOQUAD, the lfs tests will be skipped.
+ Branch: cfgperl
+ ! t/lib/syslfs.t t/op/lfs.t
+____________________________________________________________________________
+[ 3957] By: jhi on 1999/08/11 12:25:59
+ Log: Unapply an experimental patch that accidentally escaped
+ from the lab by piggybacking with the change #3955.
+ Branch: cfgperl
+ ! pp.c pp.h pp_hot.c
+____________________________________________________________________________
+[ 3956] By: jhi on 1999/08/11 08:19:23
+ Log: Add sysio large file support testing.
+ Branch: cfgperl
+ + t/lib/syslfs.t
+ ! MANIFEST pod/perlfunc.pod t/op/64bit.t t/op/lfs.t
+____________________________________________________________________________
+[ 3955] By: jhi on 1999/08/10 22:39:11
+ Log: From: <dan@sidhe.org>
+ To: vmsperl@perl.org, perl5-porters@perl.org,
+ sarathy@activestate.com, bailey@newman.upenn.edu
+ Subject: [PATCH 5.005_60]Patches needed to get _60 building with
+ threads on VMS
+ Date: Tue, 10 Aug 1999 16:34:56 -0700 (PDT)
+ Message-ID: <Pine.LNX.4.10.9908101631030.18266-100000@tuatha.sidhe.org>
+ Branch: cfgperl
+ ! ext/Devel/DProf/DProf.xs ext/DynaLoader/dl_vms.xs
+ ! ext/POSIX/POSIX.xs pp.c pp.h pp_hot.c vms/vms.c vms/vmsish.h
+ ! vms/writemain.pl
+____________________________________________________________________________
+[ 3954] By: jhi on 1999/08/10 20:37:55
+ Log: LFS testing robustness.
+ Branch: cfgperl
+ ! t/op/lfs.t
+____________________________________________________________________________
+[ 3953] By: jhi on 1999/08/10 19:54:50
+ Log: From: <dan@sidhe.org>
+ To: vmsperl@perl.org, perp5-porters@perl.org, bailey@newman.upenn.edu,
+ sarathy@activestate.com
+ Subject: [PATCH 5.005_60]Pathces to get _60 building on VMS
+ Date: Tue, 10 Aug 1999 13:28:18 -0700 (PDT)
+ Message-ID: <Pine.LNX.4.10.9908101323130.18266-100000@tuatha.sidhe.org>
+ Branch: cfgperl
+ ! configure.com vms/descrip_mms.template vms/gen_shrfls.pl
+ ! vms/subconfigure.com vms/vmsish.h
+____________________________________________________________________________
+[ 3952] By: jhi on 1999/08/10 17:18:57
+ Log: AIX is different, again. Now in cc -E output.
+ Branch: cfgperl
+ ! Configure config_h.SH
+ Branch: metaconfig
+ ! U/modified/cppstdin.U
+____________________________________________________________________________
+[ 3951] By: jhi on 1999/08/10 14:37:08
+ Log: Use Pid_t on pgrp matters.
+ Branch: cfgperl
+ ! pp_sys.c
+____________________________________________________________________________
+[ 3950] By: jhi on 1999/08/10 14:35:30
+ Log: Use Pid_t.
+ Branch: cfgperl
+ ! doio.c embed.h embed.pl embedvar.h global.sym perlapi.c
+ ! pp_sys.c proto.h util.c
+____________________________________________________________________________
+[ 3949] By: jhi on 1999/08/10 14:11:15
+ Log: Use Mode_t.
+ Branch: cfgperl
+ ! doio.c embed.h embed.pl embedvar.h global.sym perlapi.c
+ ! perlapi.h pp_sys.c proto.h
+____________________________________________________________________________
+[ 3948] By: jhi on 1999/08/10 13:53:19
+ Log: Small perlbug doc tweaks from Jon Orwant.
+ Branch: cfgperl
+ ! utils/perlbug.PL
+____________________________________________________________________________
+[ 3947] By: jhi on 1999/08/10 09:55:11
+ Log: Large file support testing.
+ Branch: cfgperl
+ + t/op/lfs.t
+ ! MANIFEST t/op/64bit.t
+____________________________________________________________________________
+[ 3946] By: jhi on 1999/08/10 09:13:54
+ Log: Remove I32 casting from time-related functions.
+ Branch: cfgperl
+ ! pp_sys.c
+____________________________________________________________________________
+[ 3945] By: jhi on 1999/08/10 09:06:42
+ Log: Gratuitous uid and gid casts to I32s and ints removed.
+ There are still problem spots in printfing such ids:
+ width (%d vs %ld) and signedness %d vs %u.
+ Branch: cfgperl
+ ! doio.c embed.h embed.pl embedvar.h global.sym intrpvar.h mg.c
+ ! perl.c perlapi.c pp_hot.c proto.h
+____________________________________________________________________________
+[ 3944] By: jhi on 1999/08/10 07:43:03
+ Log: Remove I32 casts from pp_stat, these make stat()
+ very broken e.g. on files larger than 2 gigabytes.
+ Reported by
+ From: Phil Lobbes <phil@finchcomputer.com>
+ To: perl5-porters@perl.org
+ Subject: [ID 19990810.001] Possible bug using stat w/large files Digital
+ UNIX Perl 5.005_03
+ Date: Mon, 09 Aug 1999 21:38:54 -0700
+ Message-Id: <199908100438.VAA08292@ultra.finchcomputer.com>
+
+ There are more of these I32 casts all over pp_sys.c,
+ all of them should be checked.
+ Branch: cfgperl
+ ! pp_sys.c
+____________________________________________________________________________
+[ 3943] By: jhi on 1999/08/10 07:38:30
+ Log: Remove blathering.
+ Branch: cfgperl
+ ! lib/unicode/mktables.PL
+____________________________________________________________________________
+[ 3942] By: jhi on 1999/08/09 20:35:13
+ Log: lexwarn maintenance: new warning class unsafe
+ subclasses 'overflow' and 'portable' created,
+ used by the recent integer overflow warnings.
+ Class syntax subclass 'octal' renamed to 'digit',
+ binary and hexadecimal parsing errors also 'digit' warnings.
+ Branch: cfgperl
+ ! lib/warning.pm pod/perllexwarn.pod t/pragma/warn/util toke.c
+ ! util.c warning.h warning.pl
+____________________________________________________________________________
+[ 3941] By: jhi on 1999/08/09 10:40:47
+ Log: Integrate with Nick.
+ Branch: cfgperl
+ +> opnames.h
+ !> Changes MANIFEST embed.h embed.pl ext/B/B/C.pm ext/B/B/CC.pm
+ !> global.sym opcode.h opcode.pl perl.h perlapi.c pp.c
+____________________________________________________________________________
+[ 3940] By: jhi on 1999/08/09 10:32:43
+ Log: Regenerate the Unicode tables after having updated the Unicode
+ database (change #3939).
+ Branch: cfgperl
+ ! (edit 157 files)
+____________________________________________________________________________
+[ 3939] By: jhi on 1999/08/09 10:27:22
+ Log: Unicode data updated to be the latest beta of the Unicode 3.0.
+ Branch: cfgperl
+ ! lib/unicode/UnicodeData-Latest.txt
+____________________________________________________________________________
+[ 3938] By: jhi on 1999/08/09 10:25:54
+ Log: Ethiopic changes via private email from Daniel Yacob,
+ <dmulholl@cs.indiana.edu>. Ethiopic and Cherokee done,
+ Canadian Syllabics and Yi under construction.
+ Branch: cfgperl
+ + lib/unicode/syllables.txt
+ - lib/unicode/EthiopicSyllables.txt
+ - lib/unicode/MakeEthiopicSyllables.PL
+ ! MANIFEST lib/unicode/UnicodeData-Latest.txt
+ ! lib/unicode/mktables.PL
+____________________________________________________________________________
+[ 3937] By: jhi on 1999/08/09 10:21:51
+ Log: Move the equivalence class creation last.
+ Branch: cfgperl
+ ! lib/unicode/mktables.PL
+____________________________________________________________________________
+[ 3936] By: jhi on 1999/08/09 10:20:40
+ Log: Compute equivalence classes (diacritics stripping) only
+ for letters, not for ligatures.
+ Branch: cfgperl
+ ! lib/unicode/Eq/Latin1 lib/unicode/Eq/Unicode
+ ! lib/unicode/mktables.PL
+____________________________________________________________________________
+[ 3935] By: nick on 1999/08/08 13:53:57
+ Log: Will now correctly re-call
+ bootstrap "Foo";
+ if requested. This should allow build on Win32 and other
+ platforms where you cannot link to loadables directly.
+ Branch: perl
+ ! ext/B/B/C.pm
+____________________________________________________________________________
+[ 3934] By: nick on 1999/08/07 12:23:55
+ Log: Vishal Bhatia <vishalb@my-deja.com>
+ Subject: [PATCH 5.005_60] fix for some obscure bugs (compiler)
+ Message-ID: <HLPEBPHPAKHKAAAA@my-deja.com>
+ Branch: perl
+ ! ext/B/B/CC.pm
+____________________________________________________________________________
+[ 3933] By: nick on 1999/08/07 12:19:46
+ Log: B::C changes to get simple Tk app. compiling again
+ Branch: perl
+ ! ext/B/B/C.pm
+____________________________________________________________________________
+[ 3932] By: jhi on 1999/08/06 21:17:16
+ Log: Regen Configure to include change #3915.
+ Branch: cfgperl
+ ! Configure config_h.SH
+____________________________________________________________________________
+[ 3931] By: jhi on 1999/08/06 18:52:57
+ Log: Todo update.
+ Branch: cfgperl
+ ! Todo Todo-5.005 lib/unicode/mktables.PL
+____________________________________________________________________________
+[ 3930] By: jhi on 1999/08/06 13:13:05
+ Log: Character class equivalence tables.
+ Branch: cfgperl
+ + lib/unicode/Eq/Latin1 lib/unicode/Eq/Unicode
+ ! MANIFEST lib/unicode/mktables.PL
+____________________________________________________________________________
+[ 3929] By: jhi on 1999/08/06 11:59:11
+ Log: More Fcntl constants. (This process really needs
+ to be automated, at least partly, see the Errno extension.)
+ Now also the SEEK_ constants are available via the Fcntl.
+ Yes, this is redundant (IO::Seekable and POSIX supply them already),
+ but now Fcntl is a one-stop shopping mall for all your
+ file-related constants.
+ Branch: cfgperl
+ ! ext/Fcntl/Fcntl.pm ext/Fcntl/Fcntl.xs pod/perlfunc.pod
+____________________________________________________________________________
+[ 3928] By: jhi on 1999/08/06 08:08:03
+ Log: Protect against pack/unpack repeat count overflows,
+ based on:
+
+ From: Nathan Torkington <gnat@frii.com>
+ To: Brian Keefer <mgomes@cwix.com>
+ Cc: perl5-porters@perl.org
+ Subject: Re: [ID 19990806.001] Core dump with obfuscated code
+ Date: Thu, 5 Aug 1999 23:01:51 -0600 (MDT)
+ Message-ID: <14250.27711.769942.100675@localhost.frii.com>
+ Branch: cfgperl
+ ! pod/perldiag.pod pp.c
+____________________________________________________________________________
+[ 3927] By: jhi on 1999/08/06 07:32:20
+ Log: Fix for Nathan's fix (#3920) from Guy Decoux.
+
+ From: Nathan Torkington <gnat@frii.com>
+ To: perl5-porters@perl.org
+ Subject: Bugfix for my bugfix
+ Date: Thu, 5 Aug 1999 21:25:47 -0600 (MDT)
+ Message-ID: <14250.21947.765134.940583@localhost.frii.com>
+ Branch: cfgperl
+ ! ext/B/B/Assembler.pm
+____________________________________________________________________________
+[ 3926] By: jhi on 1999/08/05 17:25:19
+ Log: Fix regex charclass parsing so that bogus ranges
+ like [0-\d] and [[:word:]-z] are no more allowed.
+ The anomaly was noticed by Guy Decoux.
+ Branch: cfgperl
+ ! pod/perldiag.pod pod/perlre.pod regcomp.c t/op/re_tests
+____________________________________________________________________________
+[ 3925] By: jhi on 1999/08/05 10:31:47
+ Log: split /^/ deprecation warning should not be on by default.
+ Branch: cfgperl
+ ! pp.c
+____________________________________________________________________________
+[ 3924] By: jhi on 1999/08/05 09:23:00
+ Log: Warning fix to change #3922.
+ From: paul.marquess@bt.com
+ To: ilya@math.ohio-state.edu, gsar@activestate.com
+ Cc: tchrist@jhereg.perl.com, chaimf@pobox.com, ed@chronos.net,
+ perl5-porters@perl.org
+ Subject: RE: [PATCH 5.00557] split /^/
+ Date: Thu, 5 Aug 1999 09:01:15 +0100
+ Message-ID: <5104D4DBC598D211B5FE0000F8FE7EB202D49B23@mbtlipnt02.btlabs.bt.co.uk>
+ Branch: cfgperl
+ ! pp.c
+____________________________________________________________________________
+[ 3923] By: jhi on 1999/08/05 09:16:57
+ Log: From: paul.marquess@bt.com
+ To: jhi@iki.fi, paul.marquess@bt.com
+ Cc: gsar@ActiveState.com, perl5-porters@perl.org
+ Subject: RE: [PATCH 5.005_60] anydbm.t + DB_File + Berkeley DB >= 2.4.10
+ Date: Thu, 5 Aug 1999 09:33:14 +0100
+ Message-ID: <5104D4DBC598D211B5FE0000F8FE7EB202D49B26@mbtlipnt02.btlabs.bt.co.uk>
+ Branch: cfgperl
+ ! t/lib/anydbm.t
+____________________________________________________________________________
+[ 3922] By: jhi on 1999/08/05 08:09:59
+ Log: Deprecate /^/ implictly meaning /^/m.
+
+ From: Ilya Zakharevich <ilya@math.ohio-state.edu>
+ To: Gurusamy Sarathy <gsar@activestate.com>
+ Cc: Tom Christiansen <tchrist@jhereg.perl.com>, chaimf@pobox.com,
+ ed@chronos.net, perl5-porters@perl.org
+ Subject: [PATCH 5.00557] split /^/
+ Date: Wed, 4 Aug 1999 16:46:57 -0400
+ Message-ID: <19990804164657.A3776@monk.mps.ohio-state.edu>
+ Branch: cfgperl
+ ! pod/perldiag.pod pp.c regexp.h
+____________________________________________________________________________
+[ 3921] By: jhi on 1999/08/05 08:05:13
+ Log: From: paul.marquess@bt.com
+ To: perl5-porters@perl.org
+ Cc: gsar@activestate.com, nik@tiuk.ti.com, jhi@iki.fi,
+ randy@theoryx5.uwinnipeg.ca
+ Subject: [PATCH 5.005_60] DB_File 1.70
+ Date: Wed, 4 Aug 1999 23:22:22 +0100
+ Message-ID: <5104D4DBC598D211B5FE0000F8FE7EB202D49B21@mbtlipnt02.btlabs.bt.co.uk>
+
+ (Replaces change #3917)
+ Branch: cfgperl
+ ! ext/DB_File/Changes ext/DB_File/DB_File.pm
+ ! ext/DB_File/DB_File.xs t/lib/db-btree.t t/lib/db-hash.t
+____________________________________________________________________________
+[ 3920] By: jhi on 1999/08/04 19:02:58
+ Log: From: Nathan Torkington <gnat@frii.com>
+ To: perl5-porters@perl.org
+ Subject: [5.005_60 PATCH] Make B::Bytecode work
+ Date: Wed, 4 Aug 1999 11:24:56 -0600 (MDT)
+ Message-ID: <14248.30568.769427.216092@localhost.frii.com>
+ Branch: cfgperl
+ ! ext/B/B/Assembler.pm
+____________________________________________________________________________
+[ 3919] By: jhi on 1999/08/04 10:56:26
+ Log: Update history records.
+ Branch: cfgperl
+ ! pod/perlhist.pod
+____________________________________________________________________________
+[ 3918] By: jhi on 1999/08/04 09:36:13
+ Log: Minor fixes to linux -Dusethreads -Duseperlio.
+ Branch: cfgperl
+ ! perlio.c
+____________________________________________________________________________
+[ 3917] By: jhi on 1999/08/04 08:13:20
+ Log: (Replaced by change #3921)
+ From: paul.marquess@bt.com
+ To: gsar@activestate.com
+ Cc: perl5-porters@perl.org
+ Subject: [PATCH 5.005_60] DB_File 1.69
+ Date: Tue, 3 Aug 1999 22:55:00 +0100
+ Message-ID: <5104D4DBC598D211B5FE0000F8FE7EB29C6D04@mbtlipnt02.btlabs.bt.co.uk>
+ Branch: cfgperl
+ ! ext/DB_File/Changes ext/DB_File/DB_File.pm
+ ! ext/DB_File/DB_File.xs t/lib/db-btree.t t/lib/db-hash.t
+____________________________________________________________________________
+[ 3916] By: jhi on 1999/08/04 07:59:05
+ Log: Introduce the charnames pragma.
+
+ Subject: [PATCH 5.005_58] Free \C (for named chars), move to \O
+ From: Ilya Zakharevich <[9]ilya@math.ohio-state.edu>
+ To: Chip Salzenberg <[11]chip@perlsupport.com>
+ Cc: Mailing list Perl5 <[12]perl5-porters@perl.org>
+ Date: Sat, 31 Jul 1999 05:44:05 -0400
+ Message-Id: <[13]199907311407.IAA25042@localhost.frii.com>
+
+ From: Ilya Zakharevich <ilya@math.ohio-state.edu>
+ To: Mailing list Perl5 <perl5-porters@perl.org>
+ Subject: [PATCH 5.005_58] Named characters in Perl
+ Date: Mon, 2 Aug 1999 19:25:40 -0400
+ Message-ID: <19990802192540.B24407@monk.mps.ohio-state.edu>
+ Branch: cfgperl
+ + lib/charnames.pm t/lib/charnames.t
+ ! MAINTAIN MANIFEST lib/utf8.pm pod/perldiag.pod pod/perlop.pod
+ ! pod/perlre.pod regcomp.c toke.c
+____________________________________________________________________________
+[ 3915] By: jhi on 1999/08/03 21:18:49
+ Log: Support Configure -Dmake=pmake.
+ Via private email from Andy.
+ NOTE: assumes "basename" command.
+ Branch: metaconfig
+ ! U/modified/Config_sh.U
+____________________________________________________________________________
+[ 3914] By: jhi on 1999/08/03 21:11:11
+ Log: The op/filetest.t failed subtest 7 if testing as root.
+
+ From: =?iso-8859-1?Q?Fran=E7ois=20D=E9sarm=E9nien?= <desar@club-internet.fr>
+ To: perl5-porters@perl.org
+ Subject: [ID 19990727.039] Not OK: perl 5.00558 on i386-sco 3.2v5.0.4
+ Date: Tue, 27 Jul 1999 22:54:05 +0200
+ Message-Id: <379E1C6D.626DC765@club-internet.fr>
+ Branch: cfgperl
+ ! t/op/filetest.t
+____________________________________________________________________________
+[ 3913] By: jhi on 1999/08/03 21:07:57
+ Log: Retract #3912, much too many compilation warnings
+ under Digital UNIX.
+ Branch: cfgperl
+ ! doio.c iperlsys.h perl.h perlio.c perlsdio.h perlsfio.h
+ ! pp_sys.c sv.c
+____________________________________________________________________________
+[ 3912] By: jhi on 1999/08/03 20:13:59
+ Log: (Retracted). See #3913.
+
+ From: Sven Verdoolaege <skimo@kotnet.org>
+ To: perl5-porters@perl.org
+ Subject: [ID 19990803.003] Not OK: perl 5.00560 on i586-linux-thread
+ 2.1.125 [PATCH]
+ Date: Tue, 3 Aug 1999 13:14:07 +0200
+ Message-Id: <19990803131407.A30911@pool.kotnet.org>
+ Branch: cfgperl
+ ! doio.c iperlsys.h perl.h perlio.c perlsdio.h perlsfio.h
+ ! pp_sys.c sv.c
+____________________________________________________________________________
+[ 3911] By: jhi on 1999/08/03 19:52:38
+ Log: The "-Dusethreads -Duseperlio" combination failed.
+
+ From: Spider Boardman <spider@leggy.zk3.dec.com>
+ To: perl5-porters@perl.org
+ Subject: [ID 19990803.007] Not OK: perl 5.00560 on alpha-dec_osf-thread
+ 4.0 (UNINSTALLED)
+ Date: Tue, 3 Aug 1999 14:25:00 -0400
+ Message-Id: <199908031825.OAA29254@leggy.zk3.dec.com>
+
+ See also change #3912.
+ Branch: cfgperl
+ ! perlio.c
+____________________________________________________________________________
+[ 3910] By: jhi on 1999/08/03 10:44:24
+ Log: From: Chris Nandor <pudge@pobox.com>
+ To: perl5-porters@perl.org
+ Subject: [PATCH 5.005_58] perlbug.PL 1.27
+ Date: Wed, 28 Jul 1999 23:42:49 -0400
+ Message-Id: <v04210104b3c57ce9e3de@[152.167.11.247]>
+ Branch: cfgperl
+ ! utils/perlbug.PL
+____________________________________________________________________________
+[ 3909] By: jhi on 1999/08/03 10:41:04
+ Log: Hints for building ByteLoader in SunoS. Based on
+ From: Andy Dougherty <doughera@lafayette.edu>
+ To: Gurusamy Sarathy <gsar@activestate.com>
+ Cc: Perl Porters <perl5-porters@perl.org>
+ Subject: Re: 5.005_58 Not OK SunOS 4.1.3
+ Date: Mon, 2 Aug 1999 14:01:58 -0400 (EDT)
+ Message-Id: <Pine.GSU.4.05.9908021357410.5873-100000@newton.phys>
+ Branch: cfgperl
+ + ext/ByteLoader/hints/sunos.pl
+ ! MANIFEST ext/ByteLoader/ByteLoader.xs
+____________________________________________________________________________
+[ 3908] By: jhi on 1999/08/03 09:29:22
+ Log: Clarify RE engine code; inline a static function to a macro;
+ make exact string nodes smaller.
+
+ From: Ilya Zakharevich <ilya@math.ohio-state.edu>
+ To: perl5-porters@perl.org (Mailing list Perl5)
+ Subject: [PATCH 5.005_60] Cosmetic change to REx engine
+ Date: Mon, 2 Aug 1999 21:53:36 -0400 (EDT)
+ Message-Id: <199908030153.VAA10542@monk.mps.ohio-state.edu>
+ Branch: cfgperl
+ ! Makefile.SH embed.pl global.sym keywords.h lib/warning.pm
+ ! opcode.h pp.sym pp_proto.h regcomp.c regcomp.h regexec.c
+ ! regnodes.h warning.h
+____________________________________________________________________________
+[ 3907] By: jhi on 1999/08/03 08:11:49
+ Log: 5_59 configured with -Dd_bincompat5005 can't be made
+ binary compatible with a 5_03 which was built with -DEMBEDMYMALLOC.
+
+ From: Spider Boardman <spider@leggy.zk3.dec.com>
+ To: perl5-porters@perl.org
+ Subject: [ID 19990802.016] Not OK: perl 5.00559
+ Date: Mon, 2 Aug 1999 16:11:13 -0400
+ Message-Id: <199908022011.QAA30224@leggy.zk3.dec.com>
+ Branch: cfgperl
+ ! embed.pl
+____________________________________________________________________________
+[ 3906] By: jhi on 1999/08/03 07:48:59
+ Log: Change #3790 redemption: with a little additional
+ patch from Ilya it works okay.
+ Branch: cfgperl
+ ! ext/SDBM_File/Makefile.PL lib/ExtUtils/MM_Unix.pm
+ ! lib/ExtUtils/MakeMaker.pm os2/OS2/REXX/Makefile.PL perl.h
+____________________________________________________________________________
+[ 3905] By: gsar on 1999/08/02 21:03:23
+ Log: this will be 5.005_60
+ Branch: perl
+ ! Changes
+
+----------------
+Version 5.005_60
----------------
____________________________________________________________________________
diff --git a/Porting/patching.pod b/Porting/patching.pod
index caada0c980..5659f23c60 100644
--- a/Porting/patching.pod
+++ b/Porting/patching.pod
@@ -30,7 +30,7 @@ attempt to make everybody's life easier.
The most common problems appear to be patches being mangled by certain
mailers (I won't name names, but most of these seem to be originating on
-boxes running a certain popular commercial operating system). Other problems
+boxes running a certain popular commercial operating system). Other problems
include patches not rooted in the appropriate place in the directory structure,
and patches not produced using standard utilities (such as diff).
@@ -52,7 +52,7 @@ First, back up the original files. This can't be stressed enough,
back everything up _first_.
Also, please create patches against a clean distribution of the perl source.
-This insures that everyone else can apply your patch without clobbering their
+This ensures that everyone else can apply your patch without clobbering their
source tree.
=item diff
@@ -63,15 +63,18 @@ respectively, unified diffs (where the changed line appears immediately next
to the original) and context diffs (where several lines surrounding the changes
are included). See the manpage for diff for more details.
-Also, the preferred method for patching is -
+The preferred method for creating a unified diff suitable for feeding
+to the patch program is:
-C<diff [C<-c> | C<-u>] E<lt>old-fileE<gt> E<lt>new-fileE<gt>>
+ diff -u old-file new-file > patch-file
-Note the order of files.
+Note the order of files. See below for how to create a patch from
+two directory trees.
-Also, if your patch is to the core (rather than to a module) it
-is better to create it as a context diff as some machines have
-broken patch utilities that choke on unified diffs.
+If your patch is for wider consumption, it may be better to create it as
+a context diff as some machines have broken patch utilities that choke on
+unified diffs. A context diff is made using C<diff -c> rather than
+C<diff -u>.
GNU diff has many desirable features not provided by most vendor-supplied
diffs. Some examples using GNU diff:
@@ -94,23 +97,34 @@ diffs. Some examples using GNU diff:
=item Directories
-Patches should be generated from the source root directory, not from the
-directory that the patched file resides in. This insures that the maintainer
-patches the proper file and avoids name collisions (especially common when trying
-to apply patches to files that appear in both $src_root/ext/* and $src_root/lib/*).
-It is better to diff the file in $src_root/ext than the file in $src_root/lib.
+IMPORTANT: Patches should be generated from the source root directory, not
+from the directory that the patched file resides in. This ensures that the
+maintainer patches the proper file.
+
+Many files in the distribution are derivative--avoid patching them.
+Patch the originals instead. Most utilities (like perldoc) are in
+this category, i.e. patch utils/perldoc.PL rather than utils/perldoc.
+Similarly, don't create patches for files under $src_root/ext from
+their copies found in $install_root/lib. If you are unsure about the
+proper location of a file that may have gotten copied while building
+the source distribution, consult the C<MANIFEST>.
=item Filenames
The most usual convention when submitting patches for a single file is to make
your changes to a copy of the file with the same name as the original. Rename
-the original file in such a way that it is obvious what is being patched ($file~ or
-$file.old seem to be popular).
+the original file in such a way that it is obvious what is being patched
+($file.dist or $file.old seem to be popular).
+
+If you are submitting patches that affect multiple files then you should
+backup the entire directory tree (to $source_root.old/ for example). This
+will allow C<diff -ruN old-dir new-dir> to create all the patches at once.
-If you are submitting patches that affect multiple files then you should backup
-the entire directory tree (to $source_root.old/ for example). This will allow
-C<diff C<-c> E<lt>old-dirE<gt> E<lt>new-dirE<gt>> to create all the patches
-at once.
+=item Try it yourself
+
+Just to make sure your patch "works", be sure to apply it to the Perl
+distribution, rebuild everything, and make sure the testsuite runs
+without incident.
=back
@@ -125,7 +139,7 @@ the patch corrects. If it is a code patch (rather than a documentation
patch) you should also include a small test case that illustrates the
bug.
-=item Direction for application
+=item Directions for application
You should include instructions on how to properly apply your patch.
These should include the files affected, any shell scripts or commands
@@ -150,15 +164,35 @@ side of adding too many comments than too few.
=item Style
-Please follow the indentation style and nesting style in use in the
-block of code that you are patching.
+In general, please follow the particular style of the code you are patching.
+
+In particular, follow these general guidelines for patching Perl sources:
+
+ 8-wide tabs (no exceptions!)
+ 4-wide indents for code, 2-wide indents for nested CPP #defines
+ try hard not to exceed 79-columns
+ ANSI C prototypes
+ uncuddled elses and "K&R" style for indenting control constructs
+ no C++ style (//) comments, most C compilers will choke on them
+ mark places that need to be revisited with XXX (and revisit often!)
+ opening brace lines up with "if" when conditional spans multiple
+ lines; should be at end-of-line otherwise
+ in function definitions, name starts in column 0 (return value is on
+ previous line)
+ single space after keywords that are followed by parens, no space
+ between function name and following paren
+ avoid assignments in conditionals, but if they're unavoidable, use
+ extra paren, e.g. "if (a && (b = c)) ..."
+ "return foo;" rather than "return(foo);"
+ "if (!foo) ..." rather than "if (foo == FALSE) ..." etc.
+
=item Testsuite
When submitting a patch you should make every effort to also include
an addition to perl's regression tests to properly exercise your
patch. Your testsuite additions should generally follow these
-guidelines (courtesy of Gurusamy Sarathy (gsar@engin.umich.edu))-
+guidelines (courtesy of Gurusamy Sarathy <gsar@activestate.com>):
Know what you're testing. Read the docs, and the source.
Tend to fail, not succeed.
@@ -173,16 +207,16 @@ guidelines (courtesy of Gurusamy Sarathy (gsar@engin.umich.edu))-
do use them, make sure that you cover _all_ perl platforms.
Unlink any temporary files you create.
Promote unforeseen warnings to errors with $SIG{__WARN__}.
- Be sure to use the libraries and modules shipped with version
+ Be sure to use the libraries and modules shipped with the version
being tested, not those that were already installed.
Add comments to the code explaining what you are testing for.
Make updating the '1..42' string unnecessary. Or make sure that
you update it.
- Test _all_ behaviors of a given operator, library, or function-
- All optional arguments
- Return values in various contexts (boolean, scalar, list, lvalue)
- Use both global and lexical variables
- Don't forget the exceptional, pathological cases.
+ Test _all_ behaviors of a given operator, library, or function:
+ - All optional arguments
+ - Return values in various contexts (boolean, scalar, list, lvalue)
+ - Use both global and lexical variables
+ - Don't forget the exceptional, pathological cases.
=back
@@ -196,7 +230,7 @@ patch, didn't you).
=head2 An example patch creation
-This should work for most patches-
+This should work for most patches:
cp MANIFEST MANIFEST.old
emacs MANIFEST
@@ -222,7 +256,7 @@ word wraps your patch or that MIME encodes it. Both of these leave
the patch essentially worthless to the maintainer.
If you have no choice in mailers and no way to get your hands on a
-better one there is, of course, a perl solution. Just do this-
+better one there is, of course, a perl solution. Just do this:
perl -ne 'print pack("u*",$_)' patch > patch.uue
@@ -234,27 +268,37 @@ and post patch.uue with a note saying to unpack it using
The subject line on your patch should read
-[PATCH]5.xxx_xx (Area) Description
+ [PATCH 5.xxx_xx AREA] Description
-where the x's are replaced by the appropriate version number,
-area is a short keyword identifying what area of perl you are
-patching, and description is a very brief summary of the
+where the x's are replaced by the appropriate version number.
+The description should be a very brief but accurate summary of the
problem (don't forget this is an email header).
-Examples-
+Examples:
-[PATCH]5.004_04 (DOC) fix minor typos
+ [PATCH 5.004_04 DOC] fix minor typos
-[PATCH]5.004_99 (CORE) New warning for foo() when frobbing
+ [PATCH 5.004_99 CORE] New warning for foo() when frobbing
-[PATCH]5.005_42 (CONFIG) Added support for fribnatz 1.5
+ [PATCH 5.005_42 CONFIG] Added support for fribnatz 1.5
+
+The name of the file being patched makes for a poor subject line if
+no other descriptive text accompanies it.
=item Where to send your patch
-If your patch is for the perl core it should be sent perlbug@perl.org.
+If your patch is for a specific bug in the Perl core, it should be sent
+using the perlbug utility. Don't forget to describe the problem and the
+fix adequately.
+
If it is a patch to a module that you downloaded from CPAN you should
submit your patch to that module's author.
+If your patch addresses one of the items described in perltodo.pod,
+please discuss your approach B<before> you make the patch at
+<perl5-porters@perl.org>. Be sure to browse the archives of past
+discussions (see perltodo.pod for archive locations).
+
=back
=head2 Applying a patch
@@ -270,19 +314,21 @@ to your perl distribution.
=item patch C<-p>
-It is generally easier to apply patches with the C<-p> argument to
-patch. This helps reconcile differing paths between the machine the
-patch was created on and the machine on which it is being applied.
+It is generally easier to apply patches with the C<-p N> argument to
+patch (where N is the number of path components to skip in the files
+found in the headers). This helps reconcile differing paths between
+the machine the patch was created on and the machine on which it is
+being applied.
=item Cut and paste
-_Never_ cut and paste a patch into your editor. This usually clobbers
+B<Never> cut and paste a patch into your editor. This usually clobbers
the tabs and confuses patch.
=item Hand editing patches
-Avoid hand editing patches as this frequently screws up the whitespace
-in the patch and confuses the patch program.
+Avoid hand editing patches as this almost always screws up the line
+numbers and offsets in the patch, making it useless.
=back
diff --git a/Todo b/Todo
index 2bc1557f16..c7ab6d0888 100644
--- a/Todo
+++ b/Todo
@@ -1,4 +1,4 @@
-Check out always the latest perl5-porters discussions on these subjects
+Always check out the latest perl5-porters discussions on these subjects
before embarking on an implementation tour.
Tie Modules
@@ -9,74 +9,72 @@ Tie Modules
Would be nice to have
pack "(stuff)*", "(stuff)4", ...
- Contiguous bitfields in pack/unpack
+ contiguous bitfields in pack/unpack
lexperl
- Bundled perl preprocessor
- Use posix calls internally where possible
+ bundled perl preprocessor
+ use posix calls internally where possible
gettimeofday (possibly best left for a module?)
format BOTTOM
-i rename file only when successfully changed
- All ARGV input should act like <>
+ all ARGV input should act like <>
report HANDLE [formats].
support in perlmain to rerun debugger
regression tests using __DIE__ hook
- reference to compiled regexp
lexically scoped functions: my sub foo { ... }
lvalue functions
- wantlvalue? more generalized want()?
- named prototypes: sub ($foo, @bar) foo { ... }
+ wantlvalue? more generalized want()/caller()?
+ named prototypes: sub foo ($foo, @bar) { ... } ?
regression/sanity tests for suidperl
iterators/lazy evaluation/continuations/first/
first_defined/short-circuiting grep/??
This is a very thorny and hotly debated subject,
- tread carefully and do your homework first.
- Full 64 bit support (i.e. "long long"). Things to consider:
+ tread carefully and do your homework first
+ full 64 bit support (i.e. "long long"). Things to consider:
how to store/retrieve 32+ integers into/from Perl scalars?
32+ constants in Perl code? (non-portable!)
32+ arguments/return values to/from system calls? (seek et al)
32+ bit ops (&|^~, currently explicitly disabled)
- Generalise Errno way of extracting cpp symbols and use that in
+ generalise Errno way of extracting cpp symbols and use that in
Errno and Fcntl (ExtUtils::CppSymbol?)
- The _r-problem: for all the {set,get,end}*() system database
+ the _r-problem: for all the {set,get,end}*() system database
calls (and a couple more: readdir, *rand*, crypt, *time,
tmpnam) there are in many systems the _r versions
- to be used in re-entrant (=multithreaded) code.
+ to be used in re-entrant (=multithreaded) code
Icky things: the _r API is not standardized and
- the _r-forms require per-thread data to store their state.
- Memory profiler: turn malloc.c:Perl_dump_mstats() into
+ the _r-forms require per-thread data to store their state
+ memory profiler: turn malloc.c:Perl_dump_mstats() into
an extension (Devel::MProf?) that would return the malloc
stats in a nice Perl datastructure (also a simple interface
- to return just the grand total would be good).
+ to return just the grand total would be good)
Unicode: [=bar=], combining characters equivalence
(U+4001 + U+0308 should be equal to U+00C4, in other words
A+diaereres should equal Ä), Unicode collation
Possible pragmas
debugger
- optimize (use less memory, CPU)
+ optimize (use less qw[memory cpu])
Optimizations
constant function cache
switch structures
foreach(reverse...)
- Set KEEP on constant split
- Cache eval tree (unless lexical outer scope used (mark in &compiling?))
+ optimize away constant split at compile time (a la qw[f o o])
+ cache eval tree (unless lexical outer scope used (mark in &compiling?))
rcatmaybe
- Shrink opcode tables via multiple implementations selected in peep
- Cache hash value? (Not a win, according to Guido)
- Optimize away @_ where possible
+ shrink opcode tables via multiple implementations selected in peep
+ cache hash value? (Not a win, according to Guido)
+ optimize away @_ where possible
"one pass" global destruction
- Rewrite regexp parser for better integrated optimization
+ rewrite regexp parser for better integrated optimization
LRU cache of regexp: foreach $pat (@pats) { foo() if /$pat/ }
Vague possibilities
- ref function in list context
+ ref function in list context?
make tr/// return histogram in list context?
- Loop control on do{} et al
- Explicit switch statements
+ loop control on do{} et al
+ explicit switch statements
built-in globbing
compile to real threaded code
structured types
autocroak?
- Modifiable $1 et al
-
+ modifiable $1 et al
diff --git a/Todo-5.005 b/Todo-5.005
index fdcb9744f0..e06add9f0d 100644
--- a/Todo-5.005
+++ b/Todo-5.005
@@ -39,6 +39,7 @@ Regexen
approximate matching
Reliable Signals
+ custom opcodes
alternate runops() for signal despatch
figure out how to die() in delayed sighandler
add tests for Thread::Signal
@@ -56,7 +57,7 @@ Miscellaneous
rename and alter ISA.pm
magic_setisa should be made to update %FIELDS [???]
add new modules (Archive::Tar, Compress::Zlib, CPAN::FTP?)
- fix pod2html to generate relative URLs
+ fix pod2html to generate relative URLs (replace with new PodtoHtml?)
automate testing with large parts of CPAN
Ongoing
diff --git a/XSUB.h b/XSUB.h
index 03892019fb..241ac40e49 100644
--- a/XSUB.h
+++ b/XSUB.h
@@ -115,17 +115,14 @@
# include "objXSUB.h"
#endif /* PERL_OBJECT || PERL_CAPI */
-#if defined(PERL_CAPI)
+#if defined(PERL_IMPLICIT_CONTEXT) && !defined(PERL_NO_GET_CONTEXT) && !defined(PERL_CORE)
# undef aTHX
# undef aTHX_
-# undef _aTHX
-# if defined(PERL_NO_GET_CONTEXT)
-# define aTHX my_perl
-# else
-# define aTHX PERL_GET_INTERP
-# endif /* PERL_NO_GET_CONTEXT */
-# define aTHX_ aTHX,
-# define _aTHX ,aTHX
+# define aTHX PERL_GET_THX
+# define aTHX_ aTHX,
+#endif
+
+#if defined(PERL_CAPI)
# ifndef NO_XSLOCKS
# undef closedir
# undef opendir
diff --git a/embed.pl b/embed.pl
index ad6a649515..ef8fc802d4 100755
--- a/embed.pl
+++ b/embed.pl
@@ -257,16 +257,11 @@ sub objxsub_var ($$) {
undefine("PL_$sym") . hide("PL_$sym", "(*Perl_${pfx}${sym}_ptr($arg))");
}
-sub embedvar ($) {
- my ($sym) = @_;
-# hide($sym, "Perl_$sym");
- return '';
-}
-
sub multon ($$$) {
my ($sym,$pre,$ptr) = @_;
hide("PL_$sym", "($ptr$pre$sym)");
}
+
sub multoff ($$) {
my ($sym,$pre) = @_;
return hide("PL_$pre$sym", "PL_$sym");
@@ -533,42 +528,45 @@ print EM <<'END';
/* (Doing namespace management portably in C is really gross.) */
-/* Put interpreter-specific symbols into a struct? */
-
-#ifdef MULTIPLICITY
-
-#ifndef USE_THREADS
-/* If we do not have threads then per-thread vars are per-interpreter */
-
-#ifdef PERL_IMPLICIT_CONTEXT
-
-/* everything has an implicit context pointer */
-
-END
-
-for $sym (sort keys %thread) {
- print EM multon($sym,'T','my_perl->');
-}
-
-print EM <<'END';
+/*
+ The following combinations of MULTIPLICITY, USE_THREADS, PERL_OBJECT
+ and PERL_IMPLICIT_CONTEXT are supported:
+ 1) none
+ 2) MULTIPLICITY # supported for compatibility
+ 3) MULTIPLICITY && PERL_IMPLICIT_CONTEXT
+ 4) USE_THREADS && PERL_IMPLICIT_CONTEXT
+ 5) MULTIPLICITY && USE_THREADS && PERL_IMPLICIT_CONTEXT
+ 6) PERL_OBJECT && PERL_IMPLICIT_CONTEXT
+
+ All other combinations of these flags are errors.
+
+ #3, #4, #5, and #6 are supported directly, while #2 is a special
+ case of #3 (supported by redefining vTHX appropriately).
+*/
-#else /* !PERL_IMPLICIT_CONTEXT */
+#if defined(MULTIPLICITY)
+/* cases 2, 3 and 5 above */
-/* traditional MULTIPLICITY (intepreter is in a global) */
+# if defined(PERL_IMPLICIT_CONTEXT)
+# define vTHX aTHX
+# else
+# define vTHX PERL_GET_INTERP
+# endif
END
-
for $sym (sort keys %thread) {
- print EM multon($sym,'T','PERL_GET_INTERP->');
+ print EM multon($sym,'T','vTHX->');
}
print EM <<'END';
-#endif /* !PERL_IMPLICIT_CONTEXT */
-#endif /* !USE_THREADS */
+# if defined(PERL_OBJECT)
+# include "error: PERL_OBJECT + MULTIPLICITY don't go together"
+# endif
-/* These are always per-interpreter if there is more than one */
+# if defined(USE_THREADS)
+/* case 5 above */
END
@@ -578,66 +576,56 @@ for $sym (sort keys %intrp) {
print EM <<'END';
-#else /* !MULTIPLICITY */
+# else /* !USE_THREADS */
+/* cases 2 and 3 above */
END
for $sym (sort keys %intrp) {
- print EM multoff($sym,'I');
-}
-
-print EM <<'END';
-
-#ifndef USE_THREADS
-
-END
-
-for $sym (sort keys %thread) {
- print EM multoff($sym,'T');
+ print EM multon($sym,'I','vTHX->');
}
print EM <<'END';
-#endif /* USE_THREADS */
+# endif /* USE_THREADS */
-/* Hide what would have been interpreter-specific symbols? */
+#else /* !MULTIPLICITY */
+/* cases 1, 4 and 6 above */
END
for $sym (sort keys %intrp) {
- print EM embedvar($sym);
+ print EM multoff($sym,'I');
}
print EM <<'END';
-#ifndef USE_THREADS
+# if defined(USE_THREADS)
+/* case 4 above */
END
for $sym (sort keys %thread) {
- print EM embedvar($sym);
+ print EM multon($sym,'T','aTHX->');
}
print EM <<'END';
-#endif /* USE_THREADS */
-#endif /* MULTIPLICITY */
-
-/* Now same trickey for per-thread variables */
-
-#ifdef USE_THREADS
+# else /* !USE_THREADS */
+/* cases 1 and 6 above */
END
for $sym (sort keys %thread) {
- print EM multon($sym,'T','thr->');
+ print EM multoff($sym,'T');
}
print EM <<'END';
-#endif /* USE_THREADS */
+# endif /* USE_THREADS */
+#endif /* MULTIPLICITY */
-#ifdef PERL_GLOBAL_STRUCT
+#if defined(PERL_GLOBAL_STRUCT)
END
@@ -657,20 +645,8 @@ for $sym (sort keys %globvar) {
print EM <<'END';
-END
-
-for $sym (sort keys %globvar) {
- print EM embedvar($sym);
-}
-
-print EM <<'END';
-
#endif /* PERL_GLOBAL_STRUCT */
-END
-
-print EM <<'END';
-
#ifdef PERL_POLLUTE /* disabled by default in 5.006 */
END
@@ -684,7 +660,6 @@ print EM <<'END';
#endif /* PERL_POLLUTE */
END
-
close(EM);
unlink 'objXSUB.h';
@@ -781,8 +756,6 @@ print CAPIH <<'EOT';
# define aTHXo pPerl
# undef aTHXo_
# define aTHXo_ aTHXo,
-# undef _aTHXo
-# define _aTHXo ,aTHXo
#endif /* PERL_OBJECT */
START_EXTERN_C
@@ -995,9 +968,9 @@ EOT
__END__
# Lines are of the form:
-# flags|return_type|function_name|return_type|arg1|arg2|...|argN
+# flags|return_type|function_name|arg1|arg2|...|argN
#
-# They may continue on multiple lines when \w| begins the next line.
+# A line may be continued on another by ending it with a backslash.
# Leading and trailing whitespace will be ignored in each component.
#
# flags are single letters with following meanings:
diff --git a/embedvar.h b/embedvar.h
index 39bf22b734..3e83de1d22 100644
--- a/embedvar.h
+++ b/embedvar.h
@@ -5,287 +5,168 @@
/* (Doing namespace management portably in C is really gross.) */
-/* Put interpreter-specific symbols into a struct? */
+/*
+ The following combinations of MULTIPLICITY, USE_THREADS, PERL_OBJECT
+ and PERL_IMPLICIT_CONTEXT are supported:
+ 1) none
+ 2) MULTIPLICITY # supported for compatibility
+ 3) MULTIPLICITY && PERL_IMPLICIT_CONTEXT
+ 4) USE_THREADS && PERL_IMPLICIT_CONTEXT
+ 5) MULTIPLICITY && USE_THREADS && PERL_IMPLICIT_CONTEXT
+ 6) PERL_OBJECT && PERL_IMPLICIT_CONTEXT
-#ifdef MULTIPLICITY
+ All other combinations of these flags are errors.
-#ifndef USE_THREADS
-/* If we do not have threads then per-thread vars are per-interpreter */
-
-#ifdef PERL_IMPLICIT_CONTEXT
-
-/* everything has an implicit context pointer */
-
-#define PL_Sv (my_perl->TSv)
-#define PL_Xpv (my_perl->TXpv)
-#define PL_av_fetch_sv (my_perl->Tav_fetch_sv)
-#define PL_bodytarget (my_perl->Tbodytarget)
-#define PL_bostr (my_perl->Tbostr)
-#define PL_chopset (my_perl->Tchopset)
-#define PL_colors (my_perl->Tcolors)
-#define PL_colorset (my_perl->Tcolorset)
-#define PL_curcop (my_perl->Tcurcop)
-#define PL_curpad (my_perl->Tcurpad)
-#define PL_curpm (my_perl->Tcurpm)
-#define PL_curstack (my_perl->Tcurstack)
-#define PL_curstackinfo (my_perl->Tcurstackinfo)
-#define PL_curstash (my_perl->Tcurstash)
-#define PL_defoutgv (my_perl->Tdefoutgv)
-#define PL_defstash (my_perl->Tdefstash)
-#define PL_delaymagic (my_perl->Tdelaymagic)
-#define PL_dirty (my_perl->Tdirty)
-#define PL_dumpindent (my_perl->Tdumpindent)
-#define PL_extralen (my_perl->Textralen)
-#define PL_firstgv (my_perl->Tfirstgv)
-#define PL_formtarget (my_perl->Tformtarget)
-#define PL_hv_fetch_ent_mh (my_perl->Thv_fetch_ent_mh)
-#define PL_hv_fetch_sv (my_perl->Thv_fetch_sv)
-#define PL_in_eval (my_perl->Tin_eval)
-#define PL_last_in_gv (my_perl->Tlast_in_gv)
-#define PL_lastgotoprobe (my_perl->Tlastgotoprobe)
-#define PL_lastscream (my_perl->Tlastscream)
-#define PL_localizing (my_perl->Tlocalizing)
-#define PL_mainstack (my_perl->Tmainstack)
-#define PL_markstack (my_perl->Tmarkstack)
-#define PL_markstack_max (my_perl->Tmarkstack_max)
-#define PL_markstack_ptr (my_perl->Tmarkstack_ptr)
-#define PL_maxscream (my_perl->Tmaxscream)
-#define PL_modcount (my_perl->Tmodcount)
-#define PL_na (my_perl->Tna)
-#define PL_nrs (my_perl->Tnrs)
-#define PL_ofs (my_perl->Tofs)
-#define PL_ofslen (my_perl->Tofslen)
-#define PL_op (my_perl->Top)
-#define PL_opsave (my_perl->Topsave)
-#define PL_protect (my_perl->Tprotect)
-#define PL_reg_call_cc (my_perl->Treg_call_cc)
-#define PL_reg_curpm (my_perl->Treg_curpm)
-#define PL_reg_eval_set (my_perl->Treg_eval_set)
-#define PL_reg_flags (my_perl->Treg_flags)
-#define PL_reg_ganch (my_perl->Treg_ganch)
-#define PL_reg_leftiter (my_perl->Treg_leftiter)
-#define PL_reg_magic (my_perl->Treg_magic)
-#define PL_reg_maxiter (my_perl->Treg_maxiter)
-#define PL_reg_oldcurpm (my_perl->Treg_oldcurpm)
-#define PL_reg_oldpos (my_perl->Treg_oldpos)
-#define PL_reg_oldsaved (my_perl->Treg_oldsaved)
-#define PL_reg_oldsavedlen (my_perl->Treg_oldsavedlen)
-#define PL_reg_poscache (my_perl->Treg_poscache)
-#define PL_reg_poscache_size (my_perl->Treg_poscache_size)
-#define PL_reg_re (my_perl->Treg_re)
-#define PL_reg_start_tmp (my_perl->Treg_start_tmp)
-#define PL_reg_start_tmpl (my_perl->Treg_start_tmpl)
-#define PL_reg_starttry (my_perl->Treg_starttry)
-#define PL_reg_sv (my_perl->Treg_sv)
-#define PL_reg_whilem_seen (my_perl->Treg_whilem_seen)
-#define PL_regbol (my_perl->Tregbol)
-#define PL_regcc (my_perl->Tregcc)
-#define PL_regcode (my_perl->Tregcode)
-#define PL_regcomp_parse (my_perl->Tregcomp_parse)
-#define PL_regcomp_rx (my_perl->Tregcomp_rx)
-#define PL_regcompp (my_perl->Tregcompp)
-#define PL_regdata (my_perl->Tregdata)
-#define PL_regdummy (my_perl->Tregdummy)
-#define PL_regendp (my_perl->Tregendp)
-#define PL_regeol (my_perl->Tregeol)
-#define PL_regexecp (my_perl->Tregexecp)
-#define PL_regflags (my_perl->Tregflags)
-#define PL_regfree (my_perl->Tregfree)
-#define PL_regindent (my_perl->Tregindent)
-#define PL_reginput (my_perl->Treginput)
-#define PL_regint_start (my_perl->Tregint_start)
-#define PL_regint_string (my_perl->Tregint_string)
-#define PL_reginterp_cnt (my_perl->Treginterp_cnt)
-#define PL_reglastparen (my_perl->Treglastparen)
-#define PL_regnarrate (my_perl->Tregnarrate)
-#define PL_regnaughty (my_perl->Tregnaughty)
-#define PL_regnpar (my_perl->Tregnpar)
-#define PL_regprecomp (my_perl->Tregprecomp)
-#define PL_regprev (my_perl->Tregprev)
-#define PL_regprogram (my_perl->Tregprogram)
-#define PL_regsawback (my_perl->Tregsawback)
-#define PL_regseen (my_perl->Tregseen)
-#define PL_regsize (my_perl->Tregsize)
-#define PL_regstartp (my_perl->Tregstartp)
-#define PL_regtill (my_perl->Tregtill)
-#define PL_regxend (my_perl->Tregxend)
-#define PL_restartop (my_perl->Trestartop)
-#define PL_retstack (my_perl->Tretstack)
-#define PL_retstack_ix (my_perl->Tretstack_ix)
-#define PL_retstack_max (my_perl->Tretstack_max)
-#define PL_rs (my_perl->Trs)
-#define PL_savestack (my_perl->Tsavestack)
-#define PL_savestack_ix (my_perl->Tsavestack_ix)
-#define PL_savestack_max (my_perl->Tsavestack_max)
-#define PL_scopestack (my_perl->Tscopestack)
-#define PL_scopestack_ix (my_perl->Tscopestack_ix)
-#define PL_scopestack_max (my_perl->Tscopestack_max)
-#define PL_screamfirst (my_perl->Tscreamfirst)
-#define PL_screamnext (my_perl->Tscreamnext)
-#define PL_secondgv (my_perl->Tsecondgv)
-#define PL_seen_evals (my_perl->Tseen_evals)
-#define PL_seen_zerolen (my_perl->Tseen_zerolen)
-#define PL_sortcop (my_perl->Tsortcop)
-#define PL_sortcxix (my_perl->Tsortcxix)
-#define PL_sortstash (my_perl->Tsortstash)
-#define PL_stack_base (my_perl->Tstack_base)
-#define PL_stack_max (my_perl->Tstack_max)
-#define PL_stack_sp (my_perl->Tstack_sp)
-#define PL_start_env (my_perl->Tstart_env)
-#define PL_statbuf (my_perl->Tstatbuf)
-#define PL_statcache (my_perl->Tstatcache)
-#define PL_statgv (my_perl->Tstatgv)
-#define PL_statname (my_perl->Tstatname)
-#define PL_tainted (my_perl->Ttainted)
-#define PL_timesbuf (my_perl->Ttimesbuf)
-#define PL_tmps_floor (my_perl->Ttmps_floor)
-#define PL_tmps_ix (my_perl->Ttmps_ix)
-#define PL_tmps_max (my_perl->Ttmps_max)
-#define PL_tmps_stack (my_perl->Ttmps_stack)
-#define PL_top_env (my_perl->Ttop_env)
-#define PL_toptarget (my_perl->Ttoptarget)
-#define PL_watchaddr (my_perl->Twatchaddr)
-#define PL_watchok (my_perl->Twatchok)
+ #3, #4, #5, and #6 are supported directly, while #2 is a special
+ case of #3 (supported by redefining vTHX appropriately).
+*/
-#else /* !PERL_IMPLICIT_CONTEXT */
+#if defined(MULTIPLICITY)
+/* cases 2, 3 and 5 above */
-/* traditional MULTIPLICITY (intepreter is in a global) */
+# if defined(PERL_IMPLICIT_CONTEXT)
+# define vTHX aTHX
+# else
+# define vTHX PERL_GET_INTERP
+# endif
-#define PL_Sv (PERL_GET_INTERP->TSv)
-#define PL_Xpv (PERL_GET_INTERP->TXpv)
-#define PL_av_fetch_sv (PERL_GET_INTERP->Tav_fetch_sv)
-#define PL_bodytarget (PERL_GET_INTERP->Tbodytarget)
-#define PL_bostr (PERL_GET_INTERP->Tbostr)
-#define PL_chopset (PERL_GET_INTERP->Tchopset)
-#define PL_colors (PERL_GET_INTERP->Tcolors)
-#define PL_colorset (PERL_GET_INTERP->Tcolorset)
-#define PL_curcop (PERL_GET_INTERP->Tcurcop)
-#define PL_curpad (PERL_GET_INTERP->Tcurpad)
-#define PL_curpm (PERL_GET_INTERP->Tcurpm)
-#define PL_curstack (PERL_GET_INTERP->Tcurstack)
-#define PL_curstackinfo (PERL_GET_INTERP->Tcurstackinfo)
-#define PL_curstash (PERL_GET_INTERP->Tcurstash)
-#define PL_defoutgv (PERL_GET_INTERP->Tdefoutgv)
-#define PL_defstash (PERL_GET_INTERP->Tdefstash)
-#define PL_delaymagic (PERL_GET_INTERP->Tdelaymagic)
-#define PL_dirty (PERL_GET_INTERP->Tdirty)
-#define PL_dumpindent (PERL_GET_INTERP->Tdumpindent)
-#define PL_extralen (PERL_GET_INTERP->Textralen)
-#define PL_firstgv (PERL_GET_INTERP->Tfirstgv)
-#define PL_formtarget (PERL_GET_INTERP->Tformtarget)
-#define PL_hv_fetch_ent_mh (PERL_GET_INTERP->Thv_fetch_ent_mh)
-#define PL_hv_fetch_sv (PERL_GET_INTERP->Thv_fetch_sv)
-#define PL_in_eval (PERL_GET_INTERP->Tin_eval)
-#define PL_last_in_gv (PERL_GET_INTERP->Tlast_in_gv)
-#define PL_lastgotoprobe (PERL_GET_INTERP->Tlastgotoprobe)
-#define PL_lastscream (PERL_GET_INTERP->Tlastscream)
-#define PL_localizing (PERL_GET_INTERP->Tlocalizing)
-#define PL_mainstack (PERL_GET_INTERP->Tmainstack)
-#define PL_markstack (PERL_GET_INTERP->Tmarkstack)
-#define PL_markstack_max (PERL_GET_INTERP->Tmarkstack_max)
-#define PL_markstack_ptr (PERL_GET_INTERP->Tmarkstack_ptr)
-#define PL_maxscream (PERL_GET_INTERP->Tmaxscream)
-#define PL_modcount (PERL_GET_INTERP->Tmodcount)
-#define PL_na (PERL_GET_INTERP->Tna)
-#define PL_nrs (PERL_GET_INTERP->Tnrs)
-#define PL_ofs (PERL_GET_INTERP->Tofs)
-#define PL_ofslen (PERL_GET_INTERP->Tofslen)
-#define PL_op (PERL_GET_INTERP->Top)
-#define PL_opsave (PERL_GET_INTERP->Topsave)
-#define PL_protect (PERL_GET_INTERP->Tprotect)
-#define PL_reg_call_cc (PERL_GET_INTERP->Treg_call_cc)
-#define PL_reg_curpm (PERL_GET_INTERP->Treg_curpm)
-#define PL_reg_eval_set (PERL_GET_INTERP->Treg_eval_set)
-#define PL_reg_flags (PERL_GET_INTERP->Treg_flags)
-#define PL_reg_ganch (PERL_GET_INTERP->Treg_ganch)
-#define PL_reg_leftiter (PERL_GET_INTERP->Treg_leftiter)
-#define PL_reg_magic (PERL_GET_INTERP->Treg_magic)
-#define PL_reg_maxiter (PERL_GET_INTERP->Treg_maxiter)
-#define PL_reg_oldcurpm (PERL_GET_INTERP->Treg_oldcurpm)
-#define PL_reg_oldpos (PERL_GET_INTERP->Treg_oldpos)
-#define PL_reg_oldsaved (PERL_GET_INTERP->Treg_oldsaved)
-#define PL_reg_oldsavedlen (PERL_GET_INTERP->Treg_oldsavedlen)
-#define PL_reg_poscache (PERL_GET_INTERP->Treg_poscache)
-#define PL_reg_poscache_size (PERL_GET_INTERP->Treg_poscache_size)
-#define PL_reg_re (PERL_GET_INTERP->Treg_re)
-#define PL_reg_start_tmp (PERL_GET_INTERP->Treg_start_tmp)
-#define PL_reg_start_tmpl (PERL_GET_INTERP->Treg_start_tmpl)
-#define PL_reg_starttry (PERL_GET_INTERP->Treg_starttry)
-#define PL_reg_sv (PERL_GET_INTERP->Treg_sv)
-#define PL_reg_whilem_seen (PERL_GET_INTERP->Treg_whilem_seen)
-#define PL_regbol (PERL_GET_INTERP->Tregbol)
-#define PL_regcc (PERL_GET_INTERP->Tregcc)
-#define PL_regcode (PERL_GET_INTERP->Tregcode)
-#define PL_regcomp_parse (PERL_GET_INTERP->Tregcomp_parse)
-#define PL_regcomp_rx (PERL_GET_INTERP->Tregcomp_rx)
-#define PL_regcompp (PERL_GET_INTERP->Tregcompp)
-#define PL_regdata (PERL_GET_INTERP->Tregdata)
-#define PL_regdummy (PERL_GET_INTERP->Tregdummy)
-#define PL_regendp (PERL_GET_INTERP->Tregendp)
-#define PL_regeol (PERL_GET_INTERP->Tregeol)
-#define PL_regexecp (PERL_GET_INTERP->Tregexecp)
-#define PL_regflags (PERL_GET_INTERP->Tregflags)
-#define PL_regfree (PERL_GET_INTERP->Tregfree)
-#define PL_regindent (PERL_GET_INTERP->Tregindent)
-#define PL_reginput (PERL_GET_INTERP->Treginput)
-#define PL_regint_start (PERL_GET_INTERP->Tregint_start)
-#define PL_regint_string (PERL_GET_INTERP->Tregint_string)
-#define PL_reginterp_cnt (PERL_GET_INTERP->Treginterp_cnt)
-#define PL_reglastparen (PERL_GET_INTERP->Treglastparen)
-#define PL_regnarrate (PERL_GET_INTERP->Tregnarrate)
-#define PL_regnaughty (PERL_GET_INTERP->Tregnaughty)
-#define PL_regnpar (PERL_GET_INTERP->Tregnpar)
-#define PL_regprecomp (PERL_GET_INTERP->Tregprecomp)
-#define PL_regprev (PERL_GET_INTERP->Tregprev)
-#define PL_regprogram (PERL_GET_INTERP->Tregprogram)
-#define PL_regsawback (PERL_GET_INTERP->Tregsawback)
-#define PL_regseen (PERL_GET_INTERP->Tregseen)
-#define PL_regsize (PERL_GET_INTERP->Tregsize)
-#define PL_regstartp (PERL_GET_INTERP->Tregstartp)
-#define PL_regtill (PERL_GET_INTERP->Tregtill)
-#define PL_regxend (PERL_GET_INTERP->Tregxend)
-#define PL_restartop (PERL_GET_INTERP->Trestartop)
-#define PL_retstack (PERL_GET_INTERP->Tretstack)
-#define PL_retstack_ix (PERL_GET_INTERP->Tretstack_ix)
-#define PL_retstack_max (PERL_GET_INTERP->Tretstack_max)
-#define PL_rs (PERL_GET_INTERP->Trs)
-#define PL_savestack (PERL_GET_INTERP->Tsavestack)
-#define PL_savestack_ix (PERL_GET_INTERP->Tsavestack_ix)
-#define PL_savestack_max (PERL_GET_INTERP->Tsavestack_max)
-#define PL_scopestack (PERL_GET_INTERP->Tscopestack)
-#define PL_scopestack_ix (PERL_GET_INTERP->Tscopestack_ix)
-#define PL_scopestack_max (PERL_GET_INTERP->Tscopestack_max)
-#define PL_screamfirst (PERL_GET_INTERP->Tscreamfirst)
-#define PL_screamnext (PERL_GET_INTERP->Tscreamnext)
-#define PL_secondgv (PERL_GET_INTERP->Tsecondgv)
-#define PL_seen_evals (PERL_GET_INTERP->Tseen_evals)
-#define PL_seen_zerolen (PERL_GET_INTERP->Tseen_zerolen)
-#define PL_sortcop (PERL_GET_INTERP->Tsortcop)
-#define PL_sortcxix (PERL_GET_INTERP->Tsortcxix)
-#define PL_sortstash (PERL_GET_INTERP->Tsortstash)
-#define PL_stack_base (PERL_GET_INTERP->Tstack_base)
-#define PL_stack_max (PERL_GET_INTERP->Tstack_max)
-#define PL_stack_sp (PERL_GET_INTERP->Tstack_sp)
-#define PL_start_env (PERL_GET_INTERP->Tstart_env)
-#define PL_statbuf (PERL_GET_INTERP->Tstatbuf)
-#define PL_statcache (PERL_GET_INTERP->Tstatcache)
-#define PL_statgv (PERL_GET_INTERP->Tstatgv)
-#define PL_statname (PERL_GET_INTERP->Tstatname)
-#define PL_tainted (PERL_GET_INTERP->Ttainted)
-#define PL_timesbuf (PERL_GET_INTERP->Ttimesbuf)
-#define PL_tmps_floor (PERL_GET_INTERP->Ttmps_floor)
-#define PL_tmps_ix (PERL_GET_INTERP->Ttmps_ix)
-#define PL_tmps_max (PERL_GET_INTERP->Ttmps_max)
-#define PL_tmps_stack (PERL_GET_INTERP->Ttmps_stack)
-#define PL_top_env (PERL_GET_INTERP->Ttop_env)
-#define PL_toptarget (PERL_GET_INTERP->Ttoptarget)
-#define PL_watchaddr (PERL_GET_INTERP->Twatchaddr)
-#define PL_watchok (PERL_GET_INTERP->Twatchok)
+#define PL_Sv (vTHX->TSv)
+#define PL_Xpv (vTHX->TXpv)
+#define PL_av_fetch_sv (vTHX->Tav_fetch_sv)
+#define PL_bodytarget (vTHX->Tbodytarget)
+#define PL_bostr (vTHX->Tbostr)
+#define PL_chopset (vTHX->Tchopset)
+#define PL_colors (vTHX->Tcolors)
+#define PL_colorset (vTHX->Tcolorset)
+#define PL_curcop (vTHX->Tcurcop)
+#define PL_curpad (vTHX->Tcurpad)
+#define PL_curpm (vTHX->Tcurpm)
+#define PL_curstack (vTHX->Tcurstack)
+#define PL_curstackinfo (vTHX->Tcurstackinfo)
+#define PL_curstash (vTHX->Tcurstash)
+#define PL_defoutgv (vTHX->Tdefoutgv)
+#define PL_defstash (vTHX->Tdefstash)
+#define PL_delaymagic (vTHX->Tdelaymagic)
+#define PL_dirty (vTHX->Tdirty)
+#define PL_dumpindent (vTHX->Tdumpindent)
+#define PL_extralen (vTHX->Textralen)
+#define PL_firstgv (vTHX->Tfirstgv)
+#define PL_formtarget (vTHX->Tformtarget)
+#define PL_hv_fetch_ent_mh (vTHX->Thv_fetch_ent_mh)
+#define PL_hv_fetch_sv (vTHX->Thv_fetch_sv)
+#define PL_in_eval (vTHX->Tin_eval)
+#define PL_last_in_gv (vTHX->Tlast_in_gv)
+#define PL_lastgotoprobe (vTHX->Tlastgotoprobe)
+#define PL_lastscream (vTHX->Tlastscream)
+#define PL_localizing (vTHX->Tlocalizing)
+#define PL_mainstack (vTHX->Tmainstack)
+#define PL_markstack (vTHX->Tmarkstack)
+#define PL_markstack_max (vTHX->Tmarkstack_max)
+#define PL_markstack_ptr (vTHX->Tmarkstack_ptr)
+#define PL_maxscream (vTHX->Tmaxscream)
+#define PL_modcount (vTHX->Tmodcount)
+#define PL_na (vTHX->Tna)
+#define PL_nrs (vTHX->Tnrs)
+#define PL_ofs (vTHX->Tofs)
+#define PL_ofslen (vTHX->Tofslen)
+#define PL_op (vTHX->Top)
+#define PL_opsave (vTHX->Topsave)
+#define PL_protect (vTHX->Tprotect)
+#define PL_reg_call_cc (vTHX->Treg_call_cc)
+#define PL_reg_curpm (vTHX->Treg_curpm)
+#define PL_reg_eval_set (vTHX->Treg_eval_set)
+#define PL_reg_flags (vTHX->Treg_flags)
+#define PL_reg_ganch (vTHX->Treg_ganch)
+#define PL_reg_leftiter (vTHX->Treg_leftiter)
+#define PL_reg_magic (vTHX->Treg_magic)
+#define PL_reg_maxiter (vTHX->Treg_maxiter)
+#define PL_reg_oldcurpm (vTHX->Treg_oldcurpm)
+#define PL_reg_oldpos (vTHX->Treg_oldpos)
+#define PL_reg_oldsaved (vTHX->Treg_oldsaved)
+#define PL_reg_oldsavedlen (vTHX->Treg_oldsavedlen)
+#define PL_reg_poscache (vTHX->Treg_poscache)
+#define PL_reg_poscache_size (vTHX->Treg_poscache_size)
+#define PL_reg_re (vTHX->Treg_re)
+#define PL_reg_start_tmp (vTHX->Treg_start_tmp)
+#define PL_reg_start_tmpl (vTHX->Treg_start_tmpl)
+#define PL_reg_starttry (vTHX->Treg_starttry)
+#define PL_reg_sv (vTHX->Treg_sv)
+#define PL_reg_whilem_seen (vTHX->Treg_whilem_seen)
+#define PL_regbol (vTHX->Tregbol)
+#define PL_regcc (vTHX->Tregcc)
+#define PL_regcode (vTHX->Tregcode)
+#define PL_regcomp_parse (vTHX->Tregcomp_parse)
+#define PL_regcomp_rx (vTHX->Tregcomp_rx)
+#define PL_regcompp (vTHX->Tregcompp)
+#define PL_regdata (vTHX->Tregdata)
+#define PL_regdummy (vTHX->Tregdummy)
+#define PL_regendp (vTHX->Tregendp)
+#define PL_regeol (vTHX->Tregeol)
+#define PL_regexecp (vTHX->Tregexecp)
+#define PL_regflags (vTHX->Tregflags)
+#define PL_regfree (vTHX->Tregfree)
+#define PL_regindent (vTHX->Tregindent)
+#define PL_reginput (vTHX->Treginput)
+#define PL_regint_start (vTHX->Tregint_start)
+#define PL_regint_string (vTHX->Tregint_string)
+#define PL_reginterp_cnt (vTHX->Treginterp_cnt)
+#define PL_reglastparen (vTHX->Treglastparen)
+#define PL_regnarrate (vTHX->Tregnarrate)
+#define PL_regnaughty (vTHX->Tregnaughty)
+#define PL_regnpar (vTHX->Tregnpar)
+#define PL_regprecomp (vTHX->Tregprecomp)
+#define PL_regprev (vTHX->Tregprev)
+#define PL_regprogram (vTHX->Tregprogram)
+#define PL_regsawback (vTHX->Tregsawback)
+#define PL_regseen (vTHX->Tregseen)
+#define PL_regsize (vTHX->Tregsize)
+#define PL_regstartp (vTHX->Tregstartp)
+#define PL_regtill (vTHX->Tregtill)
+#define PL_regxend (vTHX->Tregxend)
+#define PL_restartop (vTHX->Trestartop)
+#define PL_retstack (vTHX->Tretstack)
+#define PL_retstack_ix (vTHX->Tretstack_ix)
+#define PL_retstack_max (vTHX->Tretstack_max)
+#define PL_rs (vTHX->Trs)
+#define PL_savestack (vTHX->Tsavestack)
+#define PL_savestack_ix (vTHX->Tsavestack_ix)
+#define PL_savestack_max (vTHX->Tsavestack_max)
+#define PL_scopestack (vTHX->Tscopestack)
+#define PL_scopestack_ix (vTHX->Tscopestack_ix)
+#define PL_scopestack_max (vTHX->Tscopestack_max)
+#define PL_screamfirst (vTHX->Tscreamfirst)
+#define PL_screamnext (vTHX->Tscreamnext)
+#define PL_secondgv (vTHX->Tsecondgv)
+#define PL_seen_evals (vTHX->Tseen_evals)
+#define PL_seen_zerolen (vTHX->Tseen_zerolen)
+#define PL_sortcop (vTHX->Tsortcop)
+#define PL_sortcxix (vTHX->Tsortcxix)
+#define PL_sortstash (vTHX->Tsortstash)
+#define PL_stack_base (vTHX->Tstack_base)
+#define PL_stack_max (vTHX->Tstack_max)
+#define PL_stack_sp (vTHX->Tstack_sp)
+#define PL_start_env (vTHX->Tstart_env)
+#define PL_statbuf (vTHX->Tstatbuf)
+#define PL_statcache (vTHX->Tstatcache)
+#define PL_statgv (vTHX->Tstatgv)
+#define PL_statname (vTHX->Tstatname)
+#define PL_tainted (vTHX->Ttainted)
+#define PL_timesbuf (vTHX->Ttimesbuf)
+#define PL_tmps_floor (vTHX->Ttmps_floor)
+#define PL_tmps_ix (vTHX->Ttmps_ix)
+#define PL_tmps_max (vTHX->Ttmps_max)
+#define PL_tmps_stack (vTHX->Ttmps_stack)
+#define PL_top_env (vTHX->Ttop_env)
+#define PL_toptarget (vTHX->Ttoptarget)
+#define PL_watchaddr (vTHX->Twatchaddr)
+#define PL_watchok (vTHX->Twatchok)
-#endif /* !PERL_IMPLICIT_CONTEXT */
-#endif /* !USE_THREADS */
+# if defined(PERL_OBJECT)
+# include "error: PERL_OBJECT + MULTIPLICITY don't go together"
+# endif
-/* These are always per-interpreter if there is more than one */
+# if defined(USE_THREADS)
+/* case 5 above */
#define PL_Argv (PERL_GET_INTERP->IArgv)
#define PL_Cmd (PERL_GET_INTERP->ICmd)
@@ -555,7 +436,281 @@
#define PL_yynerrs (PERL_GET_INTERP->Iyynerrs)
#define PL_yyval (PERL_GET_INTERP->Iyyval)
+# else /* !USE_THREADS */
+/* cases 2 and 3 above */
+
+#define PL_Argv (vTHX->IArgv)
+#define PL_Cmd (vTHX->ICmd)
+#define PL_DBcv (vTHX->IDBcv)
+#define PL_DBgv (vTHX->IDBgv)
+#define PL_DBline (vTHX->IDBline)
+#define PL_DBsignal (vTHX->IDBsignal)
+#define PL_DBsingle (vTHX->IDBsingle)
+#define PL_DBsub (vTHX->IDBsub)
+#define PL_DBtrace (vTHX->IDBtrace)
+#define PL_Dir (vTHX->IDir)
+#define PL_Env (vTHX->IEnv)
+#define PL_LIO (vTHX->ILIO)
+#define PL_Mem (vTHX->IMem)
+#define PL_Proc (vTHX->IProc)
+#define PL_Sock (vTHX->ISock)
+#define PL_StdIO (vTHX->IStdIO)
+#define PL_amagic_generation (vTHX->Iamagic_generation)
+#define PL_ampergv (vTHX->Iampergv)
+#define PL_an (vTHX->Ian)
+#define PL_archpat_auto (vTHX->Iarchpat_auto)
+#define PL_argvgv (vTHX->Iargvgv)
+#define PL_argvoutgv (vTHX->Iargvoutgv)
+#define PL_basetime (vTHX->Ibasetime)
+#define PL_beginav (vTHX->Ibeginav)
+#define PL_bitcount (vTHX->Ibitcount)
+#define PL_bufend (vTHX->Ibufend)
+#define PL_bufptr (vTHX->Ibufptr)
+#define PL_cddir (vTHX->Icddir)
+#define PL_collation_ix (vTHX->Icollation_ix)
+#define PL_collation_name (vTHX->Icollation_name)
+#define PL_collation_standard (vTHX->Icollation_standard)
+#define PL_collxfrm_base (vTHX->Icollxfrm_base)
+#define PL_collxfrm_mult (vTHX->Icollxfrm_mult)
+#define PL_compcv (vTHX->Icompcv)
+#define PL_compiling (vTHX->Icompiling)
+#define PL_comppad (vTHX->Icomppad)
+#define PL_comppad_name (vTHX->Icomppad_name)
+#define PL_comppad_name_fill (vTHX->Icomppad_name_fill)
+#define PL_comppad_name_floor (vTHX->Icomppad_name_floor)
+#define PL_cop_seqmax (vTHX->Icop_seqmax)
+#define PL_copline (vTHX->Icopline)
+#define PL_cred_mutex (vTHX->Icred_mutex)
+#define PL_cryptseen (vTHX->Icryptseen)
+#define PL_cshlen (vTHX->Icshlen)
+#define PL_cshname (vTHX->Icshname)
+#define PL_curcopdb (vTHX->Icurcopdb)
+#define PL_curstname (vTHX->Icurstname)
+#define PL_curthr (vTHX->Icurthr)
+#define PL_dbargs (vTHX->Idbargs)
+#define PL_debdelim (vTHX->Idebdelim)
+#define PL_debname (vTHX->Idebname)
+#define PL_debstash (vTHX->Idebstash)
+#define PL_debug (vTHX->Idebug)
+#define PL_defgv (vTHX->Idefgv)
+#define PL_diehook (vTHX->Idiehook)
+#define PL_dlevel (vTHX->Idlevel)
+#define PL_dlmax (vTHX->Idlmax)
+#define PL_doextract (vTHX->Idoextract)
+#define PL_doswitches (vTHX->Idoswitches)
+#define PL_dowarn (vTHX->Idowarn)
+#define PL_e_script (vTHX->Ie_script)
+#define PL_efloatbuf (vTHX->Iefloatbuf)
+#define PL_efloatsize (vTHX->Iefloatsize)
+#define PL_egid (vTHX->Iegid)
+#define PL_endav (vTHX->Iendav)
+#define PL_envgv (vTHX->Ienvgv)
+#define PL_errgv (vTHX->Ierrgv)
+#define PL_error_count (vTHX->Ierror_count)
+#define PL_euid (vTHX->Ieuid)
+#define PL_eval_cond (vTHX->Ieval_cond)
+#define PL_eval_mutex (vTHX->Ieval_mutex)
+#define PL_eval_owner (vTHX->Ieval_owner)
+#define PL_eval_root (vTHX->Ieval_root)
+#define PL_eval_start (vTHX->Ieval_start)
+#define PL_evalseq (vTHX->Ievalseq)
+#define PL_exitlist (vTHX->Iexitlist)
+#define PL_exitlistlen (vTHX->Iexitlistlen)
+#define PL_expect (vTHX->Iexpect)
+#define PL_fdpid (vTHX->Ifdpid)
+#define PL_filemode (vTHX->Ifilemode)
+#define PL_filter_debug (vTHX->Ifilter_debug)
+#define PL_forkprocess (vTHX->Iforkprocess)
+#define PL_formfeed (vTHX->Iformfeed)
+#define PL_generation (vTHX->Igeneration)
+#define PL_gensym (vTHX->Igensym)
+#define PL_gid (vTHX->Igid)
+#define PL_glob_index (vTHX->Iglob_index)
+#define PL_globalstash (vTHX->Iglobalstash)
+#define PL_he_root (vTHX->Ihe_root)
+#define PL_hintgv (vTHX->Ihintgv)
+#define PL_hints (vTHX->Ihints)
+#define PL_in_clean_all (vTHX->Iin_clean_all)
+#define PL_in_clean_objs (vTHX->Iin_clean_objs)
+#define PL_in_my (vTHX->Iin_my)
+#define PL_in_my_stash (vTHX->Iin_my_stash)
+#define PL_incgv (vTHX->Iincgv)
+#define PL_initav (vTHX->Iinitav)
+#define PL_inplace (vTHX->Iinplace)
+#define PL_last_lop (vTHX->Ilast_lop)
+#define PL_last_lop_op (vTHX->Ilast_lop_op)
+#define PL_last_swash_hv (vTHX->Ilast_swash_hv)
+#define PL_last_swash_key (vTHX->Ilast_swash_key)
+#define PL_last_swash_klen (vTHX->Ilast_swash_klen)
+#define PL_last_swash_slen (vTHX->Ilast_swash_slen)
+#define PL_last_swash_tmps (vTHX->Ilast_swash_tmps)
+#define PL_last_uni (vTHX->Ilast_uni)
+#define PL_lastfd (vTHX->Ilastfd)
+#define PL_lastsize (vTHX->Ilastsize)
+#define PL_lastspbase (vTHX->Ilastspbase)
+#define PL_laststatval (vTHX->Ilaststatval)
+#define PL_laststype (vTHX->Ilaststype)
+#define PL_leftgv (vTHX->Ileftgv)
+#define PL_lex_brackets (vTHX->Ilex_brackets)
+#define PL_lex_brackstack (vTHX->Ilex_brackstack)
+#define PL_lex_casemods (vTHX->Ilex_casemods)
+#define PL_lex_casestack (vTHX->Ilex_casestack)
+#define PL_lex_defer (vTHX->Ilex_defer)
+#define PL_lex_dojoin (vTHX->Ilex_dojoin)
+#define PL_lex_expect (vTHX->Ilex_expect)
+#define PL_lex_fakebrack (vTHX->Ilex_fakebrack)
+#define PL_lex_formbrack (vTHX->Ilex_formbrack)
+#define PL_lex_inpat (vTHX->Ilex_inpat)
+#define PL_lex_inwhat (vTHX->Ilex_inwhat)
+#define PL_lex_op (vTHX->Ilex_op)
+#define PL_lex_repl (vTHX->Ilex_repl)
+#define PL_lex_starts (vTHX->Ilex_starts)
+#define PL_lex_state (vTHX->Ilex_state)
+#define PL_lex_stuff (vTHX->Ilex_stuff)
+#define PL_lineary (vTHX->Ilineary)
+#define PL_linestart (vTHX->Ilinestart)
+#define PL_linestr (vTHX->Ilinestr)
+#define PL_localpatches (vTHX->Ilocalpatches)
+#define PL_main_cv (vTHX->Imain_cv)
+#define PL_main_root (vTHX->Imain_root)
+#define PL_main_start (vTHX->Imain_start)
+#define PL_malloc_mutex (vTHX->Imalloc_mutex)
+#define PL_max_intro_pending (vTHX->Imax_intro_pending)
+#define PL_maxo (vTHX->Imaxo)
+#define PL_maxsysfd (vTHX->Imaxsysfd)
+#define PL_mess_sv (vTHX->Imess_sv)
+#define PL_min_intro_pending (vTHX->Imin_intro_pending)
+#define PL_minus_F (vTHX->Iminus_F)
+#define PL_minus_a (vTHX->Iminus_a)
+#define PL_minus_c (vTHX->Iminus_c)
+#define PL_minus_l (vTHX->Iminus_l)
+#define PL_minus_n (vTHX->Iminus_n)
+#define PL_minus_p (vTHX->Iminus_p)
+#define PL_modglobal (vTHX->Imodglobal)
+#define PL_multi_close (vTHX->Imulti_close)
+#define PL_multi_end (vTHX->Imulti_end)
+#define PL_multi_open (vTHX->Imulti_open)
+#define PL_multi_start (vTHX->Imulti_start)
+#define PL_multiline (vTHX->Imultiline)
+#define PL_mystrk (vTHX->Imystrk)
+#define PL_nexttoke (vTHX->Inexttoke)
+#define PL_nexttype (vTHX->Inexttype)
+#define PL_nextval (vTHX->Inextval)
+#define PL_nice_chunk (vTHX->Inice_chunk)
+#define PL_nice_chunk_size (vTHX->Inice_chunk_size)
+#define PL_nomemok (vTHX->Inomemok)
+#define PL_nthreads (vTHX->Inthreads)
+#define PL_nthreads_cond (vTHX->Inthreads_cond)
+#define PL_numeric_local (vTHX->Inumeric_local)
+#define PL_numeric_name (vTHX->Inumeric_name)
+#define PL_numeric_radix (vTHX->Inumeric_radix)
+#define PL_numeric_standard (vTHX->Inumeric_standard)
+#define PL_ofmt (vTHX->Iofmt)
+#define PL_oldbufptr (vTHX->Ioldbufptr)
+#define PL_oldlastpm (vTHX->Ioldlastpm)
+#define PL_oldname (vTHX->Ioldname)
+#define PL_oldoldbufptr (vTHX->Ioldoldbufptr)
+#define PL_op_mask (vTHX->Iop_mask)
+#define PL_op_seqmax (vTHX->Iop_seqmax)
+#define PL_origalen (vTHX->Iorigalen)
+#define PL_origargc (vTHX->Iorigargc)
+#define PL_origargv (vTHX->Iorigargv)
+#define PL_origenviron (vTHX->Iorigenviron)
+#define PL_origfilename (vTHX->Iorigfilename)
+#define PL_ors (vTHX->Iors)
+#define PL_orslen (vTHX->Iorslen)
+#define PL_osname (vTHX->Iosname)
+#define PL_pad_reset_pending (vTHX->Ipad_reset_pending)
+#define PL_padix (vTHX->Ipadix)
+#define PL_padix_floor (vTHX->Ipadix_floor)
+#define PL_parsehook (vTHX->Iparsehook)
+#define PL_patchlevel (vTHX->Ipatchlevel)
+#define PL_pending_ident (vTHX->Ipending_ident)
+#define PL_perl_destruct_level (vTHX->Iperl_destruct_level)
+#define PL_perldb (vTHX->Iperldb)
+#define PL_pidstatus (vTHX->Ipidstatus)
+#define PL_preambleav (vTHX->Ipreambleav)
+#define PL_preambled (vTHX->Ipreambled)
+#define PL_preprocess (vTHX->Ipreprocess)
+#define PL_profiledata (vTHX->Iprofiledata)
+#define PL_replgv (vTHX->Ireplgv)
+#define PL_rightgv (vTHX->Irightgv)
+#define PL_rsfp (vTHX->Irsfp)
+#define PL_rsfp_filters (vTHX->Irsfp_filters)
+#define PL_runops (vTHX->Irunops)
+#define PL_sawampersand (vTHX->Isawampersand)
+#define PL_sawstudy (vTHX->Isawstudy)
+#define PL_sawvec (vTHX->Isawvec)
+#define PL_sh_path (vTHX->Ish_path)
+#define PL_siggv (vTHX->Isiggv)
+#define PL_sighandlerp (vTHX->Isighandlerp)
+#define PL_splitstr (vTHX->Isplitstr)
+#define PL_srand_called (vTHX->Isrand_called)
+#define PL_statusvalue (vTHX->Istatusvalue)
+#define PL_statusvalue_vms (vTHX->Istatusvalue_vms)
+#define PL_stdingv (vTHX->Istdingv)
+#define PL_strchop (vTHX->Istrchop)
+#define PL_strtab (vTHX->Istrtab)
+#define PL_strtab_mutex (vTHX->Istrtab_mutex)
+#define PL_sub_generation (vTHX->Isub_generation)
+#define PL_sublex_info (vTHX->Isublex_info)
+#define PL_subline (vTHX->Isubline)
+#define PL_subname (vTHX->Isubname)
+#define PL_sv_arenaroot (vTHX->Isv_arenaroot)
+#define PL_sv_count (vTHX->Isv_count)
+#define PL_sv_mutex (vTHX->Isv_mutex)
+#define PL_sv_no (vTHX->Isv_no)
+#define PL_sv_objcount (vTHX->Isv_objcount)
+#define PL_sv_root (vTHX->Isv_root)
+#define PL_sv_undef (vTHX->Isv_undef)
+#define PL_sv_yes (vTHX->Isv_yes)
+#define PL_svref_mutex (vTHX->Isvref_mutex)
+#define PL_sys_intern (vTHX->Isys_intern)
+#define PL_tainting (vTHX->Itainting)
+#define PL_thisexpr (vTHX->Ithisexpr)
+#define PL_thr_key (vTHX->Ithr_key)
+#define PL_threadnum (vTHX->Ithreadnum)
+#define PL_threads_mutex (vTHX->Ithreads_mutex)
+#define PL_threadsv_names (vTHX->Ithreadsv_names)
+#define PL_thrsv (vTHX->Ithrsv)
+#define PL_tokenbuf (vTHX->Itokenbuf)
+#define PL_uid (vTHX->Iuid)
+#define PL_unsafe (vTHX->Iunsafe)
+#define PL_utf8_alnum (vTHX->Iutf8_alnum)
+#define PL_utf8_alnumc (vTHX->Iutf8_alnumc)
+#define PL_utf8_alpha (vTHX->Iutf8_alpha)
+#define PL_utf8_ascii (vTHX->Iutf8_ascii)
+#define PL_utf8_cntrl (vTHX->Iutf8_cntrl)
+#define PL_utf8_digit (vTHX->Iutf8_digit)
+#define PL_utf8_graph (vTHX->Iutf8_graph)
+#define PL_utf8_lower (vTHX->Iutf8_lower)
+#define PL_utf8_mark (vTHX->Iutf8_mark)
+#define PL_utf8_print (vTHX->Iutf8_print)
+#define PL_utf8_punct (vTHX->Iutf8_punct)
+#define PL_utf8_space (vTHX->Iutf8_space)
+#define PL_utf8_tolower (vTHX->Iutf8_tolower)
+#define PL_utf8_totitle (vTHX->Iutf8_totitle)
+#define PL_utf8_toupper (vTHX->Iutf8_toupper)
+#define PL_utf8_upper (vTHX->Iutf8_upper)
+#define PL_utf8_xdigit (vTHX->Iutf8_xdigit)
+#define PL_uudmap (vTHX->Iuudmap)
+#define PL_warnhook (vTHX->Iwarnhook)
+#define PL_xiv_arenaroot (vTHX->Ixiv_arenaroot)
+#define PL_xiv_root (vTHX->Ixiv_root)
+#define PL_xnv_root (vTHX->Ixnv_root)
+#define PL_xpv_root (vTHX->Ixpv_root)
+#define PL_xrv_root (vTHX->Ixrv_root)
+#define PL_yychar (vTHX->Iyychar)
+#define PL_yydebug (vTHX->Iyydebug)
+#define PL_yyerrflag (vTHX->Iyyerrflag)
+#define PL_yylval (vTHX->Iyylval)
+#define PL_yynerrs (vTHX->Iyynerrs)
+#define PL_yyval (vTHX->Iyyval)
+
+# endif /* USE_THREADS */
+
#else /* !MULTIPLICITY */
+/* cases 1, 4 and 6 above */
#define PL_IArgv PL_Argv
#define PL_ICmd PL_Cmd
@@ -825,7 +980,142 @@
#define PL_Iyynerrs PL_yynerrs
#define PL_Iyyval PL_yyval
-#ifndef USE_THREADS
+# if defined(USE_THREADS)
+/* case 4 above */
+
+#define PL_Sv (aTHX->TSv)
+#define PL_Xpv (aTHX->TXpv)
+#define PL_av_fetch_sv (aTHX->Tav_fetch_sv)
+#define PL_bodytarget (aTHX->Tbodytarget)
+#define PL_bostr (aTHX->Tbostr)
+#define PL_chopset (aTHX->Tchopset)
+#define PL_colors (aTHX->Tcolors)
+#define PL_colorset (aTHX->Tcolorset)
+#define PL_curcop (aTHX->Tcurcop)
+#define PL_curpad (aTHX->Tcurpad)
+#define PL_curpm (aTHX->Tcurpm)
+#define PL_curstack (aTHX->Tcurstack)
+#define PL_curstackinfo (aTHX->Tcurstackinfo)
+#define PL_curstash (aTHX->Tcurstash)
+#define PL_defoutgv (aTHX->Tdefoutgv)
+#define PL_defstash (aTHX->Tdefstash)
+#define PL_delaymagic (aTHX->Tdelaymagic)
+#define PL_dirty (aTHX->Tdirty)
+#define PL_dumpindent (aTHX->Tdumpindent)
+#define PL_extralen (aTHX->Textralen)
+#define PL_firstgv (aTHX->Tfirstgv)
+#define PL_formtarget (aTHX->Tformtarget)
+#define PL_hv_fetch_ent_mh (aTHX->Thv_fetch_ent_mh)
+#define PL_hv_fetch_sv (aTHX->Thv_fetch_sv)
+#define PL_in_eval (aTHX->Tin_eval)
+#define PL_last_in_gv (aTHX->Tlast_in_gv)
+#define PL_lastgotoprobe (aTHX->Tlastgotoprobe)
+#define PL_lastscream (aTHX->Tlastscream)
+#define PL_localizing (aTHX->Tlocalizing)
+#define PL_mainstack (aTHX->Tmainstack)
+#define PL_markstack (aTHX->Tmarkstack)
+#define PL_markstack_max (aTHX->Tmarkstack_max)
+#define PL_markstack_ptr (aTHX->Tmarkstack_ptr)
+#define PL_maxscream (aTHX->Tmaxscream)
+#define PL_modcount (aTHX->Tmodcount)
+#define PL_na (aTHX->Tna)
+#define PL_nrs (aTHX->Tnrs)
+#define PL_ofs (aTHX->Tofs)
+#define PL_ofslen (aTHX->Tofslen)
+#define PL_op (aTHX->Top)
+#define PL_opsave (aTHX->Topsave)
+#define PL_protect (aTHX->Tprotect)
+#define PL_reg_call_cc (aTHX->Treg_call_cc)
+#define PL_reg_curpm (aTHX->Treg_curpm)
+#define PL_reg_eval_set (aTHX->Treg_eval_set)
+#define PL_reg_flags (aTHX->Treg_flags)
+#define PL_reg_ganch (aTHX->Treg_ganch)
+#define PL_reg_leftiter (aTHX->Treg_leftiter)
+#define PL_reg_magic (aTHX->Treg_magic)
+#define PL_reg_maxiter (aTHX->Treg_maxiter)
+#define PL_reg_oldcurpm (aTHX->Treg_oldcurpm)
+#define PL_reg_oldpos (aTHX->Treg_oldpos)
+#define PL_reg_oldsaved (aTHX->Treg_oldsaved)
+#define PL_reg_oldsavedlen (aTHX->Treg_oldsavedlen)
+#define PL_reg_poscache (aTHX->Treg_poscache)
+#define PL_reg_poscache_size (aTHX->Treg_poscache_size)
+#define PL_reg_re (aTHX->Treg_re)
+#define PL_reg_start_tmp (aTHX->Treg_start_tmp)
+#define PL_reg_start_tmpl (aTHX->Treg_start_tmpl)
+#define PL_reg_starttry (aTHX->Treg_starttry)
+#define PL_reg_sv (aTHX->Treg_sv)
+#define PL_reg_whilem_seen (aTHX->Treg_whilem_seen)
+#define PL_regbol (aTHX->Tregbol)
+#define PL_regcc (aTHX->Tregcc)
+#define PL_regcode (aTHX->Tregcode)
+#define PL_regcomp_parse (aTHX->Tregcomp_parse)
+#define PL_regcomp_rx (aTHX->Tregcomp_rx)
+#define PL_regcompp (aTHX->Tregcompp)
+#define PL_regdata (aTHX->Tregdata)
+#define PL_regdummy (aTHX->Tregdummy)
+#define PL_regendp (aTHX->Tregendp)
+#define PL_regeol (aTHX->Tregeol)
+#define PL_regexecp (aTHX->Tregexecp)
+#define PL_regflags (aTHX->Tregflags)
+#define PL_regfree (aTHX->Tregfree)
+#define PL_regindent (aTHX->Tregindent)
+#define PL_reginput (aTHX->Treginput)
+#define PL_regint_start (aTHX->Tregint_start)
+#define PL_regint_string (aTHX->Tregint_string)
+#define PL_reginterp_cnt (aTHX->Treginterp_cnt)
+#define PL_reglastparen (aTHX->Treglastparen)
+#define PL_regnarrate (aTHX->Tregnarrate)
+#define PL_regnaughty (aTHX->Tregnaughty)
+#define PL_regnpar (aTHX->Tregnpar)
+#define PL_regprecomp (aTHX->Tregprecomp)
+#define PL_regprev (aTHX->Tregprev)
+#define PL_regprogram (aTHX->Tregprogram)
+#define PL_regsawback (aTHX->Tregsawback)
+#define PL_regseen (aTHX->Tregseen)
+#define PL_regsize (aTHX->Tregsize)
+#define PL_regstartp (aTHX->Tregstartp)
+#define PL_regtill (aTHX->Tregtill)
+#define PL_regxend (aTHX->Tregxend)
+#define PL_restartop (aTHX->Trestartop)
+#define PL_retstack (aTHX->Tretstack)
+#define PL_retstack_ix (aTHX->Tretstack_ix)
+#define PL_retstack_max (aTHX->Tretstack_max)
+#define PL_rs (aTHX->Trs)
+#define PL_savestack (aTHX->Tsavestack)
+#define PL_savestack_ix (aTHX->Tsavestack_ix)
+#define PL_savestack_max (aTHX->Tsavestack_max)
+#define PL_scopestack (aTHX->Tscopestack)
+#define PL_scopestack_ix (aTHX->Tscopestack_ix)
+#define PL_scopestack_max (aTHX->Tscopestack_max)
+#define PL_screamfirst (aTHX->Tscreamfirst)
+#define PL_screamnext (aTHX->Tscreamnext)
+#define PL_secondgv (aTHX->Tsecondgv)
+#define PL_seen_evals (aTHX->Tseen_evals)
+#define PL_seen_zerolen (aTHX->Tseen_zerolen)
+#define PL_sortcop (aTHX->Tsortcop)
+#define PL_sortcxix (aTHX->Tsortcxix)
+#define PL_sortstash (aTHX->Tsortstash)
+#define PL_stack_base (aTHX->Tstack_base)
+#define PL_stack_max (aTHX->Tstack_max)
+#define PL_stack_sp (aTHX->Tstack_sp)
+#define PL_start_env (aTHX->Tstart_env)
+#define PL_statbuf (aTHX->Tstatbuf)
+#define PL_statcache (aTHX->Tstatcache)
+#define PL_statgv (aTHX->Tstatgv)
+#define PL_statname (aTHX->Tstatname)
+#define PL_tainted (aTHX->Ttainted)
+#define PL_timesbuf (aTHX->Ttimesbuf)
+#define PL_tmps_floor (aTHX->Ttmps_floor)
+#define PL_tmps_ix (aTHX->Ttmps_ix)
+#define PL_tmps_max (aTHX->Ttmps_max)
+#define PL_tmps_stack (aTHX->Ttmps_stack)
+#define PL_top_env (aTHX->Ttop_env)
+#define PL_toptarget (aTHX->Ttoptarget)
+#define PL_watchaddr (aTHX->Twatchaddr)
+#define PL_watchok (aTHX->Twatchok)
+
+# else /* !USE_THREADS */
+/* cases 1 and 6 above */
#define PL_TSv PL_Sv
#define PL_TXpv PL_Xpv
@@ -958,155 +1248,10 @@
#define PL_Twatchaddr PL_watchaddr
#define PL_Twatchok PL_watchok
-#endif /* USE_THREADS */
-
-/* Hide what would have been interpreter-specific symbols? */
+# endif /* USE_THREADS */
+#endif /* MULTIPLICITY */
-
-#ifndef USE_THREADS
-
-
-#endif /* USE_THREADS */
-#endif /* MULTIPLICITY */
-
-/* Now same trickey for per-thread variables */
-
-#ifdef USE_THREADS
-
-#define PL_Sv (thr->TSv)
-#define PL_Xpv (thr->TXpv)
-#define PL_av_fetch_sv (thr->Tav_fetch_sv)
-#define PL_bodytarget (thr->Tbodytarget)
-#define PL_bostr (thr->Tbostr)
-#define PL_chopset (thr->Tchopset)
-#define PL_colors (thr->Tcolors)
-#define PL_colorset (thr->Tcolorset)
-#define PL_curcop (thr->Tcurcop)
-#define PL_curpad (thr->Tcurpad)
-#define PL_curpm (thr->Tcurpm)
-#define PL_curstack (thr->Tcurstack)
-#define PL_curstackinfo (thr->Tcurstackinfo)
-#define PL_curstash (thr->Tcurstash)
-#define PL_defoutgv (thr->Tdefoutgv)
-#define PL_defstash (thr->Tdefstash)
-#define PL_delaymagic (thr->Tdelaymagic)
-#define PL_dirty (thr->Tdirty)
-#define PL_dumpindent (thr->Tdumpindent)
-#define PL_extralen (thr->Textralen)
-#define PL_firstgv (thr->Tfirstgv)
-#define PL_formtarget (thr->Tformtarget)
-#define PL_hv_fetch_ent_mh (thr->Thv_fetch_ent_mh)
-#define PL_hv_fetch_sv (thr->Thv_fetch_sv)
-#define PL_in_eval (thr->Tin_eval)
-#define PL_last_in_gv (thr->Tlast_in_gv)
-#define PL_lastgotoprobe (thr->Tlastgotoprobe)
-#define PL_lastscream (thr->Tlastscream)
-#define PL_localizing (thr->Tlocalizing)
-#define PL_mainstack (thr->Tmainstack)
-#define PL_markstack (thr->Tmarkstack)
-#define PL_markstack_max (thr->Tmarkstack_max)
-#define PL_markstack_ptr (thr->Tmarkstack_ptr)
-#define PL_maxscream (thr->Tmaxscream)
-#define PL_modcount (thr->Tmodcount)
-#define PL_na (thr->Tna)
-#define PL_nrs (thr->Tnrs)
-#define PL_ofs (thr->Tofs)
-#define PL_ofslen (thr->Tofslen)
-#define PL_op (thr->Top)
-#define PL_opsave (thr->Topsave)
-#define PL_protect (thr->Tprotect)
-#define PL_reg_call_cc (thr->Treg_call_cc)
-#define PL_reg_curpm (thr->Treg_curpm)
-#define PL_reg_eval_set (thr->Treg_eval_set)
-#define PL_reg_flags (thr->Treg_flags)
-#define PL_reg_ganch (thr->Treg_ganch)
-#define PL_reg_leftiter (thr->Treg_leftiter)
-#define PL_reg_magic (thr->Treg_magic)
-#define PL_reg_maxiter (thr->Treg_maxiter)
-#define PL_reg_oldcurpm (thr->Treg_oldcurpm)
-#define PL_reg_oldpos (thr->Treg_oldpos)
-#define PL_reg_oldsaved (thr->Treg_oldsaved)
-#define PL_reg_oldsavedlen (thr->Treg_oldsavedlen)
-#define PL_reg_poscache (thr->Treg_poscache)
-#define PL_reg_poscache_size (thr->Treg_poscache_size)
-#define PL_reg_re (thr->Treg_re)
-#define PL_reg_start_tmp (thr->Treg_start_tmp)
-#define PL_reg_start_tmpl (thr->Treg_start_tmpl)
-#define PL_reg_starttry (thr->Treg_starttry)
-#define PL_reg_sv (thr->Treg_sv)
-#define PL_reg_whilem_seen (thr->Treg_whilem_seen)
-#define PL_regbol (thr->Tregbol)
-#define PL_regcc (thr->Tregcc)
-#define PL_regcode (thr->Tregcode)
-#define PL_regcomp_parse (thr->Tregcomp_parse)
-#define PL_regcomp_rx (thr->Tregcomp_rx)
-#define PL_regcompp (thr->Tregcompp)
-#define PL_regdata (thr->Tregdata)
-#define PL_regdummy (thr->Tregdummy)
-#define PL_regendp (thr->Tregendp)
-#define PL_regeol (thr->Tregeol)
-#define PL_regexecp (thr->Tregexecp)
-#define PL_regflags (thr->Tregflags)
-#define PL_regfree (thr->Tregfree)
-#define PL_regindent (thr->Tregindent)
-#define PL_reginput (thr->Treginput)
-#define PL_regint_start (thr->Tregint_start)
-#define PL_regint_string (thr->Tregint_string)
-#define PL_reginterp_cnt (thr->Treginterp_cnt)
-#define PL_reglastparen (thr->Treglastparen)
-#define PL_regnarrate (thr->Tregnarrate)
-#define PL_regnaughty (thr->Tregnaughty)
-#define PL_regnpar (thr->Tregnpar)
-#define PL_regprecomp (thr->Tregprecomp)
-#define PL_regprev (thr->Tregprev)
-#define PL_regprogram (thr->Tregprogram)
-#define PL_regsawback (thr->Tregsawback)
-#define PL_regseen (thr->Tregseen)
-#define PL_regsize (thr->Tregsize)
-#define PL_regstartp (thr->Tregstartp)
-#define PL_regtill (thr->Tregtill)
-#define PL_regxend (thr->Tregxend)
-#define PL_restartop (thr->Trestartop)
-#define PL_retstack (thr->Tretstack)
-#define PL_retstack_ix (thr->Tretstack_ix)
-#define PL_retstack_max (thr->Tretstack_max)
-#define PL_rs (thr->Trs)
-#define PL_savestack (thr->Tsavestack)
-#define PL_savestack_ix (thr->Tsavestack_ix)
-#define PL_savestack_max (thr->Tsavestack_max)
-#define PL_scopestack (thr->Tscopestack)
-#define PL_scopestack_ix (thr->Tscopestack_ix)
-#define PL_scopestack_max (thr->Tscopestack_max)
-#define PL_screamfirst (thr->Tscreamfirst)
-#define PL_screamnext (thr->Tscreamnext)
-#define PL_secondgv (thr->Tsecondgv)
-#define PL_seen_evals (thr->Tseen_evals)
-#define PL_seen_zerolen (thr->Tseen_zerolen)
-#define PL_sortcop (thr->Tsortcop)
-#define PL_sortcxix (thr->Tsortcxix)
-#define PL_sortstash (thr->Tsortstash)
-#define PL_stack_base (thr->Tstack_base)
-#define PL_stack_max (thr->Tstack_max)
-#define PL_stack_sp (thr->Tstack_sp)
-#define PL_start_env (thr->Tstart_env)
-#define PL_statbuf (thr->Tstatbuf)
-#define PL_statcache (thr->Tstatcache)
-#define PL_statgv (thr->Tstatgv)
-#define PL_statname (thr->Tstatname)
-#define PL_tainted (thr->Ttainted)
-#define PL_timesbuf (thr->Ttimesbuf)
-#define PL_tmps_floor (thr->Ttmps_floor)
-#define PL_tmps_ix (thr->Ttmps_ix)
-#define PL_tmps_max (thr->Ttmps_max)
-#define PL_tmps_stack (thr->Ttmps_stack)
-#define PL_top_env (thr->Ttop_env)
-#define PL_toptarget (thr->Ttoptarget)
-#define PL_watchaddr (thr->Twatchaddr)
-#define PL_watchok (thr->Twatchok)
-
-#endif /* USE_THREADS */
-
-#ifdef PERL_GLOBAL_STRUCT
+#if defined(PERL_GLOBAL_STRUCT)
#define PL_No (PL_Vars.GNo)
#define PL_Yes (PL_Vars.GYes)
@@ -1124,10 +1269,8 @@
#define PL_Ghexdigit PL_hexdigit
#define PL_Gpatleave PL_patleave
-
#endif /* PERL_GLOBAL_STRUCT */
-
#ifdef PERL_POLLUTE /* disabled by default in 5.006 */
#define DBsingle PL_DBsingle
diff --git a/ext/Thread/Thread.xs b/ext/Thread/Thread.xs
index ad99e2c409..772d41a495 100644
--- a/ext/Thread/Thread.xs
+++ b/ext/Thread/Thread.xs
@@ -86,9 +86,14 @@ threadstart(void *arg)
I32 oldscope = PL_scopestack_ix;
I32 retval;
SV *sv;
- AV *av = newAV();
+ AV *av;
int i, ret;
dJMPENV;
+
+#if defined(MULTIPLICITY)
+ PERL_SET_INTERP(thr->interp);
+#endif
+
DEBUG_S(PerlIO_printf(PerlIO_stderr(), "new thread %p waiting to start\n",
thr));
@@ -114,6 +119,7 @@ threadstart(void *arg)
DEBUG_S(PerlIO_printf(PerlIO_stderr(), "new thread %p starting at %s\n",
thr, SvPEEK(TOPs)));
+ av = newAV();
sv = POPs;
PUTBACK;
ENTER;
diff --git a/lib/unicode/Is/SylA.pl b/lib/unicode/Is/SylA.pl
new file mode 100644
index 0000000000..3054fd6216
--- /dev/null
+++ b/lib/unicode/Is/SylA.pl
@@ -0,0 +1,2 @@
+return <<'END';
+END
diff --git a/lib/unicode/Is/SylC.pl b/lib/unicode/Is/SylC.pl
new file mode 100644
index 0000000000..3054fd6216
--- /dev/null
+++ b/lib/unicode/Is/SylC.pl
@@ -0,0 +1,2 @@
+return <<'END';
+END
diff --git a/lib/unicode/Is/SylE.pl b/lib/unicode/Is/SylE.pl
new file mode 100644
index 0000000000..3054fd6216
--- /dev/null
+++ b/lib/unicode/Is/SylE.pl
@@ -0,0 +1,2 @@
+return <<'END';
+END
diff --git a/lib/unicode/Is/SylI.pl b/lib/unicode/Is/SylI.pl
new file mode 100644
index 0000000000..3054fd6216
--- /dev/null
+++ b/lib/unicode/Is/SylI.pl
@@ -0,0 +1,2 @@
+return <<'END';
+END
diff --git a/lib/unicode/Is/SylO.pl b/lib/unicode/Is/SylO.pl
new file mode 100644
index 0000000000..3054fd6216
--- /dev/null
+++ b/lib/unicode/Is/SylO.pl
@@ -0,0 +1,2 @@
+return <<'END';
+END
diff --git a/lib/unicode/Is/SylU.pl b/lib/unicode/Is/SylU.pl
new file mode 100644
index 0000000000..3054fd6216
--- /dev/null
+++ b/lib/unicode/Is/SylU.pl
@@ -0,0 +1,2 @@
+return <<'END';
+END
diff --git a/lib/unicode/Is/SylV.pl b/lib/unicode/Is/SylV.pl
new file mode 100644
index 0000000000..3054fd6216
--- /dev/null
+++ b/lib/unicode/Is/SylV.pl
@@ -0,0 +1,2 @@
+return <<'END';
+END
diff --git a/lib/unicode/Is/SylWA.pl b/lib/unicode/Is/SylWA.pl
new file mode 100644
index 0000000000..3054fd6216
--- /dev/null
+++ b/lib/unicode/Is/SylWA.pl
@@ -0,0 +1,2 @@
+return <<'END';
+END
diff --git a/lib/unicode/Is/SylWC.pl b/lib/unicode/Is/SylWC.pl
new file mode 100644
index 0000000000..3054fd6216
--- /dev/null
+++ b/lib/unicode/Is/SylWC.pl
@@ -0,0 +1,2 @@
+return <<'END';
+END
diff --git a/lib/unicode/Is/SylWE.pl b/lib/unicode/Is/SylWE.pl
new file mode 100644
index 0000000000..3054fd6216
--- /dev/null
+++ b/lib/unicode/Is/SylWE.pl
@@ -0,0 +1,2 @@
+return <<'END';
+END
diff --git a/lib/unicode/Is/SylWI.pl b/lib/unicode/Is/SylWI.pl
new file mode 100644
index 0000000000..3054fd6216
--- /dev/null
+++ b/lib/unicode/Is/SylWI.pl
@@ -0,0 +1,2 @@
+return <<'END';
+END
diff --git a/lib/unicode/Is/SylWV.pl b/lib/unicode/Is/SylWV.pl
new file mode 100644
index 0000000000..3054fd6216
--- /dev/null
+++ b/lib/unicode/Is/SylWV.pl
@@ -0,0 +1,2 @@
+return <<'END';
+END
diff --git a/malloc.c b/malloc.c
index dc5a69f383..a3344ae2cf 100644
--- a/malloc.c
+++ b/malloc.c
@@ -311,7 +311,10 @@
#ifdef DEBUGGING
# undef DEBUG_m
-# define DEBUG_m(a) if (PERL_GET_INTERP && PL_debug & 128) a
+# define DEBUG_m(a) \
+ STMT_START { \
+ if (PERL_GET_INTERP) { dTHX; if (PL_debug & 128) { a; } } \
+ } STMT_END
#endif
/*
@@ -902,9 +905,12 @@ Perl_malloc(register size_t nbytes)
if ((p = nextf[bucket]) == NULL) {
MALLOC_UNLOCK;
#ifdef PERL_CORE
- if (!PL_nomemok) {
- PerlIO_puts(PerlIO_stderr(),"Out of memory!\n");
- WITH_THX(my_exit(1));
+ {
+ dTHX;
+ if (!PL_nomemok) {
+ PerlIO_puts(PerlIO_stderr(),"Out of memory!\n");
+ my_exit(1);
+ }
}
#else
return (NULL);
diff --git a/mg.c b/mg.c
index aa5dadd143..1923ce4d9d 100644
--- a/mg.c
+++ b/mg.c
@@ -27,12 +27,6 @@
# endif
#endif
-#ifdef PERL_OBJECT
-# define VTBL this->*vtbl
-#else
-# define VTBL *vtbl
-#endif
-
static void restore_magic(pTHXo_ void *p);
static void unwind_handler_stack(pTHXo_ void *p);
@@ -99,7 +93,7 @@ Perl_mg_get(pTHX_ SV *sv)
while ((mg = *mgp) != 0) {
MGVTBL* vtbl = mg->mg_virtual;
if (!(mg->mg_flags & MGf_GSKIP) && vtbl && (vtbl->svt_get != NULL)) {
- (VTBL->svt_get)(aTHX_ sv, mg);
+ CALL_FTPR(vtbl->svt_get)(aTHX_ sv, mg);
/* Ignore this magic if it's been deleted */
if ((mg == (mgp_valid ? *mgp : SvMAGIC(sv))) &&
(mg->mg_flags & MGf_GSKIP))
@@ -137,7 +131,7 @@ Perl_mg_set(pTHX_ SV *sv)
(SSPTR(mgs_ix, MGS*))->mgs_flags = 0;
}
if (vtbl && (vtbl->svt_set != NULL))
- (VTBL->svt_set)(aTHX_ sv, mg);
+ CALL_FPTR(vtbl->svt_set)(aTHX_ sv, mg);
}
restore_magic(aTHXo_ (void*)mgs_ix);
@@ -159,7 +153,7 @@ Perl_mg_length(pTHX_ SV *sv)
mgs_ix = SSNEW(sizeof(MGS));
save_magic(mgs_ix, sv);
/* omit MGf_GSKIP -- not changed here */
- len = (VTBL->svt_len)(aTHX_ sv, mg);
+ len = CALL_FPTR(vtbl->svt_len)(aTHX_ sv, mg);
restore_magic(aTHXo_ (void*)mgs_ix);
return len;
}
@@ -183,7 +177,7 @@ Perl_mg_size(pTHX_ SV *sv)
mgs_ix = SSNEW(sizeof(MGS));
save_magic(mgs_ix, sv);
/* omit MGf_GSKIP -- not changed here */
- len = (VTBL->svt_len)(aTHX_ sv, mg);
+ len = CALL_FPTR(vtbl->svt_len)(aTHX_ sv, mg);
restore_magic(aTHXo_ (void*)mgs_ix);
return len;
}
@@ -216,7 +210,7 @@ Perl_mg_clear(pTHX_ SV *sv)
/* omit GSKIP -- never set here */
if (vtbl && (vtbl->svt_clear != NULL))
- (VTBL->svt_clear)(aTHX_ sv, mg);
+ CALL_FPTR(vtbl->svt_clear)(aTHX_ sv, mg);
}
restore_magic(aTHXo_ (void*)mgs_ix);
@@ -259,7 +253,7 @@ Perl_mg_free(pTHX_ SV *sv)
MGVTBL* vtbl = mg->mg_virtual;
moremagic = mg->mg_moremagic;
if (vtbl && (vtbl->svt_free != NULL))
- (VTBL->svt_free)(aTHX_ sv, mg);
+ CALL_FPTR(vtbl->svt_free)(aTHX_ sv, mg);
if (mg->mg_ptr && mg->mg_type != 'g')
if (mg->mg_len >= 0)
Safefree(mg->mg_ptr);
@@ -1788,7 +1782,7 @@ Perl_magic_set(pTHX_ SV *sv, MAGIC *mg)
if (PL_euid == PL_uid) /* special case $> = $< */
PerlProc_setuid(PL_euid);
else {
- PL_euid = rlProc_geteuid();
+ PL_euid = PerlProc_geteuid();
Perl_croak(aTHX_ "seteuid() not implemented");
}
#endif
diff --git a/op.c b/op.c
index 7d8ee8b20d..e99ef60bc8 100644
--- a/op.c
+++ b/op.c
@@ -19,12 +19,6 @@
#define PERL_IN_OP_C
#include "perl.h"
-#ifdef PERL_OBJECT
-#define CHECKCALL this->*PL_check
-#else
-#define CHECKCALL *PL_check
-#endif
-
/* #define PL_OP_SLAB_ALLOC */
#ifdef PL_OP_SLAB_ALLOC
@@ -57,7 +51,7 @@ S_Slab_Alloc(pTHX_ int m, size_t sz)
? ( op_free((OP*)o), \
Perl_croak(aTHX_ "%s trapped by operation mask", PL_op_desc[type]), \
Nullop ) \
- : (CHECKCALL[type])(aTHX_ (OP*)o))
+ : CALL_FPTR(PL_check[type])(aTHX_ (OP*)o))
#define PAD_MAX 999999999
diff --git a/patchlevel.h b/patchlevel.h
index 91d12a1b61..5b07ae698f 100644
--- a/patchlevel.h
+++ b/patchlevel.h
@@ -5,7 +5,7 @@
#define PERL_REVISION 5 /* age */
#define PERL_VERSION 5 /* epoch */
-#define PERL_SUBVERSION 60 /* generation */
+#define PERL_SUBVERSION 61 /* generation */
/*
local_patches -- list of locally applied less-than-subversion patches.
diff --git a/perl.c b/perl.c
index 3c12ee718d..a5816a94b1 100644
--- a/perl.c
+++ b/perl.c
@@ -61,7 +61,8 @@ perl_alloc(void)
{
PerlInterpreter *my_perl;
- New(53, my_perl, 1, PerlInterpreter);
+ /* New() needs interpreter, so call malloc() instead */
+ my_perl = (PerlInterpreter*)PerlMem_malloc(sizeof(PerlInterpreter));
PERL_SET_INTERP(my_perl);
return my_perl;
}
@@ -81,6 +82,14 @@ perl_construct(pTHXx)
Zero(my_perl, 1, PerlInterpreter);
#endif
+#ifdef MULTIPLICITY
+ init_interp();
+ PL_perl_destruct_level = 1;
+#else
+ if (PL_perl_destruct_level > 0)
+ init_interp();
+#endif
+
/* Init the real globals (and main thread)? */
if (!PL_linestr) {
#ifdef USE_THREADS
@@ -158,13 +167,6 @@ perl_construct(pTHXx)
PL_rs = SvREFCNT_inc(PL_nrs);
init_stacks();
-#ifdef MULTIPLICITY
- init_interp();
- PL_perl_destruct_level = 1;
-#else
- if (PL_perl_destruct_level > 0)
- init_interp();
-#endif
init_ids();
PL_lex_state = LEX_NOTPARSING;
@@ -558,9 +560,9 @@ void
perl_free(pTHXx)
{
#if defined(PERL_OBJECT)
- Safefree(this);
+ PerlMem_free(this);
#else
- Safefree(aTHXx);
+ PerlMem_free(aTHXx);
#endif
}
@@ -1885,8 +1887,13 @@ S_init_interp(pTHX)
# define PERLVAR(var,type)
# define PERLVARA(var,n,type)
# if defined(PERL_IMPLICIT_CONTEXT)
-# define PERLVARI(var,type,init) my_perl->var = init;
-# define PERLVARIC(var,type,init) my_perl->var = init;
+# if defined(USE_THREADS)
+# define PERLVARI(var,type,init) PERL_GET_INTERP->var = init;
+# define PERLVARIC(var,type,init) PERL_GET_INTERP->var = init;
+# else /* !USE_THREADS */
+# define PERLVARI(var,type,init) aTHX->var = init;
+# define PERLVARIC(var,type,init) aTHX->var = init;
+# endif /* USE_THREADS */
# else
# define PERLVARI(var,type,init) PERL_GET_INTERP->var = init;
# define PERLVARIC(var,type,init) PERL_GET_INTERP->var = init;
diff --git a/perl.h b/perl.h
index 37a86074ab..1548bea58e 100644
--- a/perl.h
+++ b/perl.h
@@ -26,7 +26,6 @@
/* See L<perlguts/"The Perl API"> for detailed notes on
* PERL_IMPLICIT_CONTEXT and PERL_IMPLICIT_SYS */
-/* XXXXXX testing threads via implicit pointer */
#ifdef USE_THREADS
# ifndef PERL_IMPLICIT_CONTEXT
# define PERL_IMPLICIT_CONTEXT
@@ -36,7 +35,6 @@
# endif
#endif
-/* XXXXXX testing multiplicity via implicit pointer */
#if defined(MULTIPLICITY)
# ifndef PERL_IMPLICIT_CONTEXT
# define PERL_IMPLICIT_CONTEXT
@@ -148,22 +146,17 @@ class CPerlObj;
#define pTHXo CPerlObj *pPerl
#define pTHXo_ pTHXo,
-#define _pTHXo ,pTHXo
#define aTHXo this
#define aTHXo_ this,
-#define _aTHXo ,this
#define PERL_OBJECT_THIS aTHXo
#define PERL_OBJECT_THIS_ aTHXo_
-#define _PERL_OBJECT_THIS _aTHXo
-#define dTHXoa(a) pTHXo = (CPerlObj *)a
-#define dTHXo dTHXoa(PERL_GET_INTERP)
+#define dTHXoa(a) pTHXo = a
+#define dTHXo dTHXoa(PERL_GET_THX)
#define pTHXx void
#define pTHXx_
-#define _pTHXx
#define aTHXx
#define aTHXx_
-#define _aTHXx
#else /* !PERL_OBJECT */
@@ -172,8 +165,6 @@ class CPerlObj;
struct perl_thread;
# define pTHX register struct perl_thread *thr
# define aTHX thr
-# define dTHXa(a) pTHX = (struct perl_thread *)a
-# define dTHX dTHXa(THR)
# define dTHR dNOOP
# else
# ifndef MULTIPLICITY
@@ -181,13 +172,11 @@ struct perl_thread;
# endif
# define pTHX register PerlInterpreter *my_perl
# define aTHX my_perl
-# define dTHXa(a) pTHX = (PerlInterpreter *)a
-# define dTHX dTHXa(PERL_GET_INTERP)
# endif
+# define dTHXa(a) pTHX = a
+# define dTHX dTHXa(PERL_GET_THX)
# define pTHX_ pTHX,
-# define _pTHX ,pTHX
# define aTHX_ aTHX,
-# define _aTHX ,aTHX
#endif
#define STATIC static
@@ -216,10 +205,8 @@ struct perl_thread;
#ifndef pTHX
# define pTHX void
# define pTHX_
-# define _pTHX
# define aTHX
# define aTHX_
-# define _aTHX
# define dTHXa(a) dNOOP
# define dTHX dNOOP
#endif
@@ -227,20 +214,16 @@ struct perl_thread;
#ifndef pTHXo
# define pTHXo pTHX
# define pTHXo_ pTHX_
-# define _pTHXo _pTHX
# define aTHXo aTHX
# define aTHXo_ aTHX_
-# define _aTHXo _aTHX
# define dTHXo dTHX
#endif
#ifndef pTHXx
# define pTHXx register PerlInterpreter *my_perl
# define pTHXx_ pTHXx,
-# define _pTHXx ,pTHXx
# define aTHXx my_perl
# define aTHXx_ aTHXx,
-# define _aTHXx ,aTHXx
# define dTHXx dTHX
#endif
@@ -1087,6 +1070,13 @@ Free_t Perl_mfree (Malloc_t where);
#define DBL_DIG 15 /* A guess that works lots of places */
#endif
#endif
+#ifdef I_FLOAT
+#include <float.h>
+#endif
+#ifndef HAS_DBL_DIG
+#define DBL_DIG 15 /* A guess that works lots of places */
+#endif
+#endif
#ifdef OVR_LDBL_DIG
/* Use an overridden LDBL_DIG */
@@ -1674,6 +1664,10 @@ typedef pthread_key_t perl_key;
# endif
#endif
+/* the traditional thread-unsafe notion of "current interpreter".
+ * XXX todo: a thread-safe version that fetches it from TLS (akin to THR)
+ * needs to be defined elsewhere (conditional on pthread_getspecific()
+ * availability). */
#ifndef PERL_SET_INTERP
# define PERL_SET_INTERP(i) (PL_curinterp = (PerlInterpreter*)(i))
#endif
@@ -1682,6 +1676,22 @@ typedef pthread_key_t perl_key;
# define PERL_GET_INTERP (PL_curinterp)
#endif
+#if defined(PERL_IMPLICIT_CONTEXT) && !defined(PERL_GET_THX)
+# ifdef USE_THREADS
+# define PERL_GET_THX THR
+# else
+# ifdef MULTIPLICITY
+# define PERL_GET_THX PERL_GET_INTERP
+# else
+# ifdef PERL_OBJECT
+# define PERL_GET_THX ((CPerlObj*)PERL_GET_INTERP)
+# else
+# define PERL_GET_THX ((void*)0)
+# endif
+# endif
+# endif
+#endif
+
/* Some unistd.h's give a prototype for pause() even though
HAS_PAUSE ends up undefined. This causes the #define
below to be rejected by the compmiler. Sigh.
@@ -1933,7 +1943,10 @@ Gid_t getegid (void);
# if defined(PERL_OBJECT)
# define DEBUG_m(a) if (PL_debug & 128) a
# else
-# define DEBUG_m(a) if (PERL_GET_INTERP && PL_debug & 128) a
+# define DEBUG_m(a) \
+ STMT_START { \
+ if (PERL_GET_INTERP) { dTHX; if (PL_debug & 128) { a; } } \
+ } STMT_END
# endif
#define DEBUG_f(a) if (PL_debug & 256) a
#define DEBUG_r(a) if (PL_debug & 512) a
@@ -2568,7 +2581,9 @@ struct perl_vars *PL_VarsPtr;
*/
struct interpreter {
-#include "thrdvar.h"
+#ifndef USE_THREADS
+# include "thrdvar.h"
+#endif
#include "intrpvar.h"
};
diff --git a/perlapi.h b/perlapi.h
index 6b931cc95d..0dac61aa75 100755
--- a/perlapi.h
+++ b/perlapi.h
@@ -12,8 +12,6 @@
# define aTHXo pPerl
# undef aTHXo_
# define aTHXo_ aTHXo,
-# undef _aTHXo
-# define _aTHXo ,aTHXo
#endif /* PERL_OBJECT */
START_EXTERN_C
diff --git a/pod/perldelta.pod b/pod/perldelta.pod
index 26a6450c6b..f286a413d3 100644
--- a/pod/perldelta.pod
+++ b/pod/perldelta.pod
@@ -1,6 +1,6 @@
=head1 NAME
-perldelta - what's new for perl v5.6 (as of v5.005_58)
+perldelta - what's new for perl v5.6 (as of v5.005_61)
=head1 DESCRIPTION
@@ -50,9 +50,8 @@ Note that the above issue is not relevant to the default build of
Perl, whose interfaces continue to match those of prior versions
(but subject to the other options described here).
-For testing purposes, the 5.005_58 release automatically enables
-PERL_IMPLICIT_CONTEXT whenever Perl is built with -Dusethreads or
--Dusemultiplicity.
+PERL_IMPLICIT_CONTEXT is automatically enabled whenever Perl is built
+with one of -Dusethreads, -Dusemultiplicity, or both.
See L<perlguts/"The Perl API"> for detailed information on the
ramifications of building Perl using this option.
diff --git a/pod/perlguts.pod b/pod/perlguts.pod
index 74b5ff99c4..93d4bd70c4 100644
--- a/pod/perlguts.pod
+++ b/pod/perlguts.pod
@@ -1506,7 +1506,7 @@ additional complications for conditionals). These optimizations are
done in the subroutine peep(). Optimizations performed at this stage
are subject to the same restrictions as in the pass 2.
-=head1 The Perl API
+=head1 The Perl Internal API
WARNING: This information is subject to radical changes prior to
the Perl 5.6 release. Use with caution.
@@ -1522,27 +1522,26 @@ a C structure, or inside a thread. The thread, the C structure, or
the C++ object will contain all the context, the state of that
interpreter.
-Four macros control the way Perl is built: PERL_IMPLICIT_CONTEXT
-(build for multiple interpreters?), MULTIPLICITY (we pass around an
-C interpreter structure as the first argument), USE_THREADS (we pass
-around a thread as the first argument), and PERL_OBJECT (we build a
-C++ class for the interpreter so the Perl API implementation has a
-C<this> object). If PERL_IMPLICIT_CONTEXT is not defined, then
-subroutines take no first argument.
+Three macros control the major Perl build flavors: MULTIPLICITY,
+USE_THREADS and PERL_OBJECT. The MULTIPLICITY build has a C structure
+that packages all the interpreter state, there is a similar thread-specific
+data structure under USE_THREADS, and the PERL_OBJECT build has a C++
+class to maintain interpreter state. In all three cases,
+PERL_IMPLICIT_CONTEXT is also normally defined, and enables the
+support for passing in a "hidden" first argument that represents all three
+data structures.
-This obviously requires a way for the Perl internal functions to be
+All this obviously requires a way for the Perl internal functions to be
C++ methods, subroutines taking some kind of structure as the first
argument, or subroutines taking nothing as the first argument. To
enable these three very different ways of building the interpreter,
the Perl source (as it does in so many other situations) makes heavy
use of macros and subroutine naming conventions.
-First problem: deciding which functions will be C++ public methods and
+First problem: deciding which functions will be public API functions and
which will be private. Those functions whose names begin C<Perl_> are
-public, and those whose names begin C<S_> are protected (think "S" for
-"Secret"). You can't call them from C++, and should not call them
-from C. If you find yourself calling an C<S_> function, consider your
-code broken (even though it works, it may not do so forever).
+public, and those whose names begin C<S_> are private (think "S" for
+"secret" or "static").
Some functions have no prefix (e.g., restore_rsfp in toke.c). These
are not parts of the object or pseudo-structure because you need to
@@ -1559,7 +1558,8 @@ function used within the Perl guts:
STATIC becomes "static" in C, and is #define'd to nothing in C++.
-A public function (i.e. part of the API) begins like this:
+A public function (i.e. part of the internal API, but not necessarily
+sanctioned for use in extensions) begins like this:
void
Perl_sv_setsv(pTHX_ SV* dsv, SV* ssv)
@@ -1575,11 +1575,11 @@ argument containing the interpreter's context. The trailing underscore
in the pTHX_ macro indicates that the macro expansion needs a comma
after the context argument because other arguments follow it. If
PERL_IMPLICIT_CONTEXT is not defined, pTHX_ will be ignored, and the
-subroutine is not prototyped to take an argument. The form of the
-macro without the trailing underscore is used when there are no
+subroutine is not prototyped to take the extra argument. The form of the
+macro without the trailing underscore is used when there are no additional
explicit arguments.
-When an core function calls another, it must pass the context. This
+When a core function calls another, it must pass the context. This
is normally hidden via macros. Consider C<sv_setsv>. It expands
something like this:
@@ -1646,11 +1646,12 @@ Thus, something like:
sv_setsv(asv, bsv);
-in your extesion will translate to this:
+in your extesion will translate to this when PERL_IMPLICIT_CONTEXT is
+in effect:
Perl_sv_setsv(GetPerlInterpreter(), asv, bsv);
-when PERL_IMPLICIT_CONTEXT is in effect, or to this otherwise:
+or to this otherwise:
Perl_sv_setsv(asv, bsv);
@@ -1669,7 +1670,7 @@ your Foo.xs:
static my_private_function(int arg1, int arg2);
static SV *
- my_private_function(pTHX_ int arg1, int arg2)
+ my_private_function(int arg1, int arg2)
{
dTHX; /* fetch context */
... call many Perl API functions ...
@@ -1732,9 +1733,9 @@ call, since it is always passed as an extra argument. Depending on
your needs for simplicity or efficiency, you may mix the previous
two approaches freely.
-Never say C<pTHX,> yourself--always use the form of the macro with the
-underscore for functions that take explicit arguments, or the form
-without the argument for functions with no explicit arguments.
+Never add a comma after C<pTHX> yourself--always use the form of the
+macro with the underscore for functions that take explicit arguments,
+or the form without the argument for functions with no explicit arguments.
=head2 Future Plans and PERL_IMPLICIT_SYS
@@ -1762,7 +1763,9 @@ more "hosts", with free association between them.
=head1 API LISTING
This is a listing of functions, macros, flags, and variables that may be
-useful to extension writers or that may be found while reading other
+used by extension writers. The interfaces of any functions that are not
+listed here are subject to change without notice. For this reason,
+blindly using functions listed in proto.h is to be avoided when writing
extensions.
Note that all Perl API global variables must be referenced with the C<PL_>
diff --git a/pp_ctl.c b/pp_ctl.c
index 2d29448e77..8e788e6594 100644
--- a/pp_ctl.c
+++ b/pp_ctl.c
@@ -26,12 +26,6 @@
#define DOCATCH(o) ((CATCH_GET == TRUE) ? docatch(o) : (o))
-#ifdef PERL_OBJECT
-#define CALLOP this->*PL_op
-#else
-#define CALLOP *PL_op
-#endif
-
static I32 sortcv(pTHXo_ SV *a, SV *b);
static I32 sv_ncmp(pTHXo_ SV *a, SV *b);
static I32 sv_i_ncmp(pTHXo_ SV *a, SV *b);
@@ -2304,7 +2298,7 @@ PP(pp_goto)
if (PL_op->op_type == OP_ENTERITER)
DIE(aTHX_ "Can't \"goto\" into the middle of a foreach loop",
label);
- (CALLOP->op_ppaddr)(aTHX);
+ CALL_FPTR(PL_op->op_ppaddr)(aTHX);
}
PL_op = oldop;
}
diff --git a/run.c b/run.c
index be532046c6..decf04062b 100644
--- a/run.c
+++ b/run.c
@@ -17,18 +17,12 @@
* know. Run now! Hope is in speed!" --Gandalf
*/
-#ifdef PERL_OBJECT
-#define CALLOP this->*PL_op
-#else
-#define CALLOP *PL_op
-#endif
-
int
Perl_runops_standard(pTHX)
{
dTHR;
- while ( PL_op = (CALLOP->op_ppaddr)(aTHX) ) ;
+ while ( PL_op = CALL_FPTR(PL_op->op_ppaddr)(aTHX) ) ;
TAINT_NOT;
return 0;
@@ -54,7 +48,7 @@ Perl_runops_debug(pTHX)
DEBUG_t(debop(PL_op));
DEBUG_P(debprof(PL_op));
}
- } while ( PL_op = (CALLOP->op_ppaddr)(aTHX) );
+ } while ( PL_op = CALL_FPTR(PL_op->op_ppaddr)(aTHX) );
TAINT_NOT;
return 0;
diff --git a/sv.c b/sv.c
index 9ba9f6cb15..97f97f2db2 100644
--- a/sv.c
+++ b/sv.c
@@ -15,12 +15,6 @@
#define PERL_IN_SV_C
#include "perl.h"
-#ifdef PERL_OBJECT
-#define VTBL this->*vtbl
-#else /* !PERL_OBJECT */
-#define VTBL *vtbl
-#endif /* PERL_OBJECT */
-
#define FCALL *f
#define SV_CHECK_THINKFIRST(sv) if (SvTHINKFIRST(sv)) sv_force_normal(sv)
@@ -2721,7 +2715,7 @@ Perl_sv_unmagic(pTHX_ SV *sv, int type)
MGVTBL* vtbl = mg->mg_virtual;
*mgp = mg->mg_moremagic;
if (vtbl && (vtbl->svt_free != NULL))
- (VTBL->svt_free)(aTHX_ sv, mg);
+ CALL_FPTR(vtbl->svt_free)(aTHX_ sv, mg);
if (mg->mg_ptr && mg->mg_type != 'g')
if (mg->mg_len >= 0)
Safefree(mg->mg_ptr);
diff --git a/util.c b/util.c
index 36c9186b94..51d757512b 100644
--- a/util.c
+++ b/util.c
@@ -81,12 +81,13 @@ long lastxycount[MAXXCOUNT][MAXYCOUNT];
Malloc_t
Perl_safesysmalloc(MEM_SIZE size)
{
+ dTHX;
Malloc_t ptr;
#ifdef HAS_64K_LIMIT
if (size > 0xffff) {
PerlIO_printf(PerlIO_stderr(),
"Allocation too large: %lx\n", size) FLUSH;
- WITH_THX(my_exit(1));
+ my_exit(1);
}
#endif /* HAS_64K_LIMIT */
#ifdef DEBUGGING
@@ -94,18 +95,14 @@ Perl_safesysmalloc(MEM_SIZE size)
Perl_croak_nocontext("panic: malloc");
#endif
ptr = PerlMem_malloc(size?size:1); /* malloc(0) is NASTY on our system */
-#if !(defined(I286) || defined(atarist))
- DEBUG_m(PerlIO_printf(Perl_debug_log, "0x%x: (%05d) malloc %ld bytes\n",ptr,PL_an++,(long)size));
-#else
DEBUG_m(PerlIO_printf(Perl_debug_log, "0x%lx: (%05d) malloc %ld bytes\n",ptr,PL_an++,(long)size));
-#endif
if (ptr != Nullch)
return ptr;
else if (PL_nomemok)
return Nullch;
else {
PerlIO_puts(PerlIO_stderr(),PL_no_mem) FLUSH;
- WITH_THX(my_exit(1));
+ my_exit(1);
return Nullch;
}
/*NOTREACHED*/
@@ -116,6 +113,7 @@ Perl_safesysmalloc(MEM_SIZE size)
Malloc_t
Perl_safesysrealloc(Malloc_t where,MEM_SIZE size)
{
+ dTHX;
Malloc_t ptr;
#if !defined(STANDARD_C) && !defined(HAS_REALLOC_PROTOTYPE)
Malloc_t PerlMem_realloc();
@@ -125,7 +123,7 @@ Perl_safesysrealloc(Malloc_t where,MEM_SIZE size)
if (size > 0xffff) {
PerlIO_printf(PerlIO_stderr(),
"Reallocation too large: %lx\n", size) FLUSH;
- WITH_THX(my_exit(1));
+ my_exit(1);
}
#endif /* HAS_64K_LIMIT */
if (!size) {
@@ -141,17 +139,8 @@ Perl_safesysrealloc(Malloc_t where,MEM_SIZE size)
#endif
ptr = PerlMem_realloc(where,size);
-#if !(defined(I286) || defined(atarist))
- DEBUG_m( {
- PerlIO_printf(Perl_debug_log, "0x%x: (%05d) rfree\n",where,PL_an++);
- PerlIO_printf(Perl_debug_log, "0x%x: (%05d) realloc %ld bytes\n",ptr,PL_an++,(long)size);
- } )
-#else
- DEBUG_m( {
- PerlIO_printf(Perl_debug_log, "0x%lx: (%05d) rfree\n",where,PL_an++);
- PerlIO_printf(Perl_debug_log, "0x%lx: (%05d) realloc %ld bytes\n",ptr,PL_an++,(long)size);
- } )
-#endif
+ DEBUG_m(PerlIO_printf(Perl_debug_log, "0x%lx: (%05d) rfree\n",where,PL_an++));
+ DEBUG_m(PerlIO_printf(Perl_debug_log, "0x%lx: (%05d) realloc %ld bytes\n",ptr,PL_an++,(long)size));
if (ptr != Nullch)
return ptr;
@@ -159,7 +148,7 @@ Perl_safesysrealloc(Malloc_t where,MEM_SIZE size)
return Nullch;
else {
PerlIO_puts(PerlIO_stderr(),PL_no_mem) FLUSH;
- WITH_THX(my_exit(1));
+ my_exit(1);
return Nullch;
}
/*NOTREACHED*/
@@ -170,11 +159,8 @@ Perl_safesysrealloc(Malloc_t where,MEM_SIZE size)
Free_t
Perl_safesysfree(Malloc_t where)
{
-#if !(defined(I286) || defined(atarist))
- DEBUG_m( PerlIO_printf(Perl_debug_log, "0x%x: (%05d) free\n",(char *) where,PL_an++));
-#else
+ dTHX;
DEBUG_m( PerlIO_printf(Perl_debug_log, "0x%lx: (%05d) free\n",(char *) where,PL_an++));
-#endif
if (where) {
/*SUPPRESS 701*/
PerlMem_free(where);
@@ -186,13 +172,14 @@ Perl_safesysfree(Malloc_t where)
Malloc_t
Perl_safesyscalloc(MEM_SIZE count, MEM_SIZE size)
{
+ dTHX;
Malloc_t ptr;
#ifdef HAS_64K_LIMIT
if (size * count > 0xffff) {
PerlIO_printf(PerlIO_stderr(),
"Allocation too large: %lx\n", size * count) FLUSH;
- WITH_THX(my_exit(1));
+ my_exit(1);
}
#endif /* HAS_64K_LIMIT */
#ifdef DEBUGGING
@@ -201,11 +188,7 @@ Perl_safesyscalloc(MEM_SIZE count, MEM_SIZE size)
#endif
size *= count;
ptr = PerlMem_malloc(size?size:1); /* malloc(0) is NASTY on our system */
-#if !(defined(I286) || defined(atarist))
- DEBUG_m(PerlIO_printf(Perl_debug_log, "0x%x: (%05d) calloc %ld x %ld bytes\n",ptr,PL_an++,(long)count,(long)size));
-#else
DEBUG_m(PerlIO_printf(Perl_debug_log, "0x%lx: (%05d) calloc %ld x %ld bytes\n",ptr,PL_an++,(long)count,(long)size));
-#endif
if (ptr != Nullch) {
memset((void*)ptr, 0, size);
return ptr;
@@ -214,7 +197,7 @@ Perl_safesyscalloc(MEM_SIZE count, MEM_SIZE size)
return Nullch;
else {
PerlIO_puts(PerlIO_stderr(),PL_no_mem) FLUSH;
- WITH_THX(my_exit(1));
+ my_exit(1);
return Nullch;
}
/*NOTREACHED*/
diff --git a/win32/Makefile b/win32/Makefile
index 3e694c4223..01159c7620 100644
--- a/win32/Makefile
+++ b/win32/Makefile
@@ -29,7 +29,7 @@ INST_TOP = $(INST_DRV)\perl
# versioned installation can be obtained by setting INST_TOP above to a
# path that includes an arbitrary version string.
#
-INST_VER = \5.00560
+INST_VER = \5.00561
#
# Comment this out if you DON'T want your perl installation to have
diff --git a/win32/config.bc b/win32/config.bc
index e6197dd29e..46b77965d8 100644
--- a/win32/config.bc
+++ b/win32/config.bc
@@ -183,6 +183,7 @@ d_int64t='undef'
d_iovec_s='undef'
d_isascii='define'
d_killpg='undef'
+d_ldbl_dig='define'
d_lchown='undef'
d_link='undef'
d_locconv='define'
diff --git a/win32/config.gc b/win32/config.gc
index b4495d7182..a109f452c5 100644
--- a/win32/config.gc
+++ b/win32/config.gc
@@ -183,6 +183,7 @@ d_int64t='undef'
d_iovec_s='undef'
d_isascii='define'
d_killpg='undef'
+d_ldbl_dig='define'
d_lchown='undef'
d_link='undef'
d_locconv='define'
diff --git a/win32/config.vc b/win32/config.vc
index 73f1687911..24603d87fd 100644
--- a/win32/config.vc
+++ b/win32/config.vc
@@ -183,6 +183,7 @@ d_int64t='undef'
d_iovec_s='undef'
d_isascii='define'
d_killpg='undef'
+d_ldbl_dig='define'
d_lchown='undef'
d_link='undef'
d_locconv='define'
diff --git a/win32/config_H.bc b/win32/config_H.bc
index 82d6e6e45e..80636a47f6 100644
--- a/win32/config_H.bc
+++ b/win32/config_H.bc
@@ -1419,7 +1419,7 @@
* This symbol contains the ~name expanded version of ARCHLIB, to be used
* in programs that are not prepared to deal with ~ expansion at run-time.
*/
-#define ARCHLIB "c:\\perl\\5.00560\\lib\\MSWin32-x86" /**/
+#define ARCHLIB "c:\\perl\\5.00561\\lib\\MSWin32-x86" /**/
/*#define ARCHLIB_EXP "" /**/
/* BIN:
@@ -1430,8 +1430,8 @@
* This symbol is the filename expanded version of the BIN symbol, for
* programs that do not want to deal with that at run-time.
*/
-#define BIN "c:\\perl\\5.00560\\bin\\MSWin32-x86" /**/
-#define BIN_EXP "c:\\perl\\5.00560\\bin\\MSWin32-x86" /**/
+#define BIN "c:\\perl\\5.00561\\bin\\MSWin32-x86" /**/
+#define BIN_EXP "c:\\perl\\5.00561\\bin\\MSWin32-x86" /**/
/* INSTALL_USR_BIN_PERL:
* This symbol, if defined, indicates that Perl is to be installed
@@ -1449,8 +1449,8 @@
* This symbol contains the ~name expanded version of PRIVLIB, to be used
* in programs that are not prepared to deal with ~ expansion at run-time.
*/
-#define PRIVLIB "c:\\perl\\5.00560\\lib" /**/
-#define PRIVLIB_EXP (win32_get_privlib("5.00560")) /**/
+#define PRIVLIB "c:\\perl\\5.00561\\lib" /**/
+#define PRIVLIB_EXP (win32_get_privlib("5.00561")) /**/
/* SITEARCH:
* This symbol contains the name of the private library for this package.
@@ -1465,7 +1465,7 @@
* This symbol contains the ~name expanded version of SITEARCH, to be used
* in programs that are not prepared to deal with ~ expansion at run-time.
*/
-#define SITEARCH "c:\\perl\\site\\5.00560\\lib\\MSWin32-x86" /**/
+#define SITEARCH "c:\\perl\\site\\5.00561\\lib\\MSWin32-x86" /**/
/*#define SITEARCH_EXP "" /**/
/* SITELIB:
@@ -1481,8 +1481,8 @@
* This symbol contains the ~name expanded version of SITELIB, to be used
* in programs that are not prepared to deal with ~ expansion at run-time.
*/
-#define SITELIB "c:\\perl\\site\\5.00560\\lib" /**/
-#define SITELIB_EXP (win32_get_sitelib("5.00560")) /**/
+#define SITELIB "c:\\perl\\site\\5.00561\\lib" /**/
+#define SITELIB_EXP (win32_get_sitelib("5.00561")) /**/
/* PERL_VENDORLIB_EXP:
* This symbol contains the ~name expanded version of VENDORLIB, to be used
@@ -2125,6 +2125,26 @@
#define M_VOID /* Xenix strikes again */
#endif
+/* HAS_ATOLF:
+ * This symbol, if defined, indicates that the atolf routine is
+ * available to convert strings into long doubles.
+ */
+/*#define HAS_ATOLF /**/
+
+/* HAS_ATOLL:
+ * This symbol, if defined, indicates that the atoll routine is
+ * available to convert strings into long longs.
+ */
+/*#define HAS_ATOLL /**/
+
+/* PERL_BINCOMPAT_5005:
+ * This symbol, if defined, indicates that Perl 5.006 should be
+ * binary-compatible with Perl 5.005. This is impossible for builds
+ * that use features like threads and multiplicity it is always undef
+ * for those versions.
+ */
+/*#define PERL_BINCOMPAT_5005 /**/
+
/* DLSYM_NEEDS_UNDERSCORE:
* This symbol, if defined, indicates that we need to prepend an
* underscore to the symbol name before calling dlsym(). This only
@@ -2175,6 +2195,14 @@
*/
/*#define HAS_HASMNTOPT /**/
+/* HAS_LDBL_DIG:
+ * This symbol, if defined, indicates that this system's <float.h>
+ * or <limits.h> defines the symbol LDBL_DIG, which is the number
+ * of significant digits in a long double precision number. Unlike
+ * for DBL_DIG, there's no good guess for LDBL_DIG if it is undefined.
+ */
+#define HAS_LDBL_DIG /**/
+
/* HAS_MADVISE:
* This symbol, if defined, indicates that the madvise system call is
* available to map a file into memory.
@@ -2240,42 +2268,6 @@
*/
/*#define HAS_WRITEV /**/
-/* HAS_DBMINIT64:
- * This symbol, if defined, indicates that the dbminit64 routine is
- * available to open dbm files larger than 2 gigabytes.
- */
-/* HAS_DBMCLOSE64:
- * This symbol, if defined, indicates that the dbmclose64 routine is
- * available to close dbm files larger than 2 gigabytes.
- */
-/* HAS_FETCH64:
- * This symbol, if defined, indicates that the fetch64 routine is
- * available to fetch from dbm files larger than 2 gigabytes.
- */
-/* HAS_STORE64:
- * This symbol, if defined, indicates that the store64 routine is
- * available to store to dbm files larger than 2 gigabytes.
- */
-/* HAS_DELETE64:
- * This symbol, if defined, indicates that the delete64 routine is
- * available to delete from dbm files larger than 2 gigabytes.
- */
-/* HAS_FIRSTKEY64:
- * This symbol, if defined, indicates that the firstkey64 routine is
- * available to firstkey in dbm files larger than 2 gigabytes.
- */
-/* HAS_NEXTKEY64:
- * This symbol, if defined, indicates that the nextkey64 routine is
- * available to nextkey in dbm files larger than 2 gigabytes.
- */
-/*#define HAS_DBMINIT64 /**/
-/*#define HAS_DBMCLOSE64 /**/
-/*#define HAS_FETCH64 /**/
-/*#define HAS_STORE64 /**/
-/*#define HAS_DELETE64 /**/
-/*#define HAS_FIRSTKEY64 /**/
-/*#define HAS_NEXTKEY64 /**/
-
/* USE_DYNAMIC_LOADING:
* This symbol, if defined, indicates that dynamic loading of
* some sort is available.
@@ -2369,69 +2361,46 @@
*/
/*#define I_SYS_STATVFS /**/
-/* HAS_FSTAT64:
- * This symbol, if defined, indicates that the fstat64 routine is
- * available to stat files (fds) larger than 2 gigabytes.
- */
-/* HAS_FTRUNCATE64:
- * This symbol, if defined, indicates that the ftruncate64 routine is
- * available to tell files larger than 2 gigabytes.
- */
-/* HAS_LSEEK64:
- * This symbol, if defined, indicates that the lseek64 routine is
- * available to seek files larger than 2 gigabytes.
- */
-/* HAS_LSTAT64:
- * This symbol, if defined, indicates that the lstat64 routine is
- * available to stat files (symlinks) larger than 2 gigabytes.
- */
-/* HAS_OPEN64:
- * This symbol, if defined, indicates that the open64 routine is
- * available to open files larger than 2 gigabytes.
+/* HAS_OFF64_T:
+ * This symbol will be defined if the C compiler supports off64_t.
*/
-/* HAS_OPENDIR64:
- * This symbol, if defined, indicates that the opendir64 routine is
- * available to opendir files larger than 2 gigabytes.
+/* HAS_FPOS64_T:
+ * This symbol will be defined if the C compiler supports fpos64_t.
*/
-/* HAS_READDIR64:
- * This symbol, if defined, indicates that the readdir64 routine is
- * available to readdir files larger than 2 gigabytes.
+/*#define HAS_OFF64_T /**/
+/*#define HAS_FPOS64_T /**/
+
+/* PERL_PRIfldbl:
+ * This symbol, if defined, contains the string used by stdio to
+ * format long doubles (format 'f') for output.
*/
-/* HAS_SEEKDIR64:
- * This symbol, if defined, indicates that the seekdir64 routine is
- * available to seekdir files larger than 2 gigabytes.
+/* PERL_PRIgldbl:
+ * This symbol, if defined, contains the string used by stdio to
+ * format long doubles (format 'g') for output.
*/
-/* HAS_STAT64:
- * This symbol, if defined, indicates that the stat64 routine is
- * available to stat files larger than 2 gigabytes.
+/*#define PERL_PRIfldbl undef /**/
+/*#define PERL_PRIgldbl undef /**/
+
+/* PERL_PRId64:
+ * This symbol, if defined, contains the string used by stdio to
+ * format 64-bit decimal numbers (format 'd') for output.
*/
-/* HAS_TELLDIR64:
- * This symbol, if defined, indicates that the telldir64 routine is
- * available to telldir files larger than 2 gigabytes.
+/* PERL_PRIu64:
+ * This symbol, if defined, contains the string used by stdio to
+ * format 64-bit unsigned decimal numbers (format 'u') for output.
*/
-/* HAS_TRUNCATE64:
- * This symbol, if defined, indicates that the truncate64 routine is
- * available to truncate files larger than 2 gigabytes.
+/* PERL_PRIo64:
+ * This symbol, if defined, contains the string used by stdio to
+ * format 64-bit octal numbers (format 'o') for output.
*/
-/* HAS_OFF64_T:
- * This symbol will be defined if the C compiler supports off64_t.
+/* PERL_PRIx64:
+ * This symbol, if defined, contains the string used by stdio to
+ * format 64-bit hexadecimal numbers (format 'x') for output.
*/
-/* HAS_STRUCT_DIRENT64:
- * This symbol will be defined if the C compiler supports struct dirent64.
- */
-/*#define HAS_FSTAT64 /**/
-/*#define HAS_FTRUNCATE64 /**/
-/*#define HAS_LSEEK64 /**/
-/*#define HAS_LSTAT64 /**/
-/*#define HAS_OPEN64 /**/
-/*#define HAS_OPENDIR64 /**/
-/*#define HAS_READDIR64 /**/
-/*#define HAS_SEEKDIR64 /**/
-/*#define HAS_STAT64 /**/
-/*#define HAS_TELLDIR64 /**/
-/*#define HAS_TRUNCATE64 /**/
-/*#define HAS_OFF64_T /**/
-/*#define HAS_STRUCT_DIRENT64 /**/
+/*#define PERL_PRId64 undef /**/
+/*#define PERL_PRIu64 undef /**/
+/*#define PERL_PRIo64 undef /**/
+/*#define PERL_PRIx64 undef /**/
/* SELECT_MIN_BITS:
* This symbol holds the minimum number of bits operated by select.
@@ -2449,52 +2418,6 @@
*/
#define STARTPERL "#!perl" /**/
-/* HAS_FGETPOS64:
- * This symbol, if defined, indicates that the fgetpos64 routine is
- * available to getpos files larger than 2 gigabytes.
- */
-/* HAS_FOPEN64:
- * This symbol, if defined, indicates that the fopen64 routine is
- * available to open files larger than 2 gigabytes.
- */
-/* HAS_FREOPEN64:
- * This symbol, if defined, indicates that the freopen64 routine is
- * available to reopen files larger than 2 gigabytes.
- */
-/* HAS_FSEEK64:
- * This symbol, if defined, indicates that the fseek64 routine is
- * available to seek files larger than 2 gigabytes.
- */
-/* HAS_FSEEKO64:
- * This symbol, if defined, indicates that the fseeko64 routine is
- * available to seek files larger than 2 gigabytes.
- */
-/* HAS_FSETPOS64:
- * This symbol, if defined, indicates that the fsetpos64 routine is
- * available to setpos files larger than 2 gigabytes.
- */
-/* HAS_FTELL64:
- * This symbol, if defined, indicates that the ftell64 routine is
- * available to tell files larger than 2 gigabytes.
- */
-/* HAS_FTELLO64:
- * This symbol, if defined, indicates that the ftello64 routine is
- * available to tell files larger than 2 gigabytes.
- */
-/* HAS_TMPFILE64:
- * This symbol, if defined, indicates that the tmpfile64 routine is
- * available to tmpfile files larger than 2 gigabytes.
- */
-/*#define HAS_FGETPOS64 /**/
-/*#define HAS_FOPEN64 /**/
-/*#define HAS_FREOPEN64 /**/
-/*#define HAS_FSEEK64 /**/
-/*#define HAS_FSEEKO64 /**/
-/*#define HAS_FSETPOS64 /**/
-/*#define HAS_FTELL64 /**/
-/*#define HAS_FTELLO64 /**/
-/*#define HAS_TMPFILE64 /**/
-
/* HAS_STDIO_STREAM_ARRAY:
* This symbol, if defined, tells that there is an array
* holding the stdio streams.
@@ -2506,6 +2429,12 @@
/*#define HAS_STDIO_STREAM_ARRAY /**/
#define STDIO_STREAM_ARRAY undef
+/* HAS_STRTOULL:
+ * This symbol, if defined, indicates that the strtoull routine is
+ * available to convert strings into unsigned long longs.
+ */
+/*#define HAS_STRTOULL /**/
+
/* USE_64_BITS:
* This symbol, if defined, indicates that 64-bit interfaces should
* be used when available. If not defined, the native default interfaces
@@ -2513,6 +2442,12 @@
*/
/*#define USE_64_BITS /**/
+/* USE_LONG_DOUBLE:
+ * This symbol, if defined, indicates that long doubles should
+ * be used when available.
+ */
+/*#define USE_LONG_DOUBLE /**/
+
/* MULTIPLICITY:
* This symbol, if defined, indicates that Perl should
* be built to use multiplicity.
diff --git a/win32/config_H.gc b/win32/config_H.gc
index ca64936841..e0101f1967 100644
--- a/win32/config_H.gc
+++ b/win32/config_H.gc
@@ -1419,7 +1419,7 @@
* This symbol contains the ~name expanded version of ARCHLIB, to be used
* in programs that are not prepared to deal with ~ expansion at run-time.
*/
-#define ARCHLIB "c:\\perl\\5.00560\\lib\\MSWin32-x86" /**/
+#define ARCHLIB "c:\\perl\\5.00561\\lib\\MSWin32-x86" /**/
/*#define ARCHLIB_EXP "" /**/
/* BIN:
@@ -1430,8 +1430,8 @@
* This symbol is the filename expanded version of the BIN symbol, for
* programs that do not want to deal with that at run-time.
*/
-#define BIN "c:\\perl\\5.00560\\bin\\MSWin32-x86" /**/
-#define BIN_EXP "c:\\perl\\5.00560\\bin\\MSWin32-x86" /**/
+#define BIN "c:\\perl\\5.00561\\bin\\MSWin32-x86" /**/
+#define BIN_EXP "c:\\perl\\5.00561\\bin\\MSWin32-x86" /**/
/* INSTALL_USR_BIN_PERL:
* This symbol, if defined, indicates that Perl is to be installed
@@ -1449,8 +1449,8 @@
* This symbol contains the ~name expanded version of PRIVLIB, to be used
* in programs that are not prepared to deal with ~ expansion at run-time.
*/
-#define PRIVLIB "c:\\perl\\5.00560\\lib" /**/
-#define PRIVLIB_EXP (win32_get_privlib("5.00560")) /**/
+#define PRIVLIB "c:\\perl\\5.00561\\lib" /**/
+#define PRIVLIB_EXP (win32_get_privlib("5.00561")) /**/
/* SITEARCH:
* This symbol contains the name of the private library for this package.
@@ -1465,7 +1465,7 @@
* This symbol contains the ~name expanded version of SITEARCH, to be used
* in programs that are not prepared to deal with ~ expansion at run-time.
*/
-#define SITEARCH "c:\\perl\\site\\5.00560\\lib\\MSWin32-x86" /**/
+#define SITEARCH "c:\\perl\\site\\5.00561\\lib\\MSWin32-x86" /**/
/*#define SITEARCH_EXP "" /**/
/* SITELIB:
@@ -1481,8 +1481,8 @@
* This symbol contains the ~name expanded version of SITELIB, to be used
* in programs that are not prepared to deal with ~ expansion at run-time.
*/
-#define SITELIB "c:\\perl\\site\\5.00560\\lib" /**/
-#define SITELIB_EXP (win32_get_sitelib("5.00560")) /**/
+#define SITELIB "c:\\perl\\site\\5.00561\\lib" /**/
+#define SITELIB_EXP (win32_get_sitelib("5.00561")) /**/
/* PERL_VENDORLIB_EXP:
* This symbol contains the ~name expanded version of VENDORLIB, to be used
@@ -2125,6 +2125,26 @@
#define M_VOID /* Xenix strikes again */
#endif
+/* HAS_ATOLF:
+ * This symbol, if defined, indicates that the atolf routine is
+ * available to convert strings into long doubles.
+ */
+/*#define HAS_ATOLF /**/
+
+/* HAS_ATOLL:
+ * This symbol, if defined, indicates that the atoll routine is
+ * available to convert strings into long longs.
+ */
+/*#define HAS_ATOLL /**/
+
+/* PERL_BINCOMPAT_5005:
+ * This symbol, if defined, indicates that Perl 5.006 should be
+ * binary-compatible with Perl 5.005. This is impossible for builds
+ * that use features like threads and multiplicity it is always undef
+ * for those versions.
+ */
+/*#define PERL_BINCOMPAT_5005 /**/
+
/* DLSYM_NEEDS_UNDERSCORE:
* This symbol, if defined, indicates that we need to prepend an
* underscore to the symbol name before calling dlsym(). This only
@@ -2175,6 +2195,14 @@
*/
/*#define HAS_HASMNTOPT /**/
+/* HAS_LDBL_DIG:
+ * This symbol, if defined, indicates that this system's <float.h>
+ * or <limits.h> defines the symbol LDBL_DIG, which is the number
+ * of significant digits in a long double precision number. Unlike
+ * for DBL_DIG, there's no good guess for LDBL_DIG if it is undefined.
+ */
+#define HAS_LDBL_DIG /**/
+
/* HAS_MADVISE:
* This symbol, if defined, indicates that the madvise system call is
* available to map a file into memory.
@@ -2240,42 +2268,6 @@
*/
/*#define HAS_WRITEV /**/
-/* HAS_DBMINIT64:
- * This symbol, if defined, indicates that the dbminit64 routine is
- * available to open dbm files larger than 2 gigabytes.
- */
-/* HAS_DBMCLOSE64:
- * This symbol, if defined, indicates that the dbmclose64 routine is
- * available to close dbm files larger than 2 gigabytes.
- */
-/* HAS_FETCH64:
- * This symbol, if defined, indicates that the fetch64 routine is
- * available to fetch from dbm files larger than 2 gigabytes.
- */
-/* HAS_STORE64:
- * This symbol, if defined, indicates that the store64 routine is
- * available to store to dbm files larger than 2 gigabytes.
- */
-/* HAS_DELETE64:
- * This symbol, if defined, indicates that the delete64 routine is
- * available to delete from dbm files larger than 2 gigabytes.
- */
-/* HAS_FIRSTKEY64:
- * This symbol, if defined, indicates that the firstkey64 routine is
- * available to firstkey in dbm files larger than 2 gigabytes.
- */
-/* HAS_NEXTKEY64:
- * This symbol, if defined, indicates that the nextkey64 routine is
- * available to nextkey in dbm files larger than 2 gigabytes.
- */
-/*#define HAS_DBMINIT64 /**/
-/*#define HAS_DBMCLOSE64 /**/
-/*#define HAS_FETCH64 /**/
-/*#define HAS_STORE64 /**/
-/*#define HAS_DELETE64 /**/
-/*#define HAS_FIRSTKEY64 /**/
-/*#define HAS_NEXTKEY64 /**/
-
/* USE_DYNAMIC_LOADING:
* This symbol, if defined, indicates that dynamic loading of
* some sort is available.
@@ -2369,69 +2361,46 @@
*/
/*#define I_SYS_STATVFS /**/
-/* HAS_FSTAT64:
- * This symbol, if defined, indicates that the fstat64 routine is
- * available to stat files (fds) larger than 2 gigabytes.
- */
-/* HAS_FTRUNCATE64:
- * This symbol, if defined, indicates that the ftruncate64 routine is
- * available to tell files larger than 2 gigabytes.
- */
-/* HAS_LSEEK64:
- * This symbol, if defined, indicates that the lseek64 routine is
- * available to seek files larger than 2 gigabytes.
- */
-/* HAS_LSTAT64:
- * This symbol, if defined, indicates that the lstat64 routine is
- * available to stat files (symlinks) larger than 2 gigabytes.
- */
-/* HAS_OPEN64:
- * This symbol, if defined, indicates that the open64 routine is
- * available to open files larger than 2 gigabytes.
+/* HAS_OFF64_T:
+ * This symbol will be defined if the C compiler supports off64_t.
*/
-/* HAS_OPENDIR64:
- * This symbol, if defined, indicates that the opendir64 routine is
- * available to opendir files larger than 2 gigabytes.
+/* HAS_FPOS64_T:
+ * This symbol will be defined if the C compiler supports fpos64_t.
*/
-/* HAS_READDIR64:
- * This symbol, if defined, indicates that the readdir64 routine is
- * available to readdir files larger than 2 gigabytes.
+/*#define HAS_OFF64_T /**/
+/*#define HAS_FPOS64_T /**/
+
+/* PERL_PRIfldbl:
+ * This symbol, if defined, contains the string used by stdio to
+ * format long doubles (format 'f') for output.
*/
-/* HAS_SEEKDIR64:
- * This symbol, if defined, indicates that the seekdir64 routine is
- * available to seekdir files larger than 2 gigabytes.
+/* PERL_PRIgldbl:
+ * This symbol, if defined, contains the string used by stdio to
+ * format long doubles (format 'g') for output.
*/
-/* HAS_STAT64:
- * This symbol, if defined, indicates that the stat64 routine is
- * available to stat files larger than 2 gigabytes.
+/*#define PERL_PRIfldbl undef /**/
+/*#define PERL_PRIgldbl undef /**/
+
+/* PERL_PRId64:
+ * This symbol, if defined, contains the string used by stdio to
+ * format 64-bit decimal numbers (format 'd') for output.
*/
-/* HAS_TELLDIR64:
- * This symbol, if defined, indicates that the telldir64 routine is
- * available to telldir files larger than 2 gigabytes.
+/* PERL_PRIu64:
+ * This symbol, if defined, contains the string used by stdio to
+ * format 64-bit unsigned decimal numbers (format 'u') for output.
*/
-/* HAS_TRUNCATE64:
- * This symbol, if defined, indicates that the truncate64 routine is
- * available to truncate files larger than 2 gigabytes.
+/* PERL_PRIo64:
+ * This symbol, if defined, contains the string used by stdio to
+ * format 64-bit octal numbers (format 'o') for output.
*/
-/* HAS_OFF64_T:
- * This symbol will be defined if the C compiler supports off64_t.
+/* PERL_PRIx64:
+ * This symbol, if defined, contains the string used by stdio to
+ * format 64-bit hexadecimal numbers (format 'x') for output.
*/
-/* HAS_STRUCT_DIRENT64:
- * This symbol will be defined if the C compiler supports struct dirent64.
- */
-/*#define HAS_FSTAT64 /**/
-/*#define HAS_FTRUNCATE64 /**/
-/*#define HAS_LSEEK64 /**/
-/*#define HAS_LSTAT64 /**/
-/*#define HAS_OPEN64 /**/
-/*#define HAS_OPENDIR64 /**/
-/*#define HAS_READDIR64 /**/
-/*#define HAS_SEEKDIR64 /**/
-/*#define HAS_STAT64 /**/
-/*#define HAS_TELLDIR64 /**/
-/*#define HAS_TRUNCATE64 /**/
-/*#define HAS_OFF64_T /**/
-/*#define HAS_STRUCT_DIRENT64 /**/
+/*#define PERL_PRId64 undef /**/
+/*#define PERL_PRIu64 undef /**/
+/*#define PERL_PRIo64 undef /**/
+/*#define PERL_PRIx64 undef /**/
/* SELECT_MIN_BITS:
* This symbol holds the minimum number of bits operated by select.
@@ -2449,52 +2418,6 @@
*/
#define STARTPERL "#!perl" /**/
-/* HAS_FGETPOS64:
- * This symbol, if defined, indicates that the fgetpos64 routine is
- * available to getpos files larger than 2 gigabytes.
- */
-/* HAS_FOPEN64:
- * This symbol, if defined, indicates that the fopen64 routine is
- * available to open files larger than 2 gigabytes.
- */
-/* HAS_FREOPEN64:
- * This symbol, if defined, indicates that the freopen64 routine is
- * available to reopen files larger than 2 gigabytes.
- */
-/* HAS_FSEEK64:
- * This symbol, if defined, indicates that the fseek64 routine is
- * available to seek files larger than 2 gigabytes.
- */
-/* HAS_FSEEKO64:
- * This symbol, if defined, indicates that the fseeko64 routine is
- * available to seek files larger than 2 gigabytes.
- */
-/* HAS_FSETPOS64:
- * This symbol, if defined, indicates that the fsetpos64 routine is
- * available to setpos files larger than 2 gigabytes.
- */
-/* HAS_FTELL64:
- * This symbol, if defined, indicates that the ftell64 routine is
- * available to tell files larger than 2 gigabytes.
- */
-/* HAS_FTELLO64:
- * This symbol, if defined, indicates that the ftello64 routine is
- * available to tell files larger than 2 gigabytes.
- */
-/* HAS_TMPFILE64:
- * This symbol, if defined, indicates that the tmpfile64 routine is
- * available to tmpfile files larger than 2 gigabytes.
- */
-/*#define HAS_FGETPOS64 /**/
-/*#define HAS_FOPEN64 /**/
-/*#define HAS_FREOPEN64 /**/
-/*#define HAS_FSEEK64 /**/
-/*#define HAS_FSEEKO64 /**/
-/*#define HAS_FSETPOS64 /**/
-/*#define HAS_FTELL64 /**/
-/*#define HAS_FTELLO64 /**/
-/*#define HAS_TMPFILE64 /**/
-
/* HAS_STDIO_STREAM_ARRAY:
* This symbol, if defined, tells that there is an array
* holding the stdio streams.
@@ -2506,6 +2429,12 @@
/*#define HAS_STDIO_STREAM_ARRAY /**/
#define STDIO_STREAM_ARRAY undef
+/* HAS_STRTOULL:
+ * This symbol, if defined, indicates that the strtoull routine is
+ * available to convert strings into unsigned long longs.
+ */
+/*#define HAS_STRTOULL /**/
+
/* USE_64_BITS:
* This symbol, if defined, indicates that 64-bit interfaces should
* be used when available. If not defined, the native default interfaces
@@ -2513,6 +2442,12 @@
*/
/*#define USE_64_BITS /**/
+/* USE_LONG_DOUBLE:
+ * This symbol, if defined, indicates that long doubles should
+ * be used when available.
+ */
+/*#define USE_LONG_DOUBLE /**/
+
/* MULTIPLICITY:
* This symbol, if defined, indicates that Perl should
* be built to use multiplicity.
diff --git a/win32/config_H.vc b/win32/config_H.vc
index c79b2ead0a..2c070a4167 100644
--- a/win32/config_H.vc
+++ b/win32/config_H.vc
@@ -1419,7 +1419,7 @@
* This symbol contains the ~name expanded version of ARCHLIB, to be used
* in programs that are not prepared to deal with ~ expansion at run-time.
*/
-#define ARCHLIB "c:\\perl\\5.00560\\lib\\MSWin32-x86" /**/
+#define ARCHLIB "c:\\perl\\5.00561\\lib\\MSWin32-x86" /**/
/*#define ARCHLIB_EXP "" /**/
/* BIN:
@@ -1430,8 +1430,8 @@
* This symbol is the filename expanded version of the BIN symbol, for
* programs that do not want to deal with that at run-time.
*/
-#define BIN "c:\\perl\\5.00560\\bin\\MSWin32-x86" /**/
-#define BIN_EXP "c:\\perl\\5.00560\\bin\\MSWin32-x86" /**/
+#define BIN "c:\\perl\\5.00561\\bin\\MSWin32-x86" /**/
+#define BIN_EXP "c:\\perl\\5.00561\\bin\\MSWin32-x86" /**/
/* INSTALL_USR_BIN_PERL:
* This symbol, if defined, indicates that Perl is to be installed
@@ -1449,8 +1449,8 @@
* This symbol contains the ~name expanded version of PRIVLIB, to be used
* in programs that are not prepared to deal with ~ expansion at run-time.
*/
-#define PRIVLIB "c:\\perl\\5.00560\\lib" /**/
-#define PRIVLIB_EXP (win32_get_privlib("5.00560")) /**/
+#define PRIVLIB "c:\\perl\\5.00561\\lib" /**/
+#define PRIVLIB_EXP (win32_get_privlib("5.00561")) /**/
/* SITEARCH:
* This symbol contains the name of the private library for this package.
@@ -1465,7 +1465,7 @@
* This symbol contains the ~name expanded version of SITEARCH, to be used
* in programs that are not prepared to deal with ~ expansion at run-time.
*/
-#define SITEARCH "c:\\perl\\site\\5.00560\\lib\\MSWin32-x86" /**/
+#define SITEARCH "c:\\perl\\site\\5.00561\\lib\\MSWin32-x86" /**/
/*#define SITEARCH_EXP "" /**/
/* SITELIB:
@@ -1481,8 +1481,8 @@
* This symbol contains the ~name expanded version of SITELIB, to be used
* in programs that are not prepared to deal with ~ expansion at run-time.
*/
-#define SITELIB "c:\\perl\\site\\5.00560\\lib" /**/
-#define SITELIB_EXP (win32_get_sitelib("5.00560")) /**/
+#define SITELIB "c:\\perl\\site\\5.00561\\lib" /**/
+#define SITELIB_EXP (win32_get_sitelib("5.00561")) /**/
/* PERL_VENDORLIB_EXP:
* This symbol contains the ~name expanded version of VENDORLIB, to be used
@@ -2125,6 +2125,26 @@
#define M_VOID /* Xenix strikes again */
#endif
+/* HAS_ATOLF:
+ * This symbol, if defined, indicates that the atolf routine is
+ * available to convert strings into long doubles.
+ */
+/*#define HAS_ATOLF /**/
+
+/* HAS_ATOLL:
+ * This symbol, if defined, indicates that the atoll routine is
+ * available to convert strings into long longs.
+ */
+/*#define HAS_ATOLL /**/
+
+/* PERL_BINCOMPAT_5005:
+ * This symbol, if defined, indicates that Perl 5.006 should be
+ * binary-compatible with Perl 5.005. This is impossible for builds
+ * that use features like threads and multiplicity it is always undef
+ * for those versions.
+ */
+/*#define PERL_BINCOMPAT_5005 /**/
+
/* DLSYM_NEEDS_UNDERSCORE:
* This symbol, if defined, indicates that we need to prepend an
* underscore to the symbol name before calling dlsym(). This only
@@ -2175,6 +2195,14 @@
*/
/*#define HAS_HASMNTOPT /**/
+/* HAS_LDBL_DIG:
+ * This symbol, if defined, indicates that this system's <float.h>
+ * or <limits.h> defines the symbol LDBL_DIG, which is the number
+ * of significant digits in a long double precision number. Unlike
+ * for DBL_DIG, there's no good guess for LDBL_DIG if it is undefined.
+ */
+#define HAS_LDBL_DIG /**/
+
/* HAS_MADVISE:
* This symbol, if defined, indicates that the madvise system call is
* available to map a file into memory.
@@ -2240,42 +2268,6 @@
*/
/*#define HAS_WRITEV /**/
-/* HAS_DBMINIT64:
- * This symbol, if defined, indicates that the dbminit64 routine is
- * available to open dbm files larger than 2 gigabytes.
- */
-/* HAS_DBMCLOSE64:
- * This symbol, if defined, indicates that the dbmclose64 routine is
- * available to close dbm files larger than 2 gigabytes.
- */
-/* HAS_FETCH64:
- * This symbol, if defined, indicates that the fetch64 routine is
- * available to fetch from dbm files larger than 2 gigabytes.
- */
-/* HAS_STORE64:
- * This symbol, if defined, indicates that the store64 routine is
- * available to store to dbm files larger than 2 gigabytes.
- */
-/* HAS_DELETE64:
- * This symbol, if defined, indicates that the delete64 routine is
- * available to delete from dbm files larger than 2 gigabytes.
- */
-/* HAS_FIRSTKEY64:
- * This symbol, if defined, indicates that the firstkey64 routine is
- * available to firstkey in dbm files larger than 2 gigabytes.
- */
-/* HAS_NEXTKEY64:
- * This symbol, if defined, indicates that the nextkey64 routine is
- * available to nextkey in dbm files larger than 2 gigabytes.
- */
-/*#define HAS_DBMINIT64 /**/
-/*#define HAS_DBMCLOSE64 /**/
-/*#define HAS_FETCH64 /**/
-/*#define HAS_STORE64 /**/
-/*#define HAS_DELETE64 /**/
-/*#define HAS_FIRSTKEY64 /**/
-/*#define HAS_NEXTKEY64 /**/
-
/* USE_DYNAMIC_LOADING:
* This symbol, if defined, indicates that dynamic loading of
* some sort is available.
@@ -2369,69 +2361,46 @@
*/
/*#define I_SYS_STATVFS /**/
-/* HAS_FSTAT64:
- * This symbol, if defined, indicates that the fstat64 routine is
- * available to stat files (fds) larger than 2 gigabytes.
- */
-/* HAS_FTRUNCATE64:
- * This symbol, if defined, indicates that the ftruncate64 routine is
- * available to tell files larger than 2 gigabytes.
- */
-/* HAS_LSEEK64:
- * This symbol, if defined, indicates that the lseek64 routine is
- * available to seek files larger than 2 gigabytes.
- */
-/* HAS_LSTAT64:
- * This symbol, if defined, indicates that the lstat64 routine is
- * available to stat files (symlinks) larger than 2 gigabytes.
- */
-/* HAS_OPEN64:
- * This symbol, if defined, indicates that the open64 routine is
- * available to open files larger than 2 gigabytes.
+/* HAS_OFF64_T:
+ * This symbol will be defined if the C compiler supports off64_t.
*/
-/* HAS_OPENDIR64:
- * This symbol, if defined, indicates that the opendir64 routine is
- * available to opendir files larger than 2 gigabytes.
+/* HAS_FPOS64_T:
+ * This symbol will be defined if the C compiler supports fpos64_t.
*/
-/* HAS_READDIR64:
- * This symbol, if defined, indicates that the readdir64 routine is
- * available to readdir files larger than 2 gigabytes.
+/*#define HAS_OFF64_T /**/
+/*#define HAS_FPOS64_T /**/
+
+/* PERL_PRIfldbl:
+ * This symbol, if defined, contains the string used by stdio to
+ * format long doubles (format 'f') for output.
*/
-/* HAS_SEEKDIR64:
- * This symbol, if defined, indicates that the seekdir64 routine is
- * available to seekdir files larger than 2 gigabytes.
+/* PERL_PRIgldbl:
+ * This symbol, if defined, contains the string used by stdio to
+ * format long doubles (format 'g') for output.
*/
-/* HAS_STAT64:
- * This symbol, if defined, indicates that the stat64 routine is
- * available to stat files larger than 2 gigabytes.
+/*#define PERL_PRIfldbl undef /**/
+/*#define PERL_PRIgldbl undef /**/
+
+/* PERL_PRId64:
+ * This symbol, if defined, contains the string used by stdio to
+ * format 64-bit decimal numbers (format 'd') for output.
*/
-/* HAS_TELLDIR64:
- * This symbol, if defined, indicates that the telldir64 routine is
- * available to telldir files larger than 2 gigabytes.
+/* PERL_PRIu64:
+ * This symbol, if defined, contains the string used by stdio to
+ * format 64-bit unsigned decimal numbers (format 'u') for output.
*/
-/* HAS_TRUNCATE64:
- * This symbol, if defined, indicates that the truncate64 routine is
- * available to truncate files larger than 2 gigabytes.
+/* PERL_PRIo64:
+ * This symbol, if defined, contains the string used by stdio to
+ * format 64-bit octal numbers (format 'o') for output.
*/
-/* HAS_OFF64_T:
- * This symbol will be defined if the C compiler supports off64_t.
+/* PERL_PRIx64:
+ * This symbol, if defined, contains the string used by stdio to
+ * format 64-bit hexadecimal numbers (format 'x') for output.
*/
-/* HAS_STRUCT_DIRENT64:
- * This symbol will be defined if the C compiler supports struct dirent64.
- */
-/*#define HAS_FSTAT64 /**/
-/*#define HAS_FTRUNCATE64 /**/
-/*#define HAS_LSEEK64 /**/
-/*#define HAS_LSTAT64 /**/
-/*#define HAS_OPEN64 /**/
-/*#define HAS_OPENDIR64 /**/
-/*#define HAS_READDIR64 /**/
-/*#define HAS_SEEKDIR64 /**/
-/*#define HAS_STAT64 /**/
-/*#define HAS_TELLDIR64 /**/
-/*#define HAS_TRUNCATE64 /**/
-/*#define HAS_OFF64_T /**/
-/*#define HAS_STRUCT_DIRENT64 /**/
+/*#define PERL_PRId64 undef /**/
+/*#define PERL_PRIu64 undef /**/
+/*#define PERL_PRIo64 undef /**/
+/*#define PERL_PRIx64 undef /**/
/* SELECT_MIN_BITS:
* This symbol holds the minimum number of bits operated by select.
@@ -2449,52 +2418,6 @@
*/
#define STARTPERL "#!perl" /**/
-/* HAS_FGETPOS64:
- * This symbol, if defined, indicates that the fgetpos64 routine is
- * available to getpos files larger than 2 gigabytes.
- */
-/* HAS_FOPEN64:
- * This symbol, if defined, indicates that the fopen64 routine is
- * available to open files larger than 2 gigabytes.
- */
-/* HAS_FREOPEN64:
- * This symbol, if defined, indicates that the freopen64 routine is
- * available to reopen files larger than 2 gigabytes.
- */
-/* HAS_FSEEK64:
- * This symbol, if defined, indicates that the fseek64 routine is
- * available to seek files larger than 2 gigabytes.
- */
-/* HAS_FSEEKO64:
- * This symbol, if defined, indicates that the fseeko64 routine is
- * available to seek files larger than 2 gigabytes.
- */
-/* HAS_FSETPOS64:
- * This symbol, if defined, indicates that the fsetpos64 routine is
- * available to setpos files larger than 2 gigabytes.
- */
-/* HAS_FTELL64:
- * This symbol, if defined, indicates that the ftell64 routine is
- * available to tell files larger than 2 gigabytes.
- */
-/* HAS_FTELLO64:
- * This symbol, if defined, indicates that the ftello64 routine is
- * available to tell files larger than 2 gigabytes.
- */
-/* HAS_TMPFILE64:
- * This symbol, if defined, indicates that the tmpfile64 routine is
- * available to tmpfile files larger than 2 gigabytes.
- */
-/*#define HAS_FGETPOS64 /**/
-/*#define HAS_FOPEN64 /**/
-/*#define HAS_FREOPEN64 /**/
-/*#define HAS_FSEEK64 /**/
-/*#define HAS_FSEEKO64 /**/
-/*#define HAS_FSETPOS64 /**/
-/*#define HAS_FTELL64 /**/
-/*#define HAS_FTELLO64 /**/
-/*#define HAS_TMPFILE64 /**/
-
/* HAS_STDIO_STREAM_ARRAY:
* This symbol, if defined, tells that there is an array
* holding the stdio streams.
@@ -2506,6 +2429,12 @@
/*#define HAS_STDIO_STREAM_ARRAY /**/
#define STDIO_STREAM_ARRAY undef
+/* HAS_STRTOULL:
+ * This symbol, if defined, indicates that the strtoull routine is
+ * available to convert strings into unsigned long longs.
+ */
+/*#define HAS_STRTOULL /**/
+
/* USE_64_BITS:
* This symbol, if defined, indicates that 64-bit interfaces should
* be used when available. If not defined, the native default interfaces
@@ -2513,6 +2442,12 @@
*/
/*#define USE_64_BITS /**/
+/* USE_LONG_DOUBLE:
+ * This symbol, if defined, indicates that long doubles should
+ * be used when available.
+ */
+/*#define USE_LONG_DOUBLE /**/
+
/* MULTIPLICITY:
* This symbol, if defined, indicates that Perl should
* be built to use multiplicity.
diff --git a/win32/makefile.mk b/win32/makefile.mk
index 7e0205ef2b..01f0d7d615 100644
--- a/win32/makefile.mk
+++ b/win32/makefile.mk
@@ -33,7 +33,7 @@ INST_TOP *= $(INST_DRV)\perl
# versioned installation can be obtained by setting INST_TOP above to a
# path that includes an arbitrary version string.
#
-INST_VER *= \5.00560
+INST_VER *= \5.00561
#
# Comment this out if you DON'T want your perl installation to have