Imported Upstream version 5.24.0 39/136039/1
authorDongHun Kwak <dh0128.kwak@samsung.com>
Wed, 28 Jun 2017 01:45:52 +0000 (10:45 +0900)
committerDongHun Kwak <dh0128.kwak@samsung.com>
Wed, 28 Jun 2017 01:45:57 +0000 (10:45 +0900)
Change-Id: Ia5ddac9aeb1c072ec1cf25b8afd8792db08a64ab
Signed-off-by: DongHun Kwak <dh0128.kwak@samsung.com>
165 files changed:
Configure
Cross/config.sh-arm-linux
Cross/config.sh-arm-linux-n770
INSTALL
MANIFEST
META.json
META.yml
Makefile.SH
NetWare/Makefile
NetWare/config.wc
NetWare/config_H.wc
Porting/Glossary
Porting/Maintainers.pl
Porting/bench.pl
Porting/config.sh
Porting/config_H
Porting/deparse-skips.txt
Porting/epigraphs.pod
Porting/perldelta_template.pod
Porting/release_managers_guide.pod
Porting/release_schedule.pod
Porting/todo.pod
README.cygwin
README.haiku
README.macosx
README.os2
README.synology
README.vms
README.win32
config_h.SH
configure.com
cop.h
cpan/Encode/Byte/Makefile.PL
cpan/File-Path/lib/File/Path.pm
cpan/File-Path/t/Path_win32.t
cpan/podlators/lib/Pod/Man.pm
cpan/podlators/lib/Pod/ParseLink.pm
cpan/podlators/lib/Pod/Text.pm
cpan/podlators/lib/Pod/Text/Color.pm
cpan/podlators/lib/Pod/Text/Overstrike.pm
cpan/podlators/lib/Pod/Text/Termcap.pm
cpan/podlators/t/man/basic.t
cpan/podlators/t/man/devise-title.t
cygwin/cygwin.c
dist/IO/lib/IO/Handle.pm
dist/Module-CoreList/Changes
dist/Module-CoreList/lib/Module/CoreList.pm
dist/Module-CoreList/lib/Module/CoreList/TieHashDelta.pm
dist/Module-CoreList/lib/Module/CoreList/Utils.pm
dist/Module-CoreList/t/corelist.t
dist/PathTools/lib/File/Spec/AmigaOS.pm
dist/Thread-Queue/lib/Thread/Queue.pm
dist/Time-HiRes/Changes
dist/Time-HiRes/HiRes.pm
dist/Time-HiRes/HiRes.xs
dist/threads-shared/lib/threads/shared.pm
dist/threads-shared/shared.xs
dist/threads/lib/threads.pm
dist/threads/t/exit.t
dist/threads/t/thread.t
dist/threads/threads.xs
dosish.h
embed.fnc
embed.h
embedvar.h
ext/ODBM_File/ODBM_File.pm
ext/ODBM_File/ODBM_File.xs
ext/POSIX/lib/POSIX.pm
ext/POSIX/lib/POSIX.pod
ext/POSIX/t/export.t
ext/POSIX/t/math.t
handy.h
hints/catamount.sh
hints/darwin.sh
inline.h
lib/B/Op_private.pm
lib/File/Copy.pm
lib/locale.pm
lib/perl5db.pl
locale.c
makedef.pl
metaconfig.h
op.c
op.h
patchlevel.h
perl.c
perl.h
perlapi.h
perlvars.h
plan9/config.plan9
plan9/config_sh.sample
pod/.gitignore
pod/perl.pod
pod/perl5222delta.pod [new file with mode: 0644]
pod/perl5230delta.pod [deleted file]
pod/perl5231delta.pod [deleted file]
pod/perl5232delta.pod [deleted file]
pod/perl5233delta.pod [deleted file]
pod/perl5234delta.pod [deleted file]
pod/perl5235delta.pod [deleted file]
pod/perl5236delta.pod [deleted file]
pod/perl5237delta.pod [deleted file]
pod/perl5238delta.pod [deleted file]
pod/perldelta.pod
pod/perldiag.pod
pod/perlfunc.pod
pod/perlguts.pod
pod/perlhacktips.pod
pod/perlhist.pod
pod/perllocale.pod
pod/perllol.pod
pod/perlop.pod
pod/perlpolicy.pod
pod/perlport.pod
pod/perlrebackslash.pod
pod/perlref.pod
pod/perlrun.pod
pod/perlsec.pod
pod/perlvar.pod
pp.c
pp_ctl.c
pp_hot.c
proto.h
regcomp.c
regcomp.h
regen/warnings.pl
regexec.c
sv.c
symbian/config.sh
symbian/symbianish.h
t/lib/warnings/op
t/lib/warnings/regcomp
t/op/eval.t
t/op/lc.t
t/op/lex_assign.t
t/op/stat.t
t/op/tie_fetch_count.t
t/porting/customized.dat
t/porting/known_pod_issues.dat
t/re/pat_advanced.t
t/re/re_tests
t/re/reg_mesg.t
t/re/regexp.t
t/re/speed.t
toke.c
uconfig.h
uconfig.sh
uconfig64.sh
unixish.h
utf8.c
util.c
util.h
vms/descrip_mms.template
vms/vmsish.h
warnings.h
win32/GNUmakefile
win32/Makefile
win32/Makefile.ce
win32/config.ce
win32/config.gc
win32/config.vc
win32/makefile.mk
win32/pod.mak
win32/win32.c
win32/wince.c

index f8d4abd..5a353d6 100755 (executable)
--- a/Configure
+++ b/Configure
@@ -654,6 +654,7 @@ d_mbtowc=''
 d_memchr=''
 d_memcmp=''
 d_memcpy=''
+d_memmem=''
 d_memmove=''
 d_memset=''
 d_mkdir=''
@@ -665,7 +666,6 @@ d_mktime=''
 d_mmap=''
 mmaptype=''
 d_modfl=''
-d_modfl_pow32_bug=''
 d_modflproto=''
 d_mprotect=''
 d_msg=''
@@ -678,9 +678,11 @@ d_msync=''
 d_munmap=''
 d_nan=''
 d_nearbyint=''
+d_duplocale=''
 d_freelocale=''
 d_newlocale=''
 d_uselocale=''
+i_xlocale=''
 d_nextafter=''
 d_nexttoward=''
 d_nice=''
@@ -788,12 +790,13 @@ d_shmctl=''
 d_shmdt=''
 d_shmget=''
 d_sigaction=''
+d_siginfo_si_addr=''
+d_siginfo_si_band=''
 d_siginfo_si_errno=''
+d_siginfo_si_fd=''
 d_siginfo_si_pid=''
-d_siginfo_si_uid=''
-d_siginfo_si_addr=''
 d_siginfo_si_status=''
-d_siginfo_si_band=''
+d_siginfo_si_uid=''
 d_siginfo_si_value=''
 d_signbit=''
 d_sigprocmask=''
@@ -936,6 +939,7 @@ ld_can_script=''
 lddlflags=''
 usedl=''
 doublesize=''
+dtraceobject=''
 ebcdic=''
 fflushNULL=''
 fflushall=''
@@ -1320,7 +1324,6 @@ use64bitall=''
 use64bitint=''
 usecbacktrace=''
 dtrace=''
-dtraceobject=''
 usedtrace=''
 usefaststdio=''
 usekernprocpathname=''
@@ -1420,10 +1423,6 @@ fi
 
 groupstype=''
 i_whoami=''
-: Trailing extension.  Override this in a hint file, if needed.
-: Extra object files, if any, needed on this platform.
-archobjs=''
-archname=''
 : Possible local include directories to search.
 : Set locincpth to "" in a hint file to defeat local include searches.
 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
@@ -1436,6 +1435,9 @@ inclwanted=''
 EBUGGING=''
 DEBUGGING=''
 
+: Trailing extension.  Override this in a hint file, if needed.
+: Extra object files, if any, needed on this platform.
+archobjs=''
 libnames=''
 : change the next line if compiling for Xenix/286 on Xenix/386
 xlibpth='/usr/lib/386 /lib/386'
@@ -1459,8 +1461,6 @@ plibpth=''
 libswanted=''
 : some systems want to use only the non-versioned libso:s
 ignore_versioned_solibs=''
-: set usethreads on the Configure command line to enable threads.
-usereentrant='undef'
 ccname=''
 ccversion=''
 perllibs=''
@@ -1474,6 +1474,9 @@ ldflags_uselargefiles=''
 libswanted_uselargefiles=''
 : set usemultiplicity on the Configure command line to enable multiplicity.
 : set usesocks on the Configure command line to enable socks.
+archname=''
+: set usethreads on the Configure command line to enable threads.
+usereentrant='undef'
 : List of libraries we want.
 : If anyone needs extra -lxxx, put those in a hint file.
 libswanted="cl pthread socket bind inet nsl ndbm gdbm dbm db malloc dl ld"
@@ -2131,22 +2134,21 @@ fi
 rm -f missing x??
 
 : Find the appropriate value for a newline for tr
-echo " "
 if test -n "$DJGPP"; then
        trnl='\012'
 fi
 if test X"$trnl" = X; then
-       case "`echo foo|tr '\n' x 2>/dev/null`" in
+       case "`echo foo | tr '\n' x 2>/dev/null`" in
        foox) trnl='\n' ;;
        esac
 fi
 if test X"$trnl" = X; then
-       case "`echo foo|tr '\012' x 2>/dev/null`" in
+       case "`echo foo | tr '\012' x 2>/dev/null`" in
        foox) trnl='\012' ;;
        esac
 fi
 if test X"$trnl" = X; then
-       case "`echo foo|tr '\r\n' xy 2>/dev/null`" in
+       case "`echo foo | tr '\r\n' xy 2>/dev/null`" in
        fooxy) trnl='\n\r' ;;
        esac
 fi
@@ -8175,33 +8177,6 @@ EOM
        esac
 done
 
-case "$usedtrace" in
-$define)
-       case "$dtraceobject" in
-       $define|true|[yY]*)
-               dtraceobject=$define
-               ;;
-       ' '|'')
-               $dtrace -h -s ../perldtrace.d -o perldtrace.h
-               $cat >try.c <<EOM
-#include "perldtrace.h"
-int main(void) {
-    PERL_LOADED_FILE("dummy");
-    return 0;
-}
-EOM
-               dtraceobject=$undef
-               if $cc -c -o try.o $optimize $ccflags try.c \
-                    && $dtrace -G -s ../perldtrace.d try.o >/dev/null 2>&1; then
-                       dtraceobject=$define
-                       echo "Your dtrace builds an object file"
-               fi
-               $rm -f try.c try.o perldtrace.o
-               ;;
-       *) dtraceobject=$undef ;;
-       esac
-esac
-
 : See if we want extra modules installed
 echo " "
 case "$extras" in
@@ -10796,25 +10771,6 @@ set $varname;
 eval $setvar;
 $rm_try'
 
-: Define hasfield_t macro for Configure internal use
-hasfield_t='varname=$1; struct=$2; type=$3; field=$4; shift; shift; shift; shift;
-while $test $# -ge 2; do
-       case "$1" in
-       $define) echo "#include <$2>";;
-       esac ;
-    shift 2;
-done > try.c;
-echo "int main () { $struct foo; $type bar = foo.$field; }" >> try.c;
-set try;
-if eval $compile; then
-       val="$define";
-else
-       val="$undef";
-fi;
-set $varname;
-eval $setvar;
-$rm_try'
-
 : see if we should include time.h, sys/time.h, or both
 echo " "
 if test "X$timeincl" = X; then
@@ -14173,6 +14129,26 @@ $rm_try
 set d_fpos64_t
 eval $setvar
 
+: see if this is an xlocale.h system
+set xlocale.h i_xlocale
+eval $inhdr
+
+: see if newlocale exists
+set newlocale d_newlocale
+eval $inlibc
+
+: see if freelocale exists
+set freelocale d_freelocale
+eval $inlibc
+
+: see if uselocale exists
+set uselocale d_uselocale
+eval $inlibc
+
+: see if duplocale exists
+set duplocale d_duplocale
+eval $inlibc
+
 : see if frexpl exists
 set frexpl d_frexpl
 eval $inlibc
@@ -16353,6 +16329,10 @@ eval $inlibc
 set memcpy d_memcpy
 eval $inlibc
 
+: see if memmem exists
+set memmem d_memmem
+eval $inlibc
+
 : see if memmove exists
 set memmove d_memmove
 eval $inlibc
@@ -16433,69 +16413,6 @@ echo " "
 set d_modflproto modfl $i_math math.h
 eval $hasproto
 
-d_modfl_pow32_bug="$undef"
-
-case "$d_longdbl$d_modfl" in
-$define$define)
-       $cat <<EOM
-Checking to see whether your modfl() is okay for large values...
-EOM
-$cat >try.c <<EOCP
-#include <math.h>
-#include <stdio.h>
-EOCP
-if $test "X$d_modflproto" != "X$define"; then
-       $cat >>try.c <<EOCP
-/* Sigh. many current glibcs provide the function, but do not prototype it. */
-long double modfl (long double, long double *);
-EOCP
-fi
-$cat >>try.c <<EOCP
-int main() {
-    long double nv = 4294967303.15;
-    long double v, w;
-    v = modfl(nv, &w);
-#ifdef __GLIBC__
-    printf("glibc");
-#endif
-    printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
-    return 0;
-}
-EOCP
-       case "$osname:$gccversion" in
-       aix:)   saveccflags="$ccflags"
-               ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
-       esac
-       set try
-       if eval $compile; then
-               foo=`$run ./try`
-               case "$foo" in
-               *" 4294967303.150000 1.150000 4294967302.000000")
-                       echo >&4 "Your modfl() is broken for large values."
-                       d_modfl_pow32_bug="$define"
-                       case "$foo" in
-                       glibc)  echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
-                       ;;
-                       esac
-                       ;;
-               *" 4294967303.150000 0.150000 4294967303.000000")
-                       echo >&4 "Your modfl() seems okay for large values."
-                       ;;
-               *)      echo >&4 "I don't understand your modfl() at all."
-                       d_modfl="$undef"
-                       ;;
-               esac
-               $rm_try
-       else
-               echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
-               d_modfl="$undef"
-       fi
-       case "$osname:$gccversion" in
-       aix:)   ccflags="$saveccflags" ;; # restore
-       esac
-       ;;
-esac
-
 if $test "$uselongdouble" = "$define"; then
     message=""
     if $test "$d_sqrtl" != "$define"; then
@@ -16621,18 +16538,6 @@ eval $inlibc
 set nearbyint d_nearbyint
 eval $inlibc
 
-: see if newlocale exists
-set newlocale d_newlocale
-eval $inlibc
-
-: see if freelocale exists
-set freelocale d_freelocale
-eval $inlibc
-
-: see if uselocale exists
-set uselocale d_uselocale
-eval $inlibc
-
 : see if nextafter exists
 set nextafter d_nextafter
 eval $inlibc
 set d_sigaction; eval $setvar
 $rm_try
 
+: see what type pids are declared as in the kernel
+rp="What is the type of process ids on this system?"
+set pid_t pidtype int stdio.h sys/types.h
+eval $typedef_ask
+
+: see what type uids are declared as in the kernel
+echo " "
+echo "Looking for the type for user ids returned by getuid()."
+set uid_t uidtype xxx stdio.h sys/types.h
+eval $typedef
+case "$uidtype" in
+xxx)
+       xxx=`./findhdr sys/user.h`
+       set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
+       case $1 in
+       unsigned) dflt="$1 $2" ;;
+       *) dflt="$1" ;;
+       esac
+       ;;
+*) dflt="$uidtype";;
+esac
+case "$uidtype" in
+uid_t) echo "uid_t found." ;;
+*)     rp="What is the type for user ids returned by getuid()?"
+       . ./myread
+       uidtype="$ans"
+       ;;
+esac
+
+: Define hasfield_t macro for Configure internal use
+hasfield_t='varname=$1; struct=$2; type=$3; field=$4; shift; shift; shift; shift;
+while $test $# -ge 2; do
+    case "$1" in
+       $define) echo "#include <$2>";;
+    esac ;
+    shift 2;
+done > try.c;
+echo "int main () { $struct foo; $type bar = foo.$field; }" >> try.c;
+set try;
+if eval $compile; then
+       val="$define";
+else
+       val="$undef";
+fi;
+set $varname;
+eval $setvar;
+$rm_try'
+
+: see what siginfo fields we have
+case "$d_sigaction" in
+"$define")
+       echo "Checking if your siginfo_t has si_errno field...">&4
+       set d_siginfo_si_errno siginfo_t int si_errno $d_sigaction signal.h
+       eval $hasfield_t;
+
+       echo "Checking if your siginfo_t has si_pid field...">&4
+       set d_siginfo_si_pid siginfo_t $pidtype si_pid $d_sigaction signal.h
+       eval $hasfield_t;
+
+       echo "Checking if your siginfo_t has si_uid field...">&4
+       set d_siginfo_si_uid siginfo_t $uidtype si_uid $d_sigaction signal.h
+       eval $hasfield_t;
+
+       echo "Checking if your siginfo_t has si_addr field...">&4
+       set d_siginfo_si_addr siginfo_t "void *" si_addr $d_sigaction signal.h
+       eval $hasfield_t;
+
+       echo "Checking if your siginfo_t has si_status field...">&4
+       set d_siginfo_si_status siginfo_t int si_status $d_sigaction signal.h
+       eval $hasfield_t;
+
+       echo "Checking if your siginfo_t has si_band field...">&4
+       set d_siginfo_si_band siginfo_t long si_band $d_sigaction signal.h
+       eval $hasfield_t;
+
+       echo "Checking if your siginfo_t has si_value field...">&4
+       set d_siginfo_si_value siginfo_t "union sigval" si_value $d_sigaction signal.h
+       eval $hasfield_t;
+
+       echo "Checking if your siginfo_t has si_fd field...">&4
+       set d_siginfo_si_fd siginfo_t int si_fd $d_sigaction signal.h
+       eval $hasfield_t;
+
+       ;;
+*)
+       d_siginfo_si_errno="$undef"
+       d_siginfo_si_pid="$undef"
+       d_siginfo_si_uid="$undef"
+       d_siginfo_si_addr="$undef"
+       d_siginfo_si_status="$undef"
+       d_siginfo_si_band="$undef"
+       d_siginfo_si_value="$undef"
+       d_siginfo_si_fd="$undef"
+       ;;
+esac
+
 : see if this is a sunmath.h system
 set sunmath.h i_sunmath
 eval $inhdr
@@ -20159,20 +20160,11 @@ eval $inlibc
 echo " "
 case "$alignbytes" in
     '') echo "Checking alignment constraints..." >&4
-       if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
-           $cat >try.c <<'EOCP'
-typedef long double NV;
-EOCP
-       else
-           $cat >try.c <<'EOCP'
-typedef double NV;
-EOCP
-       fi
-       $cat >>try.c <<'EOCP'
+       $cat >try.c <<EOCP
 #include <stdio.h>
 struct foobar {
     char foo;
-    NV bar;
+    $nvtype bar;
 } try_algn;
 int main()
 {
@@ -20755,6 +20747,35 @@ seedfunc="Perl_drand48_init"
 randbits=48
 randseedtype=U32
 
+: Probe whether dtrace builds an object, as newer Illumos requires an input
+: object file that uses at least one of the probes defined in the .d file
+case "$usedtrace" in
+$define)
+    case "$dtraceobject" in
+    $define|true|[yY]*)
+        dtraceobject=$define
+        ;;
+    ' '|'')
+        $dtrace -h -s ../perldtrace.d -o perldtrace.h
+        $cat >try.c <<EOM
+#include "perldtrace.h"
+int main(void) {
+    PERL_LOADED_FILE("dummy");
+    return 0;
+}
+EOM
+        dtraceobject=$undef
+        if $cc -c -o try.o $optimize $ccflags try.c \
+                    && $dtrace -G -s ../perldtrace.d try.o >/dev/null 2>&1; then
+                dtraceobject=$define
+            echo "Your dtrace builds an object file"
+        fi
+        $rm -f try.c try.o perldtrace.o
+        ;;
+    *) dtraceobject=$undef ;;
+    esac
+esac
+
 : Determine if this is an EBCDIC system
 echo " "
 echo "Determining whether or not we are on an EBCDIC system..." >&4
@@ -21738,11 +21759,6 @@ rp='What pager is used on your system?'
 . ./getfile
 pager="$ans"
 
-: see what type pids are declared as in the kernel
-rp="What is the type of process ids on this system?"
-set pid_t pidtype int stdio.h sys/types.h
-eval $typedef_ask
-
 : see if ar generates random libraries by itself
 echo " "
 echo "Checking how to generate random libraries on your machine..." >&4
@@ -22347,8 +22363,12 @@ $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
 EOS
 chmod a+x signal_cmd
 $eunicefix signal_cmd
+;;
+esac
 
 : generate list of signal names
+case "$sig_num_init" in
+'')
 echo " "
 case "$sig_name_init" in
 '') doinit=yes ;;
@@ -22630,30 +22650,6 @@ else
 fi
 $rm -f stdioh
 
-: see what type uids are declared as in the kernel
-echo " "
-echo "Looking for the type for user ids returned by getuid()."
-set uid_t uidtype xxx stdio.h sys/types.h
-eval $typedef
-case "$uidtype" in
-xxx)
-       xxx=`./findhdr sys/user.h`
-       set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
-       case $1 in
-       unsigned) dflt="$1 $2" ;;
-       *) dflt="$1" ;;
-       esac
-       ;;
-*) dflt="$uidtype";;
-esac
-case "$uidtype" in
-uid_t) echo "uid_t found." ;;
-*)     rp="What is the type for user ids returned by getuid()?"
-       . ./myread
-       uidtype="$ans"
-       ;;
-esac
-
 : Check size of UID
 echo " "
 case "$uidtype" in
@@ -22766,49 +22762,6 @@ case "$uidsign" in
        ;;
 esac
 
-: see what siginfo fields we have
-case "$d_sigaction" in
-"$define")
-       echo "Checking if your siginfo_t has si_errno field...">&4
-       set d_siginfo_si_errno siginfo_t int si_errno $d_sigaction signal.h
-       eval $hasfield_t;
-
-       echo "Checking if your siginfo_t has si_pid field...">&4
-       set d_siginfo_si_pid siginfo_t $pidtype si_pid $d_sigaction signal.h
-       eval $hasfield_t;
-
-       echo "Checking if your siginfo_t has si_uid field...">&4
-       set d_siginfo_si_uid siginfo_t $uidtype si_uid $d_sigaction signal.h
-       eval $hasfield_t;
-
-       echo "Checking if your siginfo_t has si_addr field...">&4
-       set d_siginfo_si_addr siginfo_t "void *" si_addr $d_sigaction signal.h
-       eval $hasfield_t;
-
-       echo "Checking if your siginfo_t has si_status field...">&4
-       set d_siginfo_si_status siginfo_t int si_status $d_sigaction signal.h
-       eval $hasfield_t;
-
-       echo "Checking if your siginfo_t has si_band field...">&4
-       set d_siginfo_si_band siginfo_t long si_band $d_sigaction signal.h
-       eval $hasfield_t;
-
-       echo "Checking if your siginfo_t has si_value field...">&4
-       set d_siginfo_si_value siginfo_t "union sigval" si_value $d_sigaction signal.h
-       eval $hasfield_t;
-
-       ;;
-*)
-       d_siginfo_si_errno="$undef"
-       d_siginfo_si_pid="$undef"
-       d_siginfo_si_uid="$undef"
-       d_siginfo_si_addr="$undef"
-       d_siginfo_si_status="$undef"
-       d_siginfo_si_band="$undef"
-       d_siginfo_si_value="$undef"
-       ;;
-esac
-
 : Determine if we can use sysctl with KERN_PROC_PATHNAME to find executing program
 echo " "
 echo "Determining whether we can use sysctl with KERN_PROC_PATHNAME to find executing program..." >&4
@@ -23315,7 +23268,7 @@ case "$osname-$gccversion" in
 irix-) ccflags="\$ccflags -woff 1178" ;;
 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
 esac
-$cc -o try -Dcpp_stuff=$cpp_stuff $optimize \$ccflags $ldflags try.c $libs 2>/dev/null && $run ./try  | $sed 's/ /\\\\ /g'
+$cc -o try -Dcpp_stuff=$cpp_stuff $optimize \$ccflags $ldflags try.c $libs 2>/dev/null && $run ./try | $sed 's/ /\\\\ /g'
 EOSH
 chmod +x Cppsym.try
 $eunicefix Cppsym.try
@@ -24303,6 +24256,7 @@ d_dosuid='$d_dosuid'
 d_drand48_r='$d_drand48_r'
 d_drand48proto='$d_drand48proto'
 d_dup2='$d_dup2'
+d_duplocale='$d_duplocale'
 d_eaccess='$d_eaccess'
 d_endgrent='$d_endgrent'
 d_endgrent_r='$d_endgrent_r'
@@ -24494,6 +24448,7 @@ d_mbtowc='$d_mbtowc'
 d_memchr='$d_memchr'
 d_memcmp='$d_memcmp'
 d_memcpy='$d_memcpy'
+d_memmem='$d_memmem'
 d_memmove='$d_memmove'
 d_memset='$d_memset'
 d_mkdir='$d_mkdir'
@@ -24505,7 +24460,6 @@ d_mktime64='$d_mktime64'
 d_mktime='$d_mktime'
 d_mmap='$d_mmap'
 d_modfl='$d_modfl'
-d_modfl_pow32_bug='$d_modfl_pow32_bug'
 d_modflproto='$d_modflproto'
 d_mprotect='$d_mprotect'
 d_msg='$d_msg'
@@ -24637,12 +24591,13 @@ d_shmctl='$d_shmctl'
 d_shmdt='$d_shmdt'
 d_shmget='$d_shmget'
 d_sigaction='$d_sigaction'
+d_siginfo_si_addr='$d_siginfo_si_addr'
+d_siginfo_si_band='$d_siginfo_si_band'
 d_siginfo_si_errno='$d_siginfo_si_errno'
+d_siginfo_si_fd='$d_siginfo_si_fd'
 d_siginfo_si_pid='$d_siginfo_si_pid'
-d_siginfo_si_uid='$d_siginfo_si_uid'
-d_siginfo_si_addr='$d_siginfo_si_addr'
 d_siginfo_si_status='$d_siginfo_si_status'
-d_siginfo_si_band='$d_siginfo_si_band'
+d_siginfo_si_uid='$d_siginfo_si_uid'
 d_siginfo_si_value='$d_siginfo_si_value'
 d_signbit='$d_signbit'
 d_sigprocmask='$d_sigprocmask'
@@ -24942,6 +24897,7 @@ i_values='$i_values'
 i_varargs='$i_varargs'
 i_varhdr='$i_varhdr'
 i_vfork='$i_vfork'
+i_xlocale='$i_xlocale'
 ignore_versioned_solibs='$ignore_versioned_solibs'
 inc_version_list='$inc_version_list'
 inc_version_list_init='$inc_version_list_init'
index 1a4718b..4857806 100644 (file)
@@ -32,12 +32,12 @@ alignbytes='4'
 ansi2knr=''
 aphostname='/bin/hostname'
 api_revision='5'
-api_subversion='9'
-api_version='23'
-api_versionstring='5.23.9'
+api_subversion='0'
+api_version='24'
+api_versionstring='5.24.0'
 ar='ar'
-archlib='/usr/lib/perl5/5.23.9/armv4l-linux'
-archlibexp='/usr/lib/perl5/5.23.9/armv4l-linux'
+archlib='/usr/lib/perl5/5.24.0/armv4l-linux'
+archlibexp='/usr/lib/perl5/5.24.0/armv4l-linux'
 archname64=''
 archname='armv4l-linux'
 archobjs=''
@@ -56,7 +56,7 @@ castflags='0'
 cat='cat'
 cc='cc'
 cccdlflags='-fpic'
-ccdlflags='-rdynamic -Wl,-rpath,/usr/lib/perl5/5.23.9/armv4l-linux/CORE'
+ccdlflags='-rdynamic -Wl,-rpath,/usr/lib/perl5/5.24.0/armv4l-linux/CORE'
 ccflags='-fno-strict-aliasing -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'
 ccflags_uselargefiles='-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'
 ccname='arm-linux-gcc'
@@ -362,6 +362,7 @@ d_mbtowc='define'
 d_memchr='define'
 d_memcmp='define'
 d_memcpy='define'
+d_memmem='undef'
 d_memmove='define'
 d_memset='define'
 d_mkdir='define'
@@ -807,7 +808,7 @@ inc_version_list=' '
 inc_version_list_init='0'
 incpath=''
 inews=''
-installarchlib='./install_me_here/usr/lib/perl5/5.23.9/armv4l-linux'
+installarchlib='./install_me_here/usr/lib/perl5/5.24.0/armv4l-linux'
 installbin='./install_me_here/usr/bin'
 installhtml1dir=''
 installhtml3dir=''
@@ -815,13 +816,13 @@ installman1dir='./install_me_here/usr/share/man/man1'
 installman3dir='./install_me_here/usr/share/man/man3'
 installprefix='./install_me_here/usr'
 installprefixexp='./install_me_here/usr'
-installprivlib='./install_me_here/usr/lib/perl5/5.23.9'
+installprivlib='./install_me_here/usr/lib/perl5/5.24.0'
 installscript='./install_me_here/usr/bin'
-installsitearch='./install_me_here/usr/lib/perl5/site_perl/5.23.9/armv4l-linux'
+installsitearch='./install_me_here/usr/lib/perl5/site_perl/5.24.0/armv4l-linux'
 installsitebin='./install_me_here/usr/bin'
 installsitehtml1dir=''
 installsitehtml3dir=''
-installsitelib='./install_me_here/usr/lib/perl5/site_perl/5.23.9'
+installsitelib='./install_me_here/usr/lib/perl5/site_perl/5.24.0'
 installsiteman1dir='./install_me_here/usr/share/man/man1'
 installsiteman3dir='./install_me_here/usr/share/man/man3'
 installsitescript='./install_me_here/usr/bin'
@@ -955,8 +956,8 @@ pmake=''
 pr=''
 prefix='/usr'
 prefixexp='/usr'
-privlib='/usr/lib/perl5/5.23.9'
-privlibexp='/usr/lib/perl5/5.23.9'
+privlib='/usr/lib/perl5/5.24.0'
+privlibexp='/usr/lib/perl5/5.24.0'
 procselfexe='"/proc/self/exe"'
 prototype='define'
 ptrsize='4'
@@ -1021,17 +1022,17 @@ sig_num='0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
 sig_num_init='0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 6, 17, 29, 31, 0'
 sig_size='68'
 signal_t='void'
-sitearch='/usr/lib/perl5/site_perl/5.23.9/armv4l-linux'
-sitearchexp='/usr/lib/perl5/site_perl/5.23.9/armv4l-linux'
+sitearch='/usr/lib/perl5/site_perl/5.24.0/armv4l-linux'
+sitearchexp='/usr/lib/perl5/site_perl/5.24.0/armv4l-linux'
 sitebin='/usr/bin'
 sitebinexp='/usr/bin'
 sitehtml1dir=''
 sitehtml1direxp=''
 sitehtml3dir=''
 sitehtml3direxp=''
-sitelib='/usr/lib/perl5/site_perl/5.23.9'
+sitelib='/usr/lib/perl5/site_perl/5.24.0'
 sitelib_stem='/usr/lib/perl5/site_perl'
-sitelibexp='/usr/lib/perl5/site_perl/5.23.9'
+sitelibexp='/usr/lib/perl5/site_perl/5.24.0'
 siteman1dir='/usr/share/man/man1'
 siteman1direxp='/usr/share/man/man1'
 siteman3dir='/usr/share/man/man3'
@@ -1070,7 +1071,7 @@ stdio_stream_array=''
 strerror_r_proto='0'
 strings='/usr/include/string.h'
 submit=''
-subversion='9'
+subversion='0'
 sysman='/usr/share/man/man1'
 tail=''
 tar=''
@@ -1162,8 +1163,8 @@ vendorprefix=''
 vendorprefixexp=''
 vendorscript=''
 vendorscriptexp=''
-version='5.23.9'
-version_patchlevel_string='version 23 subversion 9'
+version='5.24.0'
+version_patchlevel_string='version 24 subversion 0'
 versiononly='undef'
 vi=''
 xlibpth='/usr/lib/386 /lib/386'
@@ -1176,10 +1177,10 @@ config_arg0='Configure'
 config_args=''
 config_argc=0
 PERL_REVISION=5
-PERL_VERSION=23
-PERL_SUBVERSION=9
+PERL_VERSION=24
+PERL_SUBVERSION=0
 PERL_API_REVISION=5
-PERL_API_VERSION=23
-PERL_API_SUBVERSION=9
+PERL_API_VERSION=24
+PERL_API_SUBVERSION=0
 PERL_PATCHLEVEL=
 PERL_CONFIG_SH=true
index 50d33a8..a1f4603 100644 (file)
@@ -32,12 +32,12 @@ alignbytes='4'
 ansi2knr=''
 aphostname='/bin/hostname'
 api_revision='5'
-api_subversion='9'
-api_version='23'
-api_versionstring='5.23.9'
+api_subversion='0'
+api_version='24'
+api_versionstring='5.24.0'
 ar='ar'
-archlib='/usr/lib/perl5/5.23.9/armv4l-linux'
-archlibexp='/usr/lib/perl5/5.23.9/armv4l-linux'
+archlib='/usr/lib/perl5/5.24.0/armv4l-linux'
+archlibexp='/usr/lib/perl5/5.24.0/armv4l-linux'
 archname64=''
 archname='armv4l-linux'
 archobjs=''
@@ -55,7 +55,7 @@ castflags='0'
 cat='cat'
 cc='arm-none-linux-gnueabi-gcc'
 cccdlflags='-fpic'
-ccdlflags='-rdynamic -Wl,-rpath,/usr/lib/perl5/5.23.9/armv4l-linux/CORE'
+ccdlflags='-rdynamic -Wl,-rpath,/usr/lib/perl5/5.24.0/armv4l-linux/CORE'
 ccflags='-fno-strict-aliasing -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'
 ccflags_uselargefiles='-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'
 ccname='arm-linux-gcc'
@@ -699,7 +699,7 @@ inc_version_list=' '
 inc_version_list_init='0'
 incpath=''
 inews=''
-installarchlib='./install_me_here/usr/lib/perl5/5.23.9/armv4l-linux'
+installarchlib='./install_me_here/usr/lib/perl5/5.24.0/armv4l-linux'
 installbin='./install_me_here/usr/bin'
 installhtml1dir=''
 installhtml3dir=''
@@ -707,13 +707,13 @@ installman1dir='./install_me_here/usr/share/man/man1'
 installman3dir='./install_me_here/usr/share/man/man3'
 installprefix='./install_me_here/usr'
 installprefixexp='./install_me_here/usr'
-installprivlib='./install_me_here/usr/lib/perl5/5.23.9'
+installprivlib='./install_me_here/usr/lib/perl5/5.24.0'
 installscript='./install_me_here/usr/bin'
-installsitearch='./install_me_here/usr/lib/perl5/site_perl/5.23.9/armv4l-linux'
+installsitearch='./install_me_here/usr/lib/perl5/site_perl/5.24.0/armv4l-linux'
 installsitebin='./install_me_here/usr/bin'
 installsitehtml1dir=''
 installsitehtml3dir=''
-installsitelib='./install_me_here/usr/lib/perl5/site_perl/5.23.9'
+installsitelib='./install_me_here/usr/lib/perl5/site_perl/5.24.0'
 installsiteman1dir='./install_me_here/usr/share/man/man1'
 installsiteman3dir='./install_me_here/usr/share/man/man3'
 installsitescript='./install_me_here/usr/bin'
@@ -841,8 +841,8 @@ pmake=''
 pr=''
 prefix='/usr'
 prefixexp='/usr'
-privlib='/usr/lib/perl5/5.23.9'
-privlibexp='/usr/lib/perl5/5.23.9'
+privlib='/usr/lib/perl5/5.24.0'
+privlibexp='/usr/lib/perl5/5.24.0'
 procselfexe='"/proc/self/exe"'
 prototype='define'
 ptrsize='4'
@@ -903,17 +903,17 @@ sig_num='0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
 sig_num_init='0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 6, 17, 29, 31, 0'
 sig_size='68'
 signal_t='void'
-sitearch='/usr/lib/perl5/site_perl/5.23.9/armv4l-linux'
-sitearchexp='/usr/lib/perl5/site_perl/5.23.9/armv4l-linux'
+sitearch='/usr/lib/perl5/site_perl/5.24.0/armv4l-linux'
+sitearchexp='/usr/lib/perl5/site_perl/5.24.0/armv4l-linux'
 sitebin='/usr/bin'
 sitebinexp='/usr/bin'
 sitehtml1dir=''
 sitehtml1direxp=''
 sitehtml3dir=''
 sitehtml3direxp=''
-sitelib='/usr/lib/perl5/site_perl/5.23.9'
+sitelib='/usr/lib/perl5/site_perl/5.24.0'
 sitelib_stem='/usr/lib/perl5/site_perl'
-sitelibexp='/usr/lib/perl5/site_perl/5.23.9'
+sitelibexp='/usr/lib/perl5/site_perl/5.24.0'
 siteman1dir='/usr/share/man/man1'
 siteman1direxp='/usr/share/man/man1'
 siteman3dir='/usr/share/man/man3'
@@ -950,7 +950,7 @@ stdio_stream_array=''
 strerror_r_proto='0'
 strings='/usr/include/string.h'
 submit=''
-subversion='9'
+subversion='0'
 sysman='/usr/share/man/man1'
 tail=''
 tar=''
@@ -1035,8 +1035,8 @@ vendorprefix=''
 vendorprefixexp=''
 vendorscript=''
 vendorscriptexp=''
-version='5.23.9'
-version_patchlevel_string='version 23 subversion 9'
+version='5.24.0'
+version_patchlevel_string='version 24 subversion 0'
 versiononly='undef'
 vi=''
 xlibpth='/usr/lib/386 /lib/386'
@@ -1049,10 +1049,10 @@ config_arg0='Configure'
 config_args=''
 config_argc=0
 PERL_REVISION=5
-PERL_VERSION=23
-PERL_SUBVERSION=9
+PERL_VERSION=24
+PERL_SUBVERSION=0
 PERL_API_REVISION=5
-PERL_API_VERSION=23
-PERL_API_SUBVERSION=9
+PERL_API_VERSION=24
+PERL_API_SUBVERSION=0
 PERL_PATCHLEVEL=
 PERL_CONFIG_SH=true
diff --git a/INSTALL b/INSTALL
index 8db0366..55faf67 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -581,7 +581,7 @@ The directories set up by Configure fall into three broad categories.
 
 =item Directories for the perl distribution
 
-By default, Configure will use the following directories for 5.23.9.
+By default, Configure will use the following directories for 5.24.0.
 $version is the full perl version number, including subversion, e.g.
 5.12.3, and $archname is a string like sun4-sunos,
 determined by Configure.  The full definitions of all Configure
@@ -1922,11 +1922,11 @@ specify which target environment to use, as well as C<ar> and friends:
 
 Additionally, a cross-compilation toolchain will usually install it's own
 logical system root somewhere -- that is, it'll create a directory
-somewhere which includes subdirectories like 'include' or 'lib'.  For
-example, you may end up with C</skiff/local/arm-linux>, where
-C</skiff/local/arm-linux/bin> holds the binaries for cross-compilation,
-C</skiff/local/arm-linux/include> has the headers, and
-C</skiff/local/arm-linux/lib> has the library files.
+somewhere which includes subdirectories like C<'include'> or C<'lib'>.  For
+example, you may end up with F</skiff/local/arm-linux>, where
+F</skiff/local/arm-linux/bin> holds the binaries for cross-compilation,
+F</skiff/local/arm-linux/include> has the headers, and
+F</skiff/local/arm-linux/lib> has the library files.
 If this is the case, and you are using a compiler that understands
 C<--sysroot>, like gcc or clang, you'll want to specify the
 C<-Dsysroot> option for Configure:
@@ -2426,15 +2426,10 @@ attachments or encodings may actually reduce the number of people who
 read your message.  Your message will get relayed to over 400
 subscribers around the world so please try to keep it brief but clear.
 
-If the bug you are reporting has security implications, which make it
-inappropriate to send to a publicly archived mailing list, then please
-send it to perl5-security-report@perl.org. This points to a closed
-subscription unarchived mailing list, which includes all the core
-committers, who be able to help assess the impact of issues, figure out
-a resolution, and help co-ordinate the release of patches to mitigate or
-fix the problem across all platforms on which Perl is supported. Please
-only use this address for security issues in the Perl core, not for
-modules independently distributed on CPAN.
+If the bug you are reporting has security implications which make it
+inappropriate to send to a publicly archived mailing list, then see
+L<perlsec/SECURITY VULNERABILITY CONTACT INFORMATION>
+for details of how to report the issue.
 
 If you are unsure what makes a good bug report please read "How to
 report Bugs Effectively" by Simon Tatham:
@@ -2442,7 +2437,7 @@ http://www.chiark.greenend.org.uk/~sgtatham/bugs.html
 
 =head1 Coexistence with earlier versions of perl 5
 
-Perl 5.23.9 is not binary compatible with earlier versions of Perl.
+Perl 5.24.0 is not binary compatible with earlier versions of Perl.
 In other words, you will have to recompile your XS modules.
 
 In general, you can usually safely upgrade from one version of Perl
@@ -2517,9 +2512,9 @@ won't interfere with another version.  (The defaults guarantee this for
 libraries after 5.6.0, but not for executables. TODO?)  One convenient
 way to do this is by using a separate prefix for each version, such as
 
-       sh Configure -Dprefix=/opt/perl5.23.9
+       sh Configure -Dprefix=/opt/perl5.24.0
 
-and adding /opt/perl5.23.9/bin to the shell PATH variable.  Such users
+and adding /opt/perl5.24.0/bin to the shell PATH variable.  Such users
 may also wish to add a symbolic link /usr/local/bin/perl so that
 scripts can still start with #!/usr/local/bin/perl.
 
@@ -2532,13 +2527,13 @@ seriously consider using a separate directory, since development
 subversions may not have all the compatibility wrinkles ironed out
 yet.
 
-=head2 Upgrading from 5.23.7 or earlier
+=head2 Upgrading from v5.22 or earlier
 
-B<Perl 5.23.9 may not be binary compatible with Perl 5.23.7 or
+B<Perl 5.24.0 may not be binary compatible with Perl v5.22 or
 earlier Perl releases.>  Perl modules having binary parts
 (meaning that a C compiler is used) will have to be recompiled to be
-used with 5.23.9.  If you find you do need to rebuild an extension with
-5.23.9, you may safely do so without disturbing the older
+used with 5.24.0.  If you find you do need to rebuild an extension with
+5.24.0, you may safely do so without disturbing the older
 installations.  (See L<"Coexistence with earlier versions of perl 5">
 above.)
 
@@ -2571,15 +2566,15 @@ Firstly, the bare minimum to run this script
      print("$f\n");
   }
 
-in Linux with perl-5.23.9 is as follows (under $Config{prefix}):
+in Linux with perl-5.24.0 is as follows (under $Config{prefix}):
 
   ./bin/perl
-  ./lib/perl5/5.23.9/strict.pm
-  ./lib/perl5/5.23.9/warnings.pm
-  ./lib/perl5/5.23.9/i686-linux/File/Glob.pm
-  ./lib/perl5/5.23.9/feature.pm
-  ./lib/perl5/5.23.9/XSLoader.pm
-  ./lib/perl5/5.23.9/i686-linux/auto/File/Glob/Glob.so
+  ./lib/perl5/5.24.0/strict.pm
+  ./lib/perl5/5.24.0/warnings.pm
+  ./lib/perl5/5.24.0/i686-linux/File/Glob.pm
+  ./lib/perl5/5.24.0/feature.pm
+  ./lib/perl5/5.24.0/XSLoader.pm
+  ./lib/perl5/5.24.0/i686-linux/auto/File/Glob/Glob.so
 
 Secondly, for perl-5.10.1, the Debian perl-base package contains 591
 files, (of which 510 are for lib/unicore) totaling about 3.5MB in its
index 734dc40..c847f60 100644 (file)
--- a/MANIFEST
+++ b/MANIFEST
@@ -4644,15 +4644,7 @@ pod/perl5202delta.pod            Perl changes in version 5.20.2
 pod/perl5203delta.pod          Perl changes in version 5.20.3
 pod/perl5220delta.pod          Perl changes in version 5.22.0
 pod/perl5221delta.pod          Perl changes in version 5.22.1
-pod/perl5230delta.pod          Perl changes in version 5.23.0
-pod/perl5231delta.pod          Perl changes in version 5.23.1
-pod/perl5232delta.pod          Perl changes in version 5.23.2
-pod/perl5233delta.pod          Perl changes in version 5.23.3
-pod/perl5234delta.pod          Perl changes in version 5.23.4
-pod/perl5235delta.pod          Perl changes in version 5.23.5
-pod/perl5236delta.pod          Perl changes in version 5.23.6
-pod/perl5237delta.pod          Perl changes in version 5.23.7
-pod/perl5238delta.pod          Perl changes in version 5.23.8
+pod/perl5222delta.pod          Perl changes in version 5.22.2
 pod/perl561delta.pod           Perl changes in version 5.6.1
 pod/perl56delta.pod            Perl changes in version 5.6
 pod/perl581delta.pod           Perl changes in version 5.8.1
index e220bd6..5b383ad 100644 (file)
--- a/META.json
+++ b/META.json
          "vxs.inc"
       ]
    },
-   "release_status" : "unstable",
+   "release_status" : "stable",
    "resources" : {
       "bugtracker" : {
          "web" : "https://rt.perl.org/"
          "url" : "http://perl5.git.perl.org/"
       }
    },
-   "version" : "5.023009",
+   "version" : "5.024000",
    "x_serialization_backend" : "JSON::PP version 2.27300"
 }
index b731290..13a2bb3 100644 (file)
--- a/META.yml
+++ b/META.yml
@@ -111,5 +111,5 @@ resources:
   homepage: http://www.perl.org/
   license: http://dev.perl.org/licenses/
   repository: http://perl5.git.perl.org/
-version: '5.023009'
+version: '5.024000'
 x_serialization_backend: 'CPAN::Meta::YAML version 0.018'
index 442dac1..916b332 100755 (executable)
@@ -522,7 +522,7 @@ miniperl_objs = $(miniperl_objs_nodt) $(DTRACE_MINI_O)
 perllib_objs  = $(perllib_objs_nodt) $(DTRACE_PERLLIB_O)
 perlmain_objs = perlmain$(OBJ_EXT) $(DTRACE_MAIN_O)
 
-perltoc_pod_prereqs = extra.pods pod/perl5239delta.pod pod/perlapi.pod pod/perlintern.pod pod/perlmodlib.pod pod/perluniprops.pod
+perltoc_pod_prereqs = extra.pods pod/perl5240delta.pod pod/perlapi.pod pod/perlintern.pod pod/perlmodlib.pod pod/perluniprops.pod
 generated_pods = pod/perltoc.pod $(perltoc_pod_prereqs)
 generated_headers = uudmap.h bitcount.h mg_data.h
 
@@ -1085,9 +1085,9 @@ pod/perlintern.pod: $(MINIPERL_EXE) autodoc.pl embed.fnc
 pod/perlmodlib.pod: $(MINIPERL_EXE) pod/perlmodlib.PL MANIFEST
        $(MINIPERL) pod/perlmodlib.PL -q
 
-pod/perl5239delta.pod: pod/perldelta.pod
-       $(RMS) pod/perl5239delta.pod
-       $(LNS) perldelta.pod pod/perl5239delta.pod
+pod/perl5240delta.pod: pod/perldelta.pod
+       $(RMS) pod/perl5240delta.pod
+       $(LNS) perldelta.pod pod/perl5240delta.pod
 
 extra.pods: $(MINIPERL_EXE)
        -@test ! -f extra.pods || rm -f `cat extra.pods`
index 1df0b92..327cb8a 100644 (file)
@@ -86,7 +86,7 @@ NLM_VERSION    = 3,20,0
 
 
 # Here comes the CW tools - TO BE FILLED TO BUILD WITH CW -
-MODULE_DESC     = "Perl 5.23.9 for NetWare"
+MODULE_DESC     = "Perl 5.24.0 for NetWare"
 CCTYPE          = CodeWarrior
 C_COMPILER             = mwccnlm -c
 CPP_COMPILER   = mwccnlm
@@ -462,7 +462,7 @@ INST_NW_TOP2 = $(INST_NW_DRV)\perl
 # versioned installation can be obtained by setting INST_TOP above to a
 # path that includes an arbitrary version string.
 #
-INST_VER       = \5.23.9
+INST_VER       = \5.24.0
 
 #
 # Comment this out if you DON'T want your perl installation to have
index bf8dc11..a06d89c 100644 (file)
@@ -351,6 +351,7 @@ d_mbtowc='define'
 d_memchr='define'
 d_memcmp='define'
 d_memcpy='define'
+d_memmem='undef'
 d_memmove='define'
 d_memset='define'
 d_mkdir='define'
index c3c440c..7414310 100644 (file)
  *     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.23.9\\lib\\NetWare-x86-multi-thread"              /**/
+#define ARCHLIB "c:\\perl\\5.24.0\\lib\\NetWare-x86-multi-thread"              /**/
 /*#define ARCHLIB_EXP ""       /**/
 
 /* ARCHNAME:
  *     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.23.9\\bin\\NetWare-x86-multi-thread"  /**/
-#define BIN_EXP "c:\\perl\\5.23.9\\bin\\NetWare-x86-multi-thread"      /**/
+#define BIN "c:\\perl\\5.24.0\\bin\\NetWare-x86-multi-thread"  /**/
+#define BIN_EXP "c:\\perl\\5.24.0\\bin\\NetWare-x86-multi-thread"      /**/
 
 /* BYTEORDER:
  *     This symbol holds the hexadecimal constant defined in byteorder,
  *     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.23.9\\lib\\NetWare-x86-multi-thread"               /**/
+#define SITEARCH "c:\\perl\\site\\5.24.0\\lib\\NetWare-x86-multi-thread"               /**/
 /*#define SITEARCH_EXP ""      /**/
 
 /* SITELIB:
  *     removed.  The elements in inc_version_list (inc_version_list.U) can
  *     be tacked onto this variable to generate a list of directories to search.
  */
-#define SITELIB "c:\\perl\\site\\5.23.9\\lib"          /**/
+#define SITELIB "c:\\perl\\site\\5.24.0\\lib"          /**/
 /*#define SITELIB_EXP ""       /**/
 #define SITELIB_STEM ""                /**/
 
index 4ff252f..750351e 100644 (file)
@@ -714,6 +714,11 @@ d_dup2 (d_dup2.U):
        This variable conditionally defines HAS_DUP2 if dup2() is
        available to duplicate file descriptors.
 
+d_duplocale (d_newlocale.U):
+       This variable conditionally defines the HAS_DUPLOCALE symbol, which
+       indicates to the C program that the duplocale() routine is available
+       to duplicate a locale object.
+
 d_eaccess (d_eaccess.U):
        This variable conditionally defines the HAS_EACCESS symbol, which
        indicates to the C program that the eaccess() routine is available.
@@ -834,6 +839,10 @@ d_fd_set (d_fd_set.U):
        This variable contains the eventual value of the HAS_FD_SET symbol,
        which indicates if your C compiler knows about the fd_set typedef.
 
+d_fdclose (d_fdclose.U):
+       This variable conditionally defines the HAS_FDCLOSE symbol, which
+       indicates to the C program that the fdclose() routine is available.
+
 d_fdim (d_fdim.U):
        This variable conditionally defines the HAS_FDIM symbol, which
        indicates to the C program that the fdim() routine is available.
@@ -1405,6 +1414,10 @@ d_isinfl (d_isinfl.U):
        This variable conditionally defines the HAS_ISINFL symbol, which
        indicates to the C program that the isinfl() routine is available.
 
+d_isless (d_isless.U):
+       This variable conditionally defines the HAS_ISLESS symbol, which
+       indicates to the C program that the isless() routine is available.
+
 d_isnan (d_isnan.U):
        This variable conditionally defines the HAS_ISNAN symbol, which
        indicates to the C program that the isnan() routine is available.
@@ -1477,14 +1490,14 @@ d_link (d_link.U):
 d_llrint (d_llrint.U):
        This variable conditionally defines the HAS_LLRINT symbol, which
        indicates to the C program that the llrint() routine is available
-       to return the long long value closest to (according to the current
-       rounding mode) to x.
+       to return the long long value closest to a double (according
+       to the current rounding mode).
 
 d_llrintl (d_llrintl.U):
        This variable conditionally defines the HAS_LLRINTL symbol, which
        indicates to the C program that the llrintl() routine is available
-       to return the long long value closest to (according to the current
-       rounding mode) to long double x.
+       to return the long long value closest to a long double (according
+       to the current rounding mode).
 
 d_llround (d_llround.U):
        This variable conditionally defines the HAS_LLROUND symbol, which
@@ -1494,7 +1507,7 @@ d_llround (d_llround.U):
 d_llroundl (d_llroundl.U):
        This variable conditionally defines the HAS_LLROUNDL symbol, which
        indicates to the C program that the llroundl() routine is available
-       to return the long long value nearest to long double x.
+       to return the long long value nearest to x away from zero.
 
 d_localtime64 (d_timefuncs64.U):
        This variable conditionally defines the HAS_LOCALTIME64 symbol, which
@@ -1543,14 +1556,14 @@ d_longlong (d_longlong.U):
 d_lrint (d_lrint.U):
        This variable conditionally defines the HAS_LRINT symbol, which
        indicates to the C program that the lrint() routine is available
-       to return the integral value closest to (according to the current
-       rounding mode) to x.
+       to return the integral value closest to a double (according
+       to the current rounding mode).
 
 d_lrintl (d_lrintl.U):
        This variable conditionally defines the HAS_LRINTL symbol, which
        indicates to the C program that the lrintl() routine is available
-       to return the integral value closest to (according to the current
-       rounding mode) to long double x.
+       to return the integral value closest to a long double (according
+       to the current rounding mode).
 
 d_lround (d_lround.U):
        This variable conditionally defines the HAS_LROUND symbol, which
@@ -1560,7 +1573,7 @@ d_lround (d_lround.U):
 d_lroundl (d_lroundl.U):
        This variable conditionally defines the HAS_LROUNDL symbol, which
        indicates to the C program that the lroundl() routine is available
-       to return the integral value nearest to x of the long double argument.
+       to return the integral value nearest to x away from zero.
 
 d_lseekproto (d_lseekproto.U):
        This variable conditionally defines the HAS_LSEEK_PROTO symbol,
@@ -1614,6 +1627,12 @@ d_memcpy (d_memcpy.U):
        indicates to the C program that the memcpy() routine is available
        to copy blocks of memory.
 
+d_memmem (d_memmem.U):
+       This variable conditionally defines the HAS_MEMMEM symbol, which
+       indicates to the C program that the memmem() routine is available
+       to return a pointer to the start of the first occurance of a
+       substring in a memory area (or NULL if not found).
+
 d_memmove (d_memmove.U):
        This variable conditionally defines the HAS_MEMMOVE symbol, which
        indicates to the C program that the memmove() routine is available
@@ -1679,6 +1698,31 @@ d_msg (d_msg.U):
        This variable conditionally defines the HAS_MSG symbol, which
        indicates that the entire msg*(2) library is present.
 
+d_msg_ctrunc (d_socket.U):
+       This variable conditionally defines the HAS_MSG_CTRUNC symbol,
+       which indicates that the MSG_CTRUNC is available.  #ifdef is
+       not enough because it may be an enum, glibc has been known to do this.
+
+d_msg_dontroute (d_socket.U):
+       This variable conditionally defines the HAS_MSG_DONTROUTE symbol,
+       which indicates that the MSG_DONTROUTE is available.  #ifdef is
+       not enough because it may be an enum, glibc has been known to do this.
+
+d_msg_oob (d_socket.U):
+       This variable conditionally defines the HAS_MSG_OOB symbol,
+       which indicates that the MSG_OOB is available.  #ifdef is
+       not enough because it may be an enum, glibc has been known to do this.
+
+d_msg_peek (d_socket.U):
+       This variable conditionally defines the HAS_MSG_PEEK symbol,
+       which indicates that the MSG_PEEK is available.  #ifdef is
+       not enough because it may be an enum, glibc has been known to do this.
+
+d_msg_proxy (d_socket.U):
+       This variable conditionally defines the HAS_MSG_PROXY symbol,
+       which indicates that the MSG_PROXY is available.  #ifdef is
+       not enough because it may be an enum, glibc has been known to do this.
+
 d_msgctl (d_msgctl.U):
        This variable conditionally defines the HAS_MSGCTL symbol, which
        indicates to the C program that the msgctl() routine is available.
@@ -2077,6 +2121,11 @@ d_sched_yield (d_pthread_y.U):
        symbol if the sched_yield routine is available to yield
        the execution of the current thread.
 
+d_scm_rights (d_socket.U):
+       This variable conditionally defines the HAS_SCM_RIGHTS symbol,
+       which indicates that the SCM_RIGHTS is available.  #ifdef is
+       not enough because it may be an enum, glibc has been known to do this.
+
 d_SCNfldbl (longdblfio.U):
        This variable conditionally defines the PERL_PRIfldbl symbol, which
        indicates that stdio has a symbol to scan long doubles.
@@ -2298,6 +2347,38 @@ d_sigaction (d_sigaction.U):
        This variable conditionally defines the HAS_SIGACTION symbol, which
        indicates that the Vr4 sigaction() routine is available.
 
+d_siginfo_si_addr (d_siginfo_si.U):
+       This variable conditionally defines the HAS_SIGINFO_SI_ADDR symbol,
+       which indicates that the siginfo_t struct has the si_addr member.
+
+d_siginfo_si_band (d_siginfo_si.U):
+       This variable conditionally defines the HAS_SIGINFO_SI_BAND symbol,
+       which indicates that the siginfo_t struct has the si_band member.
+
+d_siginfo_si_errno (d_siginfo_si.U):
+       This variable conditionally defines the HAS_SIGINFO_SI_ERRNO symbol,
+       which indicates that the siginfo_t struct has the si_errno member.
+
+d_siginfo_si_fd (d_siginfo_si.U):
+       This variable conditionally defines the HAS_SIGINFO_SI_FD symbol,
+       which indicates that the siginfo_t struct has the si_fd member.
+
+d_siginfo_si_pid (d_siginfo_si.U):
+       This variable conditionally defines the HAS_SIGINFO_SI_PID symbol,
+       which indicates that the siginfo_t struct has the si_pid member.
+
+d_siginfo_si_status (d_siginfo_si.U):
+       This variable conditionally defines the HAS_SIGINFO_SI_STATUS symbol,
+       which indicates that the siginfo_t struct has the si_status member.
+
+d_siginfo_si_uid (d_siginfo_si.U):
+       This variable conditionally defines the HAS_SIGINFO_SI_UID symbol,
+       which indicates that the siginfo_t struct has the si_uid member.
+
+d_siginfo_si_value (d_siginfo_si.U):
+       This variable conditionally defines the HAS_SIGINFO_SI_VALUE symbol,
+       which indicates that the siginfo_t struct has the si_value member.
+
 d_signbit (d_signbit.U):
        This variable conditionally defines the HAS_SIGNBIT symbol, which
        indicates to the C program that the signbit() routine is available
@@ -2865,7 +2946,7 @@ drand48_r_proto (d_drand48_r.U):
 dtrace (usedtrace.U):
        This variable holds the location of the dtrace executable.
 
-dtraceobject (usedtrace.U):
+dtraceobject (dtraceobject.U):
        Whether we need to build an object file with the dtrace tool.
 
 dynamic_ext (Extensions.U):
@@ -3692,6 +3773,10 @@ i_vfork (i_vfork.U):
        This variable conditionally defines the I_VFORK symbol, and indicates
        whether a C program should include vfork.h.
 
+i_xlocale (d_newlocale.U):
+       This symbol, if defined, indicates to the C program that it should
+       include <xlocale.h> to get uselocale() and its friends
+
 ignore_versioned_solibs (libs.U):
        This variable should be non-empty if non-versioned shared
        libraries (libfoo.so.x.y) are to be ignored (because they
@@ -4078,12 +4163,18 @@ longdblinfbytes (infnan.U):
 
 longdblkind (d_longdbl.U):
        This variable, if defined, encodes the type of a long double:
-       0 = double, 1 = IEEE 754 128-bit little endian,
-       2 = IEEE 754 128-bit big endian, 3 = x86 80-bit little endian,
-       4 = x86 80-bit big endian, 5 = double-double 128-bit little endian,
-       6 = double-double 128-bit big endian, -1 = unknown format.
+       0 = double,
+       1 = IEEE 754 128-bit little endian,
+       2 = IEEE 754 128-bit big endian,
+       3 = x86 80-bit little endian,
+       4 = x86 80-bit big endian,
+       5 = double-double 128-bit little endian,
+       6 = double-double 128-bit big endian,
+       7 = 128-bit mixed double-double (64-bit LEs in BE),
+       8 = 128-bit mixed double-double (64-bit BEs in LE),
+       -1 = unknown format.
 
-longdblmantbits (longdblmant.U):
+longdblmantbits (mantbits.U):
        This symbol, if defined, tells how many mantissa bits
        there are in long double precision floating point format.
        Note that this can be LDBL_MANT_DIG minus one,
index 031118e..d4566ad 100755 (executable)
@@ -546,6 +546,8 @@ use File::Glob qw(:case);
             qw(t/Path-Class.t),
             qr{^xt/},
         ],
+        # https://github.com/rpcme/File-Path/pull/34
+        'CUSTOMIZED' => [ qw( lib/File/Path.pm t/Path_win32.t ) ],
     },
 
     'File::Temp' => {
@@ -840,7 +842,7 @@ use File::Glob qw(:case);
     },
 
     'Module::CoreList' => {
-        'DISTRIBUTION' => 'BINGOS/Module-CoreList-5.20160121.tar.gz',
+        'DISTRIBUTION' => 'BINGOS/Module-CoreList-5.20160320.tar.gz',
         'FILES'        => q[dist/Module-CoreList],
     },
 
@@ -976,7 +978,7 @@ use File::Glob qw(:case);
     },
 
     'podlators' => {
-        'DISTRIBUTION' => 'RRA/podlators-4.06.tar.gz',
+        'DISTRIBUTION' => 'RRA/podlators-4.07.tar.gz',
         'FILES'        => q[cpan/podlators pod/perlpodstyle.pod],
 
         'MAP' => {
@@ -1161,7 +1163,7 @@ use File::Glob qw(:case);
     # correct for this (and Thread::Semaphore, threads, and threads::shared)
     # to be under dist/ rather than cpan/
     'Thread::Queue' => {
-        'DISTRIBUTION' => 'JDHEDDEN/Thread-Queue-3.07.tar.gz',
+        'DISTRIBUTION' => 'JDHEDDEN/Thread-Queue-3.09.tar.gz',
         'FILES'        => q[dist/Thread-Queue],
         'EXCLUDED'     => [
             qr{^examples/},
@@ -1185,7 +1187,7 @@ use File::Glob qw(:case);
     },
 
     'threads' => {
-        'DISTRIBUTION' => 'JDHEDDEN/threads-2.02.tar.gz',
+        'DISTRIBUTION' => 'JDHEDDEN/threads-2.07.tar.gz',
         'FILES'        => q[dist/threads],
         'EXCLUDED'     => [
             qr{^examples/},
@@ -1197,7 +1199,7 @@ use File::Glob qw(:case);
     },
 
     'threads::shared' => {
-        'DISTRIBUTION' => 'JDHEDDEN/threads-shared-1.48.tar.gz',
+        'DISTRIBUTION' => 'JDHEDDEN/threads-shared-1.51.tar.gz',
         'FILES'        => q[dist/threads-shared],
         'EXCLUDED'     => [
             qw( examples/class.pl
@@ -1281,10 +1283,6 @@ use File::Glob qw(:case);
         'CUSTOMIZED'   => [
             qw( lib/version.pm
                 ),
-
-            # Merged upstream, waiting for new CPAN release: see CPAN RT#92721
-            qw( vutil.c
-                ),
         ],
 
         'MAP' => {
index f2fcf12..94732fe 100755 (executable)
@@ -30,7 +30,7 @@ perl executables and show how much each test has gotten better or worse.
 
 It is modelled on the F<perlbench> tool, but since it measures instruction
 reads etc., rather than timings, it is much more precise and reproducible.
-It is also considerably faster, and is capable or running tests in
+It is also considerably faster, and is capable of running tests in
 parallel (with C<-j>). Rather than  displaying a single relative
 percentage per test/perl combination, it displays values for 13 different
 measurements, such as instruction reads, conditional branch misses etc.
index b123dc3..f92c7c8 100644 (file)
@@ -8,26 +8,26 @@
 
 # Package name      : perl5
 # Source directory  : .
-# Configuration time: Wed Apr  9 12:26:42 CEST 2014
-# Configured by     : merijn
-# Target system     : linux lx09 3.11.10-7-desktop #1 smp preempt mon feb 3 09:41:24 utc 2014 (750023e) i686 i686 i386 gnulinux 
+# Configuration time: Sat Apr 23 12:25:12 BST 2016
+# Configured by     : aaron
+# Target system     : darwin daybreak 13.4.0 darwin kernel version 13.4.0: mon jan 11 18:17:34 pst 2016; root:xnu-2422.115.15~1release_x86_64 x86_64 i386 macbookpro11,3 darwin 
 
 : Configure command line arguments.
-config_arg0='./Configure'
-config_args='-Dusedevel -Duse64bitint -des'
+config_arg0='Configure'
+config_args='-des -Dusedevel -Dprefix=/tmp/mblead'
 config_argc=3
-config_arg1='-Dusedevel'
-config_arg2='-Duse64bitint'
-config_arg3='-des'
+config_arg1='-des'
+config_arg2='-Dusedevel'
+config_arg3='-Dprefix=/tmp/mblead'
 
 Author=''
-Date='$Date'
+Date=''
 Header=''
-Id='$Id'
+Id=''
 Locker=''
-Log='$Log'
-RCSfile='$RCSfile'
-Revision='$Revision'
+Log=''
+RCSfile=''
+Revision=''
 Source=''
 State=''
 _a='.a'
@@ -35,44 +35,43 @@ _exe=''
 _o='.o'
 afs='false'
 afsroot='/afs'
-alignbytes='4'
+alignbytes='8'
 ansi2knr=''
 aphostname='/bin/hostname'
 api_revision='5'
-api_subversion='9'
-api_version='23'
-api_versionstring='5.23.9'
+api_subversion='0'
+api_version='24'
+api_versionstring='5.24.0'
 ar='ar'
-archlib='/pro/lib/perl5/5.23.9/i686-linux-64int'
-archlibexp='/pro/lib/perl5/5.23.9/i686-linux-64int'
-archname64='64int'
-archname='i686-linux-64int'
+archlib='/tmp/mblead/lib/perl5/5.24.0/darwin-2level'
+archlibexp='/tmp/mblead/lib/perl5/5.24.0/darwin-2level'
+archname64=''
+archname='darwin-2level'
 archobjs=''
 asctime_r_proto='0'
 awk='awk'
 baserev='5.0'
 bash=''
-bin='/pro/bin'
-bin_ELF='define'
-binexp='/pro/bin'
+bin='/tmp/mblead/bin'
+bin_ELF='undef'
+binexp='/tmp/mblead/bin'
 bison='bison'
-bootstrap_charset='undef'
 byacc='byacc'
-byteorder='12345678'
+byteorder='ffff'
 c=''
 castflags='0'
 cat='cat'
 cc='cc'
-cccdlflags='-fPIC'
-ccdlflags='-Wl,-E'
-ccflags='-fwrapv -fno-strict-aliasing -pipe -fstack-protector -I/pro/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'
-ccflags_uselargefiles='-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'
+cccdlflags=' '
+ccdlflags=' '
+ccflags='-fno-common -DPERL_DARWIN -mmacosx-version-min=10.9 -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -I/opt/local/include -DPERL_USE_SAFE_PUTENV'
+ccflags_uselargefiles=''
 ccname='gcc'
 ccsymbols=''
 ccversion=''
-cf_by='merijn'
-cf_email='hmbrand@cpan.org'
-cf_time='Wed Apr  9 12:26:42 CEST 2014'
+cf_by='aaron'
+cf_email='aaron@daybreak.nonet'
+cf_time='Sat Apr 23 12:25:12 BST 2016'
 charbits='8'
 charsize='1'
 chgrp=''
@@ -87,18 +86,18 @@ cpio=''
 cpp='cpp'
 cpp_stuff='42'
 cppccsymbols=''
-cppflags='-fwrapv -fno-strict-aliasing -pipe -fstack-protector -I/pro/local/include'
+cppflags='-fno-common -DPERL_DARWIN -mmacosx-version-min=10.9 -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -I/opt/local/include'
 cpplast='-'
 cppminus='-'
 cpprun='cc  -E'
 cppstdin='cc  -E'
-cppsymbols='__ATOMIC_ACQ_REL=4 __ATOMIC_ACQUIRE=2 __ATOMIC_CONSUME=1 __ATOMIC_HLE_ACQUIRE=65536 __ATOMIC_HLE_RELEASE=131072 __ATOMIC_RELAXED=0 __ATOMIC_RELEASE=3 __ATOMIC_SEQ_CST=5 __BIGGEST_ALIGNMENT__=16 __BYTE_ORDER__=1234 __CHAR16_TYPE__=short\ unsigned\ int __CHAR32_TYPE__=unsigned\ int __CHAR_BIT__=8 __code_model_32__=1 __DBL_DECIMAL_DIG__=17 __DBL_DENORM_MIN__=((double)4.94065645841246544177e-324L) __DBL_DIG__=15 __DBL_EPSILON__=((double)2.22044604925031308085e-16L) __DBL_HAS_DENORM__=1 __DBL_HAS_INFINITY__=1 __DBL_HAS_QUIET_NAN__=1 __DBL_MANT_DIG__=53 __DBL_MAX_10_EXP__=308 __DBL_MAX__=((double)1.79769313486231570815e+308L) __DBL_MAX_EXP__=1024 __DBL_MIN_10_EXP__=(-307) __DBL_MIN__=((double)2.22507385850720138309e-308L) __DBL_MIN_EXP__=(-1021) __DEC128_EPSILON__=1E-33DL __DEC128_MANT_DIG__=34 __DEC128_MAX__=9.999999999999999999999999999999999E6144DL __DEC128_MAX_EXP__=6145 __DEC128_MIN__=1E-6143DL __DEC128_MIN_EXP__=(-6142) __DEC128_SUBNORMAL_MIN__=0.000000000000000000000000000000001E-6143DL __DEC32_EPSILON__=1E-6DF __DEC32_MANT_DIG__=7 __DEC32_MAX__=9.999999E96DF __DEC32_MAX_EXP__=97 __DEC32_MIN__=1E-95DF __DEC32_MIN_EXP__=(-94) __DEC32_SUBNORMAL_MIN__=0.000001E-95DF __DEC64_EPSILON__=1E-15DD __DEC64_MANT_DIG__=16 __DEC64_MAX__=9.999999999999999E384DD __DEC64_MAX_EXP__=385 __DEC64_MIN__=1E-383DD __DEC64_MIN_EXP__=(-382) __DEC64_SUBNORMAL_MIN__=0.000000000000001E-383DD __DEC_EVAL_METHOD__=2 __DECIMAL_BID_FORMAT__=1 __DECIMAL_DIG__=21 __ELF__=1 _FILE_OFFSET_BITS=64 __FINITE_MATH_ONLY__=0 __FLOAT_WORD_ORDER__=1234 __FLT_DECIMAL_DIG__=9 __FLT_DENORM_MIN__=1.40129846432481707092e-45F __FLT_DIG__=6 __FLT_EPSILON__=1.19209289550781250000e-7F __FLT_EVAL_METHOD__=2 __FLT_HAS_DENORM__=1 __FLT_HAS_INFINITY__=1 __FLT_HAS_QUIET_NAN__=1 __FLT_MANT_DIG__=24 __FLT_MAX_10_EXP__=38 __FLT_MAX__=3.40282346638528859812e+38F __FLT_MAX_EXP__=128 __FLT_MIN_10_EXP__=(-37) __FLT_MIN__=1.17549435082228750797e-38F __FLT_MIN_EXP__=(-125) __FLT_RADIX__=2 __GCC_ATOMIC_BOOL_LOCK_FREE=2 __GCC_ATOMIC_CHAR16_T_LOCK_FREE=2 __GCC_ATOMIC_CHAR32_T_LOCK_FREE=2 __GCC_ATOMIC_CHAR_LOCK_FREE=2 __GCC_ATOMIC_INT_LOCK_FREE=2 __GCC_ATOMIC_LLONG_LOCK_FREE=2 __GCC_ATOMIC_LONG_LOCK_FREE=2 __GCC_ATOMIC_POINTER_LOCK_FREE=2 __GCC_ATOMIC_SHORT_LOCK_FREE=2 __GCC_ATOMIC_TEST_AND_SET_TRUEVAL=1 __GCC_ATOMIC_WCHAR_T_LOCK_FREE=2 __GCC_HAVE_DWARF2_CFI_ASM=1 __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1=1 __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2=1 __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4=1 __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8=1 __GLIBC__=2 __GLIBC_MINOR__=18 __GNUC__=4 __GNUC_GNU_INLINE__=1 __GNUC_MINOR__=8 __GNUC_PATCHLEVEL__=1 __GNU_LIBRARY__=6 __gnu_linux__=1 __GXX_ABI_VERSION=1002 __i386=1 __i386__=1 i386=1 __i586=1 __i586__=1 __INT16_C=__INT16_C __INT16_MAX__=32767 __INT16_TYPE__=short\ int __INT32_C=__INT32_C __INT32_MAX__=2147483647 __INT32_TYPE__=int __INT64_C=__INT64_C __INT64_MAX__=9223372036854775807LL __INT64_TYPE__=long\ long\ int __INT8_C=__INT8_C __INT8_MAX__=127 __INT8_TYPE__=signed\ char __INT_FAST16_MAX__=2147483647 __INT_FAST16_TYPE__=int __INT_FAST32_MAX__=2147483647 __INT_FAST32_TYPE__=int __INT_FAST64_MAX__=9223372036854775807LL __INT_FAST64_TYPE__=long\ long\ int __INT_FAST8_MAX__=127 __INT_FAST8_TYPE__=signed\ char __INT_LEAST16_MAX__=32767 __INT_LEAST16_TYPE__=short\ int __INT_LEAST32_MAX__=2147483647 __INT_LEAST32_TYPE__=int __INT_LEAST64_MAX__=9223372036854775807LL __INT_LEAST64_TYPE__=long\ long\ int __INT_LEAST8_MAX__=127 __INT_LEAST8_TYPE__=signed\ char __INT_MAX__=2147483647 __INTMAX_C=__INTMAX_C __INTMAX_MAX__=9223372036854775807LL __INTMAX_TYPE__=long\ long\ int __INTPTR_MAX__=2147483647 __INTPTR_TYPE__=int _LARGEFILE_SOURCE=1 __LDBL_DENORM_MIN__=3.64519953188247460253e-4951L __LDBL_DIG__=18 __LDBL_EPSILON__=1.08420217248550443401e-19L __LDBL_HAS_DENORM__=1 __LDBL_HAS_INFINITY__=1 __LDBL_HAS_QUIET_NAN__=1 __LDBL_MANT_DIG__=64 __LDBL_MAX_10_EXP__=4932 __LDBL_MAX__=1.18973149535723176502e+4932L __LDBL_MAX_EXP__=16384 __LDBL_MIN_10_EXP__=(-4931) __LDBL_MIN__=3.36210314311209350626e-4932L __LDBL_MIN_EXP__=(-16381) __linux=1 __linux__=1 linux=1 __LONG_LONG_MAX__=9223372036854775807LL __LONG_MAX__=2147483647L __ORDER_BIG_ENDIAN__=4321 __ORDER_LITTLE_ENDIAN__=1234 __ORDER_PDP_ENDIAN__=3412 __pentium=1 __pentium__=1 _POSIX_C_SOURCE=200809L _POSIX_SOURCE=1 __PRAGMA_REDEFINE_EXTNAME=1 __PTRDIFF_MAX__=2147483647 __PTRDIFF_TYPE__=int __REGISTER_PREFIX__= __SCHAR_MAX__=127 __SHRT_MAX__=32767 __SIG_ATOMIC_MAX__=2147483647 __SIG_ATOMIC_MIN__=(-2147483647\ -\ 1) __SIG_ATOMIC_TYPE__=int __SIZE_MAX__=4294967295U __SIZEOF_DOUBLE__=8 __SIZEOF_FLOAT__=4 __SIZEOF_INT__=4 __SIZEOF_LONG__=4 __SIZEOF_LONG_DOUBLE__=12 __SIZEOF_LONG_LONG__=8 __SIZEOF_POINTER__=4 __SIZEOF_PTRDIFF_T__=4 __SIZEOF_SHORT__=2 __SIZEOF_SIZE_T__=4 __SIZEOF_WCHAR_T__=4 __SIZEOF_WINT_T__=4 __SIZE_TYPE__=unsigned\ int __STDC__=1 __STDC_HOSTED__=1 __STDC_IEC_559__=1 __STDC_IEC_559_COMPLEX__=1 __STDC_ISO_10646__=201103L __STDC_NO_THREADS__=1 _STDC_PREDEF_H=1 __UINT16_C=__UINT16_C __UINT16_MAX__=65535 __UINT16_TYPE__=short\ unsigned\ int __UINT32_C=__UINT32_C __UINT32_MAX__=4294967295U __UINT32_TYPE__=unsigned\ int __UINT64_C=__UINT64_C __UINT64_MAX__=18446744073709551615ULL __UINT64_TYPE__=long\ long\ unsigned\ int __UINT8_C=__UINT8_C __UINT8_MAX__=255 __UINT8_TYPE__=unsigned\ char __UINT_FAST16_MAX__=4294967295U __UINT_FAST16_TYPE__=unsigned\ int __UINT_FAST32_MAX__=4294967295U __UINT_FAST32_TYPE__=unsigned\ int __UINT_FAST64_MAX__=18446744073709551615ULL __UINT_FAST64_TYPE__=long\ long\ unsigned\ int __UINT_FAST8_MAX__=255 __UINT_FAST8_TYPE__=unsigned\ char __UINT_LEAST16_MAX__=65535 __UINT_LEAST16_TYPE__=short\ unsigned\ int __UINT_LEAST32_MAX__=4294967295U __UINT_LEAST32_TYPE__=unsigned\ int __UINT_LEAST64_MAX__=18446744073709551615ULL __UINT_LEAST64_TYPE__=long\ long\ unsigned\ int __UINT_LEAST8_MAX__=255 __UINT_LEAST8_TYPE__=unsigned\ char __UINTMAX_C=__UINTMAX_C __UINTMAX_MAX__=18446744073709551615ULL __UINTMAX_TYPE__=long\ long\ unsigned\ int __UINTPTR_MAX__=4294967295U __UINTPTR_TYPE__=unsigned\ int __unix=1 __unix__=1 unix=1 __USE_BSD=1 __USE_FILE_OFFSET64=1 __USE_LARGEFILE=1 __USE_MISC=1 __USE_POSIX=1 __USE_POSIX199309=1 __USE_POSIX199506=1 __USE_POSIX2=1 __USER_LABEL_PREFIX__= __USE_SVID=1 __VERSION__="4.8.1\ 20130909\ [gcc-4_8-branch\ revision\ 202388]" __WCHAR_MAX__=2147483647L __WCHAR_MIN__=(-2147483647L\ -\ 1) __WCHAR_TYPE__=long\ int __WINT_MAX__=4294967295U __WINT_MIN__=0U __WINT_TYPE__=unsigned\ int'
+cppsymbols='_FORTIFY_SOURCE=2 _LP64=1 __BYTE_ORDER__=1234 __GNUC_MINOR__=2 __GNUC__=4 __LITTLE_ENDIAN__=1 __LP64__=1 __MACH__=1 __PIC__=2 __STDC__=1 __amd64=1 __amd64__=1 __clang__=1 __pic__=2 __x86_64=1 __x86_64__=1'
 crypt_r_proto='0'
 cryptlib=''
-csh='tcsh'
+csh='csh'
 ctermid_r_proto='0'
 ctime_r_proto='0'
-d_Gconvert='gcvt((x),(n),(b))'
+d_Gconvert='sprintf((b),"%.*g",(n),(x))'
 d_PRIEUldbl='define'
 d_PRIFUldbl='define'
 d_PRIGUldbl='define'
@@ -115,14 +114,14 @@ d_SCNfldbl='define'
 d__fwalk='undef'
 d_access='define'
 d_accessx='undef'
-d_acosh='undef'
+d_acosh='define'
 d_aintl='undef'
 d_alarm='define'
 d_archlib='define'
 d_asctime64='undef'
 d_asctime_r='undef'
-d_asinh='undef'
-d_atanh='undef'
+d_asinh='define'
+d_atanh='define'
 d_atolf='undef'
 d_atoll='define'
 d_attribute_deprecated='define'
@@ -133,10 +132,10 @@ d_attribute_noreturn='define'
 d_attribute_pure='define'
 d_attribute_unused='define'
 d_attribute_warn_unused_result='define'
-d_backtrace='undef'
+d_backtrace='define'
 d_bcmp='define'
 d_bcopy='define'
-d_bsd='undef'
+d_bsd='define'
 d_bsdgetpgrp='undef'
 d_bsdsetpgrp='undef'
 d_builtin_choose_expr='define'
@@ -145,17 +144,17 @@ d_bzero='define'
 d_c99_variadic_macros='define'
 d_casti32='undef'
 d_castneg='define'
-d_cbrt='undef'
+d_cbrt='define'
 d_charvspr='undef'
 d_chown='define'
 d_chroot='define'
 d_chsize='undef'
 d_class='undef'
-d_clearenv='define'
+d_clearenv='undef'
 d_closedir='define'
 d_cmsghdr_s='define'
 d_const='define'
-d_copysign='undef'
+d_copysign='define'
 d_copysignl='define'
 d_cplusplus='undef'
 d_crypt='define'
@@ -165,15 +164,15 @@ d_ctermid='define'
 d_ctermid_r='undef'
 d_ctime64='undef'
 d_ctime_r='undef'
-d_cuserid='define'
+d_cuserid='undef'
 d_dbl_dig='define'
-d_dbminitproto='define'
+d_dbminitproto='undef'
 d_difftime64='undef'
 d_difftime='define'
 d_dir_dd_fd='undef'
 d_dirfd='define'
-d_dirnamlen='undef'
-d_dladdr='undef'
+d_dirnamlen='define'
+d_dladdr='define'
 d_dlerror='define'
 d_dlopen='define'
 d_dlsymun='undef'
@@ -181,7 +180,8 @@ d_dosuid='undef'
 d_drand48_r='undef'
 d_drand48proto='define'
 d_dup2='define'
-d_eaccess='define'
+d_duplocale='define'
+d_eaccess='undef'
 d_endgrent='define'
 d_endgrent_r='undef'
 d_endhent='define'
@@ -195,11 +195,11 @@ d_endpwent_r='undef'
 d_endsent='define'
 d_endservent_r='undef'
 d_eofnblk='define'
-d_erf='undef'
-d_erfc='undef'
+d_erf='define'
+d_erfc='define'
 d_eunice='undef'
-d_exp2='undef'
-d_expm1='undef'
+d_exp2='define'
+d_expm1='define'
 d_faststdio='define'
 d_fchdir='define'
 d_fchmod='define'
@@ -209,29 +209,29 @@ d_fcntl_can_lock='define'
 d_fd_macros='define'
 d_fd_set='define'
 d_fdclose='undef'
-d_fdim='undef'
-d_fds_bits='undef'
-d_fegetround='undef'
+d_fdim='define'
+d_fds_bits='define'
+d_fegetround='define'
 d_fgetpos='define'
-d_finite='define'
-d_finitel='define'
+d_finite='undef'
+d_finitel='undef'
 d_flexfnam='define'
 d_flock='define'
 d_flockproto='define'
-d_fma='undef'
-d_fmax='undef'
-d_fmin='undef'
+d_fma='define'
+d_fmax='define'
+d_fmin='define'
 d_fork='define'
 d_fp_class='undef'
 d_fp_classify='undef'
 d_fp_classl='undef'
 d_fpathconf='define'
 d_fpclass='undef'
-d_fpclassify='undef'
+d_fpclassify='define'
 d_fpclassl='undef'
 d_fpgetround='undef'
 d_fpos64_t='undef'
-d_freelocale='undef'
+d_freelocale='define'
 d_frexpl='define'
 d_fs_data_s='undef'
 d_fseeko='define'
@@ -247,7 +247,7 @@ d_gdbmndbm_h_uses_prototypes='undef'
 d_getaddrinfo='define'
 d_getcwd='define'
 d_getespwnam='undef'
-d_getfsstat='undef'
+d_getfsstat='define'
 d_getgrent='define'
 d_getgrent_r='undef'
 d_getgrgid_r='undef'
@@ -265,7 +265,7 @@ d_getitimer='define'
 d_getlogin='define'
 d_getlogin_r='undef'
 d_getmnt='undef'
-d_getmntent='define'
+d_getmntent='undef'
 d_getnameinfo='define'
 d_getnbyaddr='define'
 d_getnbyname='define'
@@ -299,17 +299,17 @@ d_getservbyname_r='undef'
 d_getservbyport_r='undef'
 d_getservent_r='undef'
 d_getservprotos='define'
-d_getspnam='define'
+d_getspnam='undef'
 d_getspnam_r='undef'
 d_gettimeod='define'
 d_gmtime64='undef'
 d_gmtime_r='undef'
-d_gnulibc='define'
+d_gnulibc='undef'
 d_grpasswd='define'
-d_hasmntopt='define'
+d_hasmntopt='undef'
 d_htonl='define'
-d_hypot='undef'
-d_ilogb='undef'
+d_hypot='define'
+d_ilogb='define'
 d_ilogbl='define'
 d_inc_version_list='undef'
 d_index='undef'
@@ -323,55 +323,56 @@ d_ipv6_mreq='define'
 d_ipv6_mreq_source='undef'
 d_isascii='define'
 d_isblank='define'
-d_isfinite='undef'
+d_isfinite='define'
 d_isfinitel='undef'
 d_isinf='define'
 d_isinfl='undef'
 d_isless='undef'
 d_isnan='define'
-d_isnanl='define'
-d_isnormal='undef'
-d_j0='undef'
+d_isnanl='undef'
+d_isnormal='define'
+d_j0='define'
 d_j0l='undef'
 d_killpg='define'
-d_lc_monetary_2008='undef'
+d_lc_monetary_2008='define'
 d_lchown='define'
 d_ldbl_dig='define'
 d_ldexpl='define'
-d_lgamma='undef'
-d_lgamma_r='undef'
-d_libm_lib_version='define'
+d_lgamma='define'
+d_lgamma_r='define'
+d_libm_lib_version='undef'
 d_libname_unique='undef'
 d_link='define'
-d_llrint='undef'
-d_llrintl='undef'
-d_llround='undef'
-d_llroundl='undef'
+d_llrint='define'
+d_llrintl='define'
+d_llround='define'
+d_llroundl='define'
 d_localtime64='undef'
 d_localtime_r='undef'
 d_localtime_r_needs_tzset='undef'
 d_locconv='define'
 d_lockf='define'
-d_log1p='undef'
-d_log2='undef'
-d_logb='undef'
+d_log1p='define'
+d_log2='define'
+d_logb='define'
 d_longdbl='define'
 d_longlong='define'
-d_lrint='undef'
-d_lrintl='undef'
-d_lround='undef'
-d_lroundl='undef'
+d_lrint='define'
+d_lrintl='define'
+d_lround='define'
+d_lroundl='define'
 d_lseekproto='define'
 d_lstat='define'
 d_madvise='define'
-d_malloc_good_size='undef'
-d_malloc_size='undef'
+d_malloc_good_size='define'
+d_malloc_size='define'
 d_mblen='define'
 d_mbstowcs='define'
 d_mbtowc='define'
 d_memchr='define'
 d_memcmp='define'
 d_memcpy='define'
+d_memmem='define'
 d_memmove='define'
 d_memset='define'
 d_mkdir='define'
@@ -383,7 +384,6 @@ d_mktime64='undef'
 d_mktime='define'
 d_mmap='define'
 d_modfl='define'
-d_modfl_pow32_bug='undef'
 d_modflproto='define'
 d_mprotect='define'
 d_msg='define'
@@ -391,7 +391,7 @@ d_msg_ctrunc='define'
 d_msg_dontroute='define'
 d_msg_oob='define'
 d_msg_peek='define'
-d_msg_proxy='define'
+d_msg_proxy='undef'
 d_msgctl='define'
 d_msgget='define'
 d_msghdr_s='define'
@@ -400,13 +400,13 @@ d_msgsnd='define'
 d_msync='define'
 d_munmap='define'
 d_mymalloc='undef'
-d_nan='undef'
+d_nan='define'
 d_ndbm='define'
 d_ndbm_h_uses_prototypes='define'
-d_nearbyint='undef'
-d_newlocale='undef'
-d_nextafter='undef'
-d_nexttoward='undef'
+d_nearbyint='define'
+d_newlocale='define'
+d_nextafter='define'
+d_nexttoward='define'
 d_nice='define'
 d_nl_langinfo='define'
 d_nv_preserves_uv='undef'
@@ -421,47 +421,49 @@ d_pause='define'
 d_perl_otherlibdirs='undef'
 d_phostname='undef'
 d_pipe='define'
-d_poll='define'
+d_poll='undef'
 d_portable='define'
-d_prctl='define'
-d_prctl_set_name='define'
+d_prctl='undef'
+d_prctl_set_name='undef'
 d_printf_format_null='define'
-d_procselfexe='define'
+d_procselfexe='undef'
 d_pseudofork='undef'
-d_pthread_atfork='undef'
+d_pthread_atfork='define'
 d_pthread_attr_setscope='define'
 d_pthread_yield='undef'
 d_ptrdiff_t='define'
 d_pwage='undef'
-d_pwchange='undef'
-d_pwclass='undef'
+d_pwchange='define'
+d_pwclass='define'
 d_pwcomment='undef'
-d_pwexpire='undef'
+d_pwexpire='define'
 d_pwgecos='define'
 d_pwpasswd='define'
 d_pwquota='undef'
-d_qgcvt='define'
+d_qgcvt='undef'
 d_quad='define'
 d_random_r='undef'
+d_re_comp='undef'
 d_readdir64_r='undef'
 d_readdir='define'
 d_readdir_r='undef'
 d_readlink='define'
 d_readv='define'
 d_recvmsg='define'
-d_regcomp='undef'
-d_remainder='undef'
-d_remquo='undef'
+d_regcmp='undef'
+d_regcomp='define'
+d_remainder='define'
+d_remquo='define'
 d_rename='define'
 d_rewinddir='define'
-d_rint='undef'
+d_rint='define'
 d_rmdir='define'
-d_round='undef'
+d_round='define'
 d_safebcpy='undef'
 d_safemcpy='undef'
 d_sanemcmp='define'
 d_sbrkproto='define'
-d_scalbn='undef'
+d_scalbn='define'
 d_scalbnl='define'
 d_sched_yield='define'
 d_scm_rights='define'
@@ -497,11 +499,11 @@ d_setprotoent_r='undef'
 d_setpwent='define'
 d_setpwent_r='undef'
 d_setregid='define'
-d_setresgid='define'
-d_setresuid='define'
+d_setresgid='undef'
+d_setresuid='undef'
 d_setreuid='define'
-d_setrgid='undef'
-d_setruid='undef'
+d_setrgid='define'
+d_setruid='define'
 d_setsent='define'
 d_setservent_r='undef'
 d_setsid='define'
@@ -513,13 +515,14 @@ d_shmctl='define'
 d_shmdt='define'
 d_shmget='define'
 d_sigaction='define'
-d_siginfo_si_addr='undef'
-d_siginfo_si_band='undef'
-d_siginfo_si_errno='undef'
-d_siginfo_si_pid='undef'
-d_siginfo_si_status='undef'
-d_siginfo_si_uid='undef'
-d_siginfo_si_value='undef'
+d_siginfo_si_addr='define'
+d_siginfo_si_band='define'
+d_siginfo_si_errno='define'
+d_siginfo_si_fd='undef'
+d_siginfo_si_pid='define'
+d_siginfo_si_status='define'
+d_siginfo_si_uid='define'
+d_siginfo_si_value='define'
 d_signbit='define'
 d_sigprocmask='define'
 d_sigsetjmp='define'
@@ -527,7 +530,7 @@ d_sin6_scope_id='define'
 d_sitearch='define'
 d_snprintf='define'
 d_sockaddr_in6='define'
-d_sockaddr_sa_len='undef'
+d_sockaddr_sa_len='define'
 d_sockatmark='define'
 d_sockatmarkproto='define'
 d_socket='define'
@@ -546,10 +549,10 @@ d_statfs_f_flags='define'
 d_statfs_s='define'
 d_static_inline='define'
 d_statvfs='define'
-d_stdio_cnt_lval='undef'
+d_stdio_cnt_lval='define'
 d_stdio_ptr_lval='define'
-d_stdio_ptr_lval_nochange_cnt='undef'
-d_stdio_ptr_lval_sets_cnt='define'
+d_stdio_ptr_lval_nochange_cnt='define'
+d_stdio_ptr_lval_sets_cnt='undef'
 d_stdio_stream_array='undef'
 d_stdiobase='define'
 d_stdstdio='define'
@@ -560,8 +563,8 @@ d_strerrm='strerror(e)'
 d_strerror='define'
 d_strerror_r='undef'
 d_strftime='define'
-d_strlcat='undef'
-d_strlcpy='undef'
+d_strlcat='define'
+d_strlcpy='define'
 d_strtod='define'
 d_strtol='define'
 d_strtold='define'
@@ -583,34 +586,34 @@ d_tcgetpgrp='define'
 d_tcsetpgrp='define'
 d_telldir='define'
 d_telldirproto='define'
-d_tgamma='undef'
+d_tgamma='define'
 d_time='define'
 d_timegm='define'
 d_times='define'
 d_tm_tm_gmtoff='define'
 d_tm_tm_zone='define'
 d_tmpnam_r='undef'
-d_trunc='undef'
+d_trunc='define'
 d_truncate='define'
-d_truncl='undef'
+d_truncl='define'
 d_ttyname_r='undef'
 d_tzname='define'
 d_u32align='define'
 d_ualarm='define'
 d_umask='define'
 d_uname='define'
-d_union_semun='undef'
+d_union_semun='define'
 d_unordered='undef'
 d_unsetenv='define'
-d_uselocale='undef'
+d_uselocale='define'
 d_usleep='define'
 d_usleepproto='define'
-d_ustat='define'
+d_ustat='undef'
 d_vendorarch='undef'
 d_vendorbin='undef'
 d_vendorlib='undef'
 d_vendorscript='undef'
-d_vfork='undef'
+d_vfork='define'
 d_void_closedir='undef'
 d_voidsig='define'
 d_voidtty=''
@@ -619,30 +622,31 @@ d_vprintf='define'
 d_vsnprintf='define'
 d_wait4='define'
 d_waitpid='define'
-d_wcscmp='undef'
+d_wcscmp='define'
 d_wcstombs='define'
-d_wcsxfrm='undef'
+d_wcsxfrm='define'
 d_wctomb='define'
 d_writev='define'
 d_xenix='undef'
 date='date'
-db_hashtype='u_int32_t'
-db_prefixtype='size_t'
-db_version_major='4'
-db_version_minor='8'
-db_version_patch='30'
+db_hashtype='int'
+db_prefixtype='int'
+db_version_major='1'
+db_version_minor='0'
+db_version_patch='0'
 direntrytype='struct dirent'
-dlext='so'
+dlext='bundle'
 dlsrc='dl_dlopen.xs'
 doubleinfbytes='0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x7f'
 doublekind='3'
 doublemantbits='52'
-doublenanbytes='0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x7f'
+doublenanbytes='0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff'
 doublesize='8'
 drand01='Perl_drand48()'
 drand48_r_proto='0'
 dtrace=''
-dynamic_ext='arybase attributes B Compress/Raw/Bzip2 Compress/Raw/Zlib Cwd Data/Dumper DB_File Devel/Peek Devel/PPPort Digest/MD5 Digest/SHA Encode Fcntl File/DosGlob File/Glob Filter/Util/Call GDBM_File Hash/Util Hash/Util/FieldHash I18N/Langinfo IO IPC/SysV List/Util Math/BigInt/FastCalc MIME/Base64 mro NDBM_File ODBM_File Opcode PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via POSIX re SDBM_File Socket Storable Sys/Hostname Sys/Syslog threads threads/shared Tie/Hash/NamedCapture Time/HiRes Time/Piece Unicode/Collate Unicode/Normalize XS/APItest XS/Typemap'
+dtraceobject=''
+dynamic_ext='B Compress/Raw/Bzip2 Compress/Raw/Zlib Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Digest/MD5 Digest/SHA Encode Fcntl File/DosGlob File/Glob Filter/Util/Call GDBM_File Hash/Util Hash/Util/FieldHash I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 Math/BigInt/FastCalc NDBM_File Opcode POSIX PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Tie/Hash/NamedCapture Time/HiRes Time/Piece Unicode/Collate Unicode/Normalize XS/APItest XS/Typemap arybase attributes mro re threads threads/shared'
 eagain='EAGAIN'
 ebcdic='undef'
 echo='echo'
@@ -657,24 +661,24 @@ endservent_r_proto='0'
 eunicefix=':'
 exe_ext=''
 expr='expr'
-extensions='arybase attributes B Compress/Raw/Bzip2 Compress/Raw/Zlib Cwd Data/Dumper DB_File Devel/Peek Devel/PPPort Digest/MD5 Digest/SHA Encode Fcntl File/DosGlob File/Glob Filter/Util/Call GDBM_File Hash/Util Hash/Util/FieldHash I18N/Langinfo IO IPC/SysV List/Util Math/BigInt/FastCalc MIME/Base64 mro NDBM_File ODBM_File Opcode PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via POSIX re SDBM_File Socket Storable Sys/Hostname Sys/Syslog threads threads/shared Tie/Hash/NamedCapture Time/HiRes Time/Piece Unicode/Collate Unicode/Normalize XS/APItest XS/Typemap Archive/Tar Attribute/Handlers autodie AutoLoader autouse base B/Debug bignum Carp CGI Config/Perl/V constant CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Devel/SelfStubber Digest Dumpvalue encoding/warnings Env Errno Exporter ExtUtils/CBuilder ExtUtils/Command ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/ParseXS FileCache File/Fetch File/Find File/Path File/Temp Filter/Simple Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags if IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP lib libnet Locale/Codes Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/Build Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata Net/Ping NEXT Package/Constants Params/Check parent Parse/CPAN/Meta perlfaq PerlIO/via/QuotedPrint Perl/OSType Pod/Checker Pod/Escapes Pod/Functions Pod/Html podlators Pod/Parser Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Memoize Tie/RefHash Time/Local version XSLoader'
+extensions='B Compress/Raw/Bzip2 Compress/Raw/Zlib Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Digest/MD5 Digest/SHA Encode Fcntl File/DosGlob File/Glob Filter/Util/Call GDBM_File Hash/Util Hash/Util/FieldHash I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 Math/BigInt/FastCalc NDBM_File Opcode POSIX PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Tie/Hash/NamedCapture Time/HiRes Time/Piece Unicode/Collate Unicode/Normalize XS/APItest XS/Typemap arybase attributes mro re threads threads/shared Archive/Tar Attribute/Handlers AutoLoader B/Debug CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Codes Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Parse/CPAN/Meta Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Parser Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version'
 extern_C='extern'
 extras=''
 fflushNULL='define'
 fflushall='undef'
 find=''
-firstmakefile='makefile'
+firstmakefile='GNUmakefile'
 flex=''
-fpossize='16'
+fpossize='8'
 fpostype='fpos_t'
 freetype='void'
 from=':'
-full_ar='/usr/bin/ar'
-full_csh='/usr/bin/tcsh'
-full_sed='/usr/bin/sed'
+full_ar='/opt/local/bin/ar'
+full_csh='/bin/csh'
+full_sed='/opt/local/libexec/gnubin/sed'
 gccansipedantic=''
 gccosandvers=''
-gccversion='4.8.1 20130909 [gcc-4_8-branch revision 202388]'
+gccversion='4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)'
 getgrent_r_proto='0'
 getgrgid_r_proto='0'
 getgrnam_r_proto='0'
@@ -695,22 +699,22 @@ getservbyname_r_proto='0'
 getservbyport_r_proto='0'
 getservent_r_proto='0'
 getspnam_r_proto='0'
-gidformat='"lu"'
+gidformat='"u"'
 gidsign='1'
 gidsize='4'
 gidtype='gid_t'
 glibpth='/usr/shlib  /lib /usr/lib /usr/lib/386 /lib/386 /usr/ccs/lib /usr/ucblib /usr/local/lib '
 gmake='gmake'
 gmtime_r_proto='0'
-gnulibc_version='2.18'
+gnulibc_version=''
 grep='grep'
 groupcat='cat /etc/group'
 groupstype='gid_t'
 gzip='gzip'
 h_fcntl='false'
 h_sysfile='true'
-hint='recommended'
-hostcat='ypcat hosts'
+hint='previous'
+hostcat='cat /etc/hosts'
 hostgenerate=''
 hostosname=''
 hostperl=''
@@ -721,23 +725,23 @@ html3direxp=''
 i16size='2'
 i16type='short'
 i32size='4'
-i32type='long'
+i32type='int'
 i64size='8'
-i64type='long long'
+i64type='long'
 i8size='1'
 i8type='signed char'
 i_arpainet='define'
 i_assert='define'
 i_bfd='undef'
 i_bsdioctl=''
-i_crypt='define'
+i_crypt='undef'
 i_db='define'
-i_dbm='define'
+i_dbm='undef'
 i_dirent='define'
 i_dlfcn='define'
-i_execinfo='undef'
+i_execinfo='define'
 i_fcntl='undef'
-i_fenv='undef'
+i_fenv='define'
 i_float='define'
 i_fp='undef'
 i_fp_class='undef'
@@ -752,36 +756,36 @@ i_libutil='undef'
 i_limits='define'
 i_locale='define'
 i_machcthr='undef'
-i_malloc='define'
-i_mallocmalloc='undef'
+i_malloc='undef'
+i_mallocmalloc='define'
 i_math='define'
 i_memory='undef'
-i_mntent='define'
+i_mntent='undef'
 i_ndbm='define'
 i_netdb='define'
 i_neterrno='undef'
 i_netinettcp='define'
 i_niin='define'
-i_poll='define'
+i_poll='undef'
 i_prot='undef'
 i_pthread='define'
 i_pwd='define'
 i_quadmath='undef'
 i_rpcsvcdbm='undef'
 i_sgtty='undef'
-i_shadow='define'
-i_socks='define'
+i_shadow='undef'
+i_socks='undef'
 i_stdarg='define'
 i_stdbool='define'
 i_stddef='define'
-i_stdint='undef'
+i_stdint='define'
 i_stdlib='define'
 i_string='define'
 i_sunmath='undef'
 i_sysaccess='undef'
 i_sysdir='define'
 i_sysfile='define'
-i_sysfilio='undef'
+i_sysfilio='define'
 i_sysin='undef'
 i_sysioctl='define'
 i_syslog='define'
@@ -794,9 +798,9 @@ i_syspoll='define'
 i_sysresrc='define'
 i_syssecrt='undef'
 i_sysselct='define'
-i_syssockio='undef'
+i_syssockio='define'
 i_sysstat='define'
-i_sysstatfs='define'
+i_sysstatfs='undef'
 i_sysstatvfs='define'
 i_systime='define'
 i_systimek='undef'
@@ -805,43 +809,44 @@ i_systypes='define'
 i_sysuio='define'
 i_sysun='define'
 i_sysutsname='define'
-i_sysvfs='define'
+i_sysvfs='undef'
 i_syswait='define'
 i_termio='undef'
 i_termios='define'
-i_time='define'
+i_time='undef'
 i_unistd='define'
-i_ustat='define'
+i_ustat='undef'
 i_utime='define'
-i_values='define'
+i_values='undef'
 i_varargs='undef'
 i_varhdr='stdarg.h'
 i_vfork='undef'
-ignore_versioned_solibs='y'
+i_xlocale='define'
+ignore_versioned_solibs=''
 inc_version_list=''
 inc_version_list_init='0'
 incpath=''
-incpth='/usr/lib/gcc/i586-suse-linux/4.8/include /usr/local/include /usr/lib/gcc/i586-suse-linux/4.8/include-fixed /usr/lib/gcc/i586-suse-linux/4.8/../../../../i586-suse-linux/include /usr/include'
+incpth='/usr/local/include /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/6.0/include /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include /usr/include /usr/local/include /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/6.0/include /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include /usr/include /usr/local/include /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/6.0/include /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include /usr/include'
 inews=''
-initialinstalllocation='/pro/bin'
-installarchlib='/pro/lib/perl5/5.23.9/i686-linux-64int'
-installbin='/pro/bin'
+initialinstalllocation='/tmp/mblead/bin'
+installarchlib='/tmp/mblead/lib/perl5/5.24.0/darwin-2level'
+installbin='/tmp/mblead/bin'
 installhtml1dir=''
 installhtml3dir=''
-installman1dir='/pro/local/man/man1'
-installman3dir='/pro/local/man/man3'
-installprefix='/pro'
-installprefixexp='/pro'
-installprivlib='/pro/lib/perl5/5.23.9'
-installscript='/pro/bin'
-installsitearch='/pro/lib/perl5/site_perl/5.23.9/i686-linux-64int'
-installsitebin='/pro/bin'
+installman1dir='/tmp/mblead/man/man1'
+installman3dir='/tmp/mblead/man/man3'
+installprefix='/tmp/mblead'
+installprefixexp='/tmp/mblead'
+installprivlib='/tmp/mblead/lib/perl5/5.24.0'
+installscript='/tmp/mblead/bin'
+installsitearch='/tmp/mblead/lib/perl5/site_perl/5.24.0/darwin-2level'
+installsitebin='/tmp/mblead/bin'
 installsitehtml1dir=''
 installsitehtml3dir=''
-installsitelib='/pro/lib/perl5/site_perl/5.23.9'
-installsiteman1dir='/pro/local/man/man1'
-installsiteman3dir='/pro/local/man/man3'
-installsitescript='/pro/bin'
+installsitelib='/tmp/mblead/lib/perl5/site_perl/5.24.0'
+installsiteman1dir='/tmp/mblead/man/man1'
+installsiteman3dir='/tmp/mblead/man/man3'
+installsitescript='/tmp/mblead/bin'
 installstyle='lib/perl5'
 installusrbinperl='undef'
 installvendorarch=''
@@ -854,50 +859,49 @@ installvendorman3dir=''
 installvendorscript=''
 intsize='4'
 issymlink='test -h'
-ivdformat='"Ld"'
+ivdformat='"ld"'
 ivsize='8'
-ivtype='long long'
-known_extensions='Archive/Tar arybase Attribute/Handlers attributes autodie AutoLoader autouse B base B/Debug bignum Carp CGI Compress/Raw/Bzip2 Compress/Raw/Zlib Config/Perl/V constant CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Cwd Data/Dumper DB_File Devel/Peek Devel/PPPort Devel/SelfStubber Digest Digest/MD5 Digest/SHA Dumpvalue Encode encoding/warnings Env Errno Exporter ExtUtils/CBuilder ExtUtils/Command ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/ParseXS Fcntl FileCache File/DosGlob File/Fetch File/Find File/Glob File/Path File/Temp Filter/Simple Filter/Util/Call GDBM_File Getopt/Long Hash/Util Hash/Util/FieldHash HTTP/Tiny I18N/Collate I18N/Langinfo I18N/LangTags if IO IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 IPC/SysV JSON/PP lib libnet List/Util Locale/Codes Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigInt/FastCalc Math/BigRat Math/Complex Memoize MIME/Base64 Module/Build Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata mro NDBM_File Net/Ping NEXT ODBM_File Opcode Package/Constants Params/Check parent Parse/CPAN/Meta perlfaq PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via PerlIO/via/QuotedPrint Perl/OSType Pod/Checker Pod/Escapes Pod/Functions Pod/Html podlators Pod/Parser Pod/Perldoc Pod/Simple Pod/Usage POSIX re Safe SDBM_File Search/Dict SelfLoader Socket Storable Sys/Hostname Sys/Syslog Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue threads Thread/Semaphore threads/shared Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/HiRes Time/Local Time/Piece Unicode/Collate Unicode/Normalize version VMS/DCLsym VMS/Filespec VMS/Stdio Win32 Win32API/File Win32CORE XS/APItest XSLoader XS/Typemap '
+ivtype='long'
+known_extensions='Amiga/ARexx Amiga/Exec Archive/Tar Attribute/Handlers AutoLoader B B/Debug CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Compress/Raw/Bzip2 Compress/Raw/Zlib Config/Perl/V Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Devel/SelfStubber Digest Digest/MD5 Digest/SHA Dumpvalue Encode Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/ParseXS Fcntl File/DosGlob File/Fetch File/Find File/Glob File/Path File/Temp FileCache Filter/Simple Filter/Util/Call GDBM_File Getopt/Long HTTP/Tiny Hash/Util Hash/Util/FieldHash I18N/Collate I18N/LangTags I18N/Langinfo IO IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 IPC/SysV JSON/PP List/Util Locale/Codes Locale/Maketext Locale/Maketext/Simple MIME/Base64 Math/BigInt Math/BigInt/FastCalc Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NDBM_File NEXT Net/Ping ODBM_File Opcode POSIX Params/Check Parse/CPAN/Meta Perl/OSType PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Parser Pod/Perldoc Pod/Simple Pod/Usage SDBM_File Safe Search/Dict SelfLoader Socket Storable Sys/Hostname Sys/Syslog Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/HiRes Time/Local Time/Piece Unicode/Collate Unicode/Normalize VMS/DCLsym VMS/Filespec VMS/Stdio Win32 Win32API/File Win32CORE XS/APItest XS/Typemap XSLoader arybase attributes autodie autouse base bignum constant encoding/warnings experimental if lib libnet mro parent perlfaq podlators re threads threads/shared version '
 ksh=''
 ld='cc'
-ld_can_script='define'
-lddlflags='-shared -O2 -L/pro/local/lib -fstack-protector'
-ldflags='-L/pro/local/lib -fstack-protector'
+ld_can_script='undef'
+lddlflags=' -mmacosx-version-min=10.9 -bundle -undefined dynamic_lookup -L/usr/local/lib -L/opt/local/lib -fstack-protector'
+ldflags=' -mmacosx-version-min=10.9 -fstack-protector -L/usr/local/lib -L/opt/local/lib'
 ldflags_uselargefiles=''
-ldlibpthname='LD_LIBRARY_PATH'
+ldlibpthname='DYLD_LIBRARY_PATH'
 less='less'
 lib_ext='.a'
-libc='libc-2.18.so'
+libc=''
 libperl='libperl.a'
-libpth='/usr/local/lib /usr/lib/gcc/i586-suse-linux/4.8/include-fixed /usr/lib/gcc/i586-suse-linux/4.8/../../../../i586-suse-linux/lib /usr/lib /pro/local/lib /lib'
-libs='-lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lc -lgdbm_compat'
-libsdirs=' /usr/lib'
-libsfiles=' libnsl.so libgdbm.so libdb.so libdl.so libm.so libcrypt.so libutil.so libc.so libgdbm_compat.so'
-libsfound=' /usr/lib/libnsl.so /usr/lib/libgdbm.so /usr/lib/libdb.so /usr/lib/libdl.so /usr/lib/libm.so /usr/lib/libcrypt.so /usr/lib/libutil.so /usr/lib/libc.so /usr/lib/libgdbm_compat.so'
-libspath=' /usr/local/lib /usr/lib/gcc/i586-suse-linux/4.8/include-fixed /usr/lib/gcc/i586-suse-linux/4.8/../../../../i586-suse-linux/lib /usr/lib /pro/local/lib /lib'
-libswanted='socket inet nsl nm gdbm dbm db malloc dl ld sun m crypt sec util c cposix posix ucb BSD gdbm_compat'
+libpth='/usr/local/lib /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/6.0/lib /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib /usr/lib /opt/local/lib /usr/local/lib /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/6.0/lib /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib /usr/lib /usr/local/lib /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/6.0/lib /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib /usr/lib'
+libs='-lpthread -lgdbm -ldbm -ldl -lm -lutil -lc'
+libsdirs=''
+libsfiles=''
+libsfound=''
+libspath=' /usr/local/lib /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/6.0/lib /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib /usr/lib /opt/local/lib /usr/local/lib /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/6.0/lib /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib /usr/lib /usr/local/lib /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/6.0/lib /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib /usr/lib'
+libswanted='cl pthread socket bind inet nsl ndbm gdbm dbm db malloc dl ld sun m crypt sec util c cposix posix ucb bsd BSD'
 libswanted_uselargefiles=''
 line=''
 lint=''
 lkflags=''
 ln='ln'
-lns='/usr/bin/ln -s'
+lns='/opt/local/libexec/gnubin/ln -s'
 localtime_r_proto='0'
-locincpth='/pro/local/include'
-loclibpth='/pro/local/lib'
-longdblinfbytes='0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00'
+locincpth='/usr/local/include /opt/local/include /usr/gnu/include /opt/gnu/include /usr/GNU/include /opt/GNU/include'
+loclibpth='/usr/local/lib /opt/local/lib /usr/gnu/lib /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib'
+longdblinfbytes='0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00'
 longdblkind='3'
 longdblmantbits='64'
-longdblnanbytes='0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00'
-longdblsize='12'
+longdblnanbytes='0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00'
+longdblsize='16'
 longlongsize='8'
-longsize='4'
+longsize='8'
 lp=''
 lpr=''
 ls='ls'
 lseeksize='8'
 lseektype='off_t'
-mad='undef'
 mail=''
 mailx=''
 make='make'
@@ -905,11 +909,11 @@ make_set_make='#'
 mallocobj=''
 mallocsrc=''
 malloctype='void *'
-man1dir='/pro/local/man/man1'
-man1direxp='/pro/local/man/man1'
+man1dir='/tmp/mblead/man/man1'
+man1direxp='/tmp/mblead/man/man1'
 man1ext='1'
-man3dir='/pro/local/man/man3'
-man3direxp='/pro/local/man/man3'
+man3dir='/tmp/mblead/man/man3'
+man3direxp='/tmp/mblead/man/man3'
 man3ext='3'
 mips_type=''
 mistrustnm=''
@@ -917,22 +921,22 @@ mkdir='mkdir'
 mmaptype='void *'
 modetype='mode_t'
 more='more'
-multiarch='undef'
+multiarch='define'
 mv=''
-myarchname='i686-linux'
-mydomain='.(none)'
-myhostname='lx09'
-myuname='linux lx09 3.11.10-7-desktop #1 smp preempt mon feb 3 09:41:24 utc 2014 (750023e) i686 i686 i386 gnulinux '
+myarchname='i386-darwin'
+mydomain='.nonet'
+myhostname='daybreak'
+myuname='darwin daybreak 13.4.0 darwin kernel version 13.4.0: mon jan 11 18:17:34 pst 2016; root:xnu-2422.115.15~1release_x86_64 x86_64 i386 macbookpro11,3 darwin '
 n='-n'
-need_va_copy='undef'
+need_va_copy='define'
 netdb_hlen_type='size_t'
-netdb_host_type='const void *'
+netdb_host_type='char *'
 netdb_name_type='const char *'
 netdb_net_type='in_addr_t'
 nm='nm'
 nm_opt=''
-nm_so_opt='--dynamic'
-nonxs_ext='Archive/Tar Attribute/Handlers autodie AutoLoader autouse base B/Debug bignum Carp CGI Config/Perl/V constant CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Devel/SelfStubber Digest Dumpvalue encoding/warnings Env Errno Exporter ExtUtils/CBuilder ExtUtils/Command ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/ParseXS FileCache File/Fetch File/Find File/Path File/Temp Filter/Simple Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags if IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP lib libnet Locale/Codes Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/Build Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata Net/Ping NEXT Package/Constants Params/Check parent Parse/CPAN/Meta perlfaq PerlIO/via/QuotedPrint Perl/OSType Pod/Checker Pod/Escapes Pod/Functions Pod/Html podlators Pod/Parser Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Memoize Tie/RefHash Time/Local version XSLoader'
+nm_so_opt=''
+nonxs_ext='Archive/Tar Attribute/Handlers AutoLoader B/Debug CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Codes Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Parse/CPAN/Meta Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Parser Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version'
 nroff='nroff'
 nvEUformat='"E"'
 nvFUformat='"F"'
@@ -948,72 +952,72 @@ nvtype='double'
 o_nonblock='O_NONBLOCK'
 obj_ext='.o'
 old_pthread_create_joinable=''
-optimize='-O2'
+optimize='-O3'
 orderlib='false'
-osname='linux'
-osvers='3.11.10-7-desktop'
+osname='darwin'
+osvers='13.4.0'
 otherlibdirs=' '
 package='perl5'
-pager='/pro/bin/less -R'
+pager='/Users/aaron/usr/bin/less -R'
 passcat='cat /etc/passwd'
-patchlevel='19'
+patchlevel='24'
 path_sep=':'
-perl5='/pro/bin/perl'
+perl5='/Users/aaron/perl5/perlbrew/perls/perl-5.22.0/bin/perl'
 perl='perl'
 perl_patchlevel=''
 perl_static_inline='static __inline__'
-perladmin='hmbrand@cpan.org'
-perllibs='-lnsl -ldl -lm -lcrypt -lutil -lc'
-perlpath='/pro/bin/perl5.23.9'
+perladmin='aaron@daybreak.nonet'
+perllibs='-lpthread -ldl -lm -lutil -lc'
+perlpath='/tmp/mblead/bin/perl5.24.0'
 pg='pg'
 phostname='hostname'
 pidtype='pid_t'
-plibpth='/lib/i586-suse-linux/4.8 /lib /usr/lib/i586-suse-linux/4.8 /usr/lib'
+plibpth=''
 pmake=''
 pr=''
-prefix='/pro'
-prefixexp='/pro'
-privlib='/pro/lib/perl5/5.23.9'
-privlibexp='/pro/lib/perl5/5.23.9'
-procselfexe='"/proc/self/exe"'
+prefix='/tmp/mblead'
+prefixexp='/tmp/mblead'
+privlib='/tmp/mblead/lib/perl5/5.24.0'
+privlibexp='/tmp/mblead/lib/perl5/5.24.0'
+procselfexe=''
 prototype='define'
-ptrsize='4'
-quadkind='3'
-quadtype='long long'
+ptrsize='8'
+quadkind='2'
+quadtype='long'
 randbits='48'
 randfunc='Perl_drand48'
 random_r_proto='0'
 randseedtype='U32'
-ranlib=':'
+ranlib='ranlib'
 rd_nodata='-1'
 readdir64_r_proto='0'
 readdir_r_proto='0'
 revision='5'
 rm='rm'
-rm_try='/usr/bin/rm -f try try a.out .out try.[cho] try..o core core.try* try.core*'
+rm_try='/opt/local/libexec/gnubin/rm -f try try a.out .out try.[cho] try..o core core.try* try.core*'
 rmail=''
 run=''
 runnm='false'
-sGMTIME_max='2147483647'
-sGMTIME_min='-2147483648'
-sLOCALTIME_max='2147483647'
-sLOCALTIME_min='-2147483648'
+sGMTIME_max='67768036191676799'
+sGMTIME_min='-62167219200'
+sLOCALTIME_max='67768036191676799'
+sLOCALTIME_min='-62167219200'
 sPRIEUldbl='"LE"'
 sPRIFUldbl='"LF"'
 sPRIGUldbl='"LG"'
-sPRIXU64='"LX"'
-sPRId64='"Ld"'
+sPRIXU64='"lX"'
+sPRId64='"ld"'
 sPRIeldbl='"Le"'
 sPRIfldbl='"Lf"'
 sPRIgldbl='"Lg"'
-sPRIi64='"Li"'
-sPRIo64='"Lo"'
-sPRIu64='"Lu"'
-sPRIx64='"Lx"'
+sPRIi64='"li"'
+sPRIo64='"lo"'
+sPRIu64='"lu"'
+sPRIx64='"lx"'
 sSCNfldbl='"Lf"'
 sched_yield='sched_yield()'
-scriptdir='/pro/bin'
-scriptdirexp='/pro/bin'
+scriptdir='/tmp/mblead/bin'
+scriptdirexp='/tmp/mblead/bin'
 sed='sed'
 seedfunc='Perl_drand48_init'
 selectminbits='32'
@@ -1033,37 +1037,37 @@ shmattype='void *'
 shortsize='2'
 shrpenv=''
 shsharp='true'
-sig_count='65'
-sig_name='ZERO HUP INT QUIT ILL TRAP ABRT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH IO PWR SYS NUM32 NUM33 RTMIN NUM35 NUM36 NUM37 NUM38 NUM39 NUM40 NUM41 NUM42 NUM43 NUM44 NUM45 NUM46 NUM47 NUM48 NUM49 NUM50 NUM51 NUM52 NUM53 NUM54 NUM55 NUM56 NUM57 NUM58 NUM59 NUM60 NUM61 NUM62 NUM63 RTMAX IOT CLD POLL UNUSED '
-sig_name_init='"ZERO", "HUP", "INT", "QUIT", "ILL", "TRAP", "ABRT", "BUS", "FPE", "KILL", "USR1", "SEGV", "USR2", "PIPE", "ALRM", "TERM", "STKFLT", "CHLD", "CONT", "STOP", "TSTP", "TTIN", "TTOU", "URG", "XCPU", "XFSZ", "VTALRM", "PROF", "WINCH", "IO", "PWR", "SYS", "NUM32", "NUM33", "RTMIN", "NUM35", "NUM36", "NUM37", "NUM38", "NUM39", "NUM40", "NUM41", "NUM42", "NUM43", "NUM44", "NUM45", "NUM46", "NUM47", "NUM48", "NUM49", "NUM50", "NUM51", "NUM52", "NUM53", "NUM54", "NUM55", "NUM56", "NUM57", "NUM58", "NUM59", "NUM60", "NUM61", "NUM62", "NUM63", "RTMAX", "IOT", "CLD", "POLL", "UNUSED", 0'
-sig_num='0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 6 17 29 31 '
-sig_num_init='0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 6, 17, 29, 31, 0'
-sig_size='69'
+sig_count='32'
+sig_name='ZERO HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM URG STOP TSTP CONT CHLD TTIN TTOU IO XCPU XFSZ VTALRM PROF WINCH INFO USR1 USR2 IOT '
+sig_name_init='"ZERO", "HUP", "INT", "QUIT", "ILL", "TRAP", "ABRT", "EMT", "FPE", "KILL", "BUS", "SEGV", "SYS", "PIPE", "ALRM", "TERM", "URG", "STOP", "TSTP", "CONT", "CHLD", "TTIN", "TTOU", "IO", "XCPU", "XFSZ", "VTALRM", "PROF", "WINCH", "INFO", "USR1", "USR2", "IOT", 0'
+sig_num='0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 6 '
+sig_num_init='0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 6, 0'
+sig_size='33'
 signal_t='void'
-sitearch='/pro/lib/perl5/site_perl/5.23.9/i686-linux-64int'
-sitearchexp='/pro/lib/perl5/site_perl/5.23.9/i686-linux-64int'
-sitebin='/pro/bin'
-sitebinexp='/pro/bin'
+sitearch='/tmp/mblead/lib/perl5/site_perl/5.24.0/darwin-2level'
+sitearchexp='/tmp/mblead/lib/perl5/site_perl/5.24.0/darwin-2level'
+sitebin='/tmp/mblead/bin'
+sitebinexp='/tmp/mblead/bin'
 sitehtml1dir=''
 sitehtml1direxp=''
 sitehtml3dir=''
 sitehtml3direxp=''
-sitelib='/pro/lib/perl5/site_perl/5.23.9'
-sitelib_stem='/pro/lib/perl5/site_perl'
-sitelibexp='/pro/lib/perl5/site_perl/5.23.9'
-siteman1dir='/pro/local/man/man1'
-siteman1direxp='/pro/local/man/man1'
-siteman3dir='/pro/local/man/man3'
-siteman3direxp='/pro/local/man/man3'
-siteprefix='/pro'
-siteprefixexp='/pro'
-sitescript='/pro/bin'
-sitescriptexp='/pro/bin'
-sizesize='4'
+sitelib='/tmp/mblead/lib/perl5/site_perl/5.24.0'
+sitelib_stem='/tmp/mblead/lib/perl5/site_perl'
+sitelibexp='/tmp/mblead/lib/perl5/site_perl/5.24.0'
+siteman1dir='/tmp/mblead/man/man1'
+siteman1direxp='/tmp/mblead/man/man1'
+siteman3dir='/tmp/mblead/man/man3'
+siteman3direxp='/tmp/mblead/man/man3'
+siteprefix='/tmp/mblead'
+siteprefixexp='/tmp/mblead'
+sitescript='/tmp/mblead/bin'
+sitescriptexp='/tmp/mblead/bin'
+sizesize='8'
 sizetype='size_t'
 sleep=''
 smail=''
-so='so'
+so='dylib'
 sockethdr=''
 socketlib=''
 socksizetype='socklen_t'
@@ -1076,20 +1080,20 @@ src='.'
 ssizetype='ssize_t'
 st_ino_sign='1'
 st_ino_size='8'
-startperl='#!/pro/bin/perl5.23.9'
+startperl='#!/tmp/mblead/bin/perl5.24.0'
 startsh='#!/bin/sh'
 static_ext=' '
 stdchar='char'
-stdio_base='((fp)->_IO_read_base)'
-stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)'
-stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
+stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)'
+stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)'
+stdio_cnt='((fp)->_r)'
 stdio_filbuf=''
-stdio_ptr='((fp)->_IO_read_ptr)'
+stdio_ptr='((fp)->_p)'
 stdio_stream_array=''
 strerror_r_proto='0'
 strings='/usr/include/string.h'
 submit=''
-subversion='9'
+subversion='0'
 sysman='/usr/share/man/man1'
 sysroot=''
 tail=''
@@ -1104,7 +1108,7 @@ targetsh='/bin/sh'
 tbl=''
 tee=''
 test='test'
-timeincl='/usr/include/sys/time.h /usr/include/time.h '
+timeincl='/usr/include/sys/time.h '
 timetype='time_t'
 tmpnam_r_proto='0'
 to=':'
@@ -1116,20 +1120,20 @@ ttyname_r_proto='0'
 u16size='2'
 u16type='unsigned short'
 u32size='4'
-u32type='unsigned long'
+u32type='unsigned int'
 u64size='8'
-u64type='unsigned long long'
+u64type='unsigned long'
 u8size='1'
 u8type='unsigned char'
-uidformat='"lu"'
+uidformat='"u"'
 uidsign='1'
 uidsize='4'
 uidtype='uid_t'
 uname='uname'
 uniq='uniq'
-uquadtype='unsigned long long'
+uquadtype='unsigned long'
 use5005threads='undef'
-use64bitall='undef'
+use64bitall='define'
 use64bitint='define'
 usecbacktrace='undef'
 usecrosscompile='undef'
@@ -1146,7 +1150,7 @@ usemorebits='undef'
 usemultiplicity='undef'
 usemymalloc='n'
 usenm='false'
-usensgetexecutablepath='undef'
+usensgetexecutablepath='define'
 useopcode='true'
 useperlio='define'
 useposix='true'
@@ -1159,15 +1163,15 @@ usesocks='undef'
 usethreads='undef'
 usevendorprefix='undef'
 useversionedarchname='undef'
-usevfork='false'
+usevfork='true'
 usrinc='/usr/include'
 uuname=''
-uvXUformat='"LX"'
-uvoformat='"Lo"'
+uvXUformat='"lX"'
+uvoformat='"lo"'
 uvsize='8'
-uvtype='unsigned long long'
-uvuformat='"Lu"'
-uvxformat='"Lx"'
+uvtype='unsigned long'
+uvuformat='"lu"'
+uvxformat='"lx"'
 vaproto='define'
 vendorarch=''
 vendorarchexp=''
@@ -1188,23 +1192,20 @@ vendorprefix=''
 vendorprefixexp=''
 vendorscript=''
 vendorscriptexp=''
-version='5.23.9'
-version_patchlevel_string='version 23 subversion 9'
+version='5.24.0'
+version_patchlevel_string='version 24 subversion 0'
 versiononly='define'
 vi=''
 xlibpth='/usr/lib/386 /lib/386'
-yacc='/pro/3gl/CPAN/bin/byacc'
+yacc='yacc'
 yaccflags=''
 zcat=''
 zip='zip'
 PERL_REVISION=5
-PERL_VERSION=23
-PERL_SUBVERSION=9
+PERL_VERSION=24
+PERL_SUBVERSION=0
 PERL_API_REVISION=5
-PERL_API_VERSION=23
-PERL_API_SUBVERSION=9
+PERL_API_VERSION=24
+PERL_API_SUBVERSION=0
 PERL_PATCHLEVEL=''
 PERL_CONFIG_SH=true
-: Variables propagated from previous config.sh file.
-libdb_needs_pthread='N'
-libdirs=' /lib /pro/local/lib'
index da85fac..12b23f6 100644 (file)
  *     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 "/pro/lib/perl5/5.23.9/i686-linux-64int-ld"            /**/
-#define ARCHLIB_EXP "/pro/lib/perl5/5.23.9/i686-linux-64int-ld"                /**/
+#define ARCHLIB "/pro/lib/perl5/5.24.0/i686-linux-64int-ld"            /**/
+#define ARCHLIB_EXP "/pro/lib/perl5/5.24.0/i686-linux-64int-ld"                /**/
 
 /* ARCHNAME:
  *     This symbol holds a string representing the architecture name.
  *     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 "/pro/lib/perl5/5.23.9"                /**/
-#define PRIVLIB_EXP "/pro/lib/perl5/5.23.9"            /**/
+#define PRIVLIB "/pro/lib/perl5/5.24.0"                /**/
+#define PRIVLIB_EXP "/pro/lib/perl5/5.24.0"            /**/
 
 /* PTRSIZE:
  *     This symbol contains the size of a pointer, so that the C preprocessor
  *     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 "/pro/lib/perl5/site_perl/5.23.9/i686-linux-64int-ld"         /**/
-#define SITEARCH_EXP "/pro/lib/perl5/site_perl/5.23.9/i686-linux-64int-ld"             /**/
+#define SITEARCH "/pro/lib/perl5/site_perl/5.24.0/i686-linux-64int-ld"         /**/
+#define SITEARCH_EXP "/pro/lib/perl5/site_perl/5.24.0/i686-linux-64int-ld"             /**/
 
 /* SITELIB:
  *     This symbol contains the name of the private library for this package.
  *     removed.  The elements in inc_version_list (inc_version_list.U) can
  *     be tacked onto this variable to generate a list of directories to search.
  */
-#define SITELIB "/pro/lib/perl5/site_perl/5.23.9"              /**/
-#define SITELIB_EXP "/pro/lib/perl5/site_perl/5.23.9"          /**/
+#define SITELIB "/pro/lib/perl5/site_perl/5.24.0"              /**/
+#define SITELIB_EXP "/pro/lib/perl5/site_perl/5.24.0"          /**/
 #define SITELIB_STEM "/pro/lib/perl5/site_perl"                /**/
 
 /* SSize_t:
  *     script to make sure (one hopes) that it runs with perl and not
  *     some shell.
  */
-#define STARTPERL "#!/pro/bin/perl5.23.9"              /**/
+#define STARTPERL "#!/pro/bin/perl5.24.0"              /**/
 
 /* HAS_STDIO_STREAM_ARRAY:
  *     This symbol, if defined, tells that there is an array
index 878b512..18a2fcb 100644 (file)
 
 __DEPARSE_FAILURES__
 
-../cpan/CPAN-Meta-YAML/t/10_read.t
-../cpan/Module-Metadata/t/metadata.t
 ../cpan/Scalar-List-Utils/t/proto.t
 ../cpan/Term-ANSIColor/t/taint/basic.t
 ../cpan/autodie/t/internal.t
-../ext/POSIX/t/time.t
 ../cpan/AutoLoader/t/01AutoLoader.t
 ../cpan/CGI/t/utf8.t
-../cpan/CPAN-Meta/t/converter.t
-../cpan/Digest-MD5/t/utf8.t
-../cpan/Encode/t/Encode.t
-../cpan/Encode/t/Unicode.t
-../cpan/Encode/t/at-cn.t
-../cpan/Encode/t/at-tw.t
 ../cpan/Encode/t/enc_data.t
-../cpan/Encode/t/enc_eucjp.t
-../cpan/Encode/t/enc_module.t
-../cpan/Encode/t/enc_utf8.t
 ../cpan/Encode/t/encoding.t
-../cpan/Encode/t/fallback.t
-../cpan/Encode/t/from_to.t
-../cpan/Encode/t/guess.t
-../cpan/Encode/t/jis7-fallback.t
 ../cpan/Encode/t/jperl.t
-../cpan/Encode/t/mime-header.t
 ../cpan/ExtUtils-Install/t/Installapi2.t
 ../cpan/ExtUtils-Install/t/Packlist.t
-../cpan/ExtUtils-Install/t/can_write_dir.t
-../cpan/ExtUtils-MakeMaker/t/arch_check.t
-../cpan/ExtUtils-MakeMaker/t/min_perl_version.t
 ../cpan/ExtUtils-MakeMaker/t/xs.t
 ../cpan/ExtUtils-Manifest/t/Manifest.t
 ../cpan/File-Path/t/taint.t
 ../cpan/File-Temp/t/object.t
-../cpan/HTTP-Tiny/t/001_api.t
 ../cpan/IO-Compress/t/050interop-gzip.t
 ../cpan/IO-Compress/t/cz-08encoding.t
-../cpan/JSON-PP/t/001_utf8.t
-../cpan/JSON-PP/t/109_encode.t
-../cpan/MIME-Base64/t/unicode.t
-../cpan/Math-Complex/t/Trig.t
 ../cpan/Module-Build/t/manifypods_with_utf8.t
-../cpan/Module-Metadata/t/encoding.t
-../cpan/Pod-Perldoc/t/man/_get_columns.t
-../cpan/Pod-Simple/t/stree.t
-../cpan/Scalar-List-Utils/t/dualvar.t
-../cpan/Scalar-List-Utils/t/first.t
-../cpan/Scalar-List-Utils/t/reduce.t
-../cpan/Scalar-List-Utils/t/weak.t
 ../cpan/Socket/t/sockaddr.t
 ../cpan/Term-ANSIColor/t/taint.t
-../cpan/Test-Harness/t/parser-config.t
-../cpan/Test-Harness/t/parser-subclass.t
-../cpan/Test-Harness/t/proverun.t
 ../cpan/Test-Simple/t/Builder/carp.t
 ../cpan/Test-Simple/t/fail-more.t
 ../cpan/Test-Simple/t/is_deeply_fail.t
-../cpan/Test-Simple/t/new_ok.t
 ../cpan/Test-Simple/t/plan.t
 ../cpan/Test-Simple/t/plan_bad.t
-../cpan/Test-Simple/t/skip.t
 ../cpan/Test-Simple/t/subtest/line_numbers.t
 ../cpan/Test-Simple/t/subtest/predicate.t
-../cpan/Test-Simple/t/todo.t
-../cpan/Text-Tabs/t/Tabs-ElCid.t
-../cpan/Text-Tabs/t/Wrap-JLB.t
-../cpan/Unicode-Collate/t/altern.t
-../cpan/Unicode-Collate/t/backwds.t
-../cpan/Unicode-Collate/t/cjk_b5.t
-../cpan/Unicode-Collate/t/cjk_gb.t
-../cpan/Unicode-Collate/t/cjk_ja.t
-../cpan/Unicode-Collate/t/cjk_ko.t
-../cpan/Unicode-Collate/t/cjk_py.t
-../cpan/Unicode-Collate/t/cjk_st.t
-../cpan/Unicode-Collate/t/cjk_zy.t
-../cpan/Unicode-Collate/t/cjkrange.t
-../cpan/Unicode-Collate/t/compatui.t
-../cpan/Unicode-Collate/t/contract.t
-../cpan/Unicode-Collate/t/default.t
-../cpan/Unicode-Collate/t/hangul.t
-../cpan/Unicode-Collate/t/ident.t
-../cpan/Unicode-Collate/t/iglevel2.t
-../cpan/Unicode-Collate/t/ignor.t
-../cpan/Unicode-Collate/t/illegal.t
-../cpan/Unicode-Collate/t/index.t
-../cpan/Unicode-Collate/t/loc_af.t
-../cpan/Unicode-Collate/t/loc_ar.t
-../cpan/Unicode-Collate/t/loc_as.t
-../cpan/Unicode-Collate/t/loc_az.t
-../cpan/Unicode-Collate/t/loc_be.t
-../cpan/Unicode-Collate/t/loc_bg.t
-../cpan/Unicode-Collate/t/loc_bn.t
-../cpan/Unicode-Collate/t/loc_bs.t
-../cpan/Unicode-Collate/t/loc_bscy.t
-../cpan/Unicode-Collate/t/loc_ca.t
-../cpan/Unicode-Collate/t/loc_cjk.t
-../cpan/Unicode-Collate/t/loc_cjkc.t
-../cpan/Unicode-Collate/t/loc_cs.t
-../cpan/Unicode-Collate/t/loc_cyrl.t
-../cpan/Unicode-Collate/t/loc_da.t
-../cpan/Unicode-Collate/t/loc_de.t
-../cpan/Unicode-Collate/t/loc_deph.t
-../cpan/Unicode-Collate/t/loc_ee.t
-../cpan/Unicode-Collate/t/loc_eo.t
-../cpan/Unicode-Collate/t/loc_es.t
-../cpan/Unicode-Collate/t/loc_estr.t
-../cpan/Unicode-Collate/t/loc_et.t
-../cpan/Unicode-Collate/t/loc_fa.t
-../cpan/Unicode-Collate/t/loc_fi.t
-../cpan/Unicode-Collate/t/loc_fil.t
-../cpan/Unicode-Collate/t/loc_fiph.t
-../cpan/Unicode-Collate/t/loc_fo.t
-../cpan/Unicode-Collate/t/loc_fr.t
-../cpan/Unicode-Collate/t/loc_gu.t
-../cpan/Unicode-Collate/t/loc_ha.t
-../cpan/Unicode-Collate/t/loc_haw.t
-../cpan/Unicode-Collate/t/loc_hi.t
-../cpan/Unicode-Collate/t/loc_hr.t
-../cpan/Unicode-Collate/t/loc_hu.t
-../cpan/Unicode-Collate/t/loc_hy.t
-../cpan/Unicode-Collate/t/loc_ig.t
-../cpan/Unicode-Collate/t/loc_is.t
-../cpan/Unicode-Collate/t/loc_ja.t
-../cpan/Unicode-Collate/t/loc_jait.t
-../cpan/Unicode-Collate/t/loc_japr.t
-../cpan/Unicode-Collate/t/loc_kk.t
-../cpan/Unicode-Collate/t/loc_kl.t
-../cpan/Unicode-Collate/t/loc_kn.t
-../cpan/Unicode-Collate/t/loc_ko.t
-../cpan/Unicode-Collate/t/loc_kok.t
-../cpan/Unicode-Collate/t/loc_ln.t
-../cpan/Unicode-Collate/t/loc_lt.t
-../cpan/Unicode-Collate/t/loc_lv.t
-../cpan/Unicode-Collate/t/loc_mk.t
-../cpan/Unicode-Collate/t/loc_ml.t
-../cpan/Unicode-Collate/t/loc_mr.t
-../cpan/Unicode-Collate/t/loc_mt.t
-../cpan/Unicode-Collate/t/loc_nb.t
-../cpan/Unicode-Collate/t/loc_nn.t
-../cpan/Unicode-Collate/t/loc_nso.t
-../cpan/Unicode-Collate/t/loc_or.t
-../cpan/Unicode-Collate/t/loc_pa.t
-../cpan/Unicode-Collate/t/loc_pl.t
-../cpan/Unicode-Collate/t/loc_ro.t
-../cpan/Unicode-Collate/t/loc_ru.t
-../cpan/Unicode-Collate/t/loc_sa.t
-../cpan/Unicode-Collate/t/loc_se.t
-../cpan/Unicode-Collate/t/loc_si.t
-../cpan/Unicode-Collate/t/loc_sidt.t
-../cpan/Unicode-Collate/t/loc_sk.t
-../cpan/Unicode-Collate/t/loc_sl.t
-../cpan/Unicode-Collate/t/loc_sq.t
-../cpan/Unicode-Collate/t/loc_sr.t
-../cpan/Unicode-Collate/t/loc_srla.t
-../cpan/Unicode-Collate/t/loc_sv.t
-../cpan/Unicode-Collate/t/loc_svrf.t
-../cpan/Unicode-Collate/t/loc_ta.t
-../cpan/Unicode-Collate/t/loc_te.t
-../cpan/Unicode-Collate/t/loc_test.t
-../cpan/Unicode-Collate/t/loc_th.t
-../cpan/Unicode-Collate/t/loc_tn.t
-../cpan/Unicode-Collate/t/loc_to.t
-../cpan/Unicode-Collate/t/loc_tr.t
-../cpan/Unicode-Collate/t/loc_uk.t
-../cpan/Unicode-Collate/t/loc_ur.t
-../cpan/Unicode-Collate/t/loc_vi.t
-../cpan/Unicode-Collate/t/loc_wae.t
-../cpan/Unicode-Collate/t/loc_wo.t
-../cpan/Unicode-Collate/t/loc_yo.t
-../cpan/Unicode-Collate/t/loc_zh.t
-../cpan/Unicode-Collate/t/loc_zhb5.t
-../cpan/Unicode-Collate/t/loc_zhgb.t
-../cpan/Unicode-Collate/t/loc_zhpy.t
-../cpan/Unicode-Collate/t/loc_zhst.t
-../cpan/Unicode-Collate/t/loc_zhzy.t
-../cpan/Unicode-Collate/t/nonchar.t
-../cpan/Unicode-Collate/t/normal.t
-../cpan/Unicode-Collate/t/notable.t
-../cpan/Unicode-Collate/t/overcjk0.t
-../cpan/Unicode-Collate/t/overcjk1.t
-../cpan/Unicode-Collate/t/override.t
-../cpan/Unicode-Collate/t/rearrang.t
-../cpan/Unicode-Collate/t/rewrite.t
-../cpan/Unicode-Collate/t/test.t
-../cpan/Unicode-Collate/t/trailwt.t
-../cpan/Unicode-Collate/t/variable.t
-../cpan/Unicode-Collate/t/view.t
-../cpan/Unicode-Normalize/t/fcdc.t
-../cpan/Unicode-Normalize/t/form.t
-../cpan/Unicode-Normalize/t/func.t
-../cpan/Unicode-Normalize/t/norm.t
-../cpan/Unicode-Normalize/t/partial1.t
-../cpan/Unicode-Normalize/t/partial2.t
-../cpan/Unicode-Normalize/t/proto.t
-../cpan/Unicode-Normalize/t/split.t
-../cpan/Unicode-Normalize/t/test.t
 ../cpan/autodie/t/00-load.t
 ../cpan/autodie/t/autodie.t
 ../cpan/autodie/t/blog_hints.t
@@ -242,7 +72,6 @@ __DEPARSE_FAILURES__
 ../cpan/autodie/t/exceptions.t
 ../cpan/autodie/t/exec.t
 ../cpan/autodie/t/filehandles.t
-../cpan/autodie/t/format-clobber.t
 ../cpan/autodie/t/hints.t
 ../cpan/autodie/t/hints_insist.t
 ../cpan/autodie/t/hints_pod_examples.t
@@ -261,49 +90,35 @@ __DEPARSE_FAILURES__
 ../cpan/autodie/t/utf8_open.t
 ../cpan/autodie/t/utime.t
 ../cpan/autodie/t/version_tag.t
-../dist/encoding-warnings/t/4-lexical.t
 ../cpan/podlators/t/basic.t
-../cpan/version/t/09_list_util.t
 ../dist/Attribute-Handlers/t/constants.t
 ../dist/Attribute-Handlers/t/data_convert.t
 ../dist/Attribute-Handlers/t/linerep.t
 ../dist/Attribute-Handlers/t/multi.t
 ../dist/Carp/t/Carp.t
-../dist/Carp/t/arg_regexp.t
-../dist/Carp/t/arg_string.t
 ../dist/Data-Dumper/t/dumper.t
-../dist/Data-Dumper/t/perl-74170.t
-../dist/Data-Dumper/t/quotekeys.t
 ../dist/Exporter/t/Exporter.t
 ../dist/Filter-Simple/t/data.t
 ../dist/I18N-LangTags/t/50_super.t
 ../dist/IO/t/io_file_export.t
 ../dist/IO/t/io_multihomed.t
 ../dist/IO/t/io_sel.t
-../dist/IO/t/io_sock.t
 ../dist/IO/t/io_udp.t
-../dist/IO/t/io_utf8.t
 ../dist/Locale-Maketext/t/01_about_verbose.t
 ../dist/Locale-Maketext/t/10_make.t
 ../dist/Locale-Maketext/t/20_get.t
-../dist/Locale-Maketext/t/30_eval_dollar_at.t
 ../dist/Locale-Maketext/t/40_super.t
 ../dist/Locale-Maketext/t/50_super.t
 ../dist/Locale-Maketext/t/60_super.t
 ../dist/Locale-Maketext/t/70_fail_auto.t
-../dist/Locale-Maketext/t/90_utf8.t
 ../dist/Locale-Maketext/t/91_backslash.t
 ../dist/Math-BigInt/t/const_mbf.t
 ../dist/Math-BigInt/t/constant.t
 ../dist/PathTools/t/cwd.t
 ../dist/Storable/t/blessed.t
 ../dist/Storable/t/croak.t
-../dist/Storable/t/downgrade.t
-../dist/Storable/t/malice.t
-../dist/Storable/t/utf8.t
 ../dist/Term-ReadLine/t/ReadLine.t
 ../dist/Thread-Queue/t/08_nothreads.t
-../dist/Tie-File/t/29_downcopy.t
 ../dist/Tie-File/t/42_offset.t
 ../dist/bignum/t/big_e_pi.t
 ../dist/bignum/t/bigexp.t
@@ -330,46 +145,23 @@ __DEPARSE_FAILURES__
 ../ext/B/t/b.t
 ../ext/B/t/optree_constants.t
 ../ext/B/t/optree_samples.t
-../ext/B/t/pragma.t
 ../ext/B/t/xref.t
 ../ext/Devel-Peek/t/Peek.t
 ../ext/File-Glob/t/basic.t
 ../ext/File-Glob/t/taint.t
-../ext/Hash-Util-FieldHash/t/02_function.t
-../ext/Hash-Util-FieldHash/t/11_hashassign.t
 ../ext/Hash-Util/t/Util.t
 ../ext/IPC-Open3/t/IPC-Open2.t
 ../ext/IPC-Open3/t/IPC-Open3.t
 ../ext/Opcode/t/Opcode.t
-../ext/POSIX/t/termios.t
-../ext/PerlIO-encoding/t/encoding.t
-../ext/PerlIO-encoding/t/fallback.t
-../ext/PerlIO-scalar/t/scalar.t
 ../ext/PerlIO-via/t/via.t
 ../ext/XS-APItest/t/autoload.t
-../ext/XS-APItest/t/blockhooks-csc.t
 ../ext/XS-APItest/t/blockhooks.t
 ../ext/XS-APItest/t/call_checker.t
-../ext/XS-APItest/t/caller.t
 ../ext/XS-APItest/t/cleanup.t
-../ext/XS-APItest/t/cophh.t
 ../ext/XS-APItest/t/fetch_pad_names.t
-../ext/XS-APItest/t/lexsub.t
-../ext/XS-APItest/t/multicall.t
 ../ext/XS-APItest/t/overload.t
 ../ext/XS-APItest/t/svpeek.t
-../ext/XS-APItest/t/svpv.t
-../ext/XS-APItest/t/underscore_length.t
 ../ext/XS-APItest/t/xsub_h.t
-../ext/arybase/t/aeach.t
-../ext/arybase/t/aelem.t
-../ext/arybase/t/aslice.t
-../ext/arybase/t/av2arylen.t
-../ext/arybase/t/lslice.t
-../ext/arybase/t/scope.t
-../ext/arybase/t/splice.t
-../ext/re/t/reflags.t
-../lib/B/Deparse.t
 ../lib/DB.t
 ../lib/DBM_Filter/t/01error.t
 ../lib/DBM_Filter/t/02core.t
@@ -380,44 +172,15 @@ __DEPARSE_FAILURES__
 ../lib/DBM_Filter/t/utf8.t
 ../lib/English.t
 ../lib/File/Basename.t
-../lib/Getopt/Std.t
-../lib/Unicode/UCD.t
-../lib/bytes.t
 ../lib/charnames.t
-../lib/feature/unicode_strings.t
 ../lib/less.t
 ../lib/overload.t
-../lib/overloading.t
-../lib/utf8.t
 base/lex.t                # checks regexp stringification
 comp/final_line_num.t     # tests syntax error after BEGIN block
 comp/fold.t               # mutability of folded constants
 comp/parser.t             # crazy #line directives ==> shell syntax errors
-lib/deprecate.t
-lib/mypragma.t
-mro/basic.t
-mro/basic_utf8.t
-mro/dbic_c3.t
-mro/dbic_c3_utf8.t
-mro/dbic_dfs.t
-mro/dbic_dfs_utf8.t
-mro/inconsistent_c3.t
-mro/inconsistent_c3_utf8.t
 mro/isarev.t
 mro/isarev_utf8.t
-mro/method_caching.t
-mro/method_caching_utf8.t
-mro/next_edgecases.t
-mro/next_edgecases_utf8.t
-mro/next_goto.t
-mro/next_goto_utf8.t
-mro/package_aliases_utf8.t
-mro/pkg_gen.t
-mro/pkg_gen_utf8.t
-mro/recursion_c3.t
-mro/recursion_c3_utf8.t
-mro/recursion_dfs.t
-mro/recursion_dfs_utf8.t
 op/attrhand.t             # Custom attrs ignored; also AH provides none
 op/attrs.t                # [perl #70205] my attrs
 op/caller.t
@@ -430,47 +193,25 @@ op/join.t                 # mutability of folded constants
 op/length.t               # utf8ness of deparsed strings
 op/lexsub.t
 op/local.t
-op/magic.t
-op/method.t
-op/mydef.t
 op/not.t
-op/ord.t
 op/overload_integer.t
 op/override.t
 op/pack.t
-op/pos.t
 op/postfixderef.t
-op/push.t
-op/qr.t
-op/quotemeta.t
 op/range.t
 op/readline.t
-op/recurse.t
-op/ref.t
 op/signatures.t
-op/sort.t
 op/split.t
-op/sprintf2.t
 op/srand.t
-op/state.t
 op/sub.t
 op/sub_lval.t
-op/substr.t
 op/switch.t
 op/symbolcache.t
 op/taint.t
-op/tiehandle.t
-op/tr.t
-op/utf8cache.t
-op/utf8magic.t
-op/utfhash.t
 op/vec.t
-op/ver.t
 op/warn.t
 op/write.t
-porting/diag.t
 porting/globvar.t
-porting/podcheck.t
 re/overload.t             # [perl #123385] %^H output
 re/pat.t                  # [perl #90590]
 re/pat_advanced.t         # [perl #123417]
@@ -484,30 +225,19 @@ run/switchI.t             # -I on #! line is not deparsed
 run/switchd-78586.t       # -I on #! line is not deparsed
 uni/attrs.t
 uni/bless.t
-uni/chomp.t
-uni/chr.t
-uni/class.t
-uni/eval.t
 uni/greek.t
 uni/gv.t
 uni/labels.t
 uni/latin2.t
 uni/lex_utf8.t
 uni/method.t
-uni/overload.t
 uni/package.t
 uni/parser.t
 uni/readline.t
 uni/select.t
-uni/sprintf.t
 uni/stash.t
 uni/tie.t
-uni/tr_7jis.t
-uni/tr_eucjp.t
-uni/tr_sjis.t
-uni/tr_utf8.t
 uni/universal.t
-uni/write.t
 
 __DEPARSE_SKIPS__
 
index 34f27c9..d54eb51 100644 (file)
@@ -17,8 +17,48 @@ Consult your favorite dictionary for details.
 
 =head1 EPIGRAPHS
 
+=head2 v5.23.9 - Tom Kitchin, "from nature to plate"
+
+L<Announced on 2016-03-20 by Abigail|http://www.nntp.perl.org/group/perl.perl5.porters/2016/03/msg235251.html>
+
+Spring
+
+Spring is the proper beginning of my kitchen and a season that I
+look forward to with great anticipation. By the time spring arrives
+I am desperate to welcome all the spring produce into my kitchen
+and I long to work with fresh green vegetables again. As much as I
+love root vegetables, such as celeriac and parsnips, and the heaver
+meat and game dishes, I'm ready to leave those behind with winter
+and begin a new adventure.
+
+Somehow spring always gives me a little bit of bounce in my feet
+-- I feel like I want to kick off my shoes and dance around in my
+kitchen. Not that I do, of course, but I feel lighter somehow. My
+adrenalin kicks in with spring and so does the level of excitement,
+as I think about all the produce that is about to come in.
+
+The moment spring arrives I'm eager to cook peas, broad beans, green
+asparagus and other fresh vegetables! I want to create lighter,
+brighter dishes and I can't wait to get my hands on the first greens
+and the first morels, not to mention the first wild Scottish salmon.
+Thanks to my network of trusted suppliers, I always get to first
+produce of the season delivered to my restaurant as soon as it is
+possible. I want my customers to experience and understand the
+beauty of locally grown produce and to try things the minute they
+are available so they can taste how incredibly fresh the ingredients
+are. I also want them to understand the relationship between
+seasonality and flavours. One of the most important things to
+remember is to allow the seasons to inspire your dishes and help
+you make natural matches. Wild spring herbs, such as sorrel, sweet
+cicely and wild garlic, as well as spring salad leaves and green
+lettuce served with wild salmon, wild sea trout, lamb or rabbit are
+marriages made in heaven.
+
+
 =head2 v5.23.8 - Patrick Rothfuss, "The Wise Man's Fear (The Kingkiller's Chronicle: Day Two)"
 
+L<Announced on 2016-02-20 by Sawyer X|http://www.nntp.perl.org/group/perl.perl5.porters/2016/02/msg234535.html>
+
 Denna, on the other hand, had never been trained. She knew nothing
 of shortcuts. You'd think she'd be forced to wander the city, lost and
 helpless, trapped in a twisting maze of mortared stone.
@@ -29,9 +69,9 @@ she moved through the city like some faerie creature. She walked roads
 no one else could see, and it made her music wild and strange and
 free.
 
-=head2 v5.23.7
+=head2 v5.23.7 - William Gibson, "Neuromancer"
 
-L<Announced on 2016-01-20 by Stevan|http://www.nntp.perl.org/group/perl.perl5.porters/2016/01/msg233856.html>
+L<Announced on 2016-01-20 by Stevan Little|http://www.nntp.perl.org/group/perl.perl5.porters/2016/01/msg233856.html>
 
 A year here and he still dreamed of cyberspace, hope fading
 nightly. All the speed he took, all the turns he'd taken and
@@ -46,10 +86,10 @@ dark, curled in his capsule in some coffin hotel, hands clawed
 into the bedslab, temper foam bunched between his fingers,
 trying to reach the console that wasn't there.
 
-  -- William Gibson, Neuromancer
-
 =head2 v5.23.6 - 5.23 Episode VII
 
+L<Announced on 2015-12-21 by David Golden|http://www.nntp.perl.org/group/perl.perl5.porters/2015/12/msg233475.html>
+
   A long time ago in microseconds, in a galaxy not very far away...
 
                    5.23 Episode VII
@@ -246,7 +286,7 @@ L<Announced on 2015-07-20 by Matthew Horsfall|http://www.nntp.perl.org/group/per
   Will chase the sun into the morning
   Beyond the sky, beyond the sea.
 
-=head2 v5.23.0 - Bob Dylan, Maggie's Farm
+=head2 v5.23.0 - Bob Dylan, "Maggie's Farm"
 
 L<Announced on 2015-06-20 by Ricardo Signes|http://www.nntp.perl.org/group/perl.perl5.porters/2015/06/msg228807.html>
 
@@ -259,6 +299,40 @@ L<Announced on 2015-06-20 by Ricardo Signes|http://www.nntp.perl.org/group/perl.
   They sing while you slave and I just get bored
   I ain't gonna work on Maggie's farm no more
 
+=head2 v5.22.2-RC1 - Gaston Leroux, trans. Mireille Ribière, "The Phantom of the Opera"
+
+L<Announced on 2016-04-10 by Steve Hay|http://www.nntp.perl.org/group/perl.perl5.porters/2016/04/msg235732.html>
+
+This annual ball was quite a magnificent affair.  It was given some time
+before Shrovetide to celebrate the birthday of a famous illustrator
+whose pencil had immortalized, in the style of Gavarni, the extravagant
+carnival parade down La Courtille.  As such, the ball was an altogether
+merrier, noisier and more Bohemian occasion than was usual for a masked
+ball.  Many artists had arranged to meet there; they arrived with an
+entourage of models and pupils, who, by midnight, had become quite
+boisterous.
+Raoul climbed the grand staircase at five minutes to midnight.  He did
+not linger to admire the many-coloured costumes on display all the way
+up the marble steps of one of the most luxurious settings in the world;
+nor did he allow himself to be drawn into the facetious conversation of
+masked guests.  He simply ignored all the jesting remarks, and shook off
+the attentions of several all too merry couples.
+Crossing the big crush-room and escaping from the dancers' farandole
+that had encircled him awhile, he at last entered the salon mentioned by
+Christine in her letter.  The small room was crammed with people either
+on their way to supper at the restaurant in the Rotunda or back from
+raising a glass of champagne.
+In the midst of the gay and lively hubbub, Raoul thought that, for their
+mysterious assignation, Christine must have preferred this crowd to some
+lonely corner.
+He leaned against a door-jamb and waited.  He did not have to wait long;
+a black domino passed him and deftly touched his hand.  He understood
+that it was Christine and followed her.
+'Is that you, Christine?' he murmured, barely moving his slips.
+The black domino promptly looked back and raised her finger to her lips,
+no doubt to caution him against uttering her name again.  Raoul followed
+on in silence.
+
 =head2 v5.22.1 - Wilhelm Müller, trans. Anon., "Courage" (No. 22 in Schubert's song-cycle, "Winterreise")
 
 L<Announced on 2015-12-13 by Steve Hay|http://www.nntp.perl.org/group/perl.perl5.porters/2015/12/msg233318.html>
index b31ee5e..8167bb1 100644 (file)
@@ -378,7 +378,7 @@ here.
 
 XXX Generate this with:
 
-  perl Porting/acknowledgements.pl v5.23.9..HEAD
+  perl Porting/acknowledgements.pl v5.24.0..HEAD
 
 =head1 Reporting Bugs
 
@@ -392,15 +392,10 @@ included with your release.  Be sure to trim your bug down to a tiny but
 sufficient test case.  Your bug report, along with the output of C<perl -V>,
 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
 
-If the bug you are reporting has security implications, which make it
-inappropriate to send to a publicly archived mailing list, then please send it
-to perl5-security-report@perl.org.  This points to a closed subscription
-unarchived mailing list, which includes all the core committers, who will be
-able to help assess the impact of issues, figure out a resolution, and help
-co-ordinate the release of patches to mitigate or fix the problem across all
-platforms on which Perl is supported.  Please only use this address for
-security issues in the Perl core, not for modules independently distributed on
-CPAN.
+If the bug you are reporting has security implications which make it
+inappropriate to send to a publicly archived mailing list, then see
+L<perlsec/SECURITY VULNERABILITY CONTACT INFORMATION>
+for details of how to report the issue.
 
 =head1 SEE ALSO
 
index 53bf16f..d2223f6 100644 (file)
@@ -183,6 +183,13 @@ is only needed on the day of the release or shortly afterwards.
 
 You will need a quotation to use as an epigraph to your release announcement.
 
+=head3 Install the previous version of perl
+
+During the testing phase of the release you have created, you will be
+asked to compare the installed files with a previous install. Save yourself
+some time on release day, and have a (clean) install of the previous
+version ready.
+
 =head2 Building a release - advance actions
 
 The work of building a release candidate for an even numbered release
@@ -350,8 +357,8 @@ Ensure dual-life CPAN modules are stable, which comes down to:
 =head3 monitor smoke tests for failures
 
 Similarly, monitor the smoking of core tests, and try to fix.  See
-L<http://smoke.procura.nl/index.html> and L<http://perl5.test-smoke.org/>
-for a summary. See also
+L<http://smoke.procura.nl/index.html>, L<http://perl5.test-smoke.org/>
+and L<http://perl.develop-help.com> for a summary. See also
 L<http://www.nntp.perl.org/group/perl.daily-build.reports/> which has
 the raw reports.
 
@@ -429,10 +436,6 @@ You may also need to regen opcodes:
 
  $ ./perl -Ilib regen/opcode.pl
 
-You may have to add stub entries in C<%Module::CoreList::version>,
-C<%Module::CoreList::deprecated> and C<%Module::CoreList::Utils::delta>.
-If so, you must up their version numbers as well.
-
 Test your changes:
 
  $ git clean -xdf   # careful if you don't have local files to keep!
@@ -440,6 +443,9 @@ Test your changes:
  $ make
  $ make test
 
+Do note that at this stage, porting tests will fail. They will continue
+to fail until you've updated Module::CoreList, as described below.
+
 Commit your changes:
 
  $ git status
@@ -1477,19 +1483,19 @@ to ensure that the tarballs are available on the website.
 
 =item *
 
-Check C</src> on CPAN (on a fast mirror) to ensure that links to
-the new tarballs have appeared: There should be links in C</src/5.0>
+Check F</src> on CPAN (on a fast mirror) to ensure that links to
+the new tarballs have appeared: There should be links in F</src/5.0>
 (which is accumulating all new versions), and (for BLEAD-FINAL and
-MAINT only) an appropriate mention in C</src/README.html> (which describes
+MAINT only) an appropriate mention in F</src/README.html> (which describes
 the latest versions in each stable branch, with links).
 
-The C</src/5.0> links should appear automatically, some hours after upload.
-If they don't, or the C</src> description is inadequate,
+The F</src/5.0> links should appear automatically, some hours after upload.
+If they don't, or the F</src> description is inadequate,
 ask Ask <ask@perl.org>.
 
 =item *
 
-Check L<http://www.cpan.org/src/> to ensure that the C</src> updates
+Check L<http://www.cpan.org/src/> to ensure that the F</src> updates
 have been correctly mirrored to the website.
 If they haven't, ask Ask <ask@perl.org>.
 
index 9b657ba..4622c31 100644 (file)
@@ -16,15 +16,15 @@ deemed necessary by the Pumpking.
 Code freezes (which happen in the 5.23.X series)
 
   2016-01-20  5.23.7 âœ“        Contentious changes freeze
-  2016-02-20  5.23.8          User-visible changes freeze
-  2016-03-20  5.23.9          Full code freeze
+  2016-02-20  5.23.8 âœ“        User-visible changes freeze
+  2016-03-20  5.23.9 âœ“        Full code freeze
   2016-05-20  5.24.0          Stable release!
 
 =head2 Perl 5.22
 
   2015-06-01  5.22.0 âœ“        Ricardo Signes
   2015-12-13  5.22.1 âœ“        Steve Hay
-  2016-??-??  5.22.2          Steve Hay
+  2016-04-29  5.22.2 âœ“        Steve Hay
   2016-??-??  5.22.3          ??
 
 =head2 Perl 5.20
@@ -60,7 +60,7 @@ you should reset the version numbers to the next blead series.
   2015-12-20  5.23.6 âœ“        David Golden
   2016-01-20  5.23.7 âœ“        Stevan Little
   2016-02-20  5.23.8 âœ“        Sawyer X
-  2016-03-20  5.23.9          Abigail
+  2016-03-20  5.23.9 âœ“        Abigail
 
 (RC0 for 5.24.0 will be released once we think that all the blockers have been
 addressed.  This typically means some time in April or May.)
index d7988bb..4c7634f 100644 (file)
@@ -467,7 +467,7 @@ Natively 64-bit systems need neither -Duse64bitint nor -Duse64bitall.
 On these systems, it might be the default compilation mode, and there
 is currently no guarantee that passing no use64bitall option to the
 Configure process will build a 32bit perl. Implementing -Duse32bit*
-options would be nice for perl 5.23.9.
+options would be nice for perl 5.24.0.
 
 =head2 Profile Perl - am I hot or not?
 
@@ -891,7 +891,7 @@ L<http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2008-09/msg00573.html>
 
 =head2 strict as warnings
 
-See L<http://markmail.org/message/vbrupaslr3bybmvk>, where Josua ben Jore
+See L<http://markmail.org/message/vbrupaslr3bybmvk>, where Joshua ben Jore
 writes:  I've been of the opinion that everything strict.pm does ought to be
 able to considered just warnings that have been promoted to 'FATAL'.
 
@@ -1170,7 +1170,7 @@ L<http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2013-01/msg00339.html>
 =head1 Big projects
 
 Tasks that will get your name mentioned in the description of the "Highlights
-of 5.23.9"
+of 5.24.0"
 
 =head2 make ithreads more robust
 
index d54c030..90fb14b 100644 (file)
@@ -108,6 +108,9 @@ DES crypt port by Corinna Vinschen.
 
 Alternatively, the crypt libraries in GNU libc have been ported to Cygwin.
 
+As of libcrypt 1.3 (March 2016), you will need to install the
+libcrypt-devel package for Configure to detect crypt().
+
 =item * C<-lgdbm_compat> (C<use GDBM_File>)
 
 GDBM is available for Cygwin.
index d15d826..95efcb4 100644 (file)
@@ -22,9 +22,9 @@ The build procedure is completely standard:
 Make perl executable and create a symlink for libperl:
 
   chmod a+x /boot/common/bin/perl
-  cd /boot/common/lib; ln -s perl5/5.23.9/BePC-haiku/CORE/libperl.so .
+  cd /boot/common/lib; ln -s perl5/5.24.0/BePC-haiku/CORE/libperl.so .
 
-Replace C<5.23.9> with your respective version of Perl.
+Replace C<5.24.0> with your respective version of Perl.
 
 =head1 KNOWN PROBLEMS
 
index 8db0222..f07fd87 100644 (file)
@@ -10,9 +10,9 @@ perlmacosx - Perl under Mac OS X
 
 This document briefly describes Perl under Mac OS X.
 
-  curl -O http://www.cpan.org/src/perl-5.23.9.tar.gz
-  tar -xzf perl-5.23.9.tar.gz
-  cd perl-5.23.9
+  curl -O http://www.cpan.org/src/perl-5.24.0.tar.gz
+  tar -xzf perl-5.24.0.tar.gz
+  cd perl-5.24.0
   ./Configure -des -Dprefix=/usr/local/
   make
   make test
@@ -20,7 +20,7 @@ This document briefly describes Perl under Mac OS X.
 
 =head1 DESCRIPTION
 
-The latest Perl release (5.23.9 as of this writing) builds without changes
+The latest Perl release (5.24.0 as of this writing) builds without changes
 under all versions of Mac OS X from 10.3 "Panther" onwards. 
 
 In order to build your own version of Perl you will need 'make',
index 86461f8..d27f1d2 100644 (file)
@@ -619,7 +619,7 @@ C<set PERLLIB_PREFIX> in F<Config.sys>, see L<"PERLLIB_PREFIX">.
 
 =item Additional Perl modules
 
-  unzip perl_ste.zip -d f:/perllib/lib/site_perl/5.23.9/
+  unzip perl_ste.zip -d f:/perllib/lib/site_perl/5.24.0/
 
 Same remark as above applies.  Additionally, if this directory is not
 one of directories on @INC (and @INC is influenced by C<PERLLIB_PREFIX>), you
index c02a544..b1ef60b 100644 (file)
@@ -189,12 +189,12 @@ commit 7a8f1212e5482613c8a5b0402528e3105b26ff24.
 
 =over 4
 
-=item C<ext/DynaLoader/t/DynaLoader.t>
+=item F<ext/DynaLoader/t/DynaLoader.t>
 
 One subtest fails due to the uncommon structure of the Synology file
-system. The file C</lib/glibc.so> is missing.
+system. The file F</lib/glibc.so> is missing.
 
-B<WARNING:> Do not symlink C</lib/glibc.so.6> to C</lib/glibc.so> or
+B<WARNING:> Do not symlink F</lib/glibc.so.6> to F</lib/glibc.so> or
 some system components will start to fail.
 
 =back
index 0aad716..1ad082a 100644 (file)
@@ -142,11 +142,11 @@ You may need to set up a foreign symbol for the unpacking utility of
 choice.  Once you have done so, use a command like the following to
 unpack the archive:
 
-    vmstar -xvf perl-5^.23^.9.tar
+    vmstar -xvf perl-5^.24^.0.tar
 
 Then set default to the top-level source directory like so:
 
-    set default [.perl-5^.23^.9]
+    set default [.perl-5^.24^.0]
 
 and proceed with configuration as described in the next section.
 
index 46efd62..df41702 100644 (file)
@@ -393,7 +393,7 @@ Be sure to read the instructions near the top of the makefiles carefully.
 Type "dmake" (or "nmake" if you are using that make).
 
 This should build everything.  Specifically, it will create perl.exe,
-perl523.dll at the perl toplevel, and various other extension dll's
+perl524.dll at the perl toplevel, and various other extension dll's
 under the lib\auto directory.  If the build fails for any reason, make
 sure you have done the previous steps correctly.
 
index 532238e..40b3475 100755 (executable)
@@ -885,6 +885,12 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
  */
 #$i_vfork I_VFORK      /**/
 
+/* STDCHAR:
+ *     This symbol is defined to be the type of char used in stdio.h.
+ *     It has the values "unsigned char" or "char".
+ */
+#define STDCHAR $stdchar       /**/
+
 /* CAN_VAPROTO:
  *     This variable is defined on systems supporting prototype declaration
  *     of functions with a variable number of arguments.
@@ -907,18 +913,21 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
 #define        _V(args) ()
 #endif
 
-/* OSNAME:
- *     This symbol contains the name of the operating system, as determined
- *     by Configure.  You shouldn't rely on it too much; the specific
- *     feature tests from Configure are generally more reliable.
+/* INTSIZE:
+ *     This symbol contains the value of sizeof(int) so that the C
+ *     preprocessor can make decisions based on it.
  */
-/* OSVERS:
- *     This symbol contains the version of the operating system, as determined
- *     by Configure.  You shouldn't rely on it too much; the specific
- *     feature tests from Configure are generally more reliable.
+/* LONGSIZE:
+ *     This symbol contains the value of sizeof(long) so that the C
+ *     preprocessor can make decisions based on it.
  */
-#define OSNAME "$osname"               /**/
-#define OSVERS "$osvers"               /**/
+/* SHORTSIZE:
+ *     This symbol contains the value of sizeof(short) so that the C
+ *     preprocessor can make decisions based on it.
+ */
+#define INTSIZE $intsize               /**/
+#define LONGSIZE $longsize             /**/
+#define SHORTSIZE $shortsize           /**/
 
 /* MULTIARCH:
  *     This symbol, if defined, signifies that the build
@@ -929,69 +938,55 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
  */
 #$multiarch MULTIARCH          /**/
 
-/* MEM_ALIGNBYTES:
- *     This symbol contains the number of bytes required to align a
- *     double, or a long double when applicable. Usual values are 2,
- *     4 and 8. The default is eight, for safety.  For cross-compiling
- *     or multiarch support, Configure will set a minimum of 8.
+/* HAS_QUAD:
+ *     This symbol, if defined, tells that there's a 64-bit integer type,
+ *     Quad_t, and its unsigned counterpart, Uquad_t. QUADKIND will be one
+ *     of QUAD_IS_INT, QUAD_IS_LONG, QUAD_IS_LONG_LONG, QUAD_IS_INT64_T,
+ *     or QUAD_IS___INT64.
  */
-#define MEM_ALIGNBYTES $alignbytes
+#$d_quad HAS_QUAD      /**/
+#ifdef HAS_QUAD
+#   define Quad_t $quadtype    /**/
+#   define Uquad_t $uquadtype  /**/
+#   define QUADKIND $quadkind  /**/
+#   define QUAD_IS_INT 1
+#   define QUAD_IS_LONG        2
+#   define QUAD_IS_LONG_LONG   3
+#   define QUAD_IS_INT64_T     4
+#   define QUAD_IS___INT64     5
+#endif
 
-/* ARCHLIB:
- *     This variable, if defined, holds the name of the directory in
- *     which the user wants to put architecture-dependent public
- *     library files for $package.  It is most often a local directory
- *     such as /usr/local/lib.  Programs using this variable must be
- *     prepared to deal with filename expansion.  If ARCHLIB is the
- *     same as PRIVLIB, it is not defined, since presumably the
- *     program already searches PRIVLIB.
- */
-/* ARCHLIB_EXP:
- *     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.
+/* HAS_ACCESSX:
+ *     This symbol, if defined, indicates that the accessx routine is
+ *     available to do extended access checks.
  */
-#$d_archlib ARCHLIB "$archlib"         /**/
-#$d_archlib ARCHLIB_EXP "$archlibexp"          /**/
+#$d_accessx HAS_ACCESSX                /**/
 
-/* ARCHNAME:
- *     This symbol holds a string representing the architecture name.
- *     It may be used to construct an architecture-dependant pathname
- *     where library files may be held under a private library, for
- *     instance.
+/* HAS_EACCESS:
+ *     This symbol, if defined, indicates that the eaccess routine is
+ *     available to do extended access checks.
  */
-#define ARCHNAME "$archname"           /**/
+#$d_eaccess HAS_EACCESS                /**/
 
-/* BIN:
- *     This symbol holds the path of the bin directory where the package will
- *     be installed. Program must be prepared to deal with ~name substitution.
- */
-/* BIN_EXP:
- *     This symbol is the filename expanded version of the BIN symbol, for
- *     programs that do not want to deal with that at run-time.
- */
-/* PERL_RELOCATABLE_INC:
- *     This symbol, if defined, indicates that we'd like to relocate entries
- *     in @INC at run time based on the location of the perl binary.
+/* I_SYS_ACCESS:
+ *     This symbol, if defined, indicates to the C program that it should
+ *     include <sys/access.h>.
  */
-#define BIN "$bin"     /**/
-#define BIN_EXP "$binexp"      /**/
-#define PERL_RELOCATABLE_INC "$userelocatableinc"              /**/
+#$i_sysaccess   I_SYS_ACCESS                /**/
 
-/* INTSIZE:
- *     This symbol contains the value of sizeof(int) so that the C
- *     preprocessor can make decisions based on it.
- */
-/* LONGSIZE:
- *     This symbol contains the value of sizeof(long) so that the C
- *     preprocessor can make decisions based on it.
+/* I_SYS_SECURITY:
+ *     This symbol, if defined, indicates to the C program that it should
+ *     include <sys/security.h>.
  */
-/* SHORTSIZE:
- *     This symbol contains the value of sizeof(short) so that the C
- *     preprocessor can make decisions based on it.
+#$i_syssecrt   I_SYS_SECURITY  /**/
+
+/* MEM_ALIGNBYTES:
+ *     This symbol contains the number of bytes required to align a
+ *     double, or a long double when applicable. Usual values are 2,
+ *     4 and 8. The default is eight, for safety.  For cross-compiling
+ *     or multiarch support, Configure will set a minimum of 8.
  */
-#define INTSIZE $intsize               /**/
-#define LONGSIZE $longsize             /**/
-#define SHORTSIZE $shortsize           /**/
+#define MEM_ALIGNBYTES $alignbytes
 
 /* BYTEORDER:
  *     This symbol holds the hexadecimal constant defined in byteorder,
@@ -1030,127 +1025,6 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
  */
 #define CHARBITS $charbits             /**/
 
-/* CAT2:
- *     This macro concatenates 2 tokens together.
- */
-/* STRINGIFY:
- *     This macro surrounds its token with double quotes.
- */
-#if $cpp_stuff == 1
-#define CAT2(a,b)      a/**/b
-#define STRINGIFY(a)   "a"
-#endif
-#if $cpp_stuff == 42
-#define PeRl_CaTiFy(a, b)      a ## b
-#define PeRl_StGiFy(a) #a
-#define CAT2(a,b)      PeRl_CaTiFy(a,b)
-#define StGiFy(a)      PeRl_StGiFy(a)
-#define STRINGIFY(a)   PeRl_StGiFy(a)
-#endif
-#if $cpp_stuff != 1 && $cpp_stuff != 42
-#include "Bletch: How does this C preprocessor concatenate tokens?"
-#endif
-
-/* CPPSTDIN:
- *     This symbol contains the first part of the string which will invoke
- *     the C preprocessor on the standard input and produce to standard
- *     output.  Typical value of "cc -E" or "/lib/cpp", but it can also
- *     call a wrapper. See CPPRUN.
- */
-/* CPPMINUS:
- *     This symbol contains the second part of the string which will invoke
- *     the C preprocessor on the standard input and produce to standard
- *     output.  This symbol will have the value "-" if CPPSTDIN needs a minus
- *     to specify standard input, otherwise the value is "".
- */
-/* CPPRUN:
- *     This symbol contains the string which will invoke a C preprocessor on
- *     the standard input and produce to standard output. It needs to end
- *     with CPPLAST, after all other preprocessor flags have been specified.
- *     The main difference with CPPSTDIN is that this program will never be a
- *     pointer to a shell wrapper, i.e. it will be empty if no preprocessor is
- *     available directly to the user. Note that it may well be different from
- *     the preprocessor used to compile the C program.
- */
-/* CPPLAST:
- *     This symbol is intended to be used along with CPPRUN in the same manner
- *     symbol CPPMINUS is used with CPPSTDIN. It contains either "-" or "".
- */
-#define CPPSTDIN "$cppstdin"
-#define CPPMINUS "$cppminus"
-#define CPPRUN "$cpprun"
-#define CPPLAST "$cpplast"
-
-/* HAS_ACCESS:
- *     This manifest constant lets the C program know that the access()
- *     system call is available to check for accessibility using real UID/GID.
- *     (always present on UNIX.)
- */
-#$d_access HAS_ACCESS          /**/
-
-/* HAS_ACCESSX:
- *     This symbol, if defined, indicates that the accessx routine is
- *     available to do extended access checks.
- */
-#$d_accessx HAS_ACCESSX                /**/
-
-/* HAS_ASCTIME_R:
- *     This symbol, if defined, indicates that the asctime_r routine
- *     is available to asctime re-entrantly.
- */
-/* ASCTIME_R_PROTO:
- *     This symbol encodes the prototype of asctime_r.
- *     It is zero if d_asctime_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_asctime_r
- *     is defined.
- */
-#$d_asctime_r HAS_ASCTIME_R       /**/
-#define ASCTIME_R_PROTO $asctime_r_proto          /**/
-
-/* HASATTRIBUTE_FORMAT:
- *     Can we handle GCC attribute for checking printf-style formats
- */
-/* PRINTF_FORMAT_NULL_OK:
- *     Allows __printf__ format to be null when checking printf-style
- */
-/* HASATTRIBUTE_MALLOC:
- *     Can we handle GCC attribute for malloc-style functions.
- */
-/* HASATTRIBUTE_NONNULL:
- *     Can we handle GCC attribute for nonnull function parms.
- */
-/* HASATTRIBUTE_NORETURN:
- *     Can we handle GCC attribute for functions that do not return
- */
-/* HASATTRIBUTE_PURE:
- *     Can we handle GCC attribute for pure functions
- */
-/* HASATTRIBUTE_UNUSED:
- *     Can we handle GCC attribute for unused variables and arguments
- */
-/* HASATTRIBUTE_DEPRECATED:
- *     Can we handle GCC attribute for marking deprecated APIs
- */
-/* HASATTRIBUTE_WARN_UNUSED_RESULT:
- *     Can we handle GCC attribute for warning on unused results
- */
-#$d_attribute_deprecated HASATTRIBUTE_DEPRECATED       /**/
-#$d_attribute_format HASATTRIBUTE_FORMAT       /**/
-#$d_printf_format_null PRINTF_FORMAT_NULL_OK   /**/
-#$d_attribute_noreturn HASATTRIBUTE_NORETURN   /**/
-#$d_attribute_malloc HASATTRIBUTE_MALLOC       /**/
-#$d_attribute_nonnull HASATTRIBUTE_NONNULL     /**/
-#$d_attribute_pure HASATTRIBUTE_PURE   /**/
-#$d_attribute_unused HASATTRIBUTE_UNUSED       /**/
-#$d_attribute_warn_unused_result HASATTRIBUTE_WARN_UNUSED_RESULT       /**/
-
-/* HAS_BACKTRACE:
- *     This symbol, if defined, indicates that the backtrace() routine is
- *     available to get a stack trace.  The <execinfo.h> header must be
- *     included to use this routine.
- */
-#$d_backtrace HAS_BACKTRACE    /**/
-
 /* CASTI32:
  *     This symbol is defined if the C compiler can cast negative
  *     or large floating point numbers to 32-bit ints.
@@ -1178,709 +1052,845 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
  */
 #$d_void_closedir VOID_CLOSEDIR                /**/
 
-/* HASCONST:
- *     This symbol, if defined, indicates that this C compiler knows about
- *     the const type. There is no need to actually test for that symbol
- *     within your programs. The mere use of the "const" keyword will
- *     trigger the necessary tests.
+/* HAS_FD_SET:
+ *     This symbol, when defined, indicates presence of the fd_set typedef
+ *     in <sys/types.h>
  */
-#$d_const HASCONST     /**/
-#ifndef HASCONST
-#define const
-#endif
+#$d_fd_set HAS_FD_SET  /**/
 
-/* HAS_CRYPT_R:
- *     This symbol, if defined, indicates that the crypt_r routine
- *     is available to crypt re-entrantly.
- */
-/* CRYPT_R_PROTO:
- *     This symbol encodes the prototype of crypt_r.
- *     It is zero if d_crypt_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_crypt_r
- *     is defined.
+/* Gconvert:
+ *     This preprocessor macro is defined to convert a floating point
+ *     number to a string without a trailing decimal point.  This
+ *     emulates the behavior of sprintf("%g"), but is sometimes much more
+ *     efficient.  If gconvert() is not available, but gcvt() drops the
+ *     trailing decimal point, then gcvt() is used.  If all else fails,
+ *     a macro using sprintf("%g") is used. Arguments for the Gconvert
+ *     macro are: value, number of digits, whether trailing zeros should
+ *     be retained, and the output buffer.
+ *     The usual values are:
+ *             d_Gconvert='gconvert((x),(n),(t),(b))'
+ *             d_Gconvert='gcvt((x),(n),(b))'
+ *             d_Gconvert='sprintf((b),"%.*g",(n),(x))'
+ *     The last two assume trailing zeros should not be kept.
  */
-#$d_crypt_r HAS_CRYPT_R           /**/
-#define CRYPT_R_PROTO $crypt_r_proto      /**/
+#define Gconvert(x,n,t,b) $d_Gconvert
 
-/* HAS_CSH:
- *     This symbol, if defined, indicates that the C-shell exists.
+/* HAS_GETPAGESIZE:
+ *     This symbol, if defined, indicates that the getpagesize system call
+ *     is available to get system page size, which is the granularity of
+ *     many memory management calls.
  */
-/* CSH:
- *     This symbol, if defined, contains the full pathname of csh.
+#$d_getpagsz HAS_GETPAGESIZE           /**/
+
+/* HAS_GNULIBC:
+ *     This symbol, if defined, indicates to the C program that
+ *     the GNU C library is being used.  A better check is to use
+ *     the __GLIBC__ and __GLIBC_MINOR__ symbols supplied with glibc.
  */
-#$d_csh HAS_CSH                /**/
-#ifdef HAS_CSH
-#define CSH "$full_csh"        /**/
+#$d_gnulibc HAS_GNULIBC        /**/
+#if defined(HAS_GNULIBC) && !defined(_GNU_SOURCE)
+#   define _GNU_SOURCE
 #endif
 
-/* HAS_CTERMID_R:
- *     This symbol, if defined, indicates that the ctermid_r routine
- *     is available to ctermid re-entrantly.
- */
-/* CTERMID_R_PROTO:
- *     This symbol encodes the prototype of ctermid_r.
- *     It is zero if d_ctermid_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_ctermid_r
- *     is defined.
+/* HAS_ISASCII:
+ *     This manifest constant lets the C program know that isascii
+ *     is available.
  */
-#$d_ctermid_r HAS_CTERMID_R       /**/
-#define CTERMID_R_PROTO $ctermid_r_proto          /**/
+#$d_isascii HAS_ISASCII                /**/
 
-/* HAS_CTIME_R:
- *     This symbol, if defined, indicates that the ctime_r routine
- *     is available to ctime re-entrantly.
- */
-/* CTIME_R_PROTO:
- *     This symbol encodes the prototype of ctime_r.
- *     It is zero if d_ctime_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_ctime_r
- *     is defined.
+/* HAS_LCHOWN:
+ *     This symbol, if defined, indicates that the lchown routine is
+ *     available to operate on a symbolic link (instead of following the
+ *     link).
  */
-#$d_ctime_r HAS_CTIME_R           /**/
-#define CTIME_R_PROTO $ctime_r_proto      /**/
+#$d_lchown HAS_LCHOWN          /**/
 
-/* HAS_DLADDR:
- *     This symbol, if defined, indicates that the dladdr() routine is
- *     available to query dynamic linker information for an address.
- *     The <dlfcn.h> header must be included to use this routine.
+/* HAS_OPEN3:
+ *     This manifest constant lets the C program know that the three
+ *     argument form of open(2) is available.
  */
-#$d_dladdr HAS_DLADDR  /**/
+#$d_open3 HAS_OPEN3            /**/
 
-/* SETUID_SCRIPTS_ARE_SECURE_NOW:
- *     This symbol, if defined, indicates that the bug that prevents
- *     setuid scripts from being secure is not present in this kernel.
- */
-/* DOSUID:
- *     This symbol, if defined, indicates that the C program should
- *     check the script that it is executing for setuid/setgid bits, and
- *     attempt to emulate setuid/setgid on systems that have disabled
- *     setuid #! scripts because the kernel can't do it securely.
- *     It is up to the package designer to make sure that this emulation
- *     is done securely.  Among other things, it should do an fstat on
- *     the script it just opened to make sure it really is a setuid/setgid
- *     script, it should make sure the arguments passed correspond exactly
- *     to the argument on the #! line, and it should not trust any
- *     subprocesses to which it must pass the filename rather than the
- *     file descriptor of the script to be executed.
+/* HAS_SAFE_BCOPY:
+ *     This symbol, if defined, indicates that the bcopy routine is available
+ *     to copy potentially overlapping memory blocks. Normally, you should
+ *     probably use memmove() or memcpy(). If neither is defined, roll your
+ *     own version.
  */
-#$d_suidsafe SETUID_SCRIPTS_ARE_SECURE_NOW     /**/
-#$d_dosuid DOSUID              /**/
+#$d_safebcpy HAS_SAFE_BCOPY    /**/
 
-/* HAS_DRAND48_R:
- *     This symbol, if defined, indicates that the drand48_r routine
- *     is available to drand48 re-entrantly.
- */
-/* DRAND48_R_PROTO:
- *     This symbol encodes the prototype of drand48_r.
- *     It is zero if d_drand48_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_drand48_r
- *     is defined.
+/* HAS_SAFE_MEMCPY:
+ *     This symbol, if defined, indicates that the memcpy routine is available
+ *     to copy potentially overlapping memory blocks.  If you need to
+ *     copy overlapping memory blocks, you should check HAS_MEMMOVE and
+ *     use memmove() instead, if available.
  */
-#$d_drand48_r HAS_DRAND48_R       /**/
-#define DRAND48_R_PROTO $drand48_r_proto          /**/
+#$d_safemcpy HAS_SAFE_MEMCPY   /**/
 
-/* HAS_DRAND48_PROTO:
- *     This symbol, if defined, indicates that the system provides
- *     a prototype for the drand48() function.  Otherwise, it is up
- *     to the program to supply one.  A good guess is
- *             extern double drand48(void);
+/* HAS_SANE_MEMCMP:
+ *     This symbol, if defined, indicates that the memcmp routine is available
+ *     and can be used to compare relative magnitudes of chars with their high
+ *     bits set.  If it is not defined, roll your own version.
  */
-#$d_drand48proto       HAS_DRAND48_PROTO       /**/
+#$d_sanemcmp HAS_SANE_MEMCMP   /**/
 
-/* HAS_EACCESS:
- *     This symbol, if defined, indicates that the eaccess routine is
- *     available to do extended access checks.
+/* HAS_SIGACTION:
+ *     This symbol, if defined, indicates that Vr4's sigaction() routine
+ *     is available.
  */
-#$d_eaccess HAS_EACCESS                /**/
+#$d_sigaction HAS_SIGACTION    /**/
 
-/* HAS_ENDGRENT:
- *     This symbol, if defined, indicates that the getgrent routine is
- *     available for finalizing sequential access of the group database.
+/* HAS_SIGINFO_SI_ERRNO:
+ *     This symbol, if defined, indicates that siginfo_t has the
+ *     si_errno member
  */
-#$d_endgrent HAS_ENDGRENT              /**/
-
-/* HAS_ENDGRENT_R:
- *     This symbol, if defined, indicates that the endgrent_r routine
- *     is available to endgrent re-entrantly.
+/* HAS_SIGINFO_SI_PID:
+ *     This symbol, if defined, indicates that siginfo_t has the
+ *     si_pid member
  */
-/* ENDGRENT_R_PROTO:
- *     This symbol encodes the prototype of endgrent_r.
- *     It is zero if d_endgrent_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_endgrent_r
- *     is defined.
+/* HAS_SIGINFO_SI_UID:
+ *     This symbol, if defined, indicates that siginfo_t has the
+ *     si_uid member
  */
-#$d_endgrent_r HAS_ENDGRENT_R     /**/
-#define ENDGRENT_R_PROTO $endgrent_r_proto        /**/
-
-/* HAS_ENDHOSTENT:
- *     This symbol, if defined, indicates that the endhostent() routine is
- *     available to close whatever was being used for host queries.
+/* HAS_SIGINFO_SI_ADDR:
+ *     This symbol, if defined, indicates that siginfo_t has the
+ *     si_addr member
  */
-#$d_endhent HAS_ENDHOSTENT             /**/
-
-/* HAS_ENDHOSTENT_R:
- *     This symbol, if defined, indicates that the endhostent_r routine
- *     is available to endhostent re-entrantly.
+/* HAS_SIGINFO_SI_STATUS:
+ *     This symbol, if defined, indicates that siginfo_t has the
+ *     si_status member
  */
-/* ENDHOSTENT_R_PROTO:
- *     This symbol encodes the prototype of endhostent_r.
- *     It is zero if d_endhostent_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_endhostent_r
- *     is defined.
+/* HAS_SIGINFO_SI_BAND:
+ *     This symbol, if defined, indicates that siginfo_t has the
+ *     si_band member
  */
-#$d_endhostent_r HAS_ENDHOSTENT_R         /**/
-#define ENDHOSTENT_R_PROTO $endhostent_r_proto    /**/
-
-/* HAS_ENDNETENT:
- *     This symbol, if defined, indicates that the endnetent() routine is
- *     available to close whatever was being used for network queries.
+/* HAS_SIGINFO_SI_VALUE:
+ *     This symbol, if defined, indicates that siginfo_t has the
+ *     si_value member
  */
-#$d_endnent HAS_ENDNETENT              /**/
+#$d_siginfo_si_errno   HAS_SIGINFO_SI_ERRNO    /**/
+#$d_siginfo_si_pid     HAS_SIGINFO_SI_PID      /**/
+#$d_siginfo_si_uid     HAS_SIGINFO_SI_UID      /**/
+#$d_siginfo_si_addr    HAS_SIGINFO_SI_ADDR     /**/
+#$d_siginfo_si_status  HAS_SIGINFO_SI_STATUS   /**/
+#$d_siginfo_si_band    HAS_SIGINFO_SI_BAND     /**/
+#$d_siginfo_si_value   HAS_SIGINFO_SI_VALUE    /**/
 
-/* HAS_ENDNETENT_R:
- *     This symbol, if defined, indicates that the endnetent_r routine
- *     is available to endnetent re-entrantly.
- */
-/* ENDNETENT_R_PROTO:
- *     This symbol encodes the prototype of endnetent_r.
- *     It is zero if d_endnetent_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_endnetent_r
- *     is defined.
+/* HAS_SIGSETJMP:
+ *     This variable indicates to the C program that the sigsetjmp()
+ *     routine is available to save the calling process's registers
+ *     and stack environment for later use by siglongjmp(), and
+ *     to optionally save the process's signal mask.  See
+ *     Sigjmp_buf, Sigsetjmp, and Siglongjmp.
  */
-#$d_endnetent_r HAS_ENDNETENT_R           /**/
-#define ENDNETENT_R_PROTO $endnetent_r_proto      /**/
-
-/* HAS_ENDPROTOENT:
- *     This symbol, if defined, indicates that the endprotoent() routine is
- *     available to close whatever was being used for protocol queries.
+/* Sigjmp_buf:
+ *     This is the buffer type to be used with Sigsetjmp and Siglongjmp.
  */
-#$d_endpent HAS_ENDPROTOENT            /**/
-
-/* HAS_ENDPROTOENT_R:
- *     This symbol, if defined, indicates that the endprotoent_r routine
- *     is available to endprotoent re-entrantly.
+/* Sigsetjmp:
+ *     This macro is used in the same way as sigsetjmp(), but will invoke
+ *     traditional setjmp() if sigsetjmp isn't available.
+ *     See HAS_SIGSETJMP.
  */
-/* ENDPROTOENT_R_PROTO:
- *     This symbol encodes the prototype of endprotoent_r.
- *     It is zero if d_endprotoent_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_endprotoent_r
- *     is defined.
+/* Siglongjmp:
+ *     This macro is used in the same way as siglongjmp(), but will invoke
+ *     traditional longjmp() if siglongjmp isn't available.
+ *     See HAS_SIGSETJMP.
  */
-#$d_endprotoent_r HAS_ENDPROTOENT_R       /**/
-#define ENDPROTOENT_R_PROTO $endprotoent_r_proto          /**/
+#$d_sigsetjmp HAS_SIGSETJMP    /**/
+#ifdef HAS_SIGSETJMP
+#define Sigjmp_buf sigjmp_buf
+#define Sigsetjmp(buf,save_mask) sigsetjmp((buf),(save_mask))
+#define Siglongjmp(buf,retval) siglongjmp((buf),(retval))
+#else
+#define Sigjmp_buf jmp_buf
+#define Sigsetjmp(buf,save_mask) setjmp((buf))
+#define Siglongjmp(buf,retval) longjmp((buf),(retval))
+#endif
 
-/* HAS_ENDPWENT:
- *     This symbol, if defined, indicates that the getgrent routine is
- *     available for finalizing sequential access of the passwd database.
+/* HAS_STATIC_INLINE:
+ *     This symbol, if defined, indicates that the C compiler supports
+ *     C99-style static inline.  That is, the function can't be called
+ *     from another translation unit.
  */
-#$d_endpwent HAS_ENDPWENT              /**/
+/* PERL_STATIC_INLINE:
+ *     This symbol gives the best-guess incantation to use for static
+ *     inline functions.  If HAS_STATIC_INLINE is defined, this will
+ *     give C99-style inline.  If HAS_STATIC_INLINE is not defined,
+ *     this will give a plain 'static'.  It will always be defined
+ *     to something that gives static linkage.
+ *     Possibilities include
+ *             static inline       (c99)
+ *             static __inline__   (gcc -ansi)
+ *             static __inline     (MSVC)
+ *             static _inline      (older MSVC)
+ *             static              (c89 compilers)
+ */
+#$d_static_inline HAS_STATIC_INLINE                            /**/
+#define PERL_STATIC_INLINE $perl_static_inline /**/
 
-/* HAS_ENDPWENT_R:
- *     This symbol, if defined, indicates that the endpwent_r routine
- *     is available to endpwent re-entrantly.
+/* USE_STDIO_PTR:
+ *     This symbol is defined if the _ptr and _cnt fields (or similar)
+ *     of the stdio FILE structure can be used to access the stdio buffer
+ *     for a file handle.  If this is defined, then the FILE_ptr(fp)
+ *     and FILE_cnt(fp) macros will also be defined and should be used
+ *     to access these fields.
  */
-/* ENDPWENT_R_PROTO:
- *     This symbol encodes the prototype of endpwent_r.
- *     It is zero if d_endpwent_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_endpwent_r
- *     is defined.
+/* FILE_ptr:
+ *     This macro is used to access the _ptr field (or equivalent) of the
+ *     FILE structure pointed to by its argument. This macro will always be
+ *     defined if USE_STDIO_PTR is defined.
  */
-#$d_endpwent_r HAS_ENDPWENT_R     /**/
-#define ENDPWENT_R_PROTO $endpwent_r_proto        /**/
-
-/* HAS_ENDSERVENT:
- *     This symbol, if defined, indicates that the endservent() routine is
- *     available to close whatever was being used for service queries.
+/* STDIO_PTR_LVALUE:
+ *     This symbol is defined if the FILE_ptr macro can be used as an
+ *     lvalue.
  */
-#$d_endsent HAS_ENDSERVENT             /**/
-
-/* HAS_ENDSERVENT_R:
- *     This symbol, if defined, indicates that the endservent_r routine
- *     is available to endservent re-entrantly.
+/* FILE_cnt:
+ *     This macro is used to access the _cnt field (or equivalent) of the
+ *     FILE structure pointed to by its argument. This macro will always be
+ *     defined if USE_STDIO_PTR is defined.
  */
-/* ENDSERVENT_R_PROTO:
- *     This symbol encodes the prototype of endservent_r.
- *     It is zero if d_endservent_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_endservent_r
- *     is defined.
+/* STDIO_CNT_LVALUE:
+ *     This symbol is defined if the FILE_cnt macro can be used as an
+ *     lvalue.
  */
-#$d_endservent_r HAS_ENDSERVENT_R         /**/
-#define ENDSERVENT_R_PROTO $endservent_r_proto    /**/
-
-/* HAS_FD_SET:
- *     This symbol, when defined, indicates presence of the fd_set typedef
- *     in <sys/types.h>
+/* STDIO_PTR_LVAL_SETS_CNT:
+ *     This symbol is defined if using the FILE_ptr macro as an lvalue
+ *     to increase the pointer by n has the side effect of decreasing the
+ *     value of File_cnt(fp) by n.
  */
-#$d_fd_set HAS_FD_SET  /**/
-
-/* FLEXFILENAMES:
- *     This symbol, if defined, indicates that the system supports filenames
- *     longer than 14 characters.
+/* STDIO_PTR_LVAL_NOCHANGE_CNT:
+ *     This symbol is defined if using the FILE_ptr macro as an lvalue
+ *     to increase the pointer by n leaves File_cnt(fp) unchanged.
  */
-#$d_flexfnam   FLEXFILENAMES           /**/
+#$d_stdstdio USE_STDIO_PTR     /**/
+#ifdef USE_STDIO_PTR
+#define FILE_ptr(fp)   $stdio_ptr
+#$d_stdio_ptr_lval STDIO_PTR_LVALUE            /**/
+#define FILE_cnt(fp)   $stdio_cnt
+#$d_stdio_cnt_lval STDIO_CNT_LVALUE            /**/
+#$d_stdio_ptr_lval_sets_cnt STDIO_PTR_LVAL_SETS_CNT    /**/
+#$d_stdio_ptr_lval_nochange_cnt STDIO_PTR_LVAL_NOCHANGE_CNT    /**/
+#endif
 
-/* Gconvert:
- *     This preprocessor macro is defined to convert a floating point
- *     number to a string without a trailing decimal point.  This
- *     emulates the behavior of sprintf("%g"), but is sometimes much more
- *     efficient.  If gconvert() is not available, but gcvt() drops the
- *     trailing decimal point, then gcvt() is used.  If all else fails,
- *     a macro using sprintf("%g") is used. Arguments for the Gconvert
- *     macro are: value, number of digits, whether trailing zeros should
- *     be retained, and the output buffer.
- *     The usual values are:
- *             d_Gconvert='gconvert((x),(n),(t),(b))'
- *             d_Gconvert='gcvt((x),(n),(b))'
- *             d_Gconvert='sprintf((b),"%.*g",(n),(x))'
- *     The last two assume trailing zeros should not be kept.
+/* USE_STDIO_BASE:
+ *     This symbol is defined if the _base field (or similar) of the
+ *     stdio FILE structure can be used to access the stdio buffer for
+ *     a file handle.  If this is defined, then the FILE_base(fp) macro
+ *     will also be defined and should be used to access this field.
+ *     Also, the FILE_bufsiz(fp) macro will be defined and should be used
+ *     to determine the number of bytes in the buffer.  USE_STDIO_BASE
+ *     will never be defined unless USE_STDIO_PTR is.
  */
-#define Gconvert(x,n,t,b) $d_Gconvert
-
-/* HAS_GETGRENT:
- *     This symbol, if defined, indicates that the getgrent routine is
- *     available for sequential access of the group database.
+/* FILE_base:
+ *     This macro is used to access the _base field (or equivalent) of the
+ *     FILE structure pointed to by its argument. This macro will always be
+ *     defined if USE_STDIO_BASE is defined.
  */
-#$d_getgrent HAS_GETGRENT              /**/
+/* FILE_bufsiz:
+ *     This macro is used to determine the number of bytes in the I/O
+ *     buffer pointed to by _base field (or equivalent) of the FILE
+ *     structure pointed to its argument. This macro will always be defined
+ *     if USE_STDIO_BASE is defined.
+ */
+#$d_stdiobase USE_STDIO_BASE   /**/
+#ifdef USE_STDIO_BASE
+#define FILE_base(fp)  $stdio_base
+#define FILE_bufsiz(fp)        $stdio_bufsiz
+#endif
 
-/* HAS_GETGRENT_R:
- *     This symbol, if defined, indicates that the getgrent_r routine
- *     is available to getgrent re-entrantly.
+/* HAS_VPRINTF:
+ *     This symbol, if defined, indicates that the vprintf routine is available
+ *     to printf with a pointer to an argument list.  If unavailable, you
+ *     may need to write your own, probably in terms of _doprnt().
  */
-/* GETGRENT_R_PROTO:
- *     This symbol encodes the prototype of getgrent_r.
- *     It is zero if d_getgrent_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_getgrent_r
- *     is defined.
+/* USE_CHAR_VSPRINTF:
+ *     This symbol is defined if this system has vsprintf() returning type
+ *     (char*).  The trend seems to be to declare it as "int vsprintf()".  It
+ *     is up to the package author to declare vsprintf correctly based on the
+ *     symbol.
  */
-#$d_getgrent_r HAS_GETGRENT_R     /**/
-#define GETGRENT_R_PROTO $getgrent_r_proto        /**/
+#$d_vprintf HAS_VPRINTF        /**/
+#$d_charvspr USE_CHAR_VSPRINTF         /**/
 
-/* HAS_GETGRGID_R:
- *     This symbol, if defined, indicates that the getgrgid_r routine
- *     is available to getgrgid re-entrantly.
- */
-/* GETGRGID_R_PROTO:
- *     This symbol encodes the prototype of getgrgid_r.
- *     It is zero if d_getgrgid_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_getgrgid_r
- *     is defined.
+/* DOUBLESIZE:
+ *     This symbol contains the size of a double, so that the C preprocessor
+ *     can make decisions based on it.
  */
-#$d_getgrgid_r HAS_GETGRGID_R     /**/
-#define GETGRGID_R_PROTO $getgrgid_r_proto        /**/
+#define DOUBLESIZE $doublesize         /**/
 
-/* HAS_GETGRNAM_R:
- *     This symbol, if defined, indicates that the getgrnam_r routine
- *     is available to getgrnam re-entrantly.
+/* I_TIME:
+ *     This symbol, if defined, indicates to the C program that it should
+ *     include <time.h>.
  */
-/* GETGRNAM_R_PROTO:
- *     This symbol encodes the prototype of getgrnam_r.
- *     It is zero if d_getgrnam_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_getgrnam_r
- *     is defined.
+/* I_SYS_TIME:
+ *     This symbol, if defined, indicates to the C program that it should
+ *     include <sys/time.h>.
  */
-#$d_getgrnam_r HAS_GETGRNAM_R     /**/
-#define GETGRNAM_R_PROTO $getgrnam_r_proto        /**/
-
-/* HAS_GETHOSTBYADDR:
- *     This symbol, if defined, indicates that the gethostbyaddr() routine is
- *     available to look up hosts by their IP addresses.
+/* I_SYS_TIME_KERNEL:
+ *     This symbol, if defined, indicates to the C program that it should
+ *     include <sys/time.h> with KERNEL defined.
  */
-#$d_gethbyaddr HAS_GETHOSTBYADDR               /**/
-
-/* HAS_GETHOSTBYNAME:
- *     This symbol, if defined, indicates that the gethostbyname() routine is
- *     available to look up host names in some data base or other.
+/* HAS_TM_TM_ZONE:
+ *     This symbol, if defined, indicates to the C program that
+ *     the struct tm has a tm_zone field.
  */
-#$d_gethbyname HAS_GETHOSTBYNAME               /**/
-
-/* HAS_GETHOSTENT:
- *     This symbol, if defined, indicates that the gethostent() routine is
- *     available to look up host names in some data base or another.
+/* HAS_TM_TM_GMTOFF:
+ *     This symbol, if defined, indicates to the C program that
+ *     the struct tm has a tm_gmtoff field.
  */
-#$d_gethent HAS_GETHOSTENT             /**/
+#$i_time I_TIME                /**/
+#$i_systime I_SYS_TIME         /**/
+#$i_systimek I_SYS_TIME_KERNEL         /**/
+#$d_tm_tm_zone HAS_TM_TM_ZONE          /**/
+#$d_tm_tm_gmtoff HAS_TM_TM_GMTOFF              /**/
 
-/* HAS_GETHOSTNAME:
- *     This symbol, if defined, indicates that the C program may use the
- *     gethostname() routine to derive the host name.  See also HAS_UNAME
- *     and PHOSTNAME.
+/* VAL_O_NONBLOCK:
+ *     This symbol is to be used during open() or fcntl(F_SETFL) to turn on
+ *     non-blocking I/O for the file descriptor. Note that there is no way
+ *     back, i.e. you cannot turn it blocking again this way. If you wish to
+ *     alternatively switch between blocking and non-blocking, use the
+ *     ioctl(FIOSNBIO) call instead, but that is not supported by all devices.
  */
-/* HAS_UNAME:
- *     This symbol, if defined, indicates that the C program may use the
- *     uname() routine to derive the host name.  See also HAS_GETHOSTNAME
- *     and PHOSTNAME.
+/* VAL_EAGAIN:
+ *     This symbol holds the errno error code set by read() when no data was
+ *     present on the non-blocking file descriptor.
  */
-/* PHOSTNAME:
- *     This symbol, if defined, indicates the command to feed to the
- *     popen() routine to derive the host name.  See also HAS_GETHOSTNAME
- *     and HAS_UNAME.  Note that the command uses a fully qualified path,
- *     so that it is safe even if used by a process with super-user
- *     privileges.
+/* RD_NODATA:
+ *     This symbol holds the return code from read() when no data is present
+ *     on the non-blocking file descriptor. Be careful! If EOF_NONBLOCK is
+ *     not defined, then you can't distinguish between no data and EOF by
+ *     issuing a read(). You'll have to find another way to tell for sure!
  */
-/* HAS_PHOSTNAME:
- *     This symbol, if defined, indicates that the C program may use the
- *     contents of PHOSTNAME as a command to feed to the popen() routine
- *     to derive the host name.
+/* EOF_NONBLOCK:
+ *     This symbol, if defined, indicates to the C program that a read() on
+ *     a non-blocking file descriptor will return 0 on EOF, and not the value
+ *     held in RD_NODATA (-1 usually, in that case!).
  */
-#$d_gethname HAS_GETHOSTNAME   /**/
-#$d_uname HAS_UNAME            /**/
-#$d_phostname HAS_PHOSTNAME    /**/
-#ifdef HAS_PHOSTNAME
-#define PHOSTNAME "$aphostname"        /* How to get the host name */
-#endif
+#define VAL_O_NONBLOCK $o_nonblock
+#define VAL_EAGAIN $eagain
+#define RD_NODATA $rd_nodata
+#$d_eofnblk EOF_NONBLOCK
 
-/* HAS_GETHOSTBYADDR_R:
- *     This symbol, if defined, indicates that the gethostbyaddr_r routine
- *     is available to gethostbyaddr re-entrantly.
- */
-/* GETHOSTBYADDR_R_PROTO:
- *     This symbol encodes the prototype of gethostbyaddr_r.
- *     It is zero if d_gethostbyaddr_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_gethostbyaddr_r
- *     is defined.
+/* PTRSIZE:
+ *     This symbol contains the size of a pointer, so that the C preprocessor
+ *     can make decisions based on it.  It will be sizeof(void *) if
+ *     the compiler supports (void *); otherwise it will be
+ *     sizeof(char *).
  */
-#$d_gethostbyaddr_r HAS_GETHOSTBYADDR_R           /**/
-#define GETHOSTBYADDR_R_PROTO $gethostbyaddr_r_proto      /**/
+#define PTRSIZE $ptrsize               /**/
 
-/* HAS_GETHOSTBYNAME_R:
- *     This symbol, if defined, indicates that the gethostbyname_r routine
- *     is available to gethostbyname re-entrantly.
+/* Drand01:
+ *     This macro is to be used to generate uniformly distributed
+ *     random numbers over the range [0., 1.[.  You may have to supply
+ *     an 'extern double drand48();' in your program since SunOS 4.1.3
+ *     doesn't provide you with anything relevant in its headers.
+ *     See HAS_DRAND48_PROTO.
  */
-/* GETHOSTBYNAME_R_PROTO:
- *     This symbol encodes the prototype of gethostbyname_r.
- *     It is zero if d_gethostbyname_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_gethostbyname_r
- *     is defined.
+/* Rand_seed_t:
+ *     This symbol defines the type of the argument of the
+ *     random seed function.
  */
-#$d_gethostbyname_r HAS_GETHOSTBYNAME_R           /**/
-#define GETHOSTBYNAME_R_PROTO $gethostbyname_r_proto      /**/
-
-/* HAS_GETHOSTENT_R:
- *     This symbol, if defined, indicates that the gethostent_r routine
- *     is available to gethostent re-entrantly.
+/* seedDrand01:
+ *     This symbol defines the macro to be used in seeding the
+ *     random number generator (see Drand01).
  */
-/* GETHOSTENT_R_PROTO:
- *     This symbol encodes the prototype of gethostent_r.
- *     It is zero if d_gethostent_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_gethostent_r
- *     is defined.
+/* RANDBITS:
+ *     This symbol indicates how many bits are produced by the
+ *     function used to generate normalized random numbers.
+ *     Values include 15, 16, 31, and 48.
  */
-#$d_gethostent_r HAS_GETHOSTENT_R         /**/
-#define GETHOSTENT_R_PROTO $gethostent_r_proto    /**/
+#define Drand01()              $drand01                /**/
+#define Rand_seed_t            $randseedtype           /**/
+#define seedDrand01(x) $seedfunc((Rand_seed_t)x)       /**/
+#define RANDBITS               $randbits               /**/
 
-/* HAS_GETHOST_PROTOS:
- *     This symbol, if defined, indicates that <netdb.h> includes
- *     prototypes for gethostent(), gethostbyname(), and
- *     gethostbyaddr().  Otherwise, it is up to the program to guess
- *     them.  See netdbtype.U for probing for various Netdb_xxx_t types.
+/* SSize_t:
+ *     This symbol holds the type used by functions that return
+ *     a count of bytes or an error condition.  It must be a signed type.
+ *     It is usually ssize_t, but may be long or int, etc.
+ *     It may be necessary to include <sys/types.h> or <unistd.h>
+ *     to get any typedef'ed information.
+ *     We will pick a type such that sizeof(SSize_t) == sizeof(Size_t).
  */
-#$d_gethostprotos      HAS_GETHOST_PROTOS      /**/
+#define SSize_t $ssizetype      /* signed count of bytes */
 
-/* HAS_GETLOGIN_R:
- *     This symbol, if defined, indicates that the getlogin_r routine
- *     is available to getlogin re-entrantly.
- */
-/* GETLOGIN_R_PROTO:
- *     This symbol encodes the prototype of getlogin_r.
- *     It is zero if d_getlogin_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_getlogin_r
- *     is defined.
+/* EBCDIC:
+ *     This symbol, if defined, indicates that this system uses
+ *     EBCDIC encoding.
  */
-#$d_getlogin_r HAS_GETLOGIN_R     /**/
-#define GETLOGIN_R_PROTO $getlogin_r_proto        /**/
+#$ebcdic       EBCDIC          /**/
 
-/* HAS_GETNETBYADDR:
- *     This symbol, if defined, indicates that the getnetbyaddr() routine is
- *     available to look up networks by their IP addresses.
+/* ARCHLIB:
+ *     This variable, if defined, holds the name of the directory in
+ *     which the user wants to put architecture-dependent public
+ *     library files for $package.  It is most often a local directory
+ *     such as /usr/local/lib.  Programs using this variable must be
+ *     prepared to deal with filename expansion.  If ARCHLIB is the
+ *     same as PRIVLIB, it is not defined, since presumably the
+ *     program already searches PRIVLIB.
  */
-#$d_getnbyaddr HAS_GETNETBYADDR                /**/
-
-/* HAS_GETNETBYNAME:
- *     This symbol, if defined, indicates that the getnetbyname() routine is
- *     available to look up networks by their names.
+/* ARCHLIB_EXP:
+ *     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.
  */
-#$d_getnbyname HAS_GETNETBYNAME                /**/
+#$d_archlib ARCHLIB "$archlib"         /**/
+#$d_archlib ARCHLIB_EXP "$archlibexp"          /**/
 
-/* HAS_GETNETENT:
- *     This symbol, if defined, indicates that the getnetent() routine is
- *     available to look up network names in some data base or another.
+/* BIN:
+ *     This symbol holds the path of the bin directory where the package will
+ *     be installed. Program must be prepared to deal with ~name substitution.
  */
-#$d_getnent HAS_GETNETENT              /**/
-
-/* HAS_GETNETBYADDR_R:
- *     This symbol, if defined, indicates that the getnetbyaddr_r routine
- *     is available to getnetbyaddr re-entrantly.
+/* BIN_EXP:
+ *     This symbol is the filename expanded version of the BIN symbol, for
+ *     programs that do not want to deal with that at run-time.
  */
-/* GETNETBYADDR_R_PROTO:
- *     This symbol encodes the prototype of getnetbyaddr_r.
- *     It is zero if d_getnetbyaddr_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_getnetbyaddr_r
- *     is defined.
+/* PERL_RELOCATABLE_INC:
+ *     This symbol, if defined, indicates that we'd like to relocate entries
+ *     in @INC at run time based on the location of the perl binary.
  */
-#$d_getnetbyaddr_r HAS_GETNETBYADDR_R     /**/
-#define GETNETBYADDR_R_PROTO $getnetbyaddr_r_proto        /**/
+#define BIN "$bin"     /**/
+#define BIN_EXP "$binexp"      /**/
+#define PERL_RELOCATABLE_INC "$userelocatableinc"              /**/
 
-/* HAS_GETNETBYNAME_R:
- *     This symbol, if defined, indicates that the getnetbyname_r routine
- *     is available to getnetbyname re-entrantly.
- */
-/* GETNETBYNAME_R_PROTO:
- *     This symbol encodes the prototype of getnetbyname_r.
- *     It is zero if d_getnetbyname_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_getnetbyname_r
- *     is defined.
+/* PERL_INC_VERSION_LIST:
+ *     This variable specifies the list of subdirectories in over
+ *     which perl.c:incpush() and lib/lib.pm will automatically
+ *     search when adding directories to @INC, in a format suitable
+ *     for a C initialization string.  See the inc_version_list entry
+ *     in Porting/Glossary for more details.
  */
-#$d_getnetbyname_r HAS_GETNETBYNAME_R     /**/
-#define GETNETBYNAME_R_PROTO $getnetbyname_r_proto        /**/
+#$d_inc_version_list PERL_INC_VERSION_LIST $inc_version_list_init              /**/
 
-/* HAS_GETNETENT_R:
- *     This symbol, if defined, indicates that the getnetent_r routine
- *     is available to getnetent re-entrantly.
- */
-/* GETNETENT_R_PROTO:
- *     This symbol encodes the prototype of getnetent_r.
- *     It is zero if d_getnetent_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_getnetent_r
- *     is defined.
+/* INSTALL_USR_BIN_PERL:
+ *     This symbol, if defined, indicates that Perl is to be installed
+ *     also as /usr/bin/perl.
  */
-#$d_getnetent_r HAS_GETNETENT_R           /**/
-#define GETNETENT_R_PROTO $getnetent_r_proto      /**/
+#$installusrbinperl INSTALL_USR_BIN_PERL       /**/
 
-/* HAS_GETNET_PROTOS:
- *     This symbol, if defined, indicates that <netdb.h> includes
- *     prototypes for getnetent(), getnetbyname(), and
- *     getnetbyaddr().  Otherwise, it is up to the program to guess
- *     them.  See netdbtype.U for probing for various Netdb_xxx_t types.
+/* PERL_OTHERLIBDIRS:
+ *     This variable contains a colon-separated set of paths for the perl
+ *     binary to search for additional library files or modules.
+ *     These directories will be tacked to the end of @INC.
+ *     Perl will automatically search below each path for version-
+ *     and architecture-specific directories.  See PERL_INC_VERSION_LIST
+ *     for more details.
  */
-#$d_getnetprotos       HAS_GETNET_PROTOS       /**/
+#$d_perl_otherlibdirs PERL_OTHERLIBDIRS "$otherlibdirs"                /**/
 
-/* HAS_GETPAGESIZE:
- *     This symbol, if defined, indicates that the getpagesize system call
- *     is available to get system page size, which is the granularity of
- *     many memory management calls.
+/* PRIVLIB:
+ *     This symbol contains the name of the private library for this package.
+ *     The library is private in the sense that it needn't be in anyone's
+ *     execution path, but it should be accessible by the world.  The program
+ *     should be prepared to do ~ expansion.
  */
-#$d_getpagsz HAS_GETPAGESIZE           /**/
-
-/* HAS_GETPROTOENT:
- *     This symbol, if defined, indicates that the getprotoent() routine is
- *     available to look up protocols in some data base or another.
+/* PRIVLIB_EXP:
+ *     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.
  */
-#$d_getpent HAS_GETPROTOENT            /**/
+#define PRIVLIB "$privlib"             /**/
+#define PRIVLIB_EXP "$privlibexp"              /**/
 
-/* HAS_GETPGRP:
- *     This symbol, if defined, indicates that the getpgrp routine is
- *     available to get the current process group.
+/* SITEARCH:
+ *     This symbol contains the name of the private library for this package.
+ *     The library is private in the sense that it needn't be in anyone's
+ *     execution path, but it should be accessible by the world.  The program
+ *     should be prepared to do ~ expansion.
+ *     The standard distribution will put nothing in this directory.
+ *     After perl has been installed, users may install their own local
+ *     architecture-dependent modules in this directory with
+ *             MakeMaker Makefile.PL
+ *     or equivalent.  See INSTALL for details.
  */
-/* USE_BSD_GETPGRP:
- *     This symbol, if defined, indicates that getpgrp needs one
- *     arguments whereas USG one needs none.
+/* SITEARCH_EXP:
+ *     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.
  */
-#$d_getpgrp HAS_GETPGRP                /**/
-#$d_bsdgetpgrp USE_BSD_GETPGRP /**/
+#$d_sitearch SITEARCH "$sitearch"              /**/
+#$d_sitearch SITEARCH_EXP "$sitearchexp"               /**/
 
-/* HAS_GETPROTOBYNAME:
- *     This symbol, if defined, indicates that the getprotobyname()
- *     routine is available to look up protocols by their name.
+/* SITELIB:
+ *     This symbol contains the name of the private library for this package.
+ *     The library is private in the sense that it needn't be in anyone's
+ *     execution path, but it should be accessible by the world.  The program
+ *     should be prepared to do ~ expansion.
+ *     The standard distribution will put nothing in this directory.
+ *     After perl has been installed, users may install their own local
+ *     architecture-independent modules in this directory with
+ *             MakeMaker Makefile.PL
+ *     or equivalent.  See INSTALL for details.
  */
-/* HAS_GETPROTOBYNUMBER:
- *     This symbol, if defined, indicates that the getprotobynumber()
- *     routine is available to look up protocols by their number.
+/* SITELIB_EXP:
+ *     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.
  */
-#$d_getpbyname HAS_GETPROTOBYNAME              /**/
-#$d_getpbynumber HAS_GETPROTOBYNUMBER          /**/
-
-/* HAS_GETPROTOBYNAME_R:
- *     This symbol, if defined, indicates that the getprotobyname_r routine
- *     is available to getprotobyname re-entrantly.
- */
-/* GETPROTOBYNAME_R_PROTO:
- *     This symbol encodes the prototype of getprotobyname_r.
- *     It is zero if d_getprotobyname_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_getprotobyname_r
- *     is defined.
+/* SITELIB_STEM:
+ *     This define is SITELIB_EXP with any trailing version-specific component
+ *     removed.  The elements in inc_version_list (inc_version_list.U) can
+ *     be tacked onto this variable to generate a list of directories to search.
  */
-#$d_getprotobyname_r HAS_GETPROTOBYNAME_R         /**/
-#define GETPROTOBYNAME_R_PROTO $getprotobyname_r_proto    /**/
+#define SITELIB "$sitelib"             /**/
+#define SITELIB_EXP "$sitelibexp"              /**/
+#define SITELIB_STEM "$sitelib_stem"           /**/
 
-/* HAS_GETPROTOBYNUMBER_R:
- *     This symbol, if defined, indicates that the getprotobynumber_r routine
- *     is available to getprotobynumber re-entrantly.
+/* PERL_VENDORARCH:
+ *     If defined, this symbol contains the name of a private library.
+ *     The library is private in the sense that it needn't be in anyone's
+ *     execution path, but it should be accessible by the world.
+ *     It may have a ~ on the front.
+ *     The standard distribution will put nothing in this directory.
+ *     Vendors who distribute perl may wish to place their own
+ *     architecture-dependent modules and extensions in this directory with
+ *             MakeMaker Makefile.PL INSTALLDIRS=vendor
+ *     or equivalent.  See INSTALL for details.
  */
-/* GETPROTOBYNUMBER_R_PROTO:
- *     This symbol encodes the prototype of getprotobynumber_r.
- *     It is zero if d_getprotobynumber_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_getprotobynumber_r
- *     is defined.
+/* PERL_VENDORARCH_EXP:
+ *     This symbol contains the ~name expanded version of PERL_VENDORARCH, to be used
+ *     in programs that are not prepared to deal with ~ expansion at run-time.
  */
-#$d_getprotobynumber_r HAS_GETPROTOBYNUMBER_R     /**/
-#define GETPROTOBYNUMBER_R_PROTO $getprotobynumber_r_proto        /**/
+#$d_vendorarch PERL_VENDORARCH "$vendorarch"           /**/
+#$d_vendorarch PERL_VENDORARCH_EXP "$vendorarchexp"            /**/
 
-/* HAS_GETPROTOENT_R:
- *     This symbol, if defined, indicates that the getprotoent_r routine
- *     is available to getprotoent re-entrantly.
+/* PERL_VENDORLIB_EXP:
+ *     This symbol contains the ~name expanded version of VENDORLIB, to be used
+ *     in programs that are not prepared to deal with ~ expansion at run-time.
  */
-/* GETPROTOENT_R_PROTO:
- *     This symbol encodes the prototype of getprotoent_r.
- *     It is zero if d_getprotoent_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_getprotoent_r
- *     is defined.
+/* PERL_VENDORLIB_STEM:
+ *     This define is PERL_VENDORLIB_EXP with any trailing version-specific component
+ *     removed.  The elements in inc_version_list (inc_version_list.U) can
+ *     be tacked onto this variable to generate a list of directories to search.
  */
-#$d_getprotoent_r HAS_GETPROTOENT_R       /**/
-#define GETPROTOENT_R_PROTO $getprotoent_r_proto          /**/
+#$d_vendorlib PERL_VENDORLIB_EXP "$vendorlibexp"               /**/
+#$d_vendorlib PERL_VENDORLIB_STEM "$vendorlib_stem"            /**/
 
-/* HAS_GETPROTO_PROTOS:
- *     This symbol, if defined, indicates that <netdb.h> includes
- *     prototypes for getprotoent(), getprotobyname(), and
- *     getprotobyaddr().  Otherwise, it is up to the program to guess
- *     them.  See netdbtype.U for probing for various Netdb_xxx_t types.
+/* OSNAME:
+ *     This symbol contains the name of the operating system, as determined
+ *     by Configure.  You shouldn't rely on it too much; the specific
+ *     feature tests from Configure are generally more reliable.
  */
-#$d_getprotoprotos     HAS_GETPROTO_PROTOS     /**/
-
-/* HAS_GETPWENT:
- *     This symbol, if defined, indicates that the getpwent routine is
- *     available for sequential access of the passwd database.
- *     If this is not available, the older getpw() function may be available.
+/* OSVERS:
+ *     This symbol contains the version of the operating system, as determined
+ *     by Configure.  You shouldn't rely on it too much; the specific
+ *     feature tests from Configure are generally more reliable.
  */
-#$d_getpwent HAS_GETPWENT              /**/
+#define OSNAME "$osname"               /**/
+#define OSVERS "$osvers"               /**/
 
-/* HAS_GETPWENT_R:
- *     This symbol, if defined, indicates that the getpwent_r routine
- *     is available to getpwent re-entrantly.
+/* CAT2:
+ *     This macro concatenates 2 tokens together.
  */
-/* GETPWENT_R_PROTO:
- *     This symbol encodes the prototype of getpwent_r.
- *     It is zero if d_getpwent_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_getpwent_r
- *     is defined.
+/* STRINGIFY:
+ *     This macro surrounds its token with double quotes.
  */
-#$d_getpwent_r HAS_GETPWENT_R     /**/
-#define GETPWENT_R_PROTO $getpwent_r_proto        /**/
+#if $cpp_stuff == 1
+#define CAT2(a,b)      a/**/b
+#define STRINGIFY(a)   "a"
+#endif
+#if $cpp_stuff == 42
+#define PeRl_CaTiFy(a, b)      a ## b
+#define PeRl_StGiFy(a) #a
+#define CAT2(a,b)      PeRl_CaTiFy(a,b)
+#define StGiFy(a)      PeRl_StGiFy(a)
+#define STRINGIFY(a)   PeRl_StGiFy(a)
+#endif
+#if $cpp_stuff != 1 && $cpp_stuff != 42
+#include "Bletch: How does this C preprocessor concatenate tokens?"
+#endif
 
-/* HAS_GETPWNAM_R:
- *     This symbol, if defined, indicates that the getpwnam_r routine
- *     is available to getpwnam re-entrantly.
+/* CPPSTDIN:
+ *     This symbol contains the first part of the string which will invoke
+ *     the C preprocessor on the standard input and produce to standard
+ *     output.  Typical value of "cc -E" or "/lib/cpp", but it can also
+ *     call a wrapper. See CPPRUN.
  */
-/* GETPWNAM_R_PROTO:
- *     This symbol encodes the prototype of getpwnam_r.
- *     It is zero if d_getpwnam_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_getpwnam_r
- *     is defined.
+/* CPPMINUS:
+ *     This symbol contains the second part of the string which will invoke
+ *     the C preprocessor on the standard input and produce to standard
+ *     output.  This symbol will have the value "-" if CPPSTDIN needs a minus
+ *     to specify standard input, otherwise the value is "".
  */
-#$d_getpwnam_r HAS_GETPWNAM_R     /**/
-#define GETPWNAM_R_PROTO $getpwnam_r_proto        /**/
-
-/* HAS_GETPWUID_R:
- *     This symbol, if defined, indicates that the getpwuid_r routine
- *     is available to getpwuid re-entrantly.
+/* CPPRUN:
+ *     This symbol contains the string which will invoke a C preprocessor on
+ *     the standard input and produce to standard output. It needs to end
+ *     with CPPLAST, after all other preprocessor flags have been specified.
+ *     The main difference with CPPSTDIN is that this program will never be a
+ *     pointer to a shell wrapper, i.e. it will be empty if no preprocessor is
+ *     available directly to the user. Note that it may well be different from
+ *     the preprocessor used to compile the C program.
  */
-/* GETPWUID_R_PROTO:
- *     This symbol encodes the prototype of getpwuid_r.
- *     It is zero if d_getpwuid_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_getpwuid_r
- *     is defined.
+/* CPPLAST:
+ *     This symbol is intended to be used along with CPPRUN in the same manner
+ *     symbol CPPMINUS is used with CPPSTDIN. It contains either "-" or "".
  */
-#$d_getpwuid_r HAS_GETPWUID_R     /**/
-#define GETPWUID_R_PROTO $getpwuid_r_proto        /**/
+#define CPPSTDIN "$cppstdin"
+#define CPPMINUS "$cppminus"
+#define CPPRUN "$cpprun"
+#define CPPLAST "$cpplast"
 
-/* HAS_GETSERVENT:
- *     This symbol, if defined, indicates that the getservent() routine is
- *     available to look up network services in some data base or another.
+/* HAS_ACCESS:
+ *     This manifest constant lets the C program know that the access()
+ *     system call is available to check for accessibility using real UID/GID.
+ *     (always present on UNIX.)
  */
-#$d_getsent HAS_GETSERVENT             /**/
+#$d_access HAS_ACCESS          /**/
 
-/* HAS_GETSERVBYNAME_R:
- *     This symbol, if defined, indicates that the getservbyname_r routine
- *     is available to getservbyname re-entrantly.
+/* HASATTRIBUTE_FORMAT:
+ *     Can we handle GCC attribute for checking printf-style formats
  */
-/* GETSERVBYNAME_R_PROTO:
- *     This symbol encodes the prototype of getservbyname_r.
- *     It is zero if d_getservbyname_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_getservbyname_r
- *     is defined.
+/* PRINTF_FORMAT_NULL_OK:
+ *     Allows __printf__ format to be null when checking printf-style
  */
-#$d_getservbyname_r HAS_GETSERVBYNAME_R           /**/
-#define GETSERVBYNAME_R_PROTO $getservbyname_r_proto      /**/
-
-/* HAS_GETSERVBYPORT_R:
- *     This symbol, if defined, indicates that the getservbyport_r routine
- *     is available to getservbyport re-entrantly.
+/* HASATTRIBUTE_MALLOC:
+ *     Can we handle GCC attribute for malloc-style functions.
  */
-/* GETSERVBYPORT_R_PROTO:
- *     This symbol encodes the prototype of getservbyport_r.
- *     It is zero if d_getservbyport_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_getservbyport_r
- *     is defined.
+/* HASATTRIBUTE_NONNULL:
+ *     Can we handle GCC attribute for nonnull function parms.
  */
-#$d_getservbyport_r HAS_GETSERVBYPORT_R           /**/
-#define GETSERVBYPORT_R_PROTO $getservbyport_r_proto      /**/
-
-/* HAS_GETSERVENT_R:
- *     This symbol, if defined, indicates that the getservent_r routine
- *     is available to getservent re-entrantly.
+/* HASATTRIBUTE_NORETURN:
+ *     Can we handle GCC attribute for functions that do not return
  */
-/* GETSERVENT_R_PROTO:
- *     This symbol encodes the prototype of getservent_r.
- *     It is zero if d_getservent_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_getservent_r
- *     is defined.
+/* HASATTRIBUTE_PURE:
+ *     Can we handle GCC attribute for pure functions
  */
-#$d_getservent_r HAS_GETSERVENT_R         /**/
-#define GETSERVENT_R_PROTO $getservent_r_proto    /**/
-
-/* HAS_GETSERV_PROTOS:
- *     This symbol, if defined, indicates that <netdb.h> includes
- *     prototypes for getservent(), getservbyname(), and
- *     getservbyaddr().  Otherwise, it is up to the program to guess
- *     them.  See netdbtype.U for probing for various Netdb_xxx_t types.
+/* HASATTRIBUTE_UNUSED:
+ *     Can we handle GCC attribute for unused variables and arguments
  */
-#$d_getservprotos      HAS_GETSERV_PROTOS      /**/
-
-/* HAS_GETSPNAM_R:
- *     This symbol, if defined, indicates that the getspnam_r routine
- *     is available to getspnam re-entrantly.
+/* HASATTRIBUTE_DEPRECATED:
+ *     Can we handle GCC attribute for marking deprecated APIs
  */
-/* GETSPNAM_R_PROTO:
- *     This symbol encodes the prototype of getspnam_r.
- *     It is zero if d_getspnam_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_getspnam_r
- *     is defined.
+/* HASATTRIBUTE_WARN_UNUSED_RESULT:
+ *     Can we handle GCC attribute for warning on unused results
  */
-#$d_getspnam_r HAS_GETSPNAM_R     /**/
-#define GETSPNAM_R_PROTO $getspnam_r_proto        /**/
+#$d_attribute_deprecated HASATTRIBUTE_DEPRECATED       /**/
+#$d_attribute_format HASATTRIBUTE_FORMAT       /**/
+#$d_printf_format_null PRINTF_FORMAT_NULL_OK   /**/
+#$d_attribute_noreturn HASATTRIBUTE_NORETURN   /**/
+#$d_attribute_malloc HASATTRIBUTE_MALLOC       /**/
+#$d_attribute_nonnull HASATTRIBUTE_NONNULL     /**/
+#$d_attribute_pure HASATTRIBUTE_PURE   /**/
+#$d_attribute_unused HASATTRIBUTE_UNUSED       /**/
+#$d_attribute_warn_unused_result HASATTRIBUTE_WARN_UNUSED_RESULT       /**/
 
-/* HAS_GETSERVBYNAME:
- *     This symbol, if defined, indicates that the getservbyname()
- *     routine is available to look up services by their name.
- */
-/* HAS_GETSERVBYPORT:
- *     This symbol, if defined, indicates that the getservbyport()
- *     routine is available to look up services by their port.
+/* HAS_BACKTRACE:
+ *     This symbol, if defined, indicates that the backtrace() routine is
+ *     available to get a stack trace.  The <execinfo.h> header must be
+ *     included to use this routine.
  */
-#$d_getsbyname HAS_GETSERVBYNAME               /**/
-#$d_getsbyport HAS_GETSERVBYPORT               /**/
+#$d_backtrace HAS_BACKTRACE    /**/
 
-/* HAS_GMTIME_R:
- *     This symbol, if defined, indicates that the gmtime_r routine
- *     is available to gmtime re-entrantly.
+/* HASCONST:
+ *     This symbol, if defined, indicates that this C compiler knows about
+ *     the const type. There is no need to actually test for that symbol
+ *     within your programs. The mere use of the "const" keyword will
+ *     trigger the necessary tests.
  */
-/* GMTIME_R_PROTO:
- *     This symbol encodes the prototype of gmtime_r.
- *     It is zero if d_gmtime_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_gmtime_r
- *     is defined.
+#$d_const HASCONST     /**/
+#ifndef HASCONST
+#define const
+#endif
+
+/* HAS_CSH:
+ *     This symbol, if defined, indicates that the C-shell exists.
  */
-#$d_gmtime_r HAS_GMTIME_R         /**/
-#define GMTIME_R_PROTO $gmtime_r_proto    /**/
+/* CSH:
+ *     This symbol, if defined, contains the full pathname of csh.
+ */
+#$d_csh HAS_CSH                /**/
+#ifdef HAS_CSH
+#define CSH "$full_csh"        /**/
+#endif
 
-/* HAS_GNULIBC:
- *     This symbol, if defined, indicates to the C program that
- *     the GNU C library is being used.  A better check is to use
- *     the __GLIBC__ and __GLIBC_MINOR__ symbols supplied with glibc.
+/* HAS_DLADDR:
+ *     This symbol, if defined, indicates that the dladdr() routine is
+ *     available to query dynamic linker information for an address.
+ *     The <dlfcn.h> header must be included to use this routine.
  */
-#$d_gnulibc HAS_GNULIBC        /**/
-#if defined(HAS_GNULIBC) && !defined(_GNU_SOURCE)
-#   define _GNU_SOURCE
+#$d_dladdr HAS_DLADDR  /**/
+
+/* SETUID_SCRIPTS_ARE_SECURE_NOW:
+ *     This symbol, if defined, indicates that the bug that prevents
+ *     setuid scripts from being secure is not present in this kernel.
+ */
+/* DOSUID:
+ *     This symbol, if defined, indicates that the C program should
+ *     check the script that it is executing for setuid/setgid bits, and
+ *     attempt to emulate setuid/setgid on systems that have disabled
+ *     setuid #! scripts because the kernel can't do it securely.
+ *     It is up to the package designer to make sure that this emulation
+ *     is done securely.  Among other things, it should do an fstat on
+ *     the script it just opened to make sure it really is a setuid/setgid
+ *     script, it should make sure the arguments passed correspond exactly
+ *     to the argument on the #! line, and it should not trust any
+ *     subprocesses to which it must pass the filename rather than the
+ *     file descriptor of the script to be executed.
+ */
+#$d_suidsafe SETUID_SCRIPTS_ARE_SECURE_NOW     /**/
+#$d_dosuid DOSUID              /**/
+
+/* HAS_ENDGRENT:
+ *     This symbol, if defined, indicates that the getgrent routine is
+ *     available for finalizing sequential access of the group database.
+ */
+#$d_endgrent HAS_ENDGRENT              /**/
+
+/* HAS_ENDHOSTENT:
+ *     This symbol, if defined, indicates that the endhostent() routine is
+ *     available to close whatever was being used for host queries.
+ */
+#$d_endhent HAS_ENDHOSTENT             /**/
+
+/* HAS_ENDNETENT:
+ *     This symbol, if defined, indicates that the endnetent() routine is
+ *     available to close whatever was being used for network queries.
+ */
+#$d_endnent HAS_ENDNETENT              /**/
+
+/* HAS_ENDPROTOENT:
+ *     This symbol, if defined, indicates that the endprotoent() routine is
+ *     available to close whatever was being used for protocol queries.
+ */
+#$d_endpent HAS_ENDPROTOENT            /**/
+
+/* HAS_ENDPWENT:
+ *     This symbol, if defined, indicates that the getgrent routine is
+ *     available for finalizing sequential access of the passwd database.
+ */
+#$d_endpwent HAS_ENDPWENT              /**/
+
+/* HAS_ENDSERVENT:
+ *     This symbol, if defined, indicates that the endservent() routine is
+ *     available to close whatever was being used for service queries.
+ */
+#$d_endsent HAS_ENDSERVENT             /**/
+
+/* FLEXFILENAMES:
+ *     This symbol, if defined, indicates that the system supports filenames
+ *     longer than 14 characters.
+ */
+#$d_flexfnam   FLEXFILENAMES           /**/
+
+/* HAS_GETGRENT:
+ *     This symbol, if defined, indicates that the getgrent routine is
+ *     available for sequential access of the group database.
+ */
+#$d_getgrent HAS_GETGRENT              /**/
+
+/* HAS_GETHOSTBYADDR:
+ *     This symbol, if defined, indicates that the gethostbyaddr() routine is
+ *     available to look up hosts by their IP addresses.
+ */
+#$d_gethbyaddr HAS_GETHOSTBYADDR               /**/
+
+/* HAS_GETHOSTBYNAME:
+ *     This symbol, if defined, indicates that the gethostbyname() routine is
+ *     available to look up host names in some data base or other.
+ */
+#$d_gethbyname HAS_GETHOSTBYNAME               /**/
+
+/* HAS_GETHOSTENT:
+ *     This symbol, if defined, indicates that the gethostent() routine is
+ *     available to look up host names in some data base or another.
+ */
+#$d_gethent HAS_GETHOSTENT             /**/
+
+/* HAS_GETHOSTNAME:
+ *     This symbol, if defined, indicates that the C program may use the
+ *     gethostname() routine to derive the host name.  See also HAS_UNAME
+ *     and PHOSTNAME.
+ */
+/* HAS_UNAME:
+ *     This symbol, if defined, indicates that the C program may use the
+ *     uname() routine to derive the host name.  See also HAS_GETHOSTNAME
+ *     and PHOSTNAME.
+ */
+/* PHOSTNAME:
+ *     This symbol, if defined, indicates the command to feed to the
+ *     popen() routine to derive the host name.  See also HAS_GETHOSTNAME
+ *     and HAS_UNAME.  Note that the command uses a fully qualified path,
+ *     so that it is safe even if used by a process with super-user
+ *     privileges.
+ */
+/* HAS_PHOSTNAME:
+ *     This symbol, if defined, indicates that the C program may use the
+ *     contents of PHOSTNAME as a command to feed to the popen() routine
+ *     to derive the host name.
+ */
+#$d_gethname HAS_GETHOSTNAME   /**/
+#$d_uname HAS_UNAME            /**/
+#$d_phostname HAS_PHOSTNAME    /**/
+#ifdef HAS_PHOSTNAME
+#define PHOSTNAME "$aphostname"        /* How to get the host name */
 #endif
 
+/* HAS_GETNETBYADDR:
+ *     This symbol, if defined, indicates that the getnetbyaddr() routine is
+ *     available to look up networks by their IP addresses.
+ */
+#$d_getnbyaddr HAS_GETNETBYADDR                /**/
+
+/* HAS_GETNETBYNAME:
+ *     This symbol, if defined, indicates that the getnetbyname() routine is
+ *     available to look up networks by their names.
+ */
+#$d_getnbyname HAS_GETNETBYNAME                /**/
+
+/* HAS_GETNETENT:
+ *     This symbol, if defined, indicates that the getnetent() routine is
+ *     available to look up network names in some data base or another.
+ */
+#$d_getnent HAS_GETNETENT              /**/
+
+/* HAS_GETPROTOENT:
+ *     This symbol, if defined, indicates that the getprotoent() routine is
+ *     available to look up protocols in some data base or another.
+ */
+#$d_getpent HAS_GETPROTOENT            /**/
+
+/* HAS_GETPGRP:
+ *     This symbol, if defined, indicates that the getpgrp routine is
+ *     available to get the current process group.
+ */
+/* USE_BSD_GETPGRP:
+ *     This symbol, if defined, indicates that getpgrp needs one
+ *     arguments whereas USG one needs none.
+ */
+#$d_getpgrp HAS_GETPGRP                /**/
+#$d_bsdgetpgrp USE_BSD_GETPGRP /**/
+
+/* HAS_GETPROTOBYNAME:
+ *     This symbol, if defined, indicates that the getprotobyname()
+ *     routine is available to look up protocols by their name.
+ */
+/* HAS_GETPROTOBYNUMBER:
+ *     This symbol, if defined, indicates that the getprotobynumber()
+ *     routine is available to look up protocols by their number.
+ */
+#$d_getpbyname HAS_GETPROTOBYNAME              /**/
+#$d_getpbynumber HAS_GETPROTOBYNUMBER          /**/
+
+/* HAS_GETPWENT:
+ *     This symbol, if defined, indicates that the getpwent routine is
+ *     available for sequential access of the passwd database.
+ *     If this is not available, the older getpw() function may be available.
+ */
+#$d_getpwent HAS_GETPWENT              /**/
+
+/* HAS_GETSERVENT:
+ *     This symbol, if defined, indicates that the getservent() routine is
+ *     available to look up network services in some data base or another.
+ */
+#$d_getsent HAS_GETSERVENT             /**/
+
+/* HAS_GETSERVBYNAME:
+ *     This symbol, if defined, indicates that the getservbyname()
+ *     routine is available to look up services by their name.
+ */
+/* HAS_GETSERVBYPORT:
+ *     This symbol, if defined, indicates that the getservbyport()
+ *     routine is available to look up services by their port.
+ */
+#$d_getsbyname HAS_GETSERVBYNAME               /**/
+#$d_getsbyport HAS_GETSERVBYPORT               /**/
+
 /* HAS_HTONL:
  *     This symbol, if defined, indicates that the htonl() routine (and
  *     friends htons() ntohl() ntohs()) are available to do network
@@ -1906,59 +1916,20 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
 #$d_htonl HAS_NTOHL            /**/
 #$d_htonl HAS_NTOHS            /**/
 
-/* HAS_ISASCII:
- *     This manifest constant lets the C program know that isascii
- *     is available.
+/* HAS_LONG_DOUBLE:
+ *     This symbol will be defined if the C compiler supports long
+ *     doubles.
  */
-#$d_isascii HAS_ISASCII                /**/
-
-/* HAS_LCHOWN:
- *     This symbol, if defined, indicates that the lchown routine is
- *     available to operate on a symbolic link (instead of following the
- *     link).
+/* LONG_DOUBLESIZE:
+ *     This symbol contains the size of a long double, so that the
+ *     C preprocessor can make decisions based on it.  It is only
+ *     defined if the system supports long doubles.  Note that this
+ *     is sizeof(long double), which may include unused bytes.
  */
-#$d_lchown HAS_LCHOWN          /**/
-
-/* HAS_LOCALTIME_R:
- *     This symbol, if defined, indicates that the localtime_r routine
- *     is available to localtime re-entrantly.
- */
-/* LOCALTIME_R_NEEDS_TZSET:
- *     Many libc's localtime_r implementations do not call tzset,
- *     making them differ from localtime(), and making timezone
- *     changes using \$ENV{TZ} without explicitly calling tzset
- *     impossible. This symbol makes us call tzset before localtime_r
- */
-#$d_localtime_r_needs_tzset LOCALTIME_R_NEEDS_TZSET /**/
-#ifdef LOCALTIME_R_NEEDS_TZSET
-#define L_R_TZSET tzset(),
-#else
-#define L_R_TZSET
-#endif
-
-/* LOCALTIME_R_PROTO:
- *     This symbol encodes the prototype of localtime_r.
- *     It is zero if d_localtime_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_localtime_r
- *     is defined.
- */
-#$d_localtime_r HAS_LOCALTIME_R           /**/
-#define LOCALTIME_R_PROTO $localtime_r_proto      /**/
-
-/* HAS_LONG_DOUBLE:
- *     This symbol will be defined if the C compiler supports long
- *     doubles.
- */
-/* LONG_DOUBLESIZE:
- *     This symbol contains the size of a long double, so that the
- *     C preprocessor can make decisions based on it.  It is only
- *     defined if the system supports long doubles.  Note that this
- *     is sizeof(long double), which may include unused bytes.
- */
-/* HAS_LDEXPL:
- *     This symbol, if defined, indicates that the ldexpl routine is
- *     available to shift a long double floating-point number
- *     by an integral power of 2.
+/* HAS_LDEXPL:
+ *     This symbol, if defined, indicates that the ldexpl routine is
+ *     available to shift a long double floating-point number
+ *     by an integral power of 2.
  */
 /* LONG_DOUBLEKIND:
  *     LONG_DOUBLEKIND will be one of
@@ -1989,9 +1960,8 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
 #define LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_LE_BE      7
 #define LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BE_LE      8
 #define LONG_DOUBLE_IS_UNKNOWN_FORMAT                  -1
-/* Backward compat. */
-#define LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_LITTLE_ENDIAN      LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_LE_LE
-#define LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BIG_ENDIAN LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BE_BE
+#define LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_LITTLE_ENDIAN      LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_LE_LE /* back-compat */
+#define LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BIG_ENDIAN LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BE_BE /* back-compat */
 #endif
 
 /* HAS_LONG_LONG:
@@ -2007,14 +1977,6 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
 #define LONGLONGSIZE $longlongsize             /**/
 #endif
 
-/* HAS_LSEEK_PROTO:
- *     This symbol, if defined, indicates that the system provides
- *     a prototype for the lseek() function.  Otherwise, it is up
- *     to the program to supply one.  A good guess is
- *             extern off_t lseek(int, off_t, int);
- */
-#$d_lseekproto HAS_LSEEK_PROTO /**/
-
 /* HAS_MEMCHR:
  *     This symbol, if defined, indicates that the memchr routine is available
  *     to locate characters within a C string.
@@ -2046,109 +2008,6 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
  */
 #$d_msg HAS_MSG                /**/
 
-/* HAS_OPEN3:
- *     This manifest constant lets the C program know that the three
- *     argument form of open(2) is available.
- */
-#$d_open3 HAS_OPEN3            /**/
-
-/* OLD_PTHREAD_CREATE_JOINABLE:
- *     This symbol, if defined, indicates how to create pthread
- *     in joinable (aka undetached) state.  NOTE: not defined
- *     if pthread.h already has defined PTHREAD_CREATE_JOINABLE
- *     (the new version of the constant).
- *     If defined, known values are PTHREAD_CREATE_UNDETACHED
- *     and __UNDETACHED.
- */
-#$d_old_pthread_create_joinable OLD_PTHREAD_CREATE_JOINABLE $old_pthread_create_joinable /**/
-
-/* HAS_PTHREAD_ATFORK:
- *     This symbol, if defined, indicates that the pthread_atfork routine
- *     is available to setup fork handlers.
- */
-#$d_pthread_atfork HAS_PTHREAD_ATFORK          /**/
-
-/* HAS_PTHREAD_YIELD:
- *     This symbol, if defined, indicates that the pthread_yield
- *     routine is available to yield the execution of the current
- *     thread.  sched_yield is preferable to pthread_yield.
- */
-/* SCHED_YIELD:
- *     This symbol defines the way to yield the execution of
- *     the current thread.  Known ways are sched_yield,
- *     pthread_yield, and pthread_yield with NULL.
- */
-/* HAS_SCHED_YIELD:
- *     This symbol, if defined, indicates that the sched_yield
- *     routine is available to yield the execution of the current
- *     thread.  sched_yield is preferable to pthread_yield.
- */
-#$d_pthread_yield HAS_PTHREAD_YIELD    /**/
-#define SCHED_YIELD    $sched_yield    /**/
-#$d_sched_yield HAS_SCHED_YIELD        /**/
-
-/* HAS_RANDOM_R:
- *     This symbol, if defined, indicates that the random_r routine
- *     is available to random re-entrantly.
- */
-/* RANDOM_R_PROTO:
- *     This symbol encodes the prototype of random_r.
- *     It is zero if d_random_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_random_r
- *     is defined.
- */
-#$d_random_r HAS_RANDOM_R         /**/
-#define RANDOM_R_PROTO $random_r_proto    /**/
-
-/* HAS_READDIR64_R:
- *     This symbol, if defined, indicates that the readdir64_r routine
- *     is available to readdir64 re-entrantly.
- */
-/* READDIR64_R_PROTO:
- *     This symbol encodes the prototype of readdir64_r.
- *     It is zero if d_readdir64_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_readdir64_r
- *     is defined.
- */
-#$d_readdir64_r HAS_READDIR64_R           /**/
-#define READDIR64_R_PROTO $readdir64_r_proto      /**/
-
-/* HAS_READDIR_R:
- *     This symbol, if defined, indicates that the readdir_r routine
- *     is available to readdir re-entrantly.
- */
-/* READDIR_R_PROTO:
- *     This symbol encodes the prototype of readdir_r.
- *     It is zero if d_readdir_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_readdir_r
- *     is defined.
- */
-#$d_readdir_r HAS_READDIR_R       /**/
-#define READDIR_R_PROTO $readdir_r_proto          /**/
-
-/* HAS_SAFE_BCOPY:
- *     This symbol, if defined, indicates that the bcopy routine is available
- *     to copy potentially overlapping memory blocks. Normally, you should
- *     probably use memmove() or memcpy(). If neither is defined, roll your
- *     own version.
- */
-#$d_safebcpy HAS_SAFE_BCOPY    /**/
-
-/* HAS_SAFE_MEMCPY:
- *     This symbol, if defined, indicates that the memcpy routine is available
- *     to copy potentially overlapping memory blocks.  If you need to
- *     copy overlapping memory blocks, you should check HAS_MEMMOVE and
- *     use memmove() instead, if available.
- */
-#$d_safemcpy HAS_SAFE_MEMCPY   /**/
-
-/* HAS_SANE_MEMCMP:
- *     This symbol, if defined, indicates that the memcmp routine is available
- *     and can be used to compare relative magnitudes of chars with their high
- *     bits set.  If it is not defined, roll your own version.
- */
-#$d_sanemcmp HAS_SANE_MEMCMP   /**/
-
 /* HAS_SEM:
  *     This symbol, if defined, indicates that the entire sem*(2) library is
  *     supported.
@@ -2161,70 +2020,18 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
  */
 #$d_setgrent HAS_SETGRENT              /**/
 
-/* HAS_SETGRENT_R:
- *     This symbol, if defined, indicates that the setgrent_r routine
- *     is available to setgrent re-entrantly.
- */
-/* SETGRENT_R_PROTO:
- *     This symbol encodes the prototype of setgrent_r.
- *     It is zero if d_setgrent_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_setgrent_r
- *     is defined.
- */
-#$d_setgrent_r HAS_SETGRENT_R     /**/
-#define SETGRENT_R_PROTO $setgrent_r_proto        /**/
-
 /* HAS_SETHOSTENT:
  *     This symbol, if defined, indicates that the sethostent() routine is
  *     available.
  */
 #$d_sethent HAS_SETHOSTENT             /**/
 
-/* HAS_SETHOSTENT_R:
- *     This symbol, if defined, indicates that the sethostent_r routine
- *     is available to sethostent re-entrantly.
- */
-/* SETHOSTENT_R_PROTO:
- *     This symbol encodes the prototype of sethostent_r.
- *     It is zero if d_sethostent_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_sethostent_r
- *     is defined.
- */
-#$d_sethostent_r HAS_SETHOSTENT_R         /**/
-#define SETHOSTENT_R_PROTO $sethostent_r_proto    /**/
-
-/* HAS_SETLOCALE_R:
- *     This symbol, if defined, indicates that the setlocale_r routine
- *     is available to setlocale re-entrantly.
- */
-/* SETLOCALE_R_PROTO:
- *     This symbol encodes the prototype of setlocale_r.
- *     It is zero if d_setlocale_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_setlocale_r
- *     is defined.
- */
-#$d_setlocale_r HAS_SETLOCALE_R           /**/
-#define SETLOCALE_R_PROTO $setlocale_r_proto      /**/
-
 /* HAS_SETNETENT:
  *     This symbol, if defined, indicates that the setnetent() routine is
  *     available.
  */
 #$d_setnent HAS_SETNETENT              /**/
 
-/* HAS_SETNETENT_R:
- *     This symbol, if defined, indicates that the setnetent_r routine
- *     is available to setnetent re-entrantly.
- */
-/* SETNETENT_R_PROTO:
- *     This symbol encodes the prototype of setnetent_r.
- *     It is zero if d_setnetent_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_setnetent_r
- *     is defined.
- */
-#$d_setnetent_r HAS_SETNETENT_R           /**/
-#define SETNETENT_R_PROTO $setnetent_r_proto      /**/
-
 /* HAS_SETPROTOENT:
  *     This symbol, if defined, indicates that the setprotoent() routine is
  *     available.
@@ -2243,57 +2050,18 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
 #$d_setpgrp HAS_SETPGRP                /**/
 #$d_bsdsetpgrp USE_BSD_SETPGRP /**/
 
-/* HAS_SETPROTOENT_R:
- *     This symbol, if defined, indicates that the setprotoent_r routine
- *     is available to setprotoent re-entrantly.
- */
-/* SETPROTOENT_R_PROTO:
- *     This symbol encodes the prototype of setprotoent_r.
- *     It is zero if d_setprotoent_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_setprotoent_r
- *     is defined.
- */
-#$d_setprotoent_r HAS_SETPROTOENT_R       /**/
-#define SETPROTOENT_R_PROTO $setprotoent_r_proto          /**/
-
 /* HAS_SETPWENT:
  *     This symbol, if defined, indicates that the setpwent routine is
  *     available for initializing sequential access of the passwd database.
  */
 #$d_setpwent HAS_SETPWENT              /**/
 
-/* HAS_SETPWENT_R:
- *     This symbol, if defined, indicates that the setpwent_r routine
- *     is available to setpwent re-entrantly.
- */
-/* SETPWENT_R_PROTO:
- *     This symbol encodes the prototype of setpwent_r.
- *     It is zero if d_setpwent_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_setpwent_r
- *     is defined.
- */
-#$d_setpwent_r HAS_SETPWENT_R     /**/
-#define SETPWENT_R_PROTO $setpwent_r_proto        /**/
-
 /* HAS_SETSERVENT:
  *     This symbol, if defined, indicates that the setservent() routine is
  *     available.
  */
 #$d_setsent HAS_SETSERVENT             /**/
 
-/* HAS_SETSERVENT_R:
- *     This symbol, if defined, indicates that the setservent_r routine
- *     is available to setservent re-entrantly.
- */
-/* SETSERVENT_R_PROTO:
- *     This symbol encodes the prototype of setservent_r.
- *     It is zero if d_setservent_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_setservent_r
- *     is defined.
- */
-#$d_setservent_r HAS_SETSERVENT_R         /**/
-#define SETSERVENT_R_PROTO $setservent_r_proto    /**/
-
 /* HAS_SETVBUF:
  *     This symbol, if defined, indicates that the setvbuf routine is
  *     available to change buffering on an open stdio stream.
@@ -2321,92 +2089,13 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
 #define Shmat_t $shmattype     /**/
 #$d_shmatprototype HAS_SHMAT_PROTOTYPE /**/
 
-/* HAS_SIGACTION:
- *     This symbol, if defined, indicates that Vr4's sigaction() routine
- *     is available.
- */
-#$d_sigaction HAS_SIGACTION    /**/
-
-/* HAS_SIGINFO_SI_ERRNO:
- *     This symbol, if defined, indicates that siginfo_t has the
- *     si_errno member
+/* HAS_SOCKET:
+ *     This symbol, if defined, indicates that the BSD socket interface is
+ *     supported.
  */
-#$d_siginfo_si_errno HAS_SIGINFO_SI_ERRNO      /**/
-
-/* HAS_SIGINFO_SI_PID:
- *     This symbol, if defined, indicates that siginfo_t has the
- *     si_pid member
- */
-#$d_siginfo_si_pid HAS_SIGINFO_SI_PID  /**/
-
-/* HAS_SIGINFO_SI_UID:
- *     This symbol, if defined, indicates that siginfo_t has the
- *     si_uid member
- */
-#$d_siginfo_si_uid HAS_SIGINFO_SI_UID  /**/
-
-/* HAS_SIGINFO_SI_ADDR:
- *     This symbol, if defined, indicates that siginfo_t has the
- *     si_addr member
- */
-#$d_siginfo_si_addr HAS_SIGINFO_SI_ADDR        /**/
-
-/* HAS_SIGINFO_SI_STATUS:
- *     This symbol, if defined, indicates that siginfo_t has the
- *     si_status member
- */
-#$d_siginfo_si_status HAS_SIGINFO_SI_STATUS    /**/
-
-/* HAS_SIGINFO_SI_BAND:
- *     This symbol, if defined, indicates that siginfo_t has the
- *     si_band member
- */
-#$d_siginfo_si_band HAS_SIGINFO_SI_BAND        /**/
-
-/* HAS_SIGINFO_SI_VALUE:
- *     This symbol, if defined, indicates that siginfo_t has the
- *     si_value member
- */
-#$d_siginfo_si_value HAS_SIGINFO_SI_VALUE      /**/
-
-/* HAS_SIGSETJMP:
- *     This variable indicates to the C program that the sigsetjmp()
- *     routine is available to save the calling process's registers
- *     and stack environment for later use by siglongjmp(), and
- *     to optionally save the process's signal mask.  See
- *     Sigjmp_buf, Sigsetjmp, and Siglongjmp.
- */
-/* Sigjmp_buf:
- *     This is the buffer type to be used with Sigsetjmp and Siglongjmp.
- */
-/* Sigsetjmp:
- *     This macro is used in the same way as sigsetjmp(), but will invoke
- *     traditional setjmp() if sigsetjmp isn't available.
- *     See HAS_SIGSETJMP.
- */
-/* Siglongjmp:
- *     This macro is used in the same way as siglongjmp(), but will invoke
- *     traditional longjmp() if siglongjmp isn't available.
- *     See HAS_SIGSETJMP.
- */
-#$d_sigsetjmp HAS_SIGSETJMP    /**/
-#ifdef HAS_SIGSETJMP
-#define Sigjmp_buf sigjmp_buf
-#define Sigsetjmp(buf,save_mask) sigsetjmp((buf),(save_mask))
-#define Siglongjmp(buf,retval) siglongjmp((buf),(retval))
-#else
-#define Sigjmp_buf jmp_buf
-#define Sigsetjmp(buf,save_mask) setjmp((buf))
-#define Siglongjmp(buf,retval) longjmp((buf),(retval))
-#endif
-
-/* HAS_SOCKET:
- *     This symbol, if defined, indicates that the BSD socket interface is
- *     supported.
- */
-/* HAS_SOCKETPAIR:
- *     This symbol, if defined, indicates that the BSD socketpair() call is
- *     supported.
+/* HAS_SOCKETPAIR:
+ *     This symbol, if defined, indicates that the BSD socketpair() call is
+ *     supported.
  */
 /* HAS_SOCKADDR_SA_LEN:
  *     This symbol, if defined, indicates that the struct sockaddr
@@ -2447,32 +2136,6 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
 #$d_ipv6_mreq  HAS_IPV6_MREQ   /**/
 #$d_ipv6_mreq_source   HAS_IPV6_MREQ_SOURCE    /**/
 
-/* HAS_SRAND48_R:
- *     This symbol, if defined, indicates that the srand48_r routine
- *     is available to srand48 re-entrantly.
- */
-/* SRAND48_R_PROTO:
- *     This symbol encodes the prototype of srand48_r.
- *     It is zero if d_srand48_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_srand48_r
- *     is defined.
- */
-#$d_srand48_r HAS_SRAND48_R       /**/
-#define SRAND48_R_PROTO $srand48_r_proto          /**/
-
-/* HAS_SRANDOM_R:
- *     This symbol, if defined, indicates that the srandom_r routine
- *     is available to srandom re-entrantly.
- */
-/* SRANDOM_R_PROTO:
- *     This symbol encodes the prototype of srandom_r.
- *     It is zero if d_srandom_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_srandom_r
- *     is defined.
- */
-#$d_srandom_r HAS_SRANDOM_R       /**/
-#define SRANDOM_R_PROTO $srandom_r_proto          /**/
-
 /* USE_STAT_BLOCKS:
  *     This symbol is defined if this system has a stat structure declaring
  *     st_blksize and st_blocks.
@@ -2481,97 +2144,6 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
 #$d_statblks USE_STAT_BLOCKS   /**/
 #endif
 
-/* HAS_STATIC_INLINE:
- *     This symbol, if defined, indicates that the C compiler supports
- *     C99-style static inline.  That is, the function can't be called
- *     from another translation unit.
- */
-/* PERL_STATIC_INLINE:
- *     This symbol gives the best-guess incantation to use for static
- *     inline functions.  If HAS_STATIC_INLINE is defined, this will
- *     give C99-style inline.  If HAS_STATIC_INLINE is not defined,
- *     this will give a plain 'static'.  It will always be defined
- *     to something that gives static linkage.
- *     Possibilities include
- *             static inline       (c99)
- *             static __inline__   (gcc -ansi)
- *             static __inline     (MSVC)
- *             static _inline      (older MSVC)
- *             static              (c89 compilers)
- */
-#$d_static_inline HAS_STATIC_INLINE                            /**/
-#define PERL_STATIC_INLINE $perl_static_inline /**/
-
-/* USE_STDIO_PTR:
- *     This symbol is defined if the _ptr and _cnt fields (or similar)
- *     of the stdio FILE structure can be used to access the stdio buffer
- *     for a file handle.  If this is defined, then the FILE_ptr(fp)
- *     and FILE_cnt(fp) macros will also be defined and should be used
- *     to access these fields.
- */
-/* FILE_ptr:
- *     This macro is used to access the _ptr field (or equivalent) of the
- *     FILE structure pointed to by its argument. This macro will always be
- *     defined if USE_STDIO_PTR is defined.
- */
-/* STDIO_PTR_LVALUE:
- *     This symbol is defined if the FILE_ptr macro can be used as an
- *     lvalue.
- */
-/* FILE_cnt:
- *     This macro is used to access the _cnt field (or equivalent) of the
- *     FILE structure pointed to by its argument. This macro will always be
- *     defined if USE_STDIO_PTR is defined.
- */
-/* STDIO_CNT_LVALUE:
- *     This symbol is defined if the FILE_cnt macro can be used as an
- *     lvalue.
- */
-/* STDIO_PTR_LVAL_SETS_CNT:
- *     This symbol is defined if using the FILE_ptr macro as an lvalue
- *     to increase the pointer by n has the side effect of decreasing the
- *     value of File_cnt(fp) by n.
- */
-/* STDIO_PTR_LVAL_NOCHANGE_CNT:
- *     This symbol is defined if using the FILE_ptr macro as an lvalue
- *     to increase the pointer by n leaves File_cnt(fp) unchanged.
- */
-#$d_stdstdio USE_STDIO_PTR     /**/
-#ifdef USE_STDIO_PTR
-#define FILE_ptr(fp)   $stdio_ptr
-#$d_stdio_ptr_lval STDIO_PTR_LVALUE            /**/
-#define FILE_cnt(fp)   $stdio_cnt
-#$d_stdio_cnt_lval STDIO_CNT_LVALUE            /**/
-#$d_stdio_ptr_lval_sets_cnt STDIO_PTR_LVAL_SETS_CNT    /**/
-#$d_stdio_ptr_lval_nochange_cnt STDIO_PTR_LVAL_NOCHANGE_CNT    /**/
-#endif
-
-/* USE_STDIO_BASE:
- *     This symbol is defined if the _base field (or similar) of the
- *     stdio FILE structure can be used to access the stdio buffer for
- *     a file handle.  If this is defined, then the FILE_base(fp) macro
- *     will also be defined and should be used to access this field.
- *     Also, the FILE_bufsiz(fp) macro will be defined and should be used
- *     to determine the number of bytes in the buffer.  USE_STDIO_BASE
- *     will never be defined unless USE_STDIO_PTR is.
- */
-/* FILE_base:
- *     This macro is used to access the _base field (or equivalent) of the
- *     FILE structure pointed to by its argument. This macro will always be
- *     defined if USE_STDIO_BASE is defined.
- */
-/* FILE_bufsiz:
- *     This macro is used to determine the number of bytes in the I/O
- *     buffer pointed to by _base field (or equivalent) of the FILE
- *     structure pointed to its argument. This macro will always be defined
- *     if USE_STDIO_BASE is defined.
- */
-#$d_stdiobase USE_STDIO_BASE   /**/
-#ifdef USE_STDIO_BASE
-#define FILE_base(fp)  $stdio_base
-#define FILE_bufsiz(fp)        $stdio_bufsiz
-#endif
-
 /* USE_STRUCT_COPY:
  *     This symbol, if defined, indicates that this C compiler knows how
  *     to copy structures.  If undefined, you'll need to use a block copy
@@ -2598,69 +2170,12 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
 #$d_syserrlst HAS_SYS_ERRLIST  /**/
 #define Strerror(e) $d_strerrm
 
-/* HAS_STRERROR_R:
- *     This symbol, if defined, indicates that the strerror_r routine
- *     is available to strerror re-entrantly.
- */
-/* STRERROR_R_PROTO:
- *     This symbol encodes the prototype of strerror_r.
- *     It is zero if d_strerror_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_strerror_r
- *     is defined.
- */
-#$d_strerror_r HAS_STRERROR_R     /**/
-#define STRERROR_R_PROTO $strerror_r_proto        /**/
-
 /* HAS_STRTOUL:
  *     This symbol, if defined, indicates that the strtoul routine is
  *     available to provide conversion of strings to unsigned long.
  */
 #$d_strtoul HAS_STRTOUL        /**/
 
-/* HAS_TIME:
- *     This symbol, if defined, indicates that the time() routine exists.
- */
-/* Time_t:
- *     This symbol holds the type returned by time(). It can be long,
- *     or time_t on BSD sites (in which case <sys/types.h> should be
- *     included).
- */
-#$d_time HAS_TIME              /**/
-#define Time_t $timetype               /* Time type */
-
-/* HAS_TIMES:
- *     This symbol, if defined, indicates that the times() routine exists.
- *     Note that this became obsolete on some systems (SUNOS), which now
- * use getrusage(). It may be necessary to include <sys/times.h>.
- */
-#$d_times HAS_TIMES            /**/
-
-/* HAS_TMPNAM_R:
- *     This symbol, if defined, indicates that the tmpnam_r routine
- *     is available to tmpnam re-entrantly.
- */
-/* TMPNAM_R_PROTO:
- *     This symbol encodes the prototype of tmpnam_r.
- *     It is zero if d_tmpnam_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_tmpnam_r
- *     is defined.
- */
-#$d_tmpnam_r HAS_TMPNAM_R         /**/
-#define TMPNAM_R_PROTO $tmpnam_r_proto    /**/
-
-/* HAS_TTYNAME_R:
- *     This symbol, if defined, indicates that the ttyname_r routine
- *     is available to ttyname re-entrantly.
- */
-/* TTYNAME_R_PROTO:
- *     This symbol encodes the prototype of ttyname_r.
- *     It is zero if d_ttyname_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_ttyname_r
- *     is defined.
- */
-#$d_ttyname_r HAS_TTYNAME_R       /**/
-#define TTYNAME_R_PROTO $ttyname_r_proto          /**/
-
 /* HAS_UNION_SEMUN:
  *     This symbol, if defined, indicates that the union semun is
  *     defined by including <sys/sem.h>.  If not, the user code
@@ -2711,74 +2226,16 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
 #define volatile
 #endif
 
-/* HAS_VPRINTF:
- *     This symbol, if defined, indicates that the vprintf routine is available
- *     to printf with a pointer to an argument list.  If unavailable, you
- *     may need to write your own, probably in terms of _doprnt().
+/* I_DIRENT:
+ *     This symbol, if defined, indicates to the C program that it should
+ *     include <dirent.h>. Using this symbol also triggers the definition
+ *     of the Direntry_t define which ends up being 'struct dirent' or
+ *     'struct direct' depending on the availability of <dirent.h>.
  */
-/* USE_CHAR_VSPRINTF:
- *     This symbol is defined if this system has vsprintf() returning type
- *     (char*).  The trend seems to be to declare it as "int vsprintf()".  It
- *     is up to the package author to declare vsprintf correctly based on the
- *     symbol.
- */
-#$d_vprintf HAS_VPRINTF        /**/
-#$d_charvspr USE_CHAR_VSPRINTF         /**/
-
-/* DOUBLESIZE:
- *     This symbol contains the size of a double, so that the C preprocessor
- *     can make decisions based on it.
- */
-#define DOUBLESIZE $doublesize         /**/
-
-/* EBCDIC:
- *     This symbol, if defined, indicates that this system uses
- *     EBCDIC encoding.
- */
-#$ebcdic       EBCDIC          /**/
-
-/* Fpos_t:
- *     This symbol holds the type used to declare file positions in libc.
- *     It can be fpos_t, long, uint, etc... It may be necessary to include
- *     <sys/types.h> to get any typedef'ed information.
- */
-#define Fpos_t $fpostype               /* File position type */
-
-/* Gid_t_f:
- *     This symbol defines the format string used for printing a Gid_t.
- */
-#define        Gid_t_f         $gidformat              /**/
-
-/* Gid_t_sign:
- *     This symbol holds the signedness of a Gid_t.
- *     1 for unsigned, -1 for signed.
- */
-#define Gid_t_sign     $gidsign                /* GID sign */
-
-/* Gid_t_size:
- *     This symbol holds the size of a Gid_t in bytes.
- */
-#define Gid_t_size $gidsize            /* GID size */
-
-/* Gid_t:
- *     This symbol holds the return type of getgid() and the type of
- *     argument to setrgid() and related functions.  Typically,
- *     it is the type of group ids in the kernel. It can be int, ushort,
- *     gid_t, etc... It may be necessary to include <sys/types.h> to get
- *     any typedef'ed information.
- */
-#define Gid_t $gidtype         /* Type for getgid(), etc... */
-
-/* I_DIRENT:
- *     This symbol, if defined, indicates to the C program that it should
- *     include <dirent.h>. Using this symbol also triggers the definition
- *     of the Direntry_t define which ends up being 'struct dirent' or
- *     'struct direct' depending on the availability of <dirent.h>.
- */
-/* DIRNAMLEN:
- *     This symbol, if defined, indicates to the C program that the length
- *     of directory entry names is provided by a d_namlen field.  Otherwise
- *     you need to do strlen() on the d_name field.
+/* DIRNAMLEN:
+ *     This symbol, if defined, indicates to the C program that the length
+ *     of directory entry names is provided by a d_namlen field.  Otherwise
+ *     you need to do strlen() on the d_name field.
  */
 /* Direntry_t:
  *     This symbol is set to 'struct direct' or 'struct dirent' depending on
@@ -2806,12 +2263,6 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
 #$i_grp I_GRP          /**/
 #$d_grpasswd GRPASSWD  /**/
 
-/* I_MACH_CTHREADS:
- *     This symbol, if defined, indicates to the C program that it should
- *     include <mach/cthreads.h>.
- */
-#$i_machcthr   I_MACH_CTHREADS /**/
-
 /* I_NDBM:
  *     This symbol, if defined, indicates that <ndbm.h> exists and should
  *     be included.
@@ -2863,12 +2314,6 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
  */
 #$i_neterrno I_NET_ERRNO               /**/
 
-/* I_PTHREAD:
- *     This symbol, if defined, indicates to the C program that it should
- *     include <pthread.h>.
- */
-#$i_pthread   I_PTHREAD        /**/
-
 /* I_PWD:
  *     This symbol, if defined, indicates to the C program that it should
  *     include <pwd.h>.
@@ -2915,18 +2360,6 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
 #$d_pwgecos PWGECOS    /**/
 #$d_pwpasswd PWPASSWD  /**/
 
-/* I_SYS_ACCESS:
- *     This symbol, if defined, indicates to the C program that it should
- *     include <sys/access.h>.
- */
-#$i_sysaccess   I_SYS_ACCESS                /**/
-
-/* I_SYS_SECURITY:
- *     This symbol, if defined, indicates to the C program that it should
- *     include <sys/security.h>.
- */
-#$i_syssecrt   I_SYS_SECURITY  /**/
-
 /* I_SYSUIO:
  *     This symbol, if defined, indicates that <sys/uio.h> exists and
  *     should be included.
@@ -2953,32 +2386,6 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
 #$i_termios I_TERMIOS          /**/
 #$i_sgtty I_SGTTY              /**/
 
-/* I_TIME:
- *     This symbol, if defined, indicates to the C program that it should
- *     include <time.h>.
- */
-/* I_SYS_TIME:
- *     This symbol, if defined, indicates to the C program that it should
- *     include <sys/time.h>.
- */
-/* I_SYS_TIME_KERNEL:
- *     This symbol, if defined, indicates to the C program that it should
- *     include <sys/time.h> with KERNEL defined.
- */
-/* HAS_TM_TM_ZONE:
- *     This symbol, if defined, indicates to the C program that
- *     the struct tm has a tm_zone field.
- */
-/* HAS_TM_TM_GMTOFF:
- *     This symbol, if defined, indicates to the C program that
- *     the struct tm has a tm_gmtoff field.
- */
-#$i_time I_TIME                /**/
-#$i_systime I_SYS_TIME         /**/
-#$i_systimek I_SYS_TIME_KERNEL         /**/
-#$d_tm_tm_zone HAS_TM_TM_ZONE          /**/
-#$d_tm_tm_gmtoff HAS_TM_TM_GMTOFF              /**/
-
 /* I_STDARG:
  *     This symbol, if defined, indicates that <stdarg.h> exists and should
  *     be included.
@@ -2990,36 +2397,6 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
 #$i_stdarg I_STDARG            /**/
 #$i_varargs I_VARARGS  /**/
 
-/* PERL_INC_VERSION_LIST:
- *     This variable specifies the list of subdirectories in over
- *     which perl.c:incpush() and lib/lib.pm will automatically
- *     search when adding directories to @INC, in a format suitable
- *     for a C initialization string.  See the inc_version_list entry
- *     in Porting/Glossary for more details.
- */
-#$d_inc_version_list PERL_INC_VERSION_LIST $inc_version_list_init              /**/
-
-/* INSTALL_USR_BIN_PERL:
- *     This symbol, if defined, indicates that Perl is to be installed
- *     also as /usr/bin/perl.
- */
-#$installusrbinperl INSTALL_USR_BIN_PERL       /**/
-
-/* Off_t:
- *     This symbol holds the type used to declare offsets in the kernel.
- *     It can be int, long, off_t, etc... It may be necessary to include
- *     <sys/types.h> to get any typedef'ed information.
- */
-/* LSEEKSIZE:
- *     This symbol holds the number of bytes used by the Off_t.
- */
-/* Off_t_size:
- *     This symbol holds the number of bytes used by the Off_t.
- */
-#define Off_t $lseektype               /* <offset> type */
-#define LSEEKSIZE $lseeksize           /* <offset> size */
-#define Off_t_size $lseeksize  /* <offset> size */
-
 /* Free_t:
  *     This variable contains the return type of free().  It is usually
  * void, but occasionally int.
@@ -3040,92 +2417,6 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
  */
 #$d_mymalloc MYMALLOC                  /**/
 
-/* Mode_t:
- *     This symbol holds the type used to declare file modes
- *     for systems calls.  It is usually mode_t, but may be
- *     int or unsigned short.  It may be necessary to include <sys/types.h>
- *     to get any typedef'ed information.
- */
-#define Mode_t $modetype        /* file mode parameter for system calls */
-
-/* VAL_O_NONBLOCK:
- *     This symbol is to be used during open() or fcntl(F_SETFL) to turn on
- *     non-blocking I/O for the file descriptor. Note that there is no way
- *     back, i.e. you cannot turn it blocking again this way. If you wish to
- *     alternatively switch between blocking and non-blocking, use the
- *     ioctl(FIOSNBIO) call instead, but that is not supported by all devices.
- */
-/* VAL_EAGAIN:
- *     This symbol holds the errno error code set by read() when no data was
- *     present on the non-blocking file descriptor.
- */
-/* RD_NODATA:
- *     This symbol holds the return code from read() when no data is present
- *     on the non-blocking file descriptor. Be careful! If EOF_NONBLOCK is
- *     not defined, then you can't distinguish between no data and EOF by
- *     issuing a read(). You'll have to find another way to tell for sure!
- */
-/* EOF_NONBLOCK:
- *     This symbol, if defined, indicates to the C program that a read() on
- *     a non-blocking file descriptor will return 0 on EOF, and not the value
- *     held in RD_NODATA (-1 usually, in that case!).
- */
-#define VAL_O_NONBLOCK $o_nonblock
-#define VAL_EAGAIN $eagain
-#define RD_NODATA $rd_nodata
-#$d_eofnblk EOF_NONBLOCK
-
-/* Netdb_host_t:
- *     This symbol holds the type used for the 1st argument
- *     to gethostbyaddr().
- */
-/* Netdb_hlen_t:
- *     This symbol holds the type used for the 2nd argument
- *     to gethostbyaddr().
- */
-/* Netdb_name_t:
- *     This symbol holds the type used for the argument to
- *     gethostbyname().
- */
-/* Netdb_net_t:
- *     This symbol holds the type used for the 1st argument to
- *     getnetbyaddr().
- */
-#define Netdb_host_t           $netdb_host_type /**/
-#define Netdb_hlen_t           $netdb_hlen_type /**/
-#define Netdb_name_t           $netdb_name_type /**/
-#define Netdb_net_t            $netdb_net_type /**/
-
-/* PERL_OTHERLIBDIRS:
- *     This variable contains a colon-separated set of paths for the perl
- *     binary to search for additional library files or modules.
- *     These directories will be tacked to the end of @INC.
- *     Perl will automatically search below each path for version-
- *     and architecture-specific directories.  See PERL_INC_VERSION_LIST
- *     for more details.
- */
-#$d_perl_otherlibdirs PERL_OTHERLIBDIRS "$otherlibdirs"                /**/
-
-/* Pid_t:
- *     This symbol holds the type used to declare process ids in the kernel.
- *     It can be int, uint, pid_t, etc... It may be necessary to include
- *     <sys/types.h> to get any typedef'ed information.
- */
-#define Pid_t $pidtype         /* PID type */
-
-/* PRIVLIB:
- *     This symbol contains the name of the private library for this package.
- *     The library is private in the sense that it needn't be in anyone's
- *     execution path, but it should be accessible by the world.  The program
- *     should be prepared to do ~ expansion.
- */
-/* PRIVLIB_EXP:
- *     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 "$privlib"             /**/
-#define PRIVLIB_EXP "$privlibexp"              /**/
-
 /* CAN_PROTOTYPE:
  *     If defined, this macro indicates that the C compiler can handle
  *     function prototypes.
@@ -3144,73 +2435,14 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
 #define        _(args) ()
 #endif
 
-/* PTRSIZE:
- *     This symbol contains the size of a pointer, so that the C preprocessor
- *     can make decisions based on it.  It will be sizeof(void *) if
- *     the compiler supports (void *); otherwise it will be
- *     sizeof(char *).
- */
-#define PTRSIZE $ptrsize               /**/
-
-/* HAS_QUAD:
- *     This symbol, if defined, tells that there's a 64-bit integer type,
- *     Quad_t, and its unsigned counterpart, Uquad_t. QUADKIND will be one
- *     of QUAD_IS_INT, QUAD_IS_LONG, QUAD_IS_LONG_LONG, QUAD_IS_INT64_T,
- *     or QUAD_IS___INT64.
+/* SH_PATH:
+ *     This symbol contains the full pathname to the shell used on this
+ *     on this system to execute Bourne shell scripts.  Usually, this will be
+ *     /bin/sh, though it's possible that some systems will have /bin/ksh,
+ *     /bin/pdksh, /bin/ash, /bin/bash, or even something such as
+ *     D:/bin/sh.exe.
  */
-#$d_quad HAS_QUAD      /**/
-#ifdef HAS_QUAD
-#   define Quad_t $quadtype    /**/
-#   define Uquad_t $uquadtype  /**/
-#   define QUADKIND $quadkind  /**/
-#   define QUAD_IS_INT 1
-#   define QUAD_IS_LONG        2
-#   define QUAD_IS_LONG_LONG   3
-#   define QUAD_IS_INT64_T     4
-#   define QUAD_IS___INT64     5
-#endif
-
-/* Drand01:
- *     This macro is to be used to generate uniformly distributed
- *     random numbers over the range [0., 1.[.  You may have to supply
- *     an 'extern double drand48();' in your program since SunOS 4.1.3
- *     doesn't provide you with anything relevant in its headers.
- *     See HAS_DRAND48_PROTO.
- */
-/* Rand_seed_t:
- *     This symbol defines the type of the argument of the
- *     random seed function.
- */
-/* seedDrand01:
- *     This symbol defines the macro to be used in seeding the
- *     random number generator (see Drand01).
- */
-/* RANDBITS:
- *     This symbol indicates how many bits are produced by the
- *     function used to generate normalized random numbers.
- *     Values include 15, 16, 31, and 48.
- */
-#define Drand01()              $drand01                /**/
-#define Rand_seed_t            $randseedtype           /**/
-#define seedDrand01(x) $seedfunc((Rand_seed_t)x)       /**/
-#define RANDBITS               $randbits               /**/
-
-/* Select_fd_set_t:
- *     This symbol holds the type used for the 2nd, 3rd, and 4th
- *     arguments to select.  Usually, this is 'fd_set *', if HAS_FD_SET
- *     is defined, and 'int *' otherwise.  This is only useful if you
- *     have select(), of course.
- */
-#define Select_fd_set_t        $selecttype     /**/
-
-/* SH_PATH:
- *     This symbol contains the full pathname to the shell used on this
- *     on this system to execute Bourne shell scripts.  Usually, this will be
- *     /bin/sh, though it's possible that some systems will have /bin/ksh,
- *     /bin/pdksh, /bin/ash, /bin/bash, or even something such as
- *     D:/bin/sh.exe.
- */
-#define SH_PATH "$targetsh"  /**/
+#define SH_PATH "$targetsh"  /**/
 
 /* SIG_NAME:
  *     This symbol contains a list of signal names in order of
@@ -3252,162 +2484,6 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
 #define SIG_NUM  $sig_num_init         /**/
 #define SIG_SIZE $sig_size                     /**/
 
-/* SITEARCH:
- *     This symbol contains the name of the private library for this package.
- *     The library is private in the sense that it needn't be in anyone's
- *     execution path, but it should be accessible by the world.  The program
- *     should be prepared to do ~ expansion.
- *     The standard distribution will put nothing in this directory.
- *     After perl has been installed, users may install their own local
- *     architecture-dependent modules in this directory with
- *             MakeMaker Makefile.PL
- *     or equivalent.  See INSTALL for details.
- */
-/* SITEARCH_EXP:
- *     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.
- */
-#$d_sitearch SITEARCH "$sitearch"              /**/
-#$d_sitearch SITEARCH_EXP "$sitearchexp"               /**/
-
-/* SITELIB:
- *     This symbol contains the name of the private library for this package.
- *     The library is private in the sense that it needn't be in anyone's
- *     execution path, but it should be accessible by the world.  The program
- *     should be prepared to do ~ expansion.
- *     The standard distribution will put nothing in this directory.
- *     After perl has been installed, users may install their own local
- *     architecture-independent modules in this directory with
- *             MakeMaker Makefile.PL
- *     or equivalent.  See INSTALL for details.
- */
-/* SITELIB_EXP:
- *     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.
- */
-/* SITELIB_STEM:
- *     This define is SITELIB_EXP with any trailing version-specific component
- *     removed.  The elements in inc_version_list (inc_version_list.U) can
- *     be tacked onto this variable to generate a list of directories to search.
- */
-#define SITELIB "$sitelib"             /**/
-#define SITELIB_EXP "$sitelibexp"              /**/
-#define SITELIB_STEM "$sitelib_stem"           /**/
-
-/* Size_t_size:
- *     This symbol holds the size of a Size_t in bytes.
- */
-#define Size_t_size $sizesize          /**/
-
-/* Size_t:
- *     This symbol holds the type used to declare length parameters
- *     for string functions.  It is usually size_t, but may be
- *     unsigned long, int, etc.  It may be necessary to include
- *     <sys/types.h> to get any typedef'ed information.
- */
-#define Size_t $sizetype        /* length parameter for string functions */
-
-/* Sock_size_t:
- *     This symbol holds the type used for the size argument of
- *     various socket calls (just the base type, not the pointer-to).
- */
-#define Sock_size_t            $socksizetype /**/
-
-/* SSize_t:
- *     This symbol holds the type used by functions that return
- *     a count of bytes or an error condition.  It must be a signed type.
- *     It is usually ssize_t, but may be long or int, etc.
- *     It may be necessary to include <sys/types.h> or <unistd.h>
- *     to get any typedef'ed information.
- *     We will pick a type such that sizeof(SSize_t) == sizeof(Size_t).
- */
-#define SSize_t $ssizetype      /* signed count of bytes */
-
-/* STDCHAR:
- *     This symbol is defined to be the type of char used in stdio.h.
- *     It has the values "unsigned char" or "char".
- */
-#define STDCHAR $stdchar       /**/
-
-/* Uid_t_f:
- *     This symbol defines the format string used for printing a Uid_t.
- */
-#define        Uid_t_f         $uidformat              /**/
-
-/* Uid_t_sign:
- *     This symbol holds the signedness of a Uid_t.
- *     1 for unsigned, -1 for signed.
- */
-#define Uid_t_sign     $uidsign                /* UID sign */
-
-/* Uid_t_size:
- *     This symbol holds the size of a Uid_t in bytes.
- */
-#define Uid_t_size $uidsize            /* UID size */
-
-/* Uid_t:
- *     This symbol holds the type used to declare user ids in the kernel.
- *     It can be int, ushort, uid_t, etc... It may be necessary to include
- *     <sys/types.h> to get any typedef'ed information.
- */
-#define Uid_t $uidtype         /* UID type */
-
-/* USE_ITHREADS:
- *     This symbol, if defined, indicates that Perl should be built to
- *     use the interpreter-based threading implementation.
- */
-/* USE_5005THREADS:
- *     This symbol, if defined, indicates that Perl should be built to
- *     use the 5.005-based threading implementation.
- *     Only valid up to 5.8.x.
- */
-/* OLD_PTHREADS_API:
- *     This symbol, if defined, indicates that Perl should
- *     be built to use the old draft POSIX threads API.
- */
-/* USE_REENTRANT_API:
- *     This symbol, if defined, indicates that Perl should
- *     try to use the various _r versions of library functions.
- *     This is extremely experimental.
- */
-#$use5005threads       USE_5005THREADS         /**/
-#$useithreads  USE_ITHREADS            /**/
-#if defined(USE_5005THREADS) && !defined(USE_ITHREADS)
-#define                USE_THREADS             /* until src is revised*/
-#endif
-#$d_oldpthreads        OLD_PTHREADS_API                /**/
-#$usereentrant USE_REENTRANT_API       /**/
-
-/* PERL_VENDORARCH:
- *     If defined, this symbol contains the name of a private library.
- *     The library is private in the sense that it needn't be in anyone's
- *     execution path, but it should be accessible by the world.
- *     It may have a ~ on the front.
- *     The standard distribution will put nothing in this directory.
- *     Vendors who distribute perl may wish to place their own
- *     architecture-dependent modules and extensions in this directory with
- *             MakeMaker Makefile.PL INSTALLDIRS=vendor
- *     or equivalent.  See INSTALL for details.
- */
-/* PERL_VENDORARCH_EXP:
- *     This symbol contains the ~name expanded version of PERL_VENDORARCH, to be used
- *     in programs that are not prepared to deal with ~ expansion at run-time.
- */
-#$d_vendorarch PERL_VENDORARCH "$vendorarch"           /**/
-#$d_vendorarch PERL_VENDORARCH_EXP "$vendorarchexp"            /**/
-
-/* PERL_VENDORLIB_EXP:
- *     This symbol contains the ~name expanded version of VENDORLIB, to be used
- *     in programs that are not prepared to deal with ~ expansion at run-time.
- */
-/* PERL_VENDORLIB_STEM:
- *     This define is PERL_VENDORLIB_EXP with any trailing version-specific component
- *     removed.  The elements in inc_version_list (inc_version_list.U) can
- *     be tacked onto this variable to generate a list of directories to search.
- */
-#$d_vendorlib PERL_VENDORLIB_EXP "$vendorlibexp"               /**/
-#$d_vendorlib PERL_VENDORLIB_STEM "$vendorlib_stem"            /**/
-
 /* USE_CROSS_COMPILE:
  *     This symbol, if defined, indicates that Perl is being cross-compiled.
  */
@@ -4011,15 +3087,15 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
 
 /* HAS_LLRINT:
  *     This symbol, if defined, indicates that the llrint routine is
- *     available to return the closest long long value according to
- *     the current rounding mode.
+ *     available to return the long long value closest to a double
+ *     (according to the current rounding mode).
  */
 #$d_llrint HAS_LLRINT          /**/
 
 /* HAS_LLRINTL:
  *     This symbol, if defined, indicates that the llrintl routine is
- *     available to return the closest long long value of the long double
- *     argument according to the current rounding mode.
+ *     available to return the long long value closest to a long double
+ *     (according to the current rounding mode).
  */
 #$d_llrintl HAS_LLRINTL                /**/
 
@@ -4056,15 +3132,15 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
 
 /* HAS_LRINT:
  *     This symbol, if defined, indicates that the lrint routine is
- *     available to return the closest integral value according to
- *     the current rounding mode.
+ *     available to return the integral value closest to a double
+ *     (according to the current rounding mode).
  */
 #$d_lrint HAS_LRINT            /**/
 
 /* HAS_LRINTL:
  *     This symbol, if defined, indicates that the lrintl routine is
- *     available to return the closest integral value of the long double
- *     argument according to the current rounding mode.
+ *     available to return the integral value closest to a long double
+ *     (according to the current rounding mode).
  */
 #$d_lrintl HAS_LRINTL          /**/
 
@@ -4099,6 +3175,13 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
  */
 #$d_malloc_good_size HAS_MALLOC_GOOD_SIZE      /**/
 
+/* HAS_MEMMEM:
+ *     This symbol, if defined, indicates that the memmem routine is
+ *     available to return a pointer to the start of the first occurance
+ *     of a substring in a memory area (or NULL if not found).
+ */
+#$d_memmem HAS_MEMMEM          /**/
+
 /* HAS_MKDTEMP:
  *     This symbol, if defined, indicates that the mkdtemp routine is
  *     available to exclusively create a uniquely named temporary directory.
@@ -5105,173 +4188,1090 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
  */
 #define SELECT_MIN_BITS        $selectminbits  /**/
 
-/* ST_INO_SIZE:
- *     This variable contains the size of struct stat's st_ino in bytes.
+/* ST_INO_SIZE:
+ *     This variable contains the size of struct stat's st_ino in bytes.
+ */
+/* ST_INO_SIGN:
+ *     This symbol holds the signedness of struct stat's st_ino.
+ *     1 for unsigned, -1 for signed.
+ */
+#define ST_INO_SIGN $st_ino_sign       /* st_ino sign */
+#define ST_INO_SIZE $st_ino_size       /* st_ino size */
+
+/* STARTPERL:
+ *     This variable contains the string to put in front of a perl
+ *     script to make sure (one hopes) that it runs with perl and not
+ *     some shell.
+ */
+#define STARTPERL "$startperl"         /**/
+
+/* HAS_STDIO_STREAM_ARRAY:
+ *     This symbol, if defined, tells that there is an array
+ *     holding the stdio streams.
+ */
+/* STDIO_STREAM_ARRAY:
+ *     This symbol tells the name of the array holding the stdio streams.
+ *     Usual values include _iob, __iob, and __sF.
+ */
+#$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY  /**/
+#ifdef HAS_STDIO_STREAM_ARRAY
+#define STDIO_STREAM_ARRAY     $stdio_stream_array
+#endif
+
+/* GMTIME_MAX:
+ *     This symbol contains the maximum value for the time_t offset that
+ *     the system function gmtime () accepts, and defaults to 0
+ */
+/* GMTIME_MIN:
+ *     This symbol contains the minimum value for the time_t offset that
+ *     the system function gmtime () accepts, and defaults to 0
+ */
+/* LOCALTIME_MAX:
+ *     This symbol contains the maximum value for the time_t offset that
+ *     the system function localtime () accepts, and defaults to 0
+ */
+/* LOCALTIME_MIN:
+ *     This symbol contains the minimum value for the time_t offset that
+ *     the system function localtime () accepts, and defaults to 0
+ */
+#define GMTIME_MAX             $sGMTIME_max    /**/
+#define GMTIME_MIN             $sGMTIME_min    /**/
+#define LOCALTIME_MAX  $sLOCALTIME_max /**/
+#define LOCALTIME_MIN  $sLOCALTIME_min /**/
+
+/* USE_64_BIT_INT:
+ *     This symbol, if defined, indicates that 64-bit integers should
+ *     be used when available.  If not defined, the native integers
+ *     will be employed (be they 32 or 64 bits).  The minimal possible
+ *     64-bitness is used, just enough to get 64-bit integers into Perl.
+ *     This may mean using for example "long longs", while your memory
+ *     may still be limited to 2 gigabytes.
+ */
+/* USE_64_BIT_ALL:
+ *     This symbol, if defined, indicates that 64-bit integers should
+ *     be used when available.  If not defined, the native integers
+ *     will be used (be they 32 or 64 bits).  The maximal possible
+ *     64-bitness is employed: LP64 or ILP64, meaning that you will
+ *     be able to use more than 2 gigabytes of memory.  This mode is
+ *     even more binary incompatible than USE_64_BIT_INT. You may not
+ *     be able to run the resulting executable in a 32-bit CPU at all or
+ *     you may need at least to reboot your OS to 64-bit mode.
+ */
+#ifndef USE_64_BIT_INT
+#$use64bitint  USE_64_BIT_INT          /**/
+#endif
+#ifndef USE_64_BIT_ALL
+#$use64bitall  USE_64_BIT_ALL          /**/
+#endif
+
+/* USE_CBACKTRACE:
+ *     This symbol, if defined, indicates that Perl should
+ *     be built with support for backtrace.
+ */
+#$usecbacktrace USE_CBACKTRACE         /**/
+
+/* USE_DTRACE:
+ *     This symbol, if defined, indicates that Perl should
+ *     be built with support for DTrace.
+ */
+#$usedtrace USE_DTRACE         /**/
+
+/* USE_FAST_STDIO:
+ *     This symbol, if defined, indicates that Perl should
+ *     be built to use 'fast stdio'.
+ *     Defaults to define in Perls 5.8 and earlier, to undef later.
+ */
+#ifndef USE_FAST_STDIO
+#$usefaststdio USE_FAST_STDIO          /**/
+#endif
+
+/* USE_KERN_PROC_PATHNAME:
+ *     This symbol, if defined, indicates that we can use sysctl with
+ *     KERN_PROC_PATHNAME to get a full path for the executable, and hence
+ *     convert $^X to an absolute path.
+ */
+#$usekernprocpathname USE_KERN_PROC_PATHNAME   /**/
+
+/* USE_LARGE_FILES:
+ *     This symbol, if defined, indicates that large file support
+ *     should be used when available.
+ */
+#ifndef USE_LARGE_FILES
+#$uselargefiles        USE_LARGE_FILES         /**/
+#endif
+
+/* USE_LONG_DOUBLE:
+ *     This symbol, if defined, indicates that long doubles should
+ *     be used when available.
+ */
+#ifndef USE_LONG_DOUBLE
+#$uselongdouble        USE_LONG_DOUBLE         /**/
+#endif
+
+/* USE_MORE_BITS:
+ *     This symbol, if defined, indicates that 64-bit interfaces and
+ *     long doubles should be used when available.
+ */
+#ifndef USE_MORE_BITS
+#$usemorebits  USE_MORE_BITS           /**/
+#endif
+
+/* MULTIPLICITY:
+ *     This symbol, if defined, indicates that Perl should
+ *     be built to use multiplicity.
+ */
+#ifndef MULTIPLICITY
+#$usemultiplicity      MULTIPLICITY            /**/
+#endif
+
+/* USE_NSGETEXECUTABLEPATH:
+ *     This symbol, if defined, indicates that we can use _NSGetExecutablePath
+ *     and realpath to get a full path for the executable, and hence convert
+ *     $^X to an absolute path.
+ */
+#$usensgetexecutablepath USE_NSGETEXECUTABLEPATH       /**/
+
+/* USE_PERLIO:
+ *     This symbol, if defined, indicates that the PerlIO abstraction should
+ *     be used throughout.  If not defined, stdio should be
+ *     used in a fully backward compatible manner.
+ */
+#ifndef USE_PERLIO
+#$useperlio    USE_PERLIO              /**/
+#endif
+
+/* USE_QUADMATH:
+ *     This symbol, if defined, indicates that the quadmath library should
+ *     be used when available.
+ */
+#ifndef USE_QUADMATH
+#$usequadmath  USE_QUADMATH            /**/
+#endif
+
+/* USE_SOCKS:
+ *     This symbol, if defined, indicates that Perl should
+ *     be built to use socks.
+ */
+#ifndef USE_SOCKS
+#$usesocks     USE_SOCKS               /**/
+#endif
+
+/* HAS_DRAND48_PROTO:
+ *     This symbol, if defined, indicates that the system provides
+ *     a prototype for the drand48() function.  Otherwise, it is up
+ *     to the program to supply one.  A good guess is
+ *             extern double drand48(void);
+ */
+#$d_drand48proto       HAS_DRAND48_PROTO       /**/
+
+/* HAS_GETHOST_PROTOS:
+ *     This symbol, if defined, indicates that <netdb.h> includes
+ *     prototypes for gethostent(), gethostbyname(), and
+ *     gethostbyaddr().  Otherwise, it is up to the program to guess
+ *     them.  See netdbtype.U for probing for various Netdb_xxx_t types.
+ */
+#$d_gethostprotos      HAS_GETHOST_PROTOS      /**/
+
+/* HAS_GETNET_PROTOS:
+ *     This symbol, if defined, indicates that <netdb.h> includes
+ *     prototypes for getnetent(), getnetbyname(), and
+ *     getnetbyaddr().  Otherwise, it is up to the program to guess
+ *     them.  See netdbtype.U for probing for various Netdb_xxx_t types.
+ */
+#$d_getnetprotos       HAS_GETNET_PROTOS       /**/
+
+/* HAS_GETPROTO_PROTOS:
+ *     This symbol, if defined, indicates that <netdb.h> includes
+ *     prototypes for getprotoent(), getprotobyname(), and
+ *     getprotobyaddr().  Otherwise, it is up to the program to guess
+ *     them.  See netdbtype.U for probing for various Netdb_xxx_t types.
+ */
+#$d_getprotoprotos     HAS_GETPROTO_PROTOS     /**/
+
+/* HAS_GETSERV_PROTOS:
+ *     This symbol, if defined, indicates that <netdb.h> includes
+ *     prototypes for getservent(), getservbyname(), and
+ *     getservbyaddr().  Otherwise, it is up to the program to guess
+ *     them.  See netdbtype.U for probing for various Netdb_xxx_t types.
+ */
+#$d_getservprotos      HAS_GETSERV_PROTOS      /**/
+
+/* HAS_LSEEK_PROTO:
+ *     This symbol, if defined, indicates that the system provides
+ *     a prototype for the lseek() function.  Otherwise, it is up
+ *     to the program to supply one.  A good guess is
+ *             extern off_t lseek(int, off_t, int);
+ */
+#$d_lseekproto HAS_LSEEK_PROTO /**/
+
+/* Netdb_host_t:
+ *     This symbol holds the type used for the 1st argument
+ *     to gethostbyaddr().
+ */
+/* Netdb_hlen_t:
+ *     This symbol holds the type used for the 2nd argument
+ *     to gethostbyaddr().
+ */
+/* Netdb_name_t:
+ *     This symbol holds the type used for the argument to
+ *     gethostbyname().
+ */
+/* Netdb_net_t:
+ *     This symbol holds the type used for the 1st argument to
+ *     getnetbyaddr().
+ */
+#define Netdb_host_t           $netdb_host_type /**/
+#define Netdb_hlen_t           $netdb_hlen_type /**/
+#define Netdb_name_t           $netdb_name_type /**/
+#define Netdb_net_t            $netdb_net_type /**/
+
+/* Select_fd_set_t:
+ *     This symbol holds the type used for the 2nd, 3rd, and 4th
+ *     arguments to select.  Usually, this is 'fd_set *', if HAS_FD_SET
+ *     is defined, and 'int *' otherwise.  This is only useful if you
+ *     have select(), of course.
+ */
+#define Select_fd_set_t        $selecttype     /**/
+
+/* Sock_size_t:
+ *     This symbol holds the type used for the size argument of
+ *     various socket calls (just the base type, not the pointer-to).
+ */
+#define Sock_size_t            $socksizetype /**/
+
+/* ARCHNAME:
+ *     This symbol holds a string representing the architecture name.
+ *     It may be used to construct an architecture-dependant pathname
+ *     where library files may be held under a private library, for
+ *     instance.
+ */
+#define ARCHNAME "$archname"           /**/
+
+/* HAS_ASCTIME_R:
+ *     This symbol, if defined, indicates that the asctime_r routine
+ *     is available to asctime re-entrantly.
+ */
+/* ASCTIME_R_PROTO:
+ *     This symbol encodes the prototype of asctime_r.
+ *     It is zero if d_asctime_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_asctime_r
+ *     is defined.
+ */
+#$d_asctime_r HAS_ASCTIME_R       /**/
+#define ASCTIME_R_PROTO $asctime_r_proto          /**/
+
+/* HAS_CRYPT_R:
+ *     This symbol, if defined, indicates that the crypt_r routine
+ *     is available to crypt re-entrantly.
+ */
+/* CRYPT_R_PROTO:
+ *     This symbol encodes the prototype of crypt_r.
+ *     It is zero if d_crypt_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_crypt_r
+ *     is defined.
+ */
+#$d_crypt_r HAS_CRYPT_R           /**/
+#define CRYPT_R_PROTO $crypt_r_proto      /**/
+
+/* HAS_CTERMID_R:
+ *     This symbol, if defined, indicates that the ctermid_r routine
+ *     is available to ctermid re-entrantly.
+ */
+/* CTERMID_R_PROTO:
+ *     This symbol encodes the prototype of ctermid_r.
+ *     It is zero if d_ctermid_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_ctermid_r
+ *     is defined.
+ */
+#$d_ctermid_r HAS_CTERMID_R       /**/
+#define CTERMID_R_PROTO $ctermid_r_proto          /**/
+
+/* HAS_CTIME_R:
+ *     This symbol, if defined, indicates that the ctime_r routine
+ *     is available to ctime re-entrantly.
+ */
+/* CTIME_R_PROTO:
+ *     This symbol encodes the prototype of ctime_r.
+ *     It is zero if d_ctime_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_ctime_r
+ *     is defined.
+ */
+#$d_ctime_r HAS_CTIME_R           /**/
+#define CTIME_R_PROTO $ctime_r_proto      /**/
+
+/* HAS_DRAND48_R:
+ *     This symbol, if defined, indicates that the drand48_r routine
+ *     is available to drand48 re-entrantly.
+ */
+/* DRAND48_R_PROTO:
+ *     This symbol encodes the prototype of drand48_r.
+ *     It is zero if d_drand48_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_drand48_r
+ *     is defined.
+ */
+#$d_drand48_r HAS_DRAND48_R       /**/
+#define DRAND48_R_PROTO $drand48_r_proto          /**/
+
+/* HAS_ENDGRENT_R:
+ *     This symbol, if defined, indicates that the endgrent_r routine
+ *     is available to endgrent re-entrantly.
+ */
+/* ENDGRENT_R_PROTO:
+ *     This symbol encodes the prototype of endgrent_r.
+ *     It is zero if d_endgrent_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_endgrent_r
+ *     is defined.
+ */
+#$d_endgrent_r HAS_ENDGRENT_R     /**/
+#define ENDGRENT_R_PROTO $endgrent_r_proto        /**/
+
+/* HAS_ENDHOSTENT_R:
+ *     This symbol, if defined, indicates that the endhostent_r routine
+ *     is available to endhostent re-entrantly.
+ */
+/* ENDHOSTENT_R_PROTO:
+ *     This symbol encodes the prototype of endhostent_r.
+ *     It is zero if d_endhostent_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_endhostent_r
+ *     is defined.
+ */
+#$d_endhostent_r HAS_ENDHOSTENT_R         /**/
+#define ENDHOSTENT_R_PROTO $endhostent_r_proto    /**/
+
+/* HAS_ENDNETENT_R:
+ *     This symbol, if defined, indicates that the endnetent_r routine
+ *     is available to endnetent re-entrantly.
+ */
+/* ENDNETENT_R_PROTO:
+ *     This symbol encodes the prototype of endnetent_r.
+ *     It is zero if d_endnetent_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_endnetent_r
+ *     is defined.
+ */
+#$d_endnetent_r HAS_ENDNETENT_R           /**/
+#define ENDNETENT_R_PROTO $endnetent_r_proto      /**/
+
+/* HAS_ENDPROTOENT_R:
+ *     This symbol, if defined, indicates that the endprotoent_r routine
+ *     is available to endprotoent re-entrantly.
+ */
+/* ENDPROTOENT_R_PROTO:
+ *     This symbol encodes the prototype of endprotoent_r.
+ *     It is zero if d_endprotoent_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_endprotoent_r
+ *     is defined.
+ */
+#$d_endprotoent_r HAS_ENDPROTOENT_R       /**/
+#define ENDPROTOENT_R_PROTO $endprotoent_r_proto          /**/
+
+/* HAS_ENDPWENT_R:
+ *     This symbol, if defined, indicates that the endpwent_r routine
+ *     is available to endpwent re-entrantly.
+ */
+/* ENDPWENT_R_PROTO:
+ *     This symbol encodes the prototype of endpwent_r.
+ *     It is zero if d_endpwent_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_endpwent_r
+ *     is defined.
+ */
+#$d_endpwent_r HAS_ENDPWENT_R     /**/
+#define ENDPWENT_R_PROTO $endpwent_r_proto        /**/
+
+/* HAS_ENDSERVENT_R:
+ *     This symbol, if defined, indicates that the endservent_r routine
+ *     is available to endservent re-entrantly.
+ */
+/* ENDSERVENT_R_PROTO:
+ *     This symbol encodes the prototype of endservent_r.
+ *     It is zero if d_endservent_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_endservent_r
+ *     is defined.
+ */
+#$d_endservent_r HAS_ENDSERVENT_R         /**/
+#define ENDSERVENT_R_PROTO $endservent_r_proto    /**/
+
+/* HAS_GETGRENT_R:
+ *     This symbol, if defined, indicates that the getgrent_r routine
+ *     is available to getgrent re-entrantly.
+ */
+/* GETGRENT_R_PROTO:
+ *     This symbol encodes the prototype of getgrent_r.
+ *     It is zero if d_getgrent_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_getgrent_r
+ *     is defined.
+ */
+#$d_getgrent_r HAS_GETGRENT_R     /**/
+#define GETGRENT_R_PROTO $getgrent_r_proto        /**/
+
+/* HAS_GETGRGID_R:
+ *     This symbol, if defined, indicates that the getgrgid_r routine
+ *     is available to getgrgid re-entrantly.
+ */
+/* GETGRGID_R_PROTO:
+ *     This symbol encodes the prototype of getgrgid_r.
+ *     It is zero if d_getgrgid_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_getgrgid_r
+ *     is defined.
+ */
+#$d_getgrgid_r HAS_GETGRGID_R     /**/
+#define GETGRGID_R_PROTO $getgrgid_r_proto        /**/
+
+/* HAS_GETGRNAM_R:
+ *     This symbol, if defined, indicates that the getgrnam_r routine
+ *     is available to getgrnam re-entrantly.
+ */
+/* GETGRNAM_R_PROTO:
+ *     This symbol encodes the prototype of getgrnam_r.
+ *     It is zero if d_getgrnam_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_getgrnam_r
+ *     is defined.
+ */
+#$d_getgrnam_r HAS_GETGRNAM_R     /**/
+#define GETGRNAM_R_PROTO $getgrnam_r_proto        /**/
+
+/* HAS_GETHOSTBYADDR_R:
+ *     This symbol, if defined, indicates that the gethostbyaddr_r routine
+ *     is available to gethostbyaddr re-entrantly.
+ */
+/* GETHOSTBYADDR_R_PROTO:
+ *     This symbol encodes the prototype of gethostbyaddr_r.
+ *     It is zero if d_gethostbyaddr_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_gethostbyaddr_r
+ *     is defined.
+ */
+#$d_gethostbyaddr_r HAS_GETHOSTBYADDR_R           /**/
+#define GETHOSTBYADDR_R_PROTO $gethostbyaddr_r_proto      /**/
+
+/* HAS_GETHOSTBYNAME_R:
+ *     This symbol, if defined, indicates that the gethostbyname_r routine
+ *     is available to gethostbyname re-entrantly.
+ */
+/* GETHOSTBYNAME_R_PROTO:
+ *     This symbol encodes the prototype of gethostbyname_r.
+ *     It is zero if d_gethostbyname_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_gethostbyname_r
+ *     is defined.
+ */
+#$d_gethostbyname_r HAS_GETHOSTBYNAME_R           /**/
+#define GETHOSTBYNAME_R_PROTO $gethostbyname_r_proto      /**/
+
+/* HAS_GETHOSTENT_R:
+ *     This symbol, if defined, indicates that the gethostent_r routine
+ *     is available to gethostent re-entrantly.
+ */
+/* GETHOSTENT_R_PROTO:
+ *     This symbol encodes the prototype of gethostent_r.
+ *     It is zero if d_gethostent_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_gethostent_r
+ *     is defined.
+ */
+#$d_gethostent_r HAS_GETHOSTENT_R         /**/
+#define GETHOSTENT_R_PROTO $gethostent_r_proto    /**/
+
+/* HAS_GETLOGIN_R:
+ *     This symbol, if defined, indicates that the getlogin_r routine
+ *     is available to getlogin re-entrantly.
+ */
+/* GETLOGIN_R_PROTO:
+ *     This symbol encodes the prototype of getlogin_r.
+ *     It is zero if d_getlogin_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_getlogin_r
+ *     is defined.
+ */
+#$d_getlogin_r HAS_GETLOGIN_R     /**/
+#define GETLOGIN_R_PROTO $getlogin_r_proto        /**/
+
+/* HAS_GETNETBYADDR_R:
+ *     This symbol, if defined, indicates that the getnetbyaddr_r routine
+ *     is available to getnetbyaddr re-entrantly.
+ */
+/* GETNETBYADDR_R_PROTO:
+ *     This symbol encodes the prototype of getnetbyaddr_r.
+ *     It is zero if d_getnetbyaddr_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_getnetbyaddr_r
+ *     is defined.
+ */
+#$d_getnetbyaddr_r HAS_GETNETBYADDR_R     /**/
+#define GETNETBYADDR_R_PROTO $getnetbyaddr_r_proto        /**/
+
+/* HAS_GETNETBYNAME_R:
+ *     This symbol, if defined, indicates that the getnetbyname_r routine
+ *     is available to getnetbyname re-entrantly.
+ */
+/* GETNETBYNAME_R_PROTO:
+ *     This symbol encodes the prototype of getnetbyname_r.
+ *     It is zero if d_getnetbyname_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_getnetbyname_r
+ *     is defined.
+ */
+#$d_getnetbyname_r HAS_GETNETBYNAME_R     /**/
+#define GETNETBYNAME_R_PROTO $getnetbyname_r_proto        /**/
+
+/* HAS_GETNETENT_R:
+ *     This symbol, if defined, indicates that the getnetent_r routine
+ *     is available to getnetent re-entrantly.
+ */
+/* GETNETENT_R_PROTO:
+ *     This symbol encodes the prototype of getnetent_r.
+ *     It is zero if d_getnetent_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_getnetent_r
+ *     is defined.
+ */
+#$d_getnetent_r HAS_GETNETENT_R           /**/
+#define GETNETENT_R_PROTO $getnetent_r_proto      /**/
+
+/* HAS_GETPROTOBYNAME_R:
+ *     This symbol, if defined, indicates that the getprotobyname_r routine
+ *     is available to getprotobyname re-entrantly.
+ */
+/* GETPROTOBYNAME_R_PROTO:
+ *     This symbol encodes the prototype of getprotobyname_r.
+ *     It is zero if d_getprotobyname_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_getprotobyname_r
+ *     is defined.
+ */
+#$d_getprotobyname_r HAS_GETPROTOBYNAME_R         /**/
+#define GETPROTOBYNAME_R_PROTO $getprotobyname_r_proto    /**/
+
+/* HAS_GETPROTOBYNUMBER_R:
+ *     This symbol, if defined, indicates that the getprotobynumber_r routine
+ *     is available to getprotobynumber re-entrantly.
+ */
+/* GETPROTOBYNUMBER_R_PROTO:
+ *     This symbol encodes the prototype of getprotobynumber_r.
+ *     It is zero if d_getprotobynumber_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_getprotobynumber_r
+ *     is defined.
+ */
+#$d_getprotobynumber_r HAS_GETPROTOBYNUMBER_R     /**/
+#define GETPROTOBYNUMBER_R_PROTO $getprotobynumber_r_proto        /**/
+
+/* HAS_GETPROTOENT_R:
+ *     This symbol, if defined, indicates that the getprotoent_r routine
+ *     is available to getprotoent re-entrantly.
+ */
+/* GETPROTOENT_R_PROTO:
+ *     This symbol encodes the prototype of getprotoent_r.
+ *     It is zero if d_getprotoent_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_getprotoent_r
+ *     is defined.
+ */
+#$d_getprotoent_r HAS_GETPROTOENT_R       /**/
+#define GETPROTOENT_R_PROTO $getprotoent_r_proto          /**/
+
+/* HAS_GETPWENT_R:
+ *     This symbol, if defined, indicates that the getpwent_r routine
+ *     is available to getpwent re-entrantly.
+ */
+/* GETPWENT_R_PROTO:
+ *     This symbol encodes the prototype of getpwent_r.
+ *     It is zero if d_getpwent_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_getpwent_r
+ *     is defined.
+ */
+#$d_getpwent_r HAS_GETPWENT_R     /**/
+#define GETPWENT_R_PROTO $getpwent_r_proto        /**/
+
+/* HAS_GETPWNAM_R:
+ *     This symbol, if defined, indicates that the getpwnam_r routine
+ *     is available to getpwnam re-entrantly.
+ */
+/* GETPWNAM_R_PROTO:
+ *     This symbol encodes the prototype of getpwnam_r.
+ *     It is zero if d_getpwnam_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_getpwnam_r
+ *     is defined.
+ */
+#$d_getpwnam_r HAS_GETPWNAM_R     /**/
+#define GETPWNAM_R_PROTO $getpwnam_r_proto        /**/
+
+/* HAS_GETPWUID_R:
+ *     This symbol, if defined, indicates that the getpwuid_r routine
+ *     is available to getpwuid re-entrantly.
+ */
+/* GETPWUID_R_PROTO:
+ *     This symbol encodes the prototype of getpwuid_r.
+ *     It is zero if d_getpwuid_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_getpwuid_r
+ *     is defined.
+ */
+#$d_getpwuid_r HAS_GETPWUID_R     /**/
+#define GETPWUID_R_PROTO $getpwuid_r_proto        /**/
+
+/* HAS_GETSERVBYNAME_R:
+ *     This symbol, if defined, indicates that the getservbyname_r routine
+ *     is available to getservbyname re-entrantly.
+ */
+/* GETSERVBYNAME_R_PROTO:
+ *     This symbol encodes the prototype of getservbyname_r.
+ *     It is zero if d_getservbyname_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_getservbyname_r
+ *     is defined.
+ */
+#$d_getservbyname_r HAS_GETSERVBYNAME_R           /**/
+#define GETSERVBYNAME_R_PROTO $getservbyname_r_proto      /**/
+
+/* HAS_GETSERVBYPORT_R:
+ *     This symbol, if defined, indicates that the getservbyport_r routine
+ *     is available to getservbyport re-entrantly.
+ */
+/* GETSERVBYPORT_R_PROTO:
+ *     This symbol encodes the prototype of getservbyport_r.
+ *     It is zero if d_getservbyport_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_getservbyport_r
+ *     is defined.
+ */
+#$d_getservbyport_r HAS_GETSERVBYPORT_R           /**/
+#define GETSERVBYPORT_R_PROTO $getservbyport_r_proto      /**/
+
+/* HAS_GETSERVENT_R:
+ *     This symbol, if defined, indicates that the getservent_r routine
+ *     is available to getservent re-entrantly.
+ */
+/* GETSERVENT_R_PROTO:
+ *     This symbol encodes the prototype of getservent_r.
+ *     It is zero if d_getservent_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_getservent_r
+ *     is defined.
+ */
+#$d_getservent_r HAS_GETSERVENT_R         /**/
+#define GETSERVENT_R_PROTO $getservent_r_proto    /**/
+
+/* HAS_GETSPNAM_R:
+ *     This symbol, if defined, indicates that the getspnam_r routine
+ *     is available to getspnam re-entrantly.
+ */
+/* GETSPNAM_R_PROTO:
+ *     This symbol encodes the prototype of getspnam_r.
+ *     It is zero if d_getspnam_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_getspnam_r
+ *     is defined.
+ */
+#$d_getspnam_r HAS_GETSPNAM_R     /**/
+#define GETSPNAM_R_PROTO $getspnam_r_proto        /**/
+
+/* HAS_GMTIME_R:
+ *     This symbol, if defined, indicates that the gmtime_r routine
+ *     is available to gmtime re-entrantly.
+ */
+/* GMTIME_R_PROTO:
+ *     This symbol encodes the prototype of gmtime_r.
+ *     It is zero if d_gmtime_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_gmtime_r
+ *     is defined.
+ */
+#$d_gmtime_r HAS_GMTIME_R         /**/
+#define GMTIME_R_PROTO $gmtime_r_proto    /**/
+
+/* HAS_LOCALTIME_R:
+ *     This symbol, if defined, indicates that the localtime_r routine
+ *     is available to localtime re-entrantly.
+ */
+/* LOCALTIME_R_NEEDS_TZSET:
+ *     Many libc's localtime_r implementations do not call tzset,
+ *     making them differ from localtime(), and making timezone
+ *     changes using \$ENV{TZ} without explicitly calling tzset
+ *     impossible. This symbol makes us call tzset before localtime_r
+ */
+#$d_localtime_r_needs_tzset LOCALTIME_R_NEEDS_TZSET /**/
+#ifdef LOCALTIME_R_NEEDS_TZSET
+#define L_R_TZSET tzset(),
+#else
+#define L_R_TZSET
+#endif
+
+/* LOCALTIME_R_PROTO:
+ *     This symbol encodes the prototype of localtime_r.
+ *     It is zero if d_localtime_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_localtime_r
+ *     is defined.
+ */
+#$d_localtime_r HAS_LOCALTIME_R           /**/
+#define LOCALTIME_R_PROTO $localtime_r_proto      /**/
+
+/* OLD_PTHREAD_CREATE_JOINABLE:
+ *     This symbol, if defined, indicates how to create pthread
+ *     in joinable (aka undetached) state.  NOTE: not defined
+ *     if pthread.h already has defined PTHREAD_CREATE_JOINABLE
+ *     (the new version of the constant).
+ *     If defined, known values are PTHREAD_CREATE_UNDETACHED
+ *     and __UNDETACHED.
+ */
+#$d_old_pthread_create_joinable OLD_PTHREAD_CREATE_JOINABLE $old_pthread_create_joinable /**/
+
+/* HAS_PTHREAD_ATFORK:
+ *     This symbol, if defined, indicates that the pthread_atfork routine
+ *     is available to setup fork handlers.
+ */
+#$d_pthread_atfork HAS_PTHREAD_ATFORK          /**/
+
+/* HAS_PTHREAD_YIELD:
+ *     This symbol, if defined, indicates that the pthread_yield
+ *     routine is available to yield the execution of the current
+ *     thread.  sched_yield is preferable to pthread_yield.
+ */
+/* SCHED_YIELD:
+ *     This symbol defines the way to yield the execution of
+ *     the current thread.  Known ways are sched_yield,
+ *     pthread_yield, and pthread_yield with NULL.
+ */
+/* HAS_SCHED_YIELD:
+ *     This symbol, if defined, indicates that the sched_yield
+ *     routine is available to yield the execution of the current
+ *     thread.  sched_yield is preferable to pthread_yield.
+ */
+#$d_pthread_yield HAS_PTHREAD_YIELD    /**/
+#define SCHED_YIELD    $sched_yield    /**/
+#$d_sched_yield HAS_SCHED_YIELD        /**/
+
+/* HAS_RANDOM_R:
+ *     This symbol, if defined, indicates that the random_r routine
+ *     is available to random re-entrantly.
+ */
+/* RANDOM_R_PROTO:
+ *     This symbol encodes the prototype of random_r.
+ *     It is zero if d_random_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_random_r
+ *     is defined.
+ */
+#$d_random_r HAS_RANDOM_R         /**/
+#define RANDOM_R_PROTO $random_r_proto    /**/
+
+/* HAS_READDIR64_R:
+ *     This symbol, if defined, indicates that the readdir64_r routine
+ *     is available to readdir64 re-entrantly.
+ */
+/* READDIR64_R_PROTO:
+ *     This symbol encodes the prototype of readdir64_r.
+ *     It is zero if d_readdir64_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_readdir64_r
+ *     is defined.
+ */
+#$d_readdir64_r HAS_READDIR64_R           /**/
+#define READDIR64_R_PROTO $readdir64_r_proto      /**/
+
+/* HAS_READDIR_R:
+ *     This symbol, if defined, indicates that the readdir_r routine
+ *     is available to readdir re-entrantly.
+ */
+/* READDIR_R_PROTO:
+ *     This symbol encodes the prototype of readdir_r.
+ *     It is zero if d_readdir_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_readdir_r
+ *     is defined.
+ */
+#$d_readdir_r HAS_READDIR_R       /**/
+#define READDIR_R_PROTO $readdir_r_proto          /**/
+
+/* HAS_SETGRENT_R:
+ *     This symbol, if defined, indicates that the setgrent_r routine
+ *     is available to setgrent re-entrantly.
+ */
+/* SETGRENT_R_PROTO:
+ *     This symbol encodes the prototype of setgrent_r.
+ *     It is zero if d_setgrent_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_setgrent_r
+ *     is defined.
+ */
+#$d_setgrent_r HAS_SETGRENT_R     /**/
+#define SETGRENT_R_PROTO $setgrent_r_proto        /**/
+
+/* HAS_SETHOSTENT_R:
+ *     This symbol, if defined, indicates that the sethostent_r routine
+ *     is available to sethostent re-entrantly.
+ */
+/* SETHOSTENT_R_PROTO:
+ *     This symbol encodes the prototype of sethostent_r.
+ *     It is zero if d_sethostent_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_sethostent_r
+ *     is defined.
+ */
+#$d_sethostent_r HAS_SETHOSTENT_R         /**/
+#define SETHOSTENT_R_PROTO $sethostent_r_proto    /**/
+
+/* HAS_SETLOCALE_R:
+ *     This symbol, if defined, indicates that the setlocale_r routine
+ *     is available to setlocale re-entrantly.
+ */
+/* SETLOCALE_R_PROTO:
+ *     This symbol encodes the prototype of setlocale_r.
+ *     It is zero if d_setlocale_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_setlocale_r
+ *     is defined.
+ */
+#$d_setlocale_r HAS_SETLOCALE_R           /**/
+#define SETLOCALE_R_PROTO $setlocale_r_proto      /**/
+
+/* HAS_SETNETENT_R:
+ *     This symbol, if defined, indicates that the setnetent_r routine
+ *     is available to setnetent re-entrantly.
+ */
+/* SETNETENT_R_PROTO:
+ *     This symbol encodes the prototype of setnetent_r.
+ *     It is zero if d_setnetent_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_setnetent_r
+ *     is defined.
+ */
+#$d_setnetent_r HAS_SETNETENT_R           /**/
+#define SETNETENT_R_PROTO $setnetent_r_proto      /**/
+
+/* HAS_SETPROTOENT_R:
+ *     This symbol, if defined, indicates that the setprotoent_r routine
+ *     is available to setprotoent re-entrantly.
+ */
+/* SETPROTOENT_R_PROTO:
+ *     This symbol encodes the prototype of setprotoent_r.
+ *     It is zero if d_setprotoent_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_setprotoent_r
+ *     is defined.
+ */
+#$d_setprotoent_r HAS_SETPROTOENT_R       /**/
+#define SETPROTOENT_R_PROTO $setprotoent_r_proto          /**/
+
+/* HAS_SETPWENT_R:
+ *     This symbol, if defined, indicates that the setpwent_r routine
+ *     is available to setpwent re-entrantly.
+ */
+/* SETPWENT_R_PROTO:
+ *     This symbol encodes the prototype of setpwent_r.
+ *     It is zero if d_setpwent_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_setpwent_r
+ *     is defined.
+ */
+#$d_setpwent_r HAS_SETPWENT_R     /**/
+#define SETPWENT_R_PROTO $setpwent_r_proto        /**/
+
+/* HAS_SETSERVENT_R:
+ *     This symbol, if defined, indicates that the setservent_r routine
+ *     is available to setservent re-entrantly.
+ */
+/* SETSERVENT_R_PROTO:
+ *     This symbol encodes the prototype of setservent_r.
+ *     It is zero if d_setservent_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_setservent_r
+ *     is defined.
+ */
+#$d_setservent_r HAS_SETSERVENT_R         /**/
+#define SETSERVENT_R_PROTO $setservent_r_proto    /**/
+
+/* HAS_SRAND48_R:
+ *     This symbol, if defined, indicates that the srand48_r routine
+ *     is available to srand48 re-entrantly.
+ */
+/* SRAND48_R_PROTO:
+ *     This symbol encodes the prototype of srand48_r.
+ *     It is zero if d_srand48_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_srand48_r
+ *     is defined.
+ */
+#$d_srand48_r HAS_SRAND48_R       /**/
+#define SRAND48_R_PROTO $srand48_r_proto          /**/
+
+/* HAS_SRANDOM_R:
+ *     This symbol, if defined, indicates that the srandom_r routine
+ *     is available to srandom re-entrantly.
+ */
+/* SRANDOM_R_PROTO:
+ *     This symbol encodes the prototype of srandom_r.
+ *     It is zero if d_srandom_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_srandom_r
+ *     is defined.
+ */
+#$d_srandom_r HAS_SRANDOM_R       /**/
+#define SRANDOM_R_PROTO $srandom_r_proto          /**/
+
+/* HAS_STRERROR_R:
+ *     This symbol, if defined, indicates that the strerror_r routine
+ *     is available to strerror re-entrantly.
+ */
+/* STRERROR_R_PROTO:
+ *     This symbol encodes the prototype of strerror_r.
+ *     It is zero if d_strerror_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_strerror_r
+ *     is defined.
+ */
+#$d_strerror_r HAS_STRERROR_R     /**/
+#define STRERROR_R_PROTO $strerror_r_proto        /**/
+
+/* HAS_TMPNAM_R:
+ *     This symbol, if defined, indicates that the tmpnam_r routine
+ *     is available to tmpnam re-entrantly.
+ */
+/* TMPNAM_R_PROTO:
+ *     This symbol encodes the prototype of tmpnam_r.
+ *     It is zero if d_tmpnam_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_tmpnam_r
+ *     is defined.
+ */
+#$d_tmpnam_r HAS_TMPNAM_R         /**/
+#define TMPNAM_R_PROTO $tmpnam_r_proto    /**/
+
+/* HAS_TTYNAME_R:
+ *     This symbol, if defined, indicates that the ttyname_r routine
+ *     is available to ttyname re-entrantly.
  */
-/* ST_INO_SIGN:
- *     This symbol holds the signedness of struct stat's st_ino.
- *     1 for unsigned, -1 for signed.
+/* TTYNAME_R_PROTO:
+ *     This symbol encodes the prototype of ttyname_r.
+ *     It is zero if d_ttyname_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_ttyname_r
+ *     is defined.
  */
-#define ST_INO_SIGN $st_ino_sign       /* st_ino sign */
-#define ST_INO_SIZE $st_ino_size       /* st_ino size */
+#$d_ttyname_r HAS_TTYNAME_R       /**/
+#define TTYNAME_R_PROTO $ttyname_r_proto          /**/
 
-/* STARTPERL:
- *     This variable contains the string to put in front of a perl
- *     script to make sure (one hopes) that it runs with perl and not
- *     some shell.
+/* I_MACH_CTHREADS:
+ *     This symbol, if defined, indicates to the C program that it should
+ *     include <mach/cthreads.h>.
  */
-#define STARTPERL "$startperl"         /**/
+#$i_machcthr   I_MACH_CTHREADS /**/
 
-/* HAS_STDIO_STREAM_ARRAY:
- *     This symbol, if defined, tells that there is an array
- *     holding the stdio streams.
+/* I_PTHREAD:
+ *     This symbol, if defined, indicates to the C program that it should
+ *     include <pthread.h>.
  */
-/* STDIO_STREAM_ARRAY:
- *     This symbol tells the name of the array holding the stdio streams.
- *     Usual values include _iob, __iob, and __sF.
+#$i_pthread   I_PTHREAD        /**/
+
+/* USE_ITHREADS:
+ *     This symbol, if defined, indicates that Perl should be built to
+ *     use the interpreter-based threading implementation.
  */
-#$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY  /**/
-#ifdef HAS_STDIO_STREAM_ARRAY
-#define STDIO_STREAM_ARRAY     $stdio_stream_array
+/* USE_5005THREADS:
+ *     This symbol, if defined, indicates that Perl should be built to
+ *     use the 5.005-based threading implementation.
+ *     Only valid up to 5.8.x.
+ */
+/* OLD_PTHREADS_API:
+ *     This symbol, if defined, indicates that Perl should
+ *     be built to use the old draft POSIX threads API.
+ */
+/* USE_REENTRANT_API:
+ *     This symbol, if defined, indicates that Perl should
+ *     try to use the various _r versions of library functions.
+ *     This is extremely experimental.
+ */
+#$use5005threads       USE_5005THREADS         /**/
+#$useithreads  USE_ITHREADS            /**/
+#if defined(USE_5005THREADS) && !defined(USE_ITHREADS)
+#define                USE_THREADS             /* until src is revised*/
 #endif
+#$d_oldpthreads        OLD_PTHREADS_API                /**/
+#$usereentrant USE_REENTRANT_API       /**/
 
-/* GMTIME_MAX:
- *     This symbol contains the maximum value for the time_t offset that
- *     the system function gmtime () accepts, and defaults to 0
- */
-/* GMTIME_MIN:
- *     This symbol contains the minimum value for the time_t offset that
- *     the system function gmtime () accepts, and defaults to 0
+/* HAS_TIME:
+ *     This symbol, if defined, indicates that the time() routine exists.
  */
-/* LOCALTIME_MAX:
- *     This symbol contains the maximum value for the time_t offset that
- *     the system function localtime () accepts, and defaults to 0
+/* Time_t:
+ *     This symbol holds the type returned by time(). It can be long,
+ *     or time_t on BSD sites (in which case <sys/types.h> should be
+ *     included).
  */
-/* LOCALTIME_MIN:
- *     This symbol contains the minimum value for the time_t offset that
- *     the system function localtime () accepts, and defaults to 0
+#$d_time HAS_TIME              /**/
+#define Time_t $timetype               /* Time type */
+
+/* HAS_TIMES:
+ *     This symbol, if defined, indicates that the times() routine exists.
+ *     Note that this became obsolete on some systems (SUNOS), which now
+ * use getrusage(). It may be necessary to include <sys/times.h>.
  */
-#define GMTIME_MAX             $sGMTIME_max    /**/
-#define GMTIME_MIN             $sGMTIME_min    /**/
-#define LOCALTIME_MAX  $sLOCALTIME_max /**/
-#define LOCALTIME_MIN  $sLOCALTIME_min /**/
+#$d_times HAS_TIMES            /**/
 
-/* USE_64_BIT_INT:
- *     This symbol, if defined, indicates that 64-bit integers should
- *     be used when available.  If not defined, the native integers
- *     will be employed (be they 32 or 64 bits).  The minimal possible
- *     64-bitness is used, just enough to get 64-bit integers into Perl.
- *     This may mean using for example "long longs", while your memory
- *     may still be limited to 2 gigabytes.
+/* Fpos_t:
+ *     This symbol holds the type used to declare file positions in libc.
+ *     It can be fpos_t, long, uint, etc... It may be necessary to include
+ *     <sys/types.h> to get any typedef'ed information.
  */
-/* USE_64_BIT_ALL:
- *     This symbol, if defined, indicates that 64-bit integers should
- *     be used when available.  If not defined, the native integers
- *     will be used (be they 32 or 64 bits).  The maximal possible
- *     64-bitness is employed: LP64 or ILP64, meaning that you will
- *     be able to use more than 2 gigabytes of memory.  This mode is
- *     even more binary incompatible than USE_64_BIT_INT. You may not
- *     be able to run the resulting executable in a 32-bit CPU at all or
- *     you may need at least to reboot your OS to 64-bit mode.
+#define Fpos_t $fpostype               /* File position type */
+
+/* Gid_t_f:
+ *     This symbol defines the format string used for printing a Gid_t.
  */
-#ifndef USE_64_BIT_INT
-#$use64bitint  USE_64_BIT_INT          /**/
-#endif
-#ifndef USE_64_BIT_ALL
-#$use64bitall  USE_64_BIT_ALL          /**/
-#endif
+#define        Gid_t_f         $gidformat              /**/
 
-/* USE_CBACKTRACE:
- *     This symbol, if defined, indicates that Perl should
- *     be built with support for backtrace.
+/* Gid_t_sign:
+ *     This symbol holds the signedness of a Gid_t.
+ *     1 for unsigned, -1 for signed.
  */
-#$usecbacktrace USE_CBACKTRACE         /**/
+#define Gid_t_sign     $gidsign                /* GID sign */
 
-/* USE_DTRACE:
- *     This symbol, if defined, indicates that Perl should
- *     be built with support for DTrace.
+/* Gid_t_size:
+ *     This symbol holds the size of a Gid_t in bytes.
  */
-#$usedtrace USE_DTRACE         /**/
+#define Gid_t_size $gidsize            /* GID size */
 
-/* USE_FAST_STDIO:
- *     This symbol, if defined, indicates that Perl should
- *     be built to use 'fast stdio'.
- *     Defaults to define in Perls 5.8 and earlier, to undef later.
+/* Gid_t:
+ *     This symbol holds the return type of getgid() and the type of
+ *     argument to setrgid() and related functions.  Typically,
+ *     it is the type of group ids in the kernel. It can be int, ushort,
+ *     gid_t, etc... It may be necessary to include <sys/types.h> to get
+ *     any typedef'ed information.
  */
-#ifndef USE_FAST_STDIO
-#$usefaststdio USE_FAST_STDIO          /**/
-#endif
+#define Gid_t $gidtype         /* Type for getgid(), etc... */
 
-/* USE_KERN_PROC_PATHNAME:
- *     This symbol, if defined, indicates that we can use sysctl with
- *     KERN_PROC_PATHNAME to get a full path for the executable, and hence
- *     convert $^X to an absolute path.
+/* Off_t:
+ *     This symbol holds the type used to declare offsets in the kernel.
+ *     It can be int, long, off_t, etc... It may be necessary to include
+ *     <sys/types.h> to get any typedef'ed information.
  */
-#$usekernprocpathname USE_KERN_PROC_PATHNAME   /**/
+/* LSEEKSIZE:
+ *     This symbol holds the number of bytes used by the Off_t.
+ */
+/* Off_t_size:
+ *     This symbol holds the number of bytes used by the Off_t.
+ */
+#define Off_t $lseektype               /* <offset> type */
+#define LSEEKSIZE $lseeksize           /* <offset> size */
+#define Off_t_size $lseeksize  /* <offset> size */
 
-/* USE_LARGE_FILES:
- *     This symbol, if defined, indicates that large file support
- *     should be used when available.
+/* Mode_t:
+ *     This symbol holds the type used to declare file modes
+ *     for systems calls.  It is usually mode_t, but may be
+ *     int or unsigned short.  It may be necessary to include <sys/types.h>
+ *     to get any typedef'ed information.
  */
-#ifndef USE_LARGE_FILES
-#$uselargefiles        USE_LARGE_FILES         /**/
-#endif
+#define Mode_t $modetype        /* file mode parameter for system calls */
 
-/* USE_LONG_DOUBLE:
- *     This symbol, if defined, indicates that long doubles should
- *     be used when available.
+/* Pid_t:
+ *     This symbol holds the type used to declare process ids in the kernel.
+ *     It can be int, uint, pid_t, etc... It may be necessary to include
+ *     <sys/types.h> to get any typedef'ed information.
  */
-#ifndef USE_LONG_DOUBLE
-#$uselongdouble        USE_LONG_DOUBLE         /**/
-#endif
+#define Pid_t $pidtype         /* PID type */
 
-/* USE_MORE_BITS:
- *     This symbol, if defined, indicates that 64-bit interfaces and
- *     long doubles should be used when available.
+/* Size_t_size:
+ *     This symbol holds the size of a Size_t in bytes.
  */
-#ifndef USE_MORE_BITS
-#$usemorebits  USE_MORE_BITS           /**/
-#endif
+#define Size_t_size $sizesize          /**/
 
-/* MULTIPLICITY:
- *     This symbol, if defined, indicates that Perl should
- *     be built to use multiplicity.
+/* Size_t:
+ *     This symbol holds the type used to declare length parameters
+ *     for string functions.  It is usually size_t, but may be
+ *     unsigned long, int, etc.  It may be necessary to include
+ *     <sys/types.h> to get any typedef'ed information.
  */
-#ifndef MULTIPLICITY
-#$usemultiplicity      MULTIPLICITY            /**/
-#endif
+#define Size_t $sizetype        /* length parameter for string functions */
 
-/* USE_NSGETEXECUTABLEPATH:
- *     This symbol, if defined, indicates that we can use _NSGetExecutablePath
- *     and realpath to get a full path for the executable, and hence convert
- *     $^X to an absolute path.
+/* Uid_t_f:
+ *     This symbol defines the format string used for printing a Uid_t.
  */
-#$usensgetexecutablepath USE_NSGETEXECUTABLEPATH       /**/
+#define        Uid_t_f         $uidformat              /**/
 
-/* USE_PERLIO:
- *     This symbol, if defined, indicates that the PerlIO abstraction should
- *     be used throughout.  If not defined, stdio should be
- *     used in a fully backward compatible manner.
+/* Uid_t_sign:
+ *     This symbol holds the signedness of a Uid_t.
+ *     1 for unsigned, -1 for signed.
  */
-#ifndef USE_PERLIO
-#$useperlio    USE_PERLIO              /**/
-#endif
+#define Uid_t_sign     $uidsign                /* UID sign */
 
-/* USE_QUADMATH:
- *     This symbol, if defined, indicates that the quadmath library should
- *     be used when available.
+/* Uid_t_size:
+ *     This symbol holds the size of a Uid_t in bytes.
  */
-#ifndef USE_QUADMATH
-#$usequadmath  USE_QUADMATH            /**/
-#endif
+#define Uid_t_size $uidsize            /* UID size */
 
-/* USE_SOCKS:
- *     This symbol, if defined, indicates that Perl should
- *     be built to use socks.
+/* Uid_t:
+ *     This symbol holds the type used to declare user ids in the kernel.
+ *     It can be int, ushort, uid_t, etc... It may be necessary to include
+ *     <sys/types.h> to get any typedef'ed information.
  */
-#ifndef USE_SOCKS
-#$usesocks     USE_SOCKS               /**/
-#endif
+#define Uid_t $uidtype         /* UID type */
 
 #endif
 !GROK!THIS!
index 75a4f5b..ffcbc22 100644 (file)
@@ -6156,6 +6156,7 @@ $ WC "d_mbtowc='" + d_mbtowc + "'"
 $ WC "d_memchr='" + d_memchr + "'"
 $ WC "d_memcmp='define'"
 $ WC "d_memcpy='define'"
+$ WC "d_memmem='undef'"
 $ WC "d_memmove='define'"
 $ WC "d_memset='define'"
 $ WC "d_mkdir='define'"
@@ -6190,9 +6191,6 @@ $ WC "d_nanosleep='" + d_nanosleep + "'"
 $ WC "d_ndbm='undef'"
 $ WC "d_ndbm_h_uses_prototypes='undef'"
 $ WC "d_nearbyint='undef'"
-$ WC "d_newlocale='undef'"
-$ WC "d_uselocale='undef'"
-$ WC "d_freelocale='undef'"
 $ WC "d_nextafter='" + d_nextafter + "'"
 $ WC "d_nexttoward='" + d_nexttoward + "'"
 $ WC "d_nice='define'"
diff --git a/cop.h b/cop.h
index dfb4a00..da29572 100644 (file)
--- a/cop.h
+++ b/cop.h
@@ -847,12 +847,12 @@ struct context {
 
 /* be careful of the ordering of these five. Macros like CxTYPE_is_LOOP,
  * CxFOREACH compare ranges */
-#define CXt_LOOP_ARY   4 /* for (@ary)     {} */
-#define CXt_LOOP_LAZYSV        5 /* for ('a'..'z') {} */
-#define CXt_LOOP_LAZYIV        6 /* for (1..9)     {} */
-#define CXt_LOOP_LIST  7 /* for (1,2,3)    {} */
-#define CXt_LOOP_PLAIN 8 /*                {} */
-
+#define CXt_LOOP_ARY   4 /* for (@ary)     { ...; } */
+#define CXt_LOOP_LAZYSV        5 /* for ('a'..'z') { ...; } */
+#define CXt_LOOP_LAZYIV        6 /* for (1..9)     { ...; } */
+#define CXt_LOOP_LIST  7 /* for (1,2,3)    { ...; } */
+#define CXt_LOOP_PLAIN 8 /* while (...)    { ...; }
+                             or plain block { ...; } */
 #define CXt_SUB                9
 #define CXt_FORMAT     10
 #define CXt_EVAL       11
@@ -1055,8 +1055,8 @@ typedef struct stackinfo PERL_SI;
        }                                                               \
     } STMT_END
 
-#define IN_PERL_COMPILETIME    (PL_curcop == &PL_compiling)
-#define IN_PERL_RUNTIME                (PL_curcop != &PL_compiling)
+#define IN_PERL_COMPILETIME    cBOOL(PL_curcop == &PL_compiling)
+#define IN_PERL_RUNTIME                cBOOL(PL_curcop != &PL_compiling)
 
 
 
index b8d09e6..6824bbb 100644 (file)
@@ -39,7 +39,7 @@ my %tables = (
 my %not_here = 
     map {$_ => 1} 
 (
- '8859-1.ucm', # default
+ '8859-1.ucm', 'cp1252.ucm', # default
  qw(cp037.ucm cp1026.ucm cp1047.ucm cp500.ucm cp875.ucm), # EBCDIC
  qw(cp932.ucm cp936.ucm cp949.ucm cp950.ucm),  # CJK
  );
index 36f12cc..034da1e 100644 (file)
@@ -18,7 +18,7 @@ BEGIN {
 
 use Exporter ();
 use vars qw($VERSION @ISA @EXPORT @EXPORT_OK);
-$VERSION   = '2.12';
+$VERSION   = '2.12_01';
 $VERSION   = eval $VERSION;
 @ISA       = qw(Exporter);
 @EXPORT    = qw(mkpath rmtree);
index c2b2f28..4716882 100644 (file)
@@ -7,6 +7,9 @@ use Cwd;
 use File::Spec::Functions;
 
 plan skip_all  => 'not win32' unless $^O eq 'MSWin32';
+my ($ignore, $major, $minor, $build, $id) = Win32::GetOSVersion();
+plan skip_all  => "WinXP or later"
+     unless $id >= 2 && ($major > 5 || $major == 5 && $minor >= 1);
 plan tests     => 3;
 
 my $tmp_base = catdir(
index 1829e75..b739559 100644 (file)
@@ -43,7 +43,7 @@ BEGIN {
 
 @ISA = qw(Pod::Simple);
 
-$VERSION = '4.06';
+$VERSION = '4.07';
 
 # Set the debugging level.  If someone has inserted a debug function into this
 # class already, use that.  Otherwise, use any Pod::Simple debug function
@@ -147,9 +147,18 @@ sub new {
     delete $$self{errors};
 
     # Degrade back to non-utf8 if Encode is not available.
+    #
+    # Suppress the warning message when PERL_CORE is set, indicating this is
+    # running as part of the core Perl build.  Perl builds podlators (and all
+    # pure Perl modules) before Encode and other XS modules, so Encode won't
+    # yet be available.  Rely on the Perl core build to generate man pages
+    # later, after all the modules are available, so that UTF-8 handling will
+    # be correct.
     if ($$self{utf8} and !$HAS_ENCODE) {
-        carp ('utf8 mode requested but Encode module not available,'
-              . ' falling back to non-utf8');
+        if (!$ENV{PERL_CORE}) {
+            carp ('utf8 mode requested but Encode module not available,'
+                    . ' falling back to non-utf8');
+        }
         delete $$self{utf8};
     }
 
@@ -676,10 +685,11 @@ sub switchquotes {
         # to Roman rather than the actual previous font when used in headings.
         # troff output may still be broken, but at least we can fix nroff by
         # just switching the font changes to the non-fixed versions.
-        $nroff =~ s/\Q$$self{FONTS}{100}\E(.*?)\\f[PR]/$1/g;
-        $nroff =~ s/\Q$$self{FONTS}{101}\E(.*?)\\f([PR])/\\fI$1\\f$2/g;
-        $nroff =~ s/\Q$$self{FONTS}{110}\E(.*?)\\f([PR])/\\fB$1\\f$2/g;
-        $nroff =~ s/\Q$$self{FONTS}{111}\E(.*?)\\f([PR])/\\f\(BI$1\\f$2/g;
+        my $font_end = "(?:\\f[PR]|\Q$$self{FONTS}{100}\E)";
+        $nroff =~ s/\Q$$self{FONTS}{100}\E(.*?)\\f([PR])/$1/g;
+        $nroff =~ s/\Q$$self{FONTS}{101}\E(.*?)$font_end/\\fI$1\\fP/g;
+        $nroff =~ s/\Q$$self{FONTS}{110}\E(.*?)$font_end/\\fB$1\\fP/g;
+        $nroff =~ s/\Q$$self{FONTS}{111}\E(.*?)$font_end/\\f\(BI$1\\fP/g;
 
         # Now finally output the command.  Bother with .ie only if the nroff
         # and troff output aren't the same.
@@ -854,44 +864,49 @@ sub devise_title {
     }
 
     # If the section isn't 3, then the name defaults to just the basename of
-    # the file.  Otherwise, assume we're dealing with a module.  We want to
-    # figure out the full module name from the path to the file, but we don't
-    # want to include too much of the path into the module name.  Lose
-    # anything up to the first off:
-    #
-    #     */lib/*perl*/         standard or site_perl module
-    #     */*perl*/lib/         from -Dprefix=/opt/perl
-    #     */*perl*/             random module hierarchy
-    #
-    # which works.  Also strip off a leading site, site_perl, or vendor_perl
-    # component, any OS-specific component, and any version number component,
-    # and strip off an initial component of "lib" or "blib/lib" since that's
-    # what ExtUtils::MakeMaker creates.  splitdir requires at least File::Spec
-    # 0.8.
+    # the file.
     if ($section !~ /^3/) {
         require File::Basename;
         $name = uc File::Basename::basename ($name);
     } else {
         require File::Spec;
         my ($volume, $dirs, $file) = File::Spec->splitpath ($name);
+
+        # Otherwise, assume we're dealing with a module.  We want to figure
+        # out the full module name from the path to the file, but we don't
+        # want to include too much of the path into the module name.  Lose
+        # anything up to the first of:
+        #
+        #     */lib/*perl*/         standard or site_perl module
+        #     */*perl*/lib/         from -Dprefix=/opt/perl
+        #     */*perl*/             random module hierarchy
+        #
+        # Also strip off a leading site, site_perl, or vendor_perl component,
+        # any OS-specific component, and any version number component, and
+        # strip off an initial component of "lib" or "blib/lib" since that's
+        # what ExtUtils::MakeMaker creates.
+        #
+        # splitdir requires at least File::Spec 0.8.
         my @dirs = File::Spec->splitdir ($dirs);
-        my $cut = 0;
-        my $i;
-        for ($i = 0; $i < @dirs; $i++) {
-            if ($dirs[$i] =~ /perl/) {
-                $cut = $i + 1;
-                $cut++ if ($dirs[$i + 1] && $dirs[$i + 1] eq 'lib');
-                last;
+        if (@dirs) {
+            my $cut = 0;
+            my $i;
+            for ($i = 0; $i < @dirs; $i++) {
+                if ($dirs[$i] =~ /perl/) {
+                    $cut = $i + 1;
+                    $cut++ if ($dirs[$i + 1] && $dirs[$i + 1] eq 'lib');
+                    last;
+                }
             }
+            if ($cut > 0) {
+                splice (@dirs, 0, $cut);
+                shift @dirs if ($dirs[0] =~ /^(site|vendor)(_perl)?$/);
+                shift @dirs if ($dirs[0] =~ /^[\d.]+$/);
+                shift @dirs if ($dirs[0] =~ /^(.*-$^O|$^O-.*|$^O)$/);
+            }
+            shift @dirs if $dirs[0] eq 'lib';
+            splice (@dirs, 0, 2) if ($dirs[0] eq 'blib' && $dirs[1] eq 'lib');
         }
-        if ($cut > 0) {
-            splice (@dirs, 0, $cut);
-            shift @dirs if ($dirs[0] =~ /^(site|vendor)(_perl)?$/);
-            shift @dirs if ($dirs[0] =~ /^[\d.]+$/);
-            shift @dirs if ($dirs[0] =~ /^(.*-$^O|$^O-.*|$^O)$/);
-        }
-        shift @dirs if $dirs[0] eq 'lib';
-        splice (@dirs, 0, 2) if ($dirs[0] eq 'blib' && $dirs[1] eq 'lib');
 
         # Remove empty directories when building the module name; they
         # occur too easily on Unix by doubling slashes.
@@ -1877,6 +1892,13 @@ option was set to C<die>.
 
 =over 4
 
+=item PERL_CORE
+
+If set and Encode is not available, silently fall back to non-UTF-8 mode
+without complaining to standard error.  This environment variable is set
+during Perl core builds, which build Encode after podlators.  Encode is
+expected to not (yet) be available in that case.
+
 =item POD_MAN_DATE
 
 If set, this will be used as the value of the left-hand footer unless the
@@ -1962,7 +1984,7 @@ mine).
 =head1 COPYRIGHT AND LICENSE
 
 Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-2009, 2010, 2012, 2013, 2014, 2015 Russ Allbery <rra@cpan.org>
+2009, 2010, 2012, 2013, 2014, 2015, 2016 Russ Allbery <rra@cpan.org>
 
 This program is free software; you may redistribute it and/or modify it
 under the same terms as Perl itself.
index b3629df..a9e6b34 100644 (file)
@@ -31,7 +31,7 @@ use Exporter;
 @ISA    = qw(Exporter);
 @EXPORT = qw(parselink);
 
-$VERSION = '4.06';
+$VERSION = '4.07';
 
 ##############################################################################
 # Implementation
index f15007d..e141da2 100644 (file)
@@ -39,7 +39,7 @@ use Pod::Simple ();
 # We have to export pod2text for backward compatibility.
 @EXPORT = qw(pod2text);
 
-$VERSION = '4.06';
+$VERSION = '4.07';
 
 ##############################################################################
 # Initialization
index a52d5ca..b67742e 100644 (file)
@@ -27,7 +27,7 @@ use vars qw(@ISA $VERSION);
 
 @ISA = qw(Pod::Text);
 
-$VERSION = '4.06';
+$VERSION = '4.07';
 
 ##############################################################################
 # Overrides
index b8af4f9..1592026 100644 (file)
@@ -35,7 +35,7 @@ use Pod::Text ();
 
 @ISA = qw(Pod::Text);
 
-$VERSION = '4.06';
+$VERSION = '4.07';
 
 ##############################################################################
 # Overrides
index 5336a06..d533e76 100644 (file)
@@ -28,7 +28,7 @@ use vars qw(@ISA $VERSION);
 
 @ISA = qw(Pod::Text);
 
-$VERSION = '4.06';
+$VERSION = '4.07';
 
 ##############################################################################
 # Overrides
index 118f22a..5ad84b5 100644 (file)
@@ -2,8 +2,8 @@
 #
 # Additional specialized tests for Pod::Man.
 #
-# Copyright 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2012, 2013, 2014
-#     Russ Allbery <rra@cpan.org>
+# Copyright 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2012, 2013, 2014,
+#     2016 Russ Allbery <rra@cpan.org>
 #
 # This program is free software; you may redistribute it and/or modify it
 # under the same terms as Perl itself.
@@ -19,7 +19,7 @@ BEGIN {
 
 use strict;
 
-use Test::More tests => 34;
+use Test::More tests => 35;
 BEGIN { use_ok ('Pod::Man') }
 
 # Test whether we can use binmode to set encoding.
@@ -565,3 +565,30 @@ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
 TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
 SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\s0
 ###
+
+###
+=head1 Fixed-width Fonts in =item
+
+The nroff portion should not use fixed-width fonts.  In podlators 4.06 and
+earlier, italic was terminated with \f(CW, which didn't properly stop italic.
+
+=over 2
+
+=item C<tar I<option>... [I<name>]...>
+
+=item C<tar I<letter>... [I<argument>]... [I<option>]... [I<name>]...>
+
+=back
+###
+.SH "Fixed-width Fonts in =item"
+.IX Header "Fixed-width Fonts in =item"
+The nroff portion should not use fixed-width fonts.  In podlators 4.06 and
+earlier, italic was terminated with \ef(\s-1CW,\s0 which didn't properly stop italic.
+.ie n .IP """tar \fIoption\fP... [\fIname\fP]...""" 2
+.el .IP "\f(CWtar \f(CIoption\f(CW... [\f(CIname\f(CW]...\fR" 2
+.IX Item "tar option... [name]..."
+.PD 0
+.ie n .IP """tar \fIletter\fP... [\fIargument\fP]... [\fIoption\fP]... [\fIname\fP]...""" 2
+.el .IP "\f(CWtar \f(CIletter\f(CW... [\f(CIargument\f(CW]... [\f(CIoption\f(CW]... [\f(CIname\f(CW]...\fR" 2
+.IX Item "tar letter... [argument]... [option]... [name]..."
+###
index a98c99e..afdd550 100644 (file)
@@ -3,7 +3,7 @@
 # Tests for the automatic determination of the manual page title if not
 # specified via options to pod2man or the Pod::Man constructor.
 #
-# Copyright 2015 Russ Allbery <rra@cpan.org>
+# Copyright 2015, 2016 Russ Allbery <rra@cpan.org>
 #
 # This program is free software; you may redistribute it and/or modify it
 # under the same terms as Perl itself.
@@ -14,7 +14,7 @@ use warnings;
 
 use File::Spec;
 use IO::File;
-use Test::More tests => 3;
+use Test::More tests => 5;
 
 BEGIN {
     use_ok('Pod::Man');
@@ -35,3 +35,13 @@ $parser->parse_file($handle);
 my ($name, $section) = $parser->devise_title;
 is($name, 'STDIN', 'devise_title uses STDIN for file handle input');
 ok($parser->errors_seen, '...and errors were seen');
+
+# Now check handling of a simple file name with no parent directory, which
+# simulates a POD file at the top of a distribution.  In podlators 4.06, this
+# produced an erroneous warning.  (That wouldn't actually fail this test, but
+# I'd see it during development, which is good enough and doesn't require
+# anything too complicated.)
+$parser->source_filename('Foo.pm');
+($name, $section) = $parser->devise_title;
+is($name, 'Foo', 'devise_title with a simple module name');
+is($section, 3, '...and the correct section');
index 59aa730..24b278f 100644 (file)
@@ -154,7 +154,15 @@ wide_to_utf8(const wchar_t *wbuf)
 {
     char *buf;
     int wlen = 0;
-    char *oldlocale = setlocale(LC_CTYPE, NULL);
+    char *oldlocale;
+    dVAR;
+
+    /* Here and elsewhere in this file, we have a critical section to prevent
+     * another thread from changing the locale out from under us.  XXX But why
+     * not just use uvchr_to_utf8? */
+    LOCALE_LOCK;
+
+    oldlocale = setlocale(LC_CTYPE, NULL);
     setlocale(LC_CTYPE, "utf-8");
 
     /* uvchr_to_utf8(buf, chr) or Encoding::_bytes_to_utf8(sv, "UCS-2BE"); */
@@ -164,6 +172,9 @@ wide_to_utf8(const wchar_t *wbuf)
 
     if (oldlocale) setlocale(LC_CTYPE, oldlocale);
     else setlocale(LC_CTYPE, "C");
+
+    LOCALE_UNLOCK;
+
     return buf;
 }
 
@@ -172,8 +183,13 @@ utf8_to_wide(const char *buf)
 {
     wchar_t *wbuf;
     mbstate_t mbs;
-    char *oldlocale = setlocale(LC_CTYPE, NULL);
+    char *oldlocale;
     int wlen = sizeof(wchar_t)*strlen(buf);
+    dVAR;
+
+    LOCALE_LOCK;
+
+    oldlocale = setlocale(LC_CTYPE, NULL);
 
     setlocale(LC_CTYPE, "utf-8");
     wbuf = (wchar_t *) safemalloc(wlen);
@@ -182,6 +198,9 @@ utf8_to_wide(const char *buf)
 
     if (oldlocale) setlocale(LC_CTYPE, oldlocale);
     else setlocale(LC_CTYPE, "C");
+
+    LOCALE_UNLOCK;
+
     return wbuf;
 }
 #endif /* cygwin 1.7 */
@@ -280,7 +299,12 @@ XS(XS_Cygwin_win_to_posix_path)
        wchar_t *wbuf = (wchar_t *) safemalloc(wlen);
        if (!IN_BYTES) {
            mbstate_t mbs;
-            char *oldlocale = setlocale(LC_CTYPE, NULL);
+            char *oldlocale;
+            dVAR;
+
+            LOCALE_LOCK;
+
+            oldlocale = setlocale(LC_CTYPE, NULL);
             setlocale(LC_CTYPE, "utf-8");
            /* utf8_to_uvchr_buf(src_path, src_path + wlen, wpath) or Encoding::_utf8_to_bytes(sv, "UCS-2BE"); */
            wlen = mbsrtowcs(wpath, (const char**)&src_path, wlen, &mbs);
@@ -288,6 +312,8 @@ XS(XS_Cygwin_win_to_posix_path)
                err = cygwin_conv_path(what, wpath, wbuf, wlen);
             if (oldlocale) setlocale(LC_CTYPE, oldlocale);
             else setlocale(LC_CTYPE, "C");
+
+            LOCALE_UNLOCK;
        } else { /* use bytes; assume already ucs-2 encoded bytestream */
            err = cygwin_conv_path(what, src_path, wbuf, wlen);
        }
@@ -365,7 +391,12 @@ XS(XS_Cygwin_posix_to_win_path)
        int wlen = sizeof(wchar_t)*(len + 260 + 1001);
        wchar_t *wpath = (wchar_t *) safemalloc(sizeof(wchar_t)*len);
        wchar_t *wbuf = (wchar_t *) safemalloc(wlen);
-       char *oldlocale = setlocale(LC_CTYPE, NULL);
+       char *oldlocale;
+        dVAR;
+
+        LOCALE_LOCK;
+
+       oldlocale = setlocale(LC_CTYPE, NULL);
        setlocale(LC_CTYPE, "utf-8");
        if (!IN_BYTES) {
            mbstate_t mbs;
@@ -388,6 +419,8 @@ XS(XS_Cygwin_posix_to_win_path)
        wcsrtombs(win_path, (const wchar_t **)&wbuf, wlen, NULL);
        if (oldlocale) setlocale(LC_CTYPE, oldlocale);
        else setlocale(LC_CTYPE, "C");
+
+        LOCALE_UNLOCK;
     } else {
        int what = absolute_flag ? CCP_POSIX_TO_WIN_A : CCP_POSIX_TO_WIN_A | CCP_RELATIVE;
        win_path = (char *) safemalloc(len + 260 + 1001);
index aebf74e..ce976b0 100644 (file)
@@ -122,8 +122,8 @@ otherwise.
 This works like <$io> described in L<perlop/"I/O Operators">
 except that it's more readable and can be safely called in a
 list context but still returns just one line.  If used as the conditional
-+within a C<while> or C-style C<for> loop, however, you will need to
-+emulate the functionality of <$io> with C<< defined($_ = $io->getline) >>.
+within a C<while> or C-style C<for> loop, however, you will need to
+emulate the functionality of <$io> with C<< defined($_ = $io->getline) >>.
 
 =item $io->getlines
 
@@ -271,7 +271,7 @@ use IO ();  # Load the XS module
 require Exporter;
 @ISA = qw(Exporter);
 
-$VERSION = "1.35";
+$VERSION = "1.36";
 $VERSION = eval $VERSION;
 
 @EXPORT_OK = qw(
index 7aae3a9..b254182 100644 (file)
@@ -1,3 +1,6 @@
+5.20160429
+ - Updated for v5.22.2
+
 5.20160320
  - Updated vor v5.23.9
 
index e4c6cfa..1fcae7b 100644 (file)
@@ -4,7 +4,7 @@ use vars qw/$VERSION %released %version %families %upstream
            %bug_tracker %deprecated %delta/;
 use Module::CoreList::TieHashDelta;
 use version;
-$VERSION = '5.20160320';
+$VERSION = '5.20160506';
 
 sub _released_order {   # Sort helper, to make '?' sort after everything else
     (substr($released{$a}, 0, 1) eq "?")
@@ -291,6 +291,8 @@ sub changes_between {
     5.023007 => '2016-01-20',
     5.023008 => '2016-02-20',
     5.023009 => '2016-03-20',
+    5.022002 => '2016-04-29',
+    5.024000 => '2016-05-09',
   );
 
 for my $version ( sort { $a <=> $b } keys %released ) {
@@ -9908,7 +9910,6 @@ for my $version ( sort { $a <=> $b } keys %released ) {
             'Module::Build::Version'=> 1,
             'Module::Build::YAML'   => 1,
             'Package::Constants'    => 1,
-            'Simple'                => 1,
             'inc::latest'           => 1,
         }
     },
@@ -12359,6 +12360,56 @@ for my $version ( sort { $a <=> $b } keys %released ) {
             'Win32API::File::ExtUtils::Myconst2perl'=> 1,
         }
     },
+    5.022002 => {
+        delta_from => 5.022001,
+        changed => {
+            'B::Op_private'         => '5.022002',
+            'Config'                => '5.022002',
+            'Cwd'                   => '3.56_01',
+            'File::Spec'            => '3.56_01',
+            'File::Spec::Cygwin'    => '3.56_01',
+            'File::Spec::Epoc'      => '3.56_01',
+            'File::Spec::Functions' => '3.56_01',
+            'File::Spec::Mac'       => '3.56_01',
+            'File::Spec::OS2'       => '3.56_01',
+            'File::Spec::Unix'      => '3.56_01',
+            'File::Spec::VMS'       => '3.56_01',
+            'File::Spec::Win32'     => '3.56_01',
+            'Module::CoreList'      => '5.20160429',
+            'Module::CoreList::TieHashDelta'=> '5.20160429',
+            'Module::CoreList::Utils'=> '5.20160429',
+            'XS::APItest'           => '0.72_01',
+        },
+        removed => {
+        }
+    },
+    5.024000 => {
+        delta_from => 5.023009,
+        changed => {
+            'B::Op_private'         => '5.024000',
+            'Config'                => '5.024',
+            'File::Copy'            => '2.31',
+            'File::Path'            => '2.12_01',
+            'File::Spec::AmigaOS'   => '3.64',
+            'Module::CoreList'      => '5.20160506',
+            'Module::CoreList::TieHashDelta'=> '5.20160506',
+            'Module::CoreList::Utils'=> '5.20160506',
+            'ODBM_File'             => '1.14',
+            'POSIX'                 => '1.65',
+            'Pod::Man'              => '4.07',
+            'Pod::ParseLink'        => '4.07',
+            'Pod::Text'             => '4.07',
+            'Pod::Text::Color'      => '4.07',
+            'Pod::Text::Overstrike' => '4.07',
+            'Pod::Text::Termcap'    => '4.07',
+            'Thread::Queue'         => '3.09',
+            'Time::HiRes'           => '1.9733',
+            'threads'               => '2.07',
+            'threads::shared'       => '1.51',
+        },
+        removed => {
+        }
+    },
 );
 
 sub is_core
@@ -12813,7 +12864,6 @@ for my $version (sort { $a <=> $b } keys %delta) {
             'Module::Build::Version'=> 1,
             'Module::Build::YAML'   => 1,
             'Package::Constants'    => 1,
-            'Simple'                => 1,
             'inc::latest'           => 1,
         }
     },
@@ -12999,6 +13049,20 @@ for my $version (sort { $a <=> $b } keys %delta) {
         removed => {
         }
     },
+    5.022002 => {
+        delta_from => 5.022001,
+        changed => {
+        },
+        removed => {
+        }
+    },
+    5.024000 => {
+        delta_from => 5.023009,
+        changed => {
+        },
+        removed => {
+        }
+    },
 );
 
 for my $version (sort { $a <=> $b } keys %deprecated) {
@@ -13769,7 +13833,7 @@ for my $version (sort { $a <=> $b } keys %deprecated) {
     'TAP::Parser::SourceHandler::RawTAP'=> 'http://rt.cpan.org/Public/Dist/Display.html?Name=Test-Harness',
     'TAP::Parser::YAMLish::Reader'=> 'http://rt.cpan.org/Public/Dist/Display.html?Name=Test-Harness',
     'TAP::Parser::YAMLish::Writer'=> 'http://rt.cpan.org/Public/Dist/Display.html?Name=Test-Harness',
-    'Term::ANSIColor'       => 'https://rt.cpan.org/Public/Dist/Display.html?Name=Term::ANSIColor',
+    'Term::ANSIColor'       => 'https://rt.cpan.org/Dist/Display.html?Name=Term-ANSIColor',
     'Term::Cap'             => undef,
     'Test::Builder'         => 'http://github.com/Test-More/test-more/issues/',
     'Test::Builder::IO::Scalar'=> 'http://github.com/Test-More/test-more/issues/',
index 6ec5780..90662fc 100644 (file)
@@ -3,7 +3,7 @@ package Module::CoreList::TieHashDelta;
 use strict;
 use vars qw($VERSION);
 
-$VERSION = '5.20160320';
+$VERSION = '5.20160506';
 
 sub TIEHASH {
     my ($class, $changed, $removed, $parent) = @_;
@@ -48,6 +48,9 @@ sub FIRSTKEY {
     my ($self) = @_;
 
     if (not $self->{keys_inflated}) {
+        # exceeds the warning limit of 100 calls since 5.23.2
+        no warnings 'recursion';
+
         # This inflates the whole set of hashes... Somewhat expensive, but saves
         # many tied hash calls later.
         my @parent_keys;
index d2aaa9c..9099245 100644 (file)
@@ -6,7 +6,7 @@ use vars qw[$VERSION %utilities];
 use Module::CoreList;
 use Module::CoreList::TieHashDelta;
 
-$VERSION = '5.20160320';
+$VERSION = '5.20160506';
 
 sub utilities {
     my $perl = shift;
@@ -1136,6 +1136,20 @@ my %delta = (
         removed => {
         }
     },
+    5.022002 => {
+        delta_from => 5.022001,
+        changed => {
+        },
+        removed => {
+        }
+    },
+    5.024000 => {
+        delta_from => 5.023009,
+        changed => {
+        },
+        removed => {
+        }
+    },
 );
 
 for my $version (sort { $a <=> $b } keys %delta) {
index db09f48..4adbbe9 100644 (file)
@@ -1,7 +1,7 @@
 #!perl -w
 use strict;
 use Module::CoreList;
-use Test::More tests => 32;
+use Test::More tests => 34;
 
 BEGIN { require_ok('Module::CoreList'); }
 
@@ -105,6 +105,12 @@ is(Module::CoreList::removed_from('CPANPLUS::inc'), 5.010001,
 
     cmp_ok($warnings_count, '==', 0,
            "an undefined version does not produce warnings rt#123556");
+
+    ok(keys %{$Module::CoreList::version{5.023002}} > 0,
+       "have recent enough data to test for deep recursion warnings");
+
+    cmp_ok($warnings_count, '==', 0,
+           "no deep recursion warnings for newer perl versions");
 }
 
 ok(! defined(Module::CoreList->find_version()),
index 9182d5e..7a5889c 100644 (file)
@@ -4,7 +4,7 @@ use strict;
 use vars qw(@ISA $VERSION);
 require File::Spec::Unix;
 
-$VERSION = ';.64';
+$VERSION = '3.64';
 $VERSION =~ tr/_//d;
 
 @ISA = qw(File::Spec::Unix);
index f1a08c7..2f87eed 100644 (file)
@@ -3,7 +3,7 @@ package Thread::Queue;
 use strict;
 use warnings;
 
-our $VERSION = '3.08';
+our $VERSION = '3.09';
 $VERSION = eval $VERSION;
 
 use threads::shared 1.21;
@@ -304,7 +304,7 @@ Thread::Queue - Thread-safe queues
 
 =head1 VERSION
 
-This document describes Thread::Queue version 3.07
+This document describes Thread::Queue version 3.09
 
 =head1 SYNOPSIS
 
@@ -393,20 +393,20 @@ shared array reference via C<&shared([])>, copy the elements 'foo', 'bar'
 and 'baz' from C<@ary> into it, and then place that shared reference onto
 the queue:
 
   my @ary = qw/foo bar baz/;
   $q->enqueue(\@ary);
+ my @ary = qw/foo bar baz/;
+ $q->enqueue(\@ary);
 
 However, for the following, the items are already shared, so their references
 are added directly to the queue, and no cloning takes place:
 
   my @ary :shared = qw/foo bar baz/;
   $q->enqueue(\@ary);
+ my @ary :shared = qw/foo bar baz/;
+ $q->enqueue(\@ary);
 
   my $obj = &shared({});
   $$obj{'foo'} = 'bar';
   $$obj{'qux'} = 99;
   bless($obj, 'My::Class');
   $q->enqueue($obj);
+ my $obj = &shared({});
+ $$obj{'foo'} = 'bar';
+ $$obj{'qux'} = 99;
+ bless($obj, 'My::Class');
+ $q->enqueue($obj);
 
 See L</"LIMITATIONS"> for caveats related to passing objects via queues.
 
@@ -546,18 +546,18 @@ Adds the list of items to the queue at the specified index position (0
 is the head of the list).  Any existing items at and beyond that position are
 pushed back past the newly added items:
 
   $q->enqueue(1, 2, 3, 4);
   $q->insert(1, qw/foo bar/);
   # Queue now contains:  1, foo, bar, 2, 3, 4
+ $q->enqueue(1, 2, 3, 4);
+ $q->insert(1, qw/foo bar/);
+ # Queue now contains:  1, foo, bar, 2, 3, 4
 
 Specifying an index position greater than the number of items in the queue
 just adds the list to the end.
 
 Negative index positions are supported:
 
   $q->enqueue(1, 2, 3, 4);
   $q->insert(-2, qw/foo bar/);
   # Queue now contains:  1, 2, foo, bar, 3, 4
+ $q->enqueue(1, 2, 3, 4);
+ $q->insert(-2, qw/foo bar/);
+ # Queue now contains:  1, 2, foo, bar, 3, 4
 
 Specifying a negative index position greater than the number of items in the
 queue adds the list to the head of the queue.
@@ -575,18 +575,18 @@ called with no arguments, C<extract> operates the same as C<dequeue_nb>.
 This method is non-blocking, and will return only as many items as are
 available to fulfill the request:
 
   $q->enqueue(1, 2, 3, 4);
   my $item  = $q->extract(2)     # Returns 3
-                                   # Queue now contains:  1, 2, 4
   my @items = $q->extract(1, 3)  # Returns (2, 4)
-                                   # Queue now contains:  1
+ $q->enqueue(1, 2, 3, 4);
+ my $item  = $q->extract(2)     # Returns 3
+                                # Queue now contains:  1, 2, 4
+ my @items = $q->extract(1, 3)  # Returns (2, 4)
+                                # Queue now contains:  1
 
 Specifying an index position greater than the number of items in the
 queue results in C<undef> or an empty list being returned.
 
   $q->enqueue('foo');
   my $nada = $q->extract(3)      # Returns undef
   my @nada = $q->extract(1, 3)   # Returns ()
+ $q->enqueue('foo');
+ my $nada = $q->extract(3)      # Returns undef
+ my @nada = $q->extract(1, 3)   # Returns ()
 
 Negative index positions are supported.  Specifying a negative index position
 greater than the number of items in the queue may return items from the head
@@ -598,8 +598,8 @@ greater than zero):
  my @nada = $q->extract(-6, 2);  # Returns ()      - (3+(-6)+2) <= 0
  my @some = $q->extract(-6, 4);  # Returns (foo)   - (3+(-6)+4) > 0
                                  # Queue now contains:  bar, baz
- my @rest = $q->extract(-3, 4);  # Returns
-                                 #       (bar, baz) - (2+(-3)+4) > 0
+ my @rest = $q->extract(-3, 4);  # Returns (bar, baz) -
+                                 #                   (2+(-3)+4) > 0
 
 =back
 
index a7f61a0..9d097c5 100644 (file)
@@ -1,5 +1,9 @@
 Revision history for the Perl extension Time::HiRes.
 
+1.9733 [2016-04-23]
+  - C90 declaration-after-statement error with darwin threads: blead de1003b4
+    [rt.cpan.org #113856]
+
 1.9732 [2016-03-13]
   - MUTEX_LOCK, not PERL_MUTEX_LOCK: blead e5b02b5d
   - also hrt_ualarm_itimer() is unused: 1cb6cce3
index 4915813..ad9a65c 100644 (file)
@@ -28,7 +28,7 @@ our @EXPORT_OK = qw (usleep sleep ualarm alarm gettimeofday time tv_interval
                 stat lstat
                );
 
-our $VERSION = '1.9732';
+our $VERSION = '1.9733';
 our $XS_VERSION = $VERSION;
 $VERSION = eval $VERSION;
 
index 8b8f25c..38ca0dc 100644 (file)
@@ -767,11 +767,11 @@ static mach_timebase_info_data_t timebase_info;
 static struct timespec timespec_init;
 
 static int darwin_time_init() {
+  struct timeval tv;
+  int success = 1;
 #ifdef USE_ITHREADS
   MUTEX_LOCK(&darwin_time_mutex);
 #endif
-  struct timeval tv;
-  int success = 1;
   if (absolute_time_init == 0) {
     /* mach_absolute_time() cannot fail */
     absolute_time_init = mach_absolute_time();
index dc76ab2..89a79a4 100644 (file)
@@ -7,7 +7,7 @@ use warnings;
 
 use Scalar::Util qw(reftype refaddr blessed);
 
-our $VERSION = '1.50'; # Please update the pod, too.
+our $VERSION = '1.51'; # Please update the pod, too.
 my $XS_VERSION = $VERSION;
 $VERSION = eval $VERSION;
 
@@ -195,7 +195,7 @@ threads::shared - Perl extension for sharing data structures between threads
 
 =head1 VERSION
 
-This document describes threads::shared version 1.48
+This document describes threads::shared version 1.51
 
 =head1 SYNOPSIS
 
@@ -558,6 +558,17 @@ they contain will be lost.
 Therefore, populate such variables B<after> declaring them as shared.  (Scalar
 and scalar refs are not affected by this problem.)
 
+Blessing a shared item after it has been nested in another shared item does
+not propagate the blessing to the shared reference:
+
+  my $foo = &share({});
+  my $bar = &share({});
+  $bar->{foo} = $foo;
+  bless($foo, 'baz');   # $foo is now of class 'baz',
+                        # but $bar->{foo} is unblessed.
+
+Therefore, you should bless objects before sharing them.
+
 It is often not wise to share an object unless the class itself has been
 written to support sharing.  For example, an object's destructor may get
 called multiple times, once for each thread's scope exit.  Another danger is
index e323788..a019732 100644 (file)
@@ -1166,20 +1166,6 @@ const MGVTBL sharedsv_array_vtbl = {
 };
 
 
-#if 0
-/* XXX unused dead code */
-/* Recursively unlocks a shared sv. */
-
-static void
-Perl_sharedsv_unlock(pTHX_ SV *ssv)
-{
-    user_lock *ul = S_get_userlock(aTHX_ ssv, 0);
-    assert(ul);
-    recursive_lock_release(aTHX_ &ul->lock);
-}
-#endif
-
-
 /* Recursive locks on a sharedsv.
  * Locks are dynamically scoped at the level of the first lock.
  */
index f4dee58..39761be 100644 (file)
@@ -5,7 +5,7 @@ use 5.008;
 use strict;
 use warnings;
 
-our $VERSION = '2.06';
+our $VERSION = '2.07';
 my $XS_VERSION = $VERSION;
 $VERSION = eval $VERSION;
 
@@ -134,7 +134,7 @@ threads - Perl interpreter-based threads
 
 =head1 VERSION
 
-This document describes threads version 2.02
+This document describes threads version 2.07
 
 =head1 WARNING
 
@@ -363,10 +363,10 @@ If you add the C<stringify> import option to your C<use threads> declaration,
 then using a threads object in a string or a string context (e.g., as a hash
 key) will cause its ID to be used as the value:
 
- use threads qw(stringify);
   use threads qw(stringify);
 
- my $thr = threads->create(...);
- print("Thread $thr started...\n"); # Prints: Thread 1 started...
   my $thr = threads->create(...);
+    print("Thread $thr started\n");  # Prints: Thread 1 started
 
 =item threads->object($tid)
 
@@ -691,16 +691,17 @@ threaded applications.
 To specify a particular stack size for any individual thread, call
 C<-E<gt>create()> with a hash reference as the first argument:
 
- my $thr = threads->create({'stack_size' => 32*4096}, \&foo, @args);
+    my $thr = threads->create({'stack_size' => 32*4096},
+                              \&foo, @args);
 
 =item $thr2 = $thr1->create(FUNCTION, ARGS)
 
 This creates a new thread (C<$thr2>) that inherits the stack size from an
 existing thread (C<$thr1>).  This is shorthand for the following:
 
- my $stack_size = $thr1->get_stack_size();
- my $thr2 = threads->create({'stack_size' => $stack_size},
-                            FUNCTION, ARGS);
   my $stack_size = $thr1->get_stack_size();
   my $thr2 = threads->create({'stack_size' => $stack_size},
+                               FUNCTION, ARGS);
 
 =back
 
index 908f52c..16d7a7a 100644 (file)
@@ -48,7 +48,7 @@ my $rc = $thr->join();
 ok(! defined($rc), 'Exited: threads->exit()');
 
 
-run_perl(prog => 'use threads 2.02;' .
+run_perl(prog => 'use threads 2.07;' .
                  'threads->exit(86);' .
                  'exit(99);',
          nolib => ($ENV{PERL_CORE}) ? 0 : 1,
@@ -98,7 +98,7 @@ $rc = $thr->join();
 ok(! defined($rc), 'Exited: $thr->set_thread_exit_only');
 
 
-run_perl(prog => 'use threads 2.02 qw(exit thread_only);' .
+run_perl(prog => 'use threads 2.07 qw(exit thread_only);' .
                  'threads->create(sub { exit(99); })->join();' .
                  'exit(86);',
          nolib => ($ENV{PERL_CORE}) ? 0 : 1,
@@ -108,7 +108,7 @@ run_perl(prog => 'use threads 2.02 qw(exit thread_only);' .
     is($?>>8, 86, "'use threads 'exit' => 'thread_only'");
 }
 
-my $out = run_perl(prog => 'use threads 2.02;' .
+my $out = run_perl(prog => 'use threads 2.07;' .
                            'threads->create(sub {' .
                            '    exit(99);' .
                            '});' .
@@ -124,7 +124,7 @@ my $out = run_perl(prog => 'use threads 2.02;' .
 like($out, qr/1 finished and unjoined/, "exit(status) in thread");
 
 
-$out = run_perl(prog => 'use threads 2.02 qw(exit thread_only);' .
+$out = run_perl(prog => 'use threads 2.07 qw(exit thread_only);' .
                         'threads->create(sub {' .
                         '   threads->set_thread_exit_only(0);' .
                         '   exit(99);' .
@@ -141,7 +141,7 @@ $out = run_perl(prog => 'use threads 2.02 qw(exit thread_only);' .
 like($out, qr/1 finished and unjoined/, "set_thread_exit_only(0)");
 
 
-run_perl(prog => 'use threads 2.02;' .
+run_perl(prog => 'use threads 2.07;' .
                  'threads->create(sub {' .
                  '   $SIG{__WARN__} = sub { exit(99); };' .
                  '   die();' .
index 56087f3..4628b27 100644 (file)
@@ -161,7 +161,7 @@ package main;
 
 # bugid #24165
 
-run_perl(prog => 'use threads 2.02;' .
+run_perl(prog => 'use threads 2.07;' .
                  'sub a{threads->create(shift)} $t = a sub{};' .
                  '$t->tid; $t->join; $t->tid',
          nolib => ($ENV{PERL_CORE}) ? 0 : 1,
index d35eee1..5f52192 100644 (file)
 #endif
 #ifdef HAS_PPPORT_H
 #  define NEED_PL_signals
-#  define NEED_newRV_noinc
 #  define NEED_sv_2pv_flags
 #  include "ppport.h"
 #  include "threads.h"
 #endif
 #ifndef sv_dup_inc
-#  define sv_dup_inc(s,t)      SvREFCNT_inc(sv_dup(s,t))
+#  define sv_dup_inc(s,t) SvREFCNT_inc(sv_dup(s,t))
 #endif
 #ifndef PERL_UNUSED_RESULT
 #  if defined(__GNUC__) && defined(HASATTRIBUTE_WARN_UNUSED_RESULT)
@@ -476,13 +475,13 @@ S_good_stack_size(pTHX_ IV stack_size)
     return (stack_size);
 }
 
-/* run some code within a JMPENV environment.
- * Having it in a separate small function helps avoid
- * 'variable â€˜foo’ might be clobbered by â€˜longjmp’
+
+/* Run code within a JMPENV environment.
+ * Using a separate function avoids
+ *   "variable 'foo' might be clobbered by 'longjmp'"
  * warnings.
  * The three _p vars return values to the caller
  */
-
 static int
 S_jmpenv_run(pTHX_ int action, ithread *thread,
              int *len_p, int *exit_app_p, int *exit_code_p)
@@ -496,12 +495,10 @@ S_jmpenv_run(pTHX_ int action, ithread *thread,
         if (action == 0) {
             /* Run the specified function */
             *len_p = (int)call_sv(thread->init_function, thread->gimme|G_EVAL);
-        }
-        else if (action == 1) {
+        } else if (action == 1) {
             /* Warn that thread died */
             Perl_warn(aTHX_ "Thread %" UVuf " terminated abnormally: %" SVf, thread->tid, ERRSV);
-        }
-        else {
+        } else {
             /* Warn if there are unjoined threads */
             S_exit_warning(aTHX);
         }
@@ -1018,8 +1015,9 @@ S_ithread_create(
     my_pool->running_threads++;
     MUTEX_UNLOCK(&my_pool->create_destruct_mutex);
     return (thread);
-CLANG_DIAG_IGNORE(-Wthread-safety);
-/* warning: mutex 'thread->mutex' is not held on every path through here [-Wthread-safety-analysis] */
+
+    CLANG_DIAG_IGNORE(-Wthread-safety);
+    /* warning: mutex 'thread->mutex' is not held on every path through here [-Wthread-safety-analysis] */
 }
 #if defined(__clang__) || defined(__clang)
 CLANG_DIAG_RESTORE;
@@ -1161,10 +1159,10 @@ ithread_create(...)
 
         /* Let thread run. */
         /* See S_ithread_run() for more detail. */
-       CLANG_DIAG_IGNORE(-Wthread-safety);
-       /* warning: releasing mutex 'thread->mutex' that was not held [-Wthread-safety-analysis] */
+        CLANG_DIAG_IGNORE(-Wthread-safety);
+        /* warning: releasing mutex 'thread->mutex' that was not held [-Wthread-safety-analysis] */
         MUTEX_UNLOCK(&thread->mutex);
-       CLANG_DIAG_RESTORE;
+        CLANG_DIAG_RESTORE;
 
         /* XSRETURN(1); - implied */
 
index 2e4e745..c1305cd 100644 (file)
--- a/dosish.h
+++ b/dosish.h
@@ -52,9 +52,9 @@
 #endif /* DJGPP */
 
 #ifndef PERL_SYS_TERM_BODY
-#  define PERL_SYS_TERM_BODY() \
-    HINTS_REFCNT_TERM; OP_CHECK_MUTEX_TERM; \
-    OP_REFCNT_TERM; PERLIO_TERM; MALLOC_TERM
+#  define PERL_SYS_TERM_BODY()                              \
+    HINTS_REFCNT_TERM; OP_CHECK_MUTEX_TERM;                 \
+    OP_REFCNT_TERM; PERLIO_TERM; MALLOC_TERM; LOCALE_TERM;
 #endif
 #define dXSUB_SYS
 
index d114b2b..a64ffba 100644 (file)
--- a/embed.fnc
+++ b/embed.fnc
@@ -647,7 +647,7 @@ p   |void   |init_debugger
 Ap     |void   |init_stacks
 Ap     |void   |init_tm        |NN struct tm *ptm
 : Used in perly.y
-AbmnpPR        |char*  |instr          |NN const char* big|NN const char* little
+AnpPR  |char*  |instr          |NN const char* big|NN const char* little
 : Used in sv.c
 p      |bool   |io_close       |NN IO* io|NULLOK GV *gv \
                                |bool not_implicit|bool warn_on_fail
@@ -1642,7 +1642,7 @@ Ap        |U8*    |utf16_to_utf8  |NN U8* p|NN U8 *d|I32 bytelen|NN I32 *newlen
 Ap     |U8*    |utf16_to_utf8_reversed|NN U8* p|NN U8 *d|I32 bytelen|NN I32 *newlen
 AdpPR  |STRLEN |utf8_length    |NN const U8* s|NN const U8 *e
 ApdPR  |IV     |utf8_distance  |NN const U8 *a|NN const U8 *b
-ApdPRn |U8*    |utf8_hop       |NN const U8 *s|I32 off
+ApdPRn |U8*    |utf8_hop       |NN const U8 *s|SSize_t off
 ApMd   |U8*    |utf8_to_bytes  |NN U8 *s|NN STRLEN *len
 Apd    |int    |bytes_cmp_utf8 |NN const U8 *b|STRLEN blen|NN const U8 *u \
                                |STRLEN ulen
@@ -2563,6 +2563,12 @@ sn       |void   |mem_log_common |enum mem_log_type mlt|const UV n|const UV typesize \
 #endif
 #endif
 
+#if defined(PERL_MEM_LOG)
+pn     |Malloc_t       |mem_log_alloc  |const UV nconst|UV typesize|NN const char *type_name|Malloc_t newalloc|NN const char *filename|const int linenumber|NN const char *funcname
+pn     |Malloc_t       |mem_log_realloc        |const UV n|const UV typesize|NN const char *type_name|Malloc_t oldalloc|Malloc_t newalloc|NN const char *filename|const int linenumber|NN const char *funcname
+pn     |Malloc_t       |mem_log_free   |Malloc_t oldalloc|NN const char *filename|const int linenumber|NN const char *funcname
+#endif
+
 #if defined(PERL_IN_NUMERIC_C)
 #ifndef USE_QUADMATH
 sn     |NV|mulexp10    |NV value|I32 exponent
diff --git a/embed.h b/embed.h
index ab76937..42c65b2 100644 (file)
--- a/embed.h
+++ b/embed.h
 #define init_i18nl14n(a)       Perl_init_i18nl14n(aTHX_ a)
 #define init_stacks()          Perl_init_stacks(aTHX)
 #define init_tm(a)             Perl_init_tm(aTHX_ a)
+#define instr                  Perl_instr
 #define intro_my()             Perl_intro_my(aTHX)
 #define isALNUM_lazy(a)                Perl_isALNUM_lazy(aTHX_ a)
 #define isIDFIRST_lazy(a)      Perl_isIDFIRST_lazy(aTHX_ a)
 #define mem_log_common         S_mem_log_common
 #    endif
 #  endif
+#  if defined(PERL_MEM_LOG)
+#define mem_log_alloc          Perl_mem_log_alloc
+#define mem_log_free           Perl_mem_log_free
+#define mem_log_realloc                Perl_mem_log_realloc
+#  endif
 #  if defined(PERL_USES_PL_PIDSTATUS) && defined(PERL_IN_UTIL_C)
 #define pidgone(a,b)           S_pidgone(aTHX_ a,b)
 #  endif
index c366d47..7e551be 100644 (file)
 #define PL_Ghints_mutex                (my_vars->Ghints_mutex)
 #define PL_keyword_plugin      (my_vars->Gkeyword_plugin)
 #define PL_Gkeyword_plugin     (my_vars->Gkeyword_plugin)
+#define PL_locale_mutex                (my_vars->Glocale_mutex)
+#define PL_Glocale_mutex       (my_vars->Glocale_mutex)
 #define PL_malloc_mutex                (my_vars->Gmalloc_mutex)
 #define PL_Gmalloc_mutex       (my_vars->Gmalloc_mutex)
 #define PL_mmap_page_size      (my_vars->Gmmap_page_size)
index dd92fd3..3184025 100644 (file)
@@ -7,7 +7,7 @@ require Tie::Hash;
 require XSLoader;
 
 our @ISA = qw(Tie::Hash);
-our $VERSION = "1.13";
+our $VERSION = "1.14";
 
 XSLoader::load();
 
index bf5def3..eaa1923 100644 (file)
@@ -3,6 +3,10 @@
 #include "EXTERN.h"
 #include "perl.h"
 #include "XSUB.h"
+#if defined(PERL_IMPLICIT_SYS)
+#  undef open
+#  define open PerlLIO_open3
+#endif
 
 #ifdef I_DBM
 #  include <dbm.h>
index 2b339b7..05bdbbe 100644 (file)
@@ -4,7 +4,7 @@ use warnings;
 
 our ($AUTOLOAD, %SIGRT);
 
-our $VERSION = '1.64';
+our $VERSION = '1.65';
 
 require XSLoader;
 
@@ -234,7 +234,7 @@ sub sprintf {
 }
 
 sub load_imports {
-my %default_export_tags = (
+my %default_export_tags = ( # cf. exports policy below
 
     assert_h =>        [qw(assert NDEBUG)],
 
@@ -404,7 +404,7 @@ if ($^O eq 'MSWin32') {
        WSAEREFUSED)];
 }
 
-my %other_export_tags = (
+my %other_export_tags = ( # cf. exports policy below
     fenv_h => [qw(
         FE_DOWNWARD FE_TONEAREST FE_TOWARDZERO FE_UPWARD fegetround fesetround
     )],
@@ -435,6 +435,10 @@ my %other_export_tags = (
   )],
 );
 
+# exports policy:
+# - new functions may not be added to @EXPORT, only to @EXPORT_OK
+# - new SHOUTYCONSTANTS are OK to add to @EXPORT
+
 {
   # De-duplicate the export list: 
   my ( %export, %export_ok );
@@ -444,8 +448,12 @@ my %other_export_tags = (
   # @EXPORT are actually shared hash key scalars, which will save some memory.
   our @EXPORT = keys %export;
 
+  # you do not want to add symbols to the following list. add a new tag instead
   our @EXPORT_OK = (qw(close lchown nice open pipe read sleep times write
-                      printf sprintf),
+                      printf sprintf lround),
+                    # lround() should really be in the :math_h_c99 tag, but
+                    # we're too far into the 5.24 code freeze for that to be
+                    # done now. This can be revisited in the 5.25.x cycle.
                    grep {!exists $export{$_}} keys %reimpl, keys %replacement, keys %export_ok);
 
   our %EXPORT_TAGS = ( %default_export_tags, %other_export_tags );
index 904f3e9..1d263a7 100644 (file)
@@ -1011,6 +1011,10 @@ Like L</round>, but as integer, as opposed to floating point [C99].
 
 See also L</ceil>, L</floor>, L</trunc>.
 
+Owing to an oversight, this is not currently exported by default, or as part of
+the C<:math_h_c99> export tag; importing it must therefore be done by explicit
+name. This will be changed in Perl 5.26.
+
 =item C<malloc>
 
 Not implemented.  C<malloc()> is C-specific.  Perl does memory management transparently.
@@ -1401,6 +1405,13 @@ see L<perlfunc/eval>.
 
 =item C<setlocale>
 
+WARNING!  Do NOT use this function in a L<thread|threads>.  The locale
+will change in all other threads at the same time, and should your
+thread get paused by the operating system, and another started, that
+thread will not have the locale it is expecting.  On some platforms,
+there can be a race leading to segfaults if two threads call this
+function nearly simultaneously.
+
 Modifies and queries the program's underlying locale.  Users of this
 function should read L<perllocale>, whch provides a comprehensive
 discussion of Perl locale handling, knowledge of which is necessary to
index aa7d78c..5c37f83 100644 (file)
@@ -166,6 +166,10 @@ my %expect = (
             POLL_IN POLL_OUT POLL_MSG POLL_ERR POLL_PRI POLL_HUP
             SI_USER SI_QUEUE SI_TIMER SI_ASYNCIO SI_MESGQ
         ),
+        # this was implemented in 5.21, but not exported; it was added to
+        # @EXPORT_OK late in 5.23, and will be added to :math_h_c99 tag early
+        # in 5.25
+        qw( lround ),
     ],
 );
 
index 869d1b7..54067d1 100644 (file)
@@ -4,6 +4,7 @@ use strict;
 
 use POSIX ':math_h_c99';
 use POSIX ':nan_payload';
+use POSIX 'lround';
 use Test::More;
 
 use Config;
@@ -118,6 +119,8 @@ SKIP: {
     is(round(-2.5), -3, "round -2.5");
     is(round(2.75), 3, "round 2.75");
     is(round(-2.75), -3, "round 2.75");
+    is(lround(-2.75), -3, "lround -0.25");
+    is(signbit(lround(-0.25)), 0, "lround -0.25 -> +0"); # unlike round()
     is(trunc(2.25), 2, "trunc 2.25");
     is(trunc(-2.25), -2, "trunc -2.25");
     is(trunc(2.5), 2, "trunc 2.5");
diff --git a/handy.h b/handy.h
index a0a7cde..932a874 100644 (file)
--- a/handy.h
+++ b/handy.h
@@ -2049,12 +2049,6 @@ PoisonWith(0xEF) for catching access to freed memory.
  * - lots of ENV reads
  */
 
-PERL_CALLCONV Malloc_t Perl_mem_log_alloc(const UV n, const UV typesize, const char *type_name, Malloc_t newalloc, const char *filename, const int linenumber, const char *funcname);
-
-PERL_CALLCONV Malloc_t Perl_mem_log_realloc(const UV n, const UV typesize, const char *type_name, Malloc_t oldalloc, Malloc_t newalloc, const char *filename, const int linenumber, const char *funcname);
-
-PERL_CALLCONV Malloc_t Perl_mem_log_free(Malloc_t oldalloc, const char *filename, const int linenumber, const char *funcname);
-
 # ifdef PERL_CORE
 #  ifndef PERL_MEM_LOG_NOIMPL
 enum mem_log_type {
index 2eb856d..b7ea2ff 100644 (file)
 # mkdir -p /opt/perl-catamount
 # mkdir -p /opt/perl-catamount/include
 # mkdir -p /opt/perl-catamount/lib
-# mkdir -p /opt/perl-catamount/lib/perl5/5.23.9
+# mkdir -p /opt/perl-catamount/lib/perl5/5.24.0
 # mkdir -p /opt/perl-catamount/bin
 # cp *.h /opt/perl-catamount/include
 # cp libperl.a /opt/perl-catamount/lib
-# cp -pr lib/* /opt/perl-catamount/lib/perl5/5.23.9
+# cp -pr lib/* /opt/perl-catamount/lib/perl5/5.24.0
 # cp miniperl perl run.sh cc.sh /opt/perl-catamount/lib
 #
 # With the headers and the libperl.a you can embed Perl to your Catamount
index 2af6ae7..afadf53 100644 (file)
@@ -212,31 +212,38 @@ esac
 #                 10.1.x  5.x.y
 # Jaguar          10.2.x  6.x.y
 # Panther         10.3.x  7.x.y
-# Tiger           10.4.x  8.x.y   2.0 (gcc4 4.0.0)
-#                                 2.2 (gcc4 4.0.1)
+# Tiger           10.4.x  8.x.y   2.0   (gcc4 4.0.0)
+#                                 2.2   (gcc4 4.0.1)
 #                                 2.2.1 (gcc 3.3)
 #                                 2.5 ?
-# Leopard         10.5.x  9.x.y   3.0 (gcc 4.0.1 default)
-#                                 3.1 (gcc 4.2.1)
-# Snow Leopard    10.6.x  10.x.y  3.2 (llvm gcc 4.2, clang 2.3 as 1.0)
+# Leopard         10.5.x  9.x.y   3.0   (gcc 4.0.1 default)
+#                                 3.1   (gcc 4.2.1)
+# Snow Leopard    10.6.x  10.x.y  3.2   (llvm gcc 4.2, clang 2.3 as 1.0)
 #                                 3.2.1 (clang 1.0.1 as 1.0.1/24)
 #                                 3.2.2 (clang 1.0.2 as 1.0.2/32)
 #                                 3.2.3 (clang 1.5 as 1.5/60)
 #                                 4.0.1 (clang 2.9 as 2.0/138)
-# Lion            10.7.x  11.x.y  4.1 (llvm gcc 4.2.1, clang 3.0 as 2.1/163.7.1)
-#                                 4.2 (clang 3.0 as 3.0/211.10.1)
+# Lion            10.7.x  11.x.y  4.1   (llvm gcc 4.2.1, clang 3.0 as 2.1/163.7.1)
+#                                 4.2   (clang 3.0 as 3.0/211.10.1)
 #                                 4.3.3 (clang 3.1 as 3.1/318.0.61)
-#                                 4.4 (clang 3.1 as 4.0/421.0.57)
-# Mountain Lion   10.8.x  12.x.y  4.5 (clang 3.1 as 4.1/421.11.65, real gcc removed, there is gcc but it's really clang)
-#                                 4.6 (clang 3.2 as 4.2/425.0.24)
-#                                 5.0 (clang 3.3 as 5.0/500.2.75)
-#                                 5.1 (clang 3.4 as 5.1/503.0.38)
+#                                 4.4   (clang 3.1 as 4.0/421.0.57)
+# Mountain Lion   10.8.x  12.x.y  4.5   (clang 3.1 as 4.1/421.11.65, real gcc removed, there is gcc but it's really clang)
+#                                 4.6   (clang 3.2 as 4.2/425.0.24)
+#                                 5.0   (clang 3.3 as 5.0/500.2.75)
+#                                 5.1   (clang 3.4 as 5.1/503.0.38)
+#                                 5.1.1 (clang 3.4 as 5.1/503.0.40)
 # Mavericks       10.9.x  13.x.y  6.0.1 (clang 3.5 as 6.0/600.0.51)
-#                                 6.1 (clang 3.5 as 6.0/600.0.54)
-#                                 6.2 (clang 3.5 as 6.0/600.0.57)
-# Yosemite        10.10.x 14.x.y  6.3 (clang 3.6 as 6.1/602.0.49)
-# El Capitan      10.11.x 15.x.y  7.0 (clang 3.7 as 7.0/700.0.72)
-#                                 7.1 (clang 3.7 as 7.0/700.1.76)
+#                                 6.1   (clang 3.5 as 6.0/600.0.54)
+#                                 6.1.1 (clang 3.5 as 6.0/600.0.56)
+#                                 6.2   (clang 3.5 as 6.0/600.0.57)
+# Yosemite        10.10.x 14.x.y  6.3   (clang 3.6 as 6.1/602.0.49)
+#                                 6.3.1 (clang 3.6 as 6.1/602.0.49)
+#                                 6.3.2 (clang 3.6 as 6.1/602.0.53)
+# El Capitan      10.11.x 15.x.y  7.0   (clang 3.7 as 7.0/700.0.72)
+#                                 7.1   (clang 3.7 as 7.0/700.1.76)
+#                                 7.2   (clang 3.7 as 7.0.2/700.1.81)
+#                                 7.2.1 (clang 3.7 as 7.0.2/700.1.81)
+#                                 7.3   (clang 3.7 as 7.3.0/703.0.29)
 #
 
 # Processors Supported
index f448870..35983d8 100644 (file)
--- a/inline.h
+++ b/inline.h
@@ -418,9 +418,9 @@ S_cx_pushblock(pTHX_ U8 type, U8 gimme, SV** sp, I32 saveix)
     cx->cx_type        = type;
     cx->blk_gimme      = gimme;
     cx->blk_oldsaveix  = saveix;
-    cx->blk_oldsp      = sp - PL_stack_base;
+    cx->blk_oldsp      = (I32)(sp - PL_stack_base);
     cx->blk_oldcop     = PL_curcop;
-    cx->blk_oldmarksp  = PL_markstack_ptr - PL_markstack;
+    cx->blk_oldmarksp  = (I32)(PL_markstack_ptr - PL_markstack);
     cx->blk_oldscopesp = PL_scopestack_ix;
     cx->blk_oldpm      = PL_curpm;
     cx->blk_old_tmpsfloor = PL_tmps_floor;
index 0628131..237cad8 100644 (file)
@@ -118,7 +118,7 @@ package B::Op_private;
 our %bits;
 
 
-our $VERSION = "5.023009";
+our $VERSION = "5.024000";
 
 $bits{$_}{3} = 'OPpENTERSUB_AMPER' for qw(entersub rv2cv);
 $bits{$_}{6} = 'OPpENTERSUB_DB' for qw(entersub rv2cv);
index 95fb4e1..842bd31 100644 (file)
@@ -22,7 +22,7 @@ sub syscopy;
 sub cp;
 sub mv;
 
-$VERSION = '2.30';
+$VERSION = '2.31';
 
 require Exporter;
 @ISA = qw(Exporter);
@@ -489,6 +489,14 @@ it sets C<$!>, deletes the output file, and returns 0.
 All functions return 1 on success, 0 on failure.
 $! will be set if an error was encountered.
 
+=head1 NOTES
+
+Before calling copy() or move() on a filehandle, the caller should
+close or flush() the file to avoid writes being lost. Note that this
+is the case even for move(), because it may actually copy the file,
+depending on the OS-specific inplementation, and the underlying
+filesystem(s).
+
 =head1 AUTHOR
 
 File::Copy was written by Aaron Sherman I<E<lt>ajs@ajs.comE<gt>> in 1995,
index e2317ca..02e4bb2 100644 (file)
@@ -1,6 +1,6 @@
 package locale;
 
-our $VERSION = '1.08';
+our $VERSION = '1.09';
 use Config;
 
 $Carp::Internal{ (__PACKAGE__) } = 1;
@@ -9,6 +9,17 @@ $Carp::Internal{ (__PACKAGE__) } = 1;
 
 locale - Perl pragma to use or avoid POSIX locales for built-in operations
 
+=head1 WARNING
+
+DO NOT USE this pragma in scripts that have multiple
+L<threads|threads> active.  The locale is not local to a single thread.
+Another thread may change the locale at any time, which could cause at a
+minimum that a given thread is operating in a locale it isn't expecting
+to be in.  On some platforms, segfaults can also occur.  The locale
+change need not be explicit; some operations cause perl to change the
+locale itself.  You are vulnerable simply by having done a C<"use
+locale">.
+
 =head1 SYNOPSIS
 
     @x = sort @y;      # Native-platform/Unicode code point sort order
index 5884192..f26731b 100644 (file)
@@ -189,7 +189,7 @@ Values are magical in numeric context: 1 if the line is breakable, 0 if not.
 The scalar C<${"_<$filename"}> simply contains the string C<$filename>.
 This is also the case for evaluated strings that contain subroutines, or
 which are currently being executed.  The $filename for C<eval>ed strings looks
-like C<(eval 34).
+like C<(eval 34)>.
 
 =head1 DEBUGGER STARTUP
 
@@ -528,7 +528,7 @@ BEGIN {
 # Debugger for Perl 5.00x; perl5db.pl patch level:
 use vars qw($VERSION $header);
 
-$VERSION = '1.49_03';
+$VERSION = '1.49_04';
 
 $header = "perl5db.pl version $VERSION";
 
index 6de9893..bf8713a 100644 (file)
--- a/locale.c
+++ b/locale.c
@@ -1809,13 +1809,21 @@ Perl__is_in_locale_category(pTHX_ const bool compiling, const int category)
 
 char *
 Perl_my_strerror(pTHX_ const int errnum) {
+    dVAR;
 
     /* Uses C locale for the error text unless within scope of 'use locale' for
      * LC_MESSAGES */
 
 #ifdef USE_LOCALE_MESSAGES
     if (! IN_LC(LC_MESSAGES)) {
-        char * save_locale = setlocale(LC_MESSAGES, NULL);
+        char * save_locale;
+
+        /* We have a critical section to prevent another thread from changing
+         * the locale out from under us (or zapping the buffer returned from
+         * setlocale() ) */
+        LOCALE_LOCK;
+
+        save_locale = setlocale(LC_MESSAGES, NULL);
         if (! isNAME_C_OR_POSIX(save_locale)) {
             char *errstr;
 
@@ -1830,8 +1838,13 @@ Perl_my_strerror(pTHX_ const int errnum) {
 
             setlocale(LC_MESSAGES, save_locale);
             Safefree(save_locale);
+
+            LOCALE_UNLOCK;
+
             return errstr;
         }
+
+        LOCALE_UNLOCK;
     }
 #endif
 
index 78ee0b1..104696c 100644 (file)
@@ -364,6 +364,7 @@ unless ($define{'USE_ITHREADS'}) {
                    PL_regex_padav
                    PL_dollarzero_mutex
                    PL_hints_mutex
+                   PL_locale_mutex
                    PL_my_ctx_mutex
                    PL_perlio_mutex
                    PL_stashpad
index f2151a5..84580f5 100644 (file)
@@ -26,6 +26,7 @@
  * HAS_ISLESS
  * HAS_J0
  * HAS_LOCALTIME64
+ * HAS_MEMMEM
  * HAS_MKTIME64
  * HAS_NEWLOCALE
  * HAS_PRCTL
diff --git a/op.c b/op.c
index b1c480b..4b6b227 100644 (file)
--- a/op.c
+++ b/op.c
@@ -109,6 +109,8 @@ recursive, but it's recursive on basic blocks, not on tree nodes.
 #define CALL_RPEEP(o) PL_rpeepp(aTHX_ o)
 #define CALL_OPFREEHOOK(o) if (PL_opfreehook) PL_opfreehook(aTHX_ o)
 
+static const char array_passed_to_stat[] = "Array passed to stat will be coerced to a scalar";
+
 /* Used to avoid recursion through the op tree in scalarvoid() and
    op_free()
 */
@@ -1548,7 +1550,7 @@ S_scalarboolean(pTHX_ OP *o)
 }
 
 static SV *
-S_op_varname(pTHX_ const OP *o)
+S_op_varname_subscript(pTHX_ const OP *o, int subscript_type)
 {
     assert(o);
     assert(o->op_type == OP_PADAV || o->op_type == OP_RV2AV ||
@@ -1561,13 +1563,19 @@ S_op_varname(pTHX_ const OP *o)
            if (cUNOPo->op_first->op_type != OP_GV
             || !(gv = cGVOPx_gv(cUNOPo->op_first)))
                return NULL;
-           return varname(gv, funny, 0, NULL, 0, 1);
+           return varname(gv, funny, 0, NULL, 0, subscript_type);
        }
        return
-           varname(MUTABLE_GV(PL_compcv), funny, o->op_targ, NULL, 0, 1);
+           varname(MUTABLE_GV(PL_compcv), funny, o->op_targ, NULL, 0, subscript_type);
     }
 }
 
+static SV *
+S_op_varname(pTHX_ const OP *o)
+{
+    return S_op_varname_subscript(aTHX_ o, 1);
+}
+
 static void
 S_op_pretty(pTHX_ const OP *o, SV **retsv, const char **retpv)
 { /* or not so pretty :-) */
@@ -2622,7 +2630,13 @@ S_mark_padname_lvalue(pTHX_ PADNAME *pn)
     PadnameLVALUE_on(pn);
     while (PadnameOUTER(pn) && PARENT_PAD_INDEX(pn)) {
        cv = CvOUTSIDE(cv);
-       assert(cv);
+        /* RT #127786: cv can be NULL due to an eval within the DB package
+         * called from an anon sub - anon subs don't have CvOUTSIDE() set
+         * unless they contain an eval, but calling eval within DB
+         * pretends the eval was done in the caller's scope.
+         */
+       if (!cv)
+            break;
        assert(CvPADLIST(cv));
        pn =
           PadlistNAMESARRAY(CvPADLIST(cv))[PARENT_PAD_INDEX(pn)];
@@ -9727,6 +9741,19 @@ Perl_ck_ftst(pTHX_ OP *o)
            op_free(o);
            return newop;
        }
+
+        if ((kidtype == OP_RV2AV || kidtype == OP_PADAV) && ckWARN(WARN_SYNTAX)) {
+            SV *name = S_op_varname_subscript(aTHX_ (OP*)kid, 2);
+            if (name) {
+                /* diag_listed_as: Array passed to stat will be coerced to a scalar%s */
+                Perl_warner(aTHX_ packWARN(WARN_SYNTAX), "%s (did you want stat %" SVf "?)",
+                            array_passed_to_stat, name);
+            }
+            else {
+                /* diag_listed_as: Array passed to stat will be coerced to a scalar%s */
+                Perl_warner(aTHX_ packWARN(WARN_SYNTAX), "%s", array_passed_to_stat);
+            }
+       }
        scalar((OP *) kid);
        if ((PL_hints & HINT_FILETEST_ACCESS) && OP_IS_FILETEST_ACCESS(o->op_type))
            o->op_private |= OPpFT_ACCESS;
diff --git a/op.h b/op.h
index 00d9a4c..3ded4bb 100644 (file)
--- a/op.h
+++ b/op.h
@@ -113,7 +113,8 @@ Deprecated.  Use C<GIMME_V> instead.
                                /*  On local LVAL, don't init local value. */
                                /*  On OP_SORT, subroutine is inlined. */
                                /*  On OP_NOT, inversion was implicit. */
-                               /*  On OP_LEAVE, don't restore curpm. */
+                               /*  On OP_LEAVE, don't restore curpm, e.g.
+                                 *      /(...)/ while ...>;  */
                                /*  On truncate, we truncate filehandle */
                                /*  On control verbs, we saw no label */
                                /*  On flipflop, we saw ... instead of .. */
index 9f0f3ce..bcb921f 100644 (file)
@@ -14,8 +14,8 @@
  * exactly on the third column */
 
 #define PERL_REVISION  5               /* age */
-#define PERL_VERSION   23              /* epoch */
-#define PERL_SUBVERSION        9               /* generation */
+#define PERL_VERSION   24              /* epoch */
+#define PERL_SUBVERSION        0               /* generation */
 
 /* The following numbers describe the earliest compatible version of
    Perl ("compatibility" here being defined as sufficient binary/API
@@ -35,8 +35,8 @@
    changing them should not be necessary.
 */
 #define PERL_API_REVISION      5
-#define PERL_API_VERSION       23
-#define PERL_API_SUBVERSION    9
+#define PERL_API_VERSION       24
+#define PERL_API_SUBVERSION    0
 /*
    XXX Note:  The selection of non-default Configure options, such
    as -Duselonglong may invalidate these settings.  Currently, Configure
diff --git a/perl.c b/perl.c
index 15e9150..228a0d8 100644 (file)
--- a/perl.c
+++ b/perl.c
@@ -93,6 +93,7 @@ S_init_tls_and_interp(PerlInterpreter *my_perl)
        OP_REFCNT_INIT;
        OP_CHECK_MUTEX_INIT;
        HINTS_REFCNT_INIT;
+        LOCALE_INIT;
        MUTEX_INIT(&PL_dollarzero_mutex);
        MUTEX_INIT(&PL_my_ctx_mutex);
 #  endif
@@ -1784,6 +1785,9 @@ S_Internals_V(pTHX_ CV *cv)
 #  ifdef PERL_USE_SAFE_PUTENV
                             " PERL_USE_SAFE_PUTENV"
 #  endif
+#  ifdef SILENT_NO_TAINT_SUPPORT
+                             " SILENT_NO_TAINT_SUPPORT"
+#  endif
 #  ifdef UNLINK_ALL_VERSIONS
                             " UNLINK_ALL_VERSIONS"
 #  endif
diff --git a/perl.h b/perl.h
index 2ee79c4..396bc92 100644 (file)
--- a/perl.h
+++ b/perl.h
@@ -3192,10 +3192,10 @@ typedef pthread_key_t   perl_key;
  * TODO: however, some platforms are starting to get these clang
  * thread safety annotations for pthreads, for example FreeBSD.
  * Do we need a way to a bypass these wrappers? */
-int perl_tsa_mutex_lock(perl_mutex* mutex)
+EXTERN_C int perl_tsa_mutex_lock(perl_mutex* mutex)
   PERL_TSA_ACQUIRE(*mutex)
   PERL_TSA_NO_TSA;
-int perl_tsa_mutex_unlock(perl_mutex* mutex)
+EXTERN_C int perl_tsa_mutex_unlock(perl_mutex* mutex)
   PERL_TSA_RELEASE(*mutex)
   PERL_TSA_NO_TSA;
 #endif
@@ -5275,7 +5275,7 @@ EXTCONST char *const PL_phase_names[];
 /* Do not use this macro. It only exists for extensions that rely on PL_dirty
  * instead of using the newer PL_phase, which provides everything PL_dirty
  * provided, and more. */
-#  define PL_dirty (PL_phase == PERL_PHASE_DESTRUCT)
+#  define PL_dirty cBOOL(PL_phase == PERL_PHASE_DESTRUCT)
 
 #  define PL_amagic_generation PL_na
 #endif /* !PERL_CORE */
@@ -5954,6 +5954,13 @@ typedef struct am_table_short AMTS;
 
 #ifdef USE_LOCALE
 /* These locale things are all subject to change */
+
+#   define LOCALE_INIT   MUTEX_INIT(&PL_locale_mutex)
+#   define LOCALE_TERM   MUTEX_DESTROY(&PL_locale_mutex)
+
+#   define LOCALE_LOCK   MUTEX_LOCK(&PL_locale_mutex)
+#   define LOCALE_UNLOCK MUTEX_UNLOCK(&PL_locale_mutex)
+
 /* Returns TRUE if the plain locale pragma without a parameter is in effect
  */
 #   define IN_LOCALE_RUNTIME   cBOOL(CopHINTS_get(PL_curcop) & HINT_LOCALE)
@@ -6037,6 +6044,10 @@ typedef struct am_table_short AMTS;
 #   endif   /* PERL_CORE or PERL_IN_XSUB_RE */
 
 #else   /* No locale usage */
+#   define LOCALE_INIT
+#   define LOCALE_TERM
+#   define LOCALE_LOCK
+#   define LOCALE_UNLOCK
 #   define IN_LOCALE_RUNTIME                0
 #   define IN_SOME_LOCALE_FORM_RUNTIME      0
 #   define IN_LOCALE_COMPILETIME            0
index 910f789..7aa4455 100644 (file)
--- a/perlapi.h
+++ b/perlapi.h
@@ -123,6 +123,8 @@ END_EXTERN_C
 #define PL_hints_mutex         (*Perl_Ghints_mutex_ptr(NULL))
 #undef  PL_keyword_plugin
 #define PL_keyword_plugin      (*Perl_Gkeyword_plugin_ptr(NULL))
+#undef  PL_locale_mutex
+#define PL_locale_mutex                (*Perl_Glocale_mutex_ptr(NULL))
 #undef  PL_malloc_mutex
 #define PL_malloc_mutex                (*Perl_Gmalloc_mutex_ptr(NULL))
 #undef  PL_mmap_page_size
index 86a369e..5466294 100644 (file)
@@ -99,6 +99,8 @@ PERLVARI(G, mmap_page_size, IV, 0)
 
 #if defined(USE_ITHREADS)
 PERLVAR(G, hints_mutex, perl_mutex)    /* Mutex for refcounted he refcounting */
+PERLVAR(G, locale_mutex, perl_mutex)   /* Mutex for setlocale() changing */
+
 #endif
 
 #ifdef DEBUGGING
index c89a69f..74b353f 100644 (file)
  *     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 "/sys/lib/perl/5.23.9"         /**/
-#define PRIVLIB_EXP "/sys/lib/perl/5.23.9"             /**/
+#define PRIVLIB "/sys/lib/perl/5.24.0"         /**/
+#define PRIVLIB_EXP "/sys/lib/perl/5.24.0"             /**/
 
 /* PTRSIZE:
  *     This symbol contains the size of a pointer, so that the C preprocessor
  *     removed.  The elements in inc_version_list (inc_version_list.U) can
  *     be tacked onto this variable to generate a list of directories to search.
  */
-#define SITELIB "/sys/lib/perl/5.23.9/site_perl"               /**/
-#define SITELIB_EXP "/sys/lib/perl/5.23.9/site_perl"           /**/
-#define SITELIB_STEM "/sys/lib/perl/5.23.9/site_perl"          /**/
+#define SITELIB "/sys/lib/perl/5.24.0/site_perl"               /**/
+#define SITELIB_EXP "/sys/lib/perl/5.24.0/site_perl"           /**/
+#define SITELIB_STEM "/sys/lib/perl/5.24.0/site_perl"          /**/
 
 /* Size_t_size:
  *     This symbol holds the size of a Size_t in bytes.
index a0b0bf3..fef2205 100644 (file)
@@ -32,12 +32,12 @@ alignbytes='4'
 ansi2knr=''
 aphostname='/bin/uname -n'
 api_revision='5'
-api_subversion='9'
-api_version='23'
-api_versionstring='5.23.9'
+api_subversion='0'
+api_version='24'
+api_versionstring='5.24.0'
 ar='ar'
-archlib='/sys/lib/perl5/5.23.9/386'
-archlibexp='/sys/lib/perl5/5.23.9/386'
+archlib='/sys/lib/perl5/5.24.0/386'
+archlibexp='/sys/lib/perl5/5.24.0/386'
 archname64=''
 archname='386'
 archobjs=''
@@ -362,6 +362,7 @@ d_mbtowc='define'
 d_memchr='define'
 d_memcmp='define'
 d_memcpy='define'
+d_memmem='undef'
 d_memmove='define'
 d_memset='define'
 d_mkdir='define'
@@ -801,17 +802,17 @@ inc_version_list=' '
 inc_version_list_init='0'
 incpath=''
 inews=''
-installarchlib='/sys/lib/perl/5.23.9/386'
+installarchlib='/sys/lib/perl/5.24.0/386'
 installbin='/usr/bin'
 installman1dir='/sys/man/1pub'
 installman3dir='/sys/man/2pub'
 installprefix='/usr'
 installprefixexp='/usr'
-installprivlib='/sys/lib/perl/5.23.9'
+installprivlib='/sys/lib/perl/5.24.0'
 installscript='/usr/bin'
-installsitearch='/sys/lib/perl/5.23.9/site_perl/386'
+installsitearch='/sys/lib/perl/5.24.0/site_perl/386'
 installsitebin='/usr/bin'
-installsitelib='/sys/lib/perl/5.23.9/site_perl'
+installsitelib='/sys/lib/perl/5.24.0/site_perl'
 installstyle='lib/perl5'
 installusrbinperl='undef'
 installvendorarch=''
@@ -936,8 +937,8 @@ pmake=''
 pr=''
 prefix='/usr'
 prefixexp='/usr'
-privlib='/sys/lib/perl/5.23.9'
-privlibexp='/sys/lib/perl/5.23.9'
+privlib='/sys/lib/perl/5.24.0'
+privlibexp='/sys/lib/perl/5.24.0'
 procselfexe=''
 prototype='define'
 ptrsize='4'
@@ -1002,13 +1003,13 @@ sig_num='0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
 sig_num_init='0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 0'
 sig_size='50'
 signal_t='void'
-sitearch='/sys/lib/perl/5.23.9/site_perl/386'
+sitearch='/sys/lib/perl/5.24.0/site_perl/386'
 sitearchexp='/sys/lib/perl/site_perl/386'
 sitebin='/usr/bin'
 sitebinexp='/usr/bin'
-sitelib='/sys/lib/perl/5.23.9/site_perl'
-sitelib_stem='/sys/lib/perl/5.23.9/site_perl'
-sitelibexp='/sys/lib/perl/5.23.9/site_perl'
+sitelib='/sys/lib/perl/5.24.0/site_perl'
+sitelib_stem='/sys/lib/perl/5.24.0/site_perl'
+sitelibexp='/sys/lib/perl/5.24.0/site_perl'
 siteprefix='/usr'
 siteprefixexp='/usr'
 sizesize='4'
@@ -1041,7 +1042,7 @@ stdio_stream_array=''
 strerror_r_proto='0'
 strings='/sys/include/ape/string.h'
 submit=''
-subversion='9'
+subversion='0'
 sysman='/sys/man/1pub'
 tail=''
 tar=''
@@ -1123,8 +1124,8 @@ vendorlib_stem=''
 vendorlibexp=''
 vendorprefix=''
 vendorprefixexp=''
-version='5.23.9'
-version_patchlevel_string='version 23 subversion 9'
+version='5.24.0'
+version_patchlevel_string='version 24 subversion 0'
 versiononly='undef'
 vi=''
 xlibpth=''
@@ -1137,10 +1138,10 @@ config_arg0='./Configure'
 config_args=''
 config_argc=0
 PERL_REVISION=5
-PERL_VERSION=23
-PERL_SUBVERSION=9
+PERL_VERSION=24
+PERL_SUBVERSION=0
 PERL_API_REVISION=5
-PERL_API_VERSION=23
-PERL_API_SUBVERSION=9
+PERL_API_VERSION=24
+PERL_API_SUBVERSION=0
 PERL_PATCHLEVEL=
 PERL_CONFIG_SH=true
index f111c9f..cd6539f 100644 (file)
@@ -53,7 +53,7 @@
 /roffitall
 
 # generated
-/perl5239delta.pod
+/perl5240delta.pod
 /perlapi.pod
 /perlintern.pod
 *.html
index f9a01ee..181e7ca 100644 (file)
@@ -180,15 +180,7 @@ aux c2ph h2ph h2xs perlbug pl2pm pod2html pod2man splain xsubpp
 
     perlhist           Perl history records
     perldelta          Perl changes since previous version
-    perl5238delta      Perl changes in version 5.23.8
-    perl5237delta      Perl changes in version 5.23.7
-    perl5236delta      Perl changes in version 5.23.6
-    perl5235delta      Perl changes in version 5.23.5
-    perl5234delta      Perl changes in version 5.23.4
-    perl5233delta      Perl changes in version 5.23.3
-    perl5232delta      Perl changes in version 5.23.2
-    perl5231delta      Perl changes in version 5.23.1
-    perl5230delta      Perl changes in version 5.23.0
+    perl5222delta      Perl changes in version 5.22.2
     perl5221delta      Perl changes in version 5.22.1
     perl5220delta      Perl changes in version 5.22.0
     perl5203delta      Perl changes in version 5.20.3
@@ -358,6 +350,9 @@ Perl developers, please write to perl-thanks@perl.org .
 
  "@INC"                        locations of perl libraries
 
+"@INC" above is a reference to the built-in variable of the same name;
+see L<perlvar> for more information.
+
 =head1 SEE ALSO
 
  http://www.perl.org/       the Perl homepage
diff --git a/pod/perl5222delta.pod b/pod/perl5222delta.pod
new file mode 100644 (file)
index 0000000..034d5bc
--- /dev/null
@@ -0,0 +1,386 @@
+=encoding utf8
+
+=head1 NAME
+
+perl5222delta - what is new for perl v5.22.2
+
+=head1 DESCRIPTION
+
+This document describes differences between the 5.22.1 release and the 5.22.2
+release.
+
+If you are upgrading from an earlier release such as 5.22.0, first read
+L<perl5221delta>, which describes differences between 5.22.0 and 5.22.1.
+
+=head1 Security
+
+=head2 Fix out of boundary access in Win32 path handling
+
+This is CVE-2015-8608.  For more information see
+L<[perl #126755]|https://rt.perl.org/Ticket/Display.html?id=126755>.
+
+=head2 Fix loss of taint in C<canonpath()>
+
+This is CVE-2015-8607.  For more information see
+L<[perl #126862]|https://rt.perl.org/Ticket/Display.html?id=126862>.
+
+=head2 Set proper umask before calling C<mkstemp(3)>
+
+In 5.22.0 perl started setting umask to C<0600> before calling C<mkstemp(3)>
+and restoring it afterwards.  This wrongfully tells C<open(2)> to strip the
+owner read and write bits from the given mode before applying it, rather than
+the intended negation of leaving only those bits in place.
+
+Systems that use mode C<0666> in C<mkstemp(3)> (like old versions of glibc)
+create a file with permissions C<0066>, leaving world read and write permissions
+regardless of current umask.
+
+This has been fixed by using umask C<0177> instead.
+
+L<[perl #127322]|https://rt.perl.org/Ticket/Display.html?id=127322>
+
+=head2 Avoid accessing uninitialized memory in Win32 C<crypt()>
+
+Validation that will detect both a short salt and invalid characters in the
+salt has been added.
+
+L<[perl #126922]|https://rt.perl.org/Ticket/Display.html?id=126922>
+
+=head2 Remove duplicate environment variables from C<environ>
+
+Previously, if an environment variable appeared more than once in C<environ[]>,
+L<C<%ENV>|perlvar/%ENV> would contain the last entry for that name, while a
+typical C<getenv()> would return the first entry.  We now make sure C<%ENV>
+contains the same as what C<getenv()> returns.
+
+Secondly, we now remove duplicates from C<environ[]>, so if a setting with that
+name is set in C<%ENV> we won't pass an unsafe value to a child process.
+
+This is CVE-2016-2381.
+
+=head1 Incompatible Changes
+
+There are no changes intentionally incompatible with Perl 5.22.1.  If any
+exist, they are bugs, and we request that you submit a report.  See
+L</Reporting Bugs> below.
+
+=head1 Modules and Pragmata
+
+=head2 Updated Modules and Pragmata
+
+=over 4
+
+=item *
+
+L<File::Spec> has been upgraded from version 3.56 to 3.56_01.
+
+C<canonpath()> now preserves taint.  See L</"Fix loss of taint in
+C<canonpath()>">.
+
+=item *
+
+L<Module::CoreList> has been upgraded from version 5.20151213 to 5.20160429.
+
+The version number of L<Digest::SHA> listed for Perl 5.18.4 was wrong and has
+been corrected.  Likewise for the version number of L<Config> in 5.18.3 and
+5.18.4.
+L<[perl #127624]|https://rt.perl.org/Ticket/Display.html?id=127624>
+
+=back
+
+=head1 Documentation
+
+=head2 Changes to Existing Documentation
+
+=head3 L<perldiag>
+
+=over 4
+
+=item *
+
+The explanation of the warning "unable to close filehandle %s properly: %s"
+which can occur when doing an implicit close of a filehandle has been expanded
+and improved.
+
+=back
+
+=head3 L<perlfunc>
+
+=over 4
+
+=item *
+
+The documentation of L<C<hex()>|perlfunc/hex> has been revised to clarify valid
+inputs.
+
+=back
+
+=head1 Configuration and Compilation
+
+=over 4
+
+=item *
+
+Dtrace builds now build successfully on systems with a newer dtrace that
+require an input object file that uses the probes in the F<.d> file.
+
+Previously the probe would fail and cause a build failure.
+
+L<[perl #122287]|https://rt.perl.org/Ticket/Display.html?id=122287>
+
+=item *
+
+F<Configure> no longer probes for F<libnm> by default.  Originally this was the
+"New Math" library, but the name has been re-used by the GNOME NetworkManager.
+
+L<[perl #127131]|https://rt.perl.org/Ticket/Display.html?id=127131>
+
+=item *
+
+F<Configure> now knows about gcc 5.
+
+=item *
+
+Compiling perl with B<-DPERL_MEM_LOG> now works again.
+
+=back
+
+=head1 Platform Support
+
+=head2 Platform-Specific Notes
+
+=over 4
+
+=item Darwin
+
+Compiling perl with B<-Dusecbacktrace> on Darwin now works again.
+
+L<[perl #127764]|https://rt.perl.org/Ticket/Display.html?id=127764>
+
+=item OS X/Darwin
+
+Builds with both B<-DDEBUGGING> and threading enabled would fail with a "panic:
+free from wrong pool" error when built or tested from Terminal on OS X.  This
+was caused by perl's internal management of the environment conflicting with an
+atfork handler using the libc C<setenv()> function to update the environment.
+
+Perl now uses C<setenv()>/C<unsetenv()> to update the environment on OS X.
+
+L<[perl #126240]|https://rt.perl.org/Ticket/Display.html?id=126240>
+
+=item ppc64el
+
+The floating point format of ppc64el (Debian naming for little-endian PowerPC)
+is now detected correctly.
+
+=item Tru64
+
+A test failure in F<t/porting/extrefs.t> has been fixed.
+
+=back
+
+=head1 Internal Changes
+
+=over 4
+
+=item *
+
+An unwarranted assertion in C<Perl_newATTRSUB_x()> has been removed.  If a stub
+subroutine definition with a prototype has been seen, then any subsequent stub
+(or definition) of the same subroutine with an attribute was causing an
+assertion failure because of a null pointer.
+
+L<[perl #126845]|https://rt.perl.org/Ticket/Display.html?id=126845>
+
+=back
+
+=head1 Selected Bug Fixes
+
+=over 4
+
+=item *
+
+Calls to the placeholder C<&PL_sv_yes> used internally when an C<import()> or
+C<unimport()> method isn't found now correctly handle scalar context.
+L<[perl #126042]|https://rt.perl.org/Ticket/Display.html?id=126042>
+
+=item *
+
+The L<C<pipe()>|perlfunc/pipe> operator would assert for C<DEBUGGING> builds
+instead of producing the correct error message.  The condition asserted on is
+detected and reported on correctly without the assertions, so the assertions
+were removed.
+L<[perl #126480]|https://rt.perl.org/Ticket/Display.html?id=126480>
+
+=item *
+
+In some cases, failing to parse a here-doc would attempt to use freed memory.
+This was caused by a pointer not being restored correctly.
+L<[perl #126443]|https://rt.perl.org/Ticket/Display.html?id=126443>
+
+=item *
+
+Perl now reports more context when it sees an array where it expects to see an
+operator, and avoids an assertion failure.
+L<[perl #123737]|https://rt.perl.org/Ticket/Display.html?id=123737>
+
+=item *
+
+If a here-doc was found while parsing another operator, the parser had already
+read end of file, and the here-doc was not terminated, perl could produce an
+assertion or a segmentation fault.  This now reliably complains about the
+unterminated here-doc.
+L<[perl #125540]|https://rt.perl.org/Ticket/Display.html?id=125540>
+
+=item *
+
+Parsing beyond the end of the buffer when processing a C<#line> directive with
+no filename is now avoided.
+L<[perl #127334]|https://rt.perl.org/Ticket/Display.html?id=127334>
+
+=item *
+
+Perl 5.22.0 added support for the C99 hexadecimal floating point notation, but
+sometimes misparsed hex floats.  This has been fixed.
+L<[perl #127183]|https://rt.perl.org/Ticket/Display.html?id=127183>
+
+=item *
+
+Certain regex patterns involving a complemented posix class in an inverted
+bracketed character class, and matching something else optionally would
+improperly fail to match.  An example of one that could fail is
+C<qr/_?[^\Wbar]\x{100}/>.  This has been fixed.
+L<[perl #127537]|https://rt.perl.org/Ticket/Display.html?id=127537>
+
+=item *
+
+Fixed an issue with L<C<pack()>|perlfunc/pack> where C<< pack "H" >> (and
+C<< pack "h" >>) could read past the source when given a non-utf8 source and a
+utf8 target.
+L<[perl #126325]|https://rt.perl.org/Ticket/Display.html?id=126325>
+
+=item *
+
+Fixed some cases where perl would abort due to a segmentation fault, or a
+C-level assert.
+L<[perl #126193]|https://rt.perl.org/Ticket/Display.html?id=126193>
+L<[perl #126257]|https://rt.perl.org/Ticket/Display.html?id=126257>
+L<[perl #126258]|https://rt.perl.org/Ticket/Display.html?id=126258>
+L<[perl #126405]|https://rt.perl.org/Ticket/Display.html?id=126405>
+L<[perl #126602]|https://rt.perl.org/Ticket/Display.html?id=126602>
+L<[perl #127773]|https://rt.perl.org/Ticket/Display.html?id=127773>
+L<[perl #127786]|https://rt.perl.org/Ticket/Display.html?id=127786>
+
+=item *
+
+A memory leak when setting C<$ENV{foo}> on Darwin has been fixed.
+L<[perl #126240]|https://rt.perl.org/Ticket/Display.html?id=126240>
+
+=item *
+
+Perl now correctly raises an error when trying to compile patterns with
+unterminated character classes while there are trailing backslashes.
+L<[perl #126141]|https://rt.perl.org/Ticket/Display.html?id=126141>
+
+=item *
+
+C<NOTHING> regops and C<EXACTFU_SS> regops in C<make_trie()> are now handled
+properly.
+L<[perl #126206]|https://rt.perl.org/Ticket/Display.html?id=126206>
+
+=item *
+
+Perl now only tests C<semctl()> if we have everything needed to use it.  In
+FreeBSD the C<semctl()> entry point may exist, but it can be disabled by
+policy.
+L<[perl #127533]|https://rt.perl.org/Ticket/Display.html?id=127533>
+
+=item *
+
+A regression that allowed undeclared barewords as hash keys to work despite
+strictures has been fixed.
+L<[perl #126981]|https://rt.perl.org/Ticket/Display.html?id=126981>
+
+=item *
+
+As an optimization (introduced in Perl 5.20.0), L<C<uc()>|perlfunc/uc>,
+L<C<lc()>|perlfunc/lc>, L<C<ucfirst()>|perlfunc/ucfirst> and
+L<C<lcfirst()>|perlfunc/lcfirst> sometimes modify their argument in-place
+rather than returning a modified copy.  The criteria for this optimization has
+been made stricter to avoid these functions accidentally modifying in-place
+when they should not, which has been happening in some cases, e.g. in
+L<List::Util>.
+
+=item *
+
+Excessive memory usage in the compilation of some regular expressions involving
+non-ASCII characters has been reduced.  A more complete fix is forthcoming in
+Perl 5.24.0.
+
+=back
+
+=head1 Acknowledgements
+
+Perl 5.22.2 represents approximately 5 months of development since Perl 5.22.1
+and contains approximately 3,000 lines of changes across 110 files from 24
+authors.
+
+Excluding auto-generated files, documentation and release tools, there were
+approximately 1,500 lines of changes to 52 .pm, .t, .c and .h files.
+
+Perl continues to flourish into its third decade thanks to a vibrant community
+of users and developers.  The following people are known to have contributed
+the improvements that became Perl 5.22.2:
+
+Aaron Crane, Abigail, Andreas König, Aristotle Pagaltzis, Chris 'BinGOs'
+Williams, Craig A. Berry, Dagfinn Ilmari MannsÃ¥ker, David Golden, David
+Mitchell, H.Merijn Brand, James E Keenan, Jarkko Hietaniemi, Karen Etheridge,
+Karl Williamson, Matthew Horsfall, Niko Tyni, Ricardo Signes, Sawyer X, Stevan
+Little, Steve Hay, Todd Rinaldo, Tony Cook, Vladimir Timofeev, Yves Orton.
+
+The list above is almost certainly incomplete as it is automatically generated
+from version control history.  In particular, it does not include the names of
+the (very much appreciated) contributors who reported issues to the Perl bug
+tracker.
+
+Many of the changes included in this version originated in the CPAN modules
+included in Perl's core.  We're grateful to the entire CPAN community for
+helping Perl to flourish.
+
+For a more complete list of all of Perl's historical contributors, please see
+the F<AUTHORS> file in the Perl source distribution.
+
+=head1 Reporting Bugs
+
+If you find what you think is a bug, you might check the articles recently
+posted to the comp.lang.perl.misc newsgroup and the perl bug database at
+https://rt.perl.org/ .  There may also be information at http://www.perl.org/ ,
+the Perl Home Page.
+
+If you believe you have an unreported bug, please run the L<perlbug> program
+included with your release.  Be sure to trim your bug down to a tiny but
+sufficient test case.  Your bug report, along with the output of C<perl -V>,
+will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
+
+If the bug you are reporting has security implications, which make it
+inappropriate to send to a publicly archived mailing list, then please send it
+to perl5-security-report@perl.org.  This points to a closed subscription
+unarchived mailing list, which includes all the core committers, who will be
+able to help assess the impact of issues, figure out a resolution, and help
+co-ordinate the release of patches to mitigate or fix the problem across all
+platforms on which Perl is supported.  Please only use this address for
+security issues in the Perl core, not for modules independently distributed on
+CPAN.
+
+=head1 SEE ALSO
+
+The F<Changes> file for an explanation of how to view exhaustive details on
+what changed.
+
+The F<INSTALL> file for how to build Perl.
+
+The F<README> file for general stuff.
+
+The F<Artistic> and F<Copying> files for copyright information.
+
+=cut
diff --git a/pod/perl5230delta.pod b/pod/perl5230delta.pod
deleted file mode 100644 (file)
index 5620bed..0000000
+++ /dev/null
@@ -1,306 +0,0 @@
-=encoding utf8
-
-=head1 NAME
-
-perl5230delta - what is new for perl v5.23.0
-
-=head1 DESCRIPTION
-
-This document describes differences between the 5.22.0 release and the 5.23.0
-release.
-
-=head1 Core Enhancements
-
-=head2 Unicode 8.0 is now supported
-
-For details on what is in this release, see
-L<http://www.unicode.org/versions/Unicode8.0.0/>.
-
-=head1 Incompatible Changes
-
-=head2 The C</\C/> character class has been removed.
-
-This regular expression character class was deprecated in v5.20.0 and has
-produced a deprecation warning since v5.22.0. It is now a compile-time
-error. If you need to examine the individual bytes that make up a
-UTF8-encoded character, then use C<utf8::encode()> on the string (or a
-copy) first.
-
-=head2 C<chdir('')> no longer chdirs home
-
-Using C<chdir('')> or C<chdir(undef)> to chdir home has been deprecated since
-perl v5.8, and will now fail.  Use C<chdir()> instead.
-
-=head1 Modules and Pragmata
-
-=head2 Updated Modules and Pragmata
-
-=over 4
-
-=item *
-
-The libnet distribution has been upgraded from version 3.05 to 3.06.
-
-=item *
-
-The Scalar-List-Utils distribution has been upgraded from version 1.41 to 1.42.
-
-=item *
-
-L<autodie> has been upgraded from version 2.26 to 2.27.
-
-=item *
-
-L<CPAN::Meta> has been upgraded from version 2.150001 to 2.150005.
-
-=item *
-
-L<CPAN::Meta::Requirements> has been upgraded from version 2.132 to 2.133.
-
-=item *
-
-L<CPAN::Meta::YAML> has been upgraded from version 0.012 to 0.016.
-
-=item *
-
-L<Encode> has been upgraded from version 2.72 to 2.73.
-
-=item *
-
-L<encoding> has been upgraded from version 2.14 to 2.15.
-
-=item *
-
-L<ExtUtils::CBuilder> has been upgraded from version 0.280221 to 0.280223.
-
-=item *
-
-L<feature> has been upgraded from version 1.40 to 1.41.
-
-=item *
-
-L<Getopt::Long> has been upgraded from version 2.45 to 2.46.
-
-=item *
-
-L<HTTP::Tiny> has been upgraded from version 0.054 to 0.056.
-
-=item *
-
-L<List::Util> has been upgraded from version 1.41 to 1.42_01.
-
-=item *
-
-L<Locale::Codes> has been upgraded from version 3.34 to 3.35.
-
-=item *
-
-L<Math::BigInt> has been upgraded from version 1.9997 to 1.999701.
-
-Correct the behaviour of bdiv() and bmod() in list context. [perl #124300]
-
-Correct C<< Math::BigInt->new() >> for non-integer input.  [perl #124325]
-
-Speed up Math::BigFloat -> blog(). [perl #124382]
-
-Fix bug in Math::BigFloat's bceil() and bint() methods. [perl #124412]
-
-=item *
-
-L<Math::BigRat> has been upgraded from version 0.2608 to 0.260801.
-
-Correct the behaviour of bdiv() and bmod() in list context. [perl #124303]
-
-=item *
-
-L<Module::CoreList> has been upgraded from version 5.20150520 to 5.20150620.
-
-=item *
-
-L<Module::Metadata> has been upgraded from version 1.000026 to 1.000027.
-
-=item *
-
-L<parent> has been upgraded from version 0.232 to 0.234.
-
-=item *
-
-L<Parse::CPAN::Meta> has been upgraded from version 1.4414 to 1.4417.
-
-=item *
-
-L<perl5db.pl> has been upgraded from version 1.49 to 1.49_01.
-
-User actions are no longer evaluated after the script under the
-debugger finishes.  [perl #71678]
-
-=item *
-
-L<Pod::Simple> has been upgraded from version 3.29 to 3.30.
-
-=item *
-
-L<Pod::Usage> has been upgraded from version 1.64 to 1.67.
-
-=item *
-
-L<POSIX> has been upgraded from version 1.53 to 1.54.
-
-The NaN payload API has been implemented (getpayload, setpayload,
-setpayloadsig, issignaling).
-
-=item *
-
-L<Scalar::Util> has been upgraded from version 1.41 to 1.42_01.
-
-=item *
-
-L<Socket> has been upgraded from version 2.018 to 2.019.
-
-=item *
-
-L<threads> has been upgraded from version 2.01 to 2.02.
-
-=item *
-
-L<Time::Piece> has been upgraded from version 1.29 to 1.30.
-
-=item *
-
-L<UNIVERSAL> has been upgraded from version 1.12 to 1.13.
-
-Don't import from L<UNIVERSAL> in its documentation, it no longer
-exports anything.  [perl #125410]
-
-=back
-
-=head1 Platform Support
-
-=head2 Platform-Specific Notes
-
-=over 4
-
-=item Win32
-
-=over
-
-=item *
-
-Visual C++ 2013 builds will now execute on XP and higher. Previously they would
-only execute on Vista and higher.
-
-=item *
-
-You can now build perl with GNU Make and GCC.  [perl #123440]
-
-=item *
-
-C<truncate($filename, $size)> now works for files over 4GB in size.
-[perl #125347]
-
-=back
-
-=back
-
-=head1 Selected Bug Fixes
-
-=over 4
-
-=item *
-
-Duplicating a closed file handle for write no longer creates a
-filename of the form F<GLOB(0xXXXXXXXX)>.  [perl #125115]
-
-=item *
-
-Warning fatality is now ignored when rewinding the stack.  This
-prevents infinite recursion when the now fatal error also causes
-rewinding of the stack.  [perl #123398]
-
-=item * 
-
-In perl v5.22.0, the logic changed when parsing a numeric parameter to the -C
-option, such that the successfully parsed number was not saved as the option
-value if it parsed to the end of the argument.  [perl #125381]
-
-=item *
-
-The PadlistNAMES macro is an lvalue again.
-
-=item *
-
-Zero -DPERL_TRACE_OPS memory for sub-threads.
-
-perl_clone_using() was missing Zero init of PL_op_exec_cnt[].  This
-caused sub-threads in threaded -DPERL_TRACE_OPS builds to spew exceedingly
-large op-counts at destruct.  These counts would print %x as "ABABABAB",
-clearly a mem-poison value.
-
-=back
-
-=head1 Acknowledgements
-
-Perl 5.23.0 represents approximately 3 weeks of development since Perl 5.22.0
-and contains approximately 86,000 lines of changes across 480 files from 29
-authors.
-
-Excluding auto-generated files, documentation and release tools, there were
-approximately 55,000 lines of changes to 270 .pm, .t, .c and .h files.
-
-Perl continues to flourish into its third decade thanks to a vibrant community
-of users and developers. The following people are known to have contributed the
-improvements that became Perl 5.23.0:
-
-Chase Whitener, Chris 'BinGOs' Williams, Craig A. Berry, Dagfinn Ilmari
-MannsÃ¥ker, Daniel Dragan, David Golden, David Mitchell, Hugo van der Sanden,
-Jan Dubois, Jarkko Hietaniemi, Jerry D. Hedden, Jim Cromie, Karen Etheridge,
-Karl Williamson, kmx, Lukas Mai, Martijn Lievaart, Matthew Horsfall, Niko Tyni,
-Peter John Acklam, Rafael Garcia-Suarez, Reini Urban, Ricardo Signes, Shlomi
-Fish, Steve Hay, Thomas Sibley, Tony Cook, Unicode Consortium, Zefram.
-
-The list above is almost certainly incomplete as it is automatically generated
-from version control history. In particular, it does not include the names of
-the (very much appreciated) contributors who reported issues to the Perl bug
-tracker.
-
-Many of the changes included in this version originated in the CPAN modules
-included in Perl's core. We're grateful to the entire CPAN community for
-helping Perl to flourish.
-
-For a more complete list of all of Perl's historical contributors, please see
-the F<AUTHORS> file in the Perl source distribution.
-
-=head1 Reporting Bugs
-
-If you find what you think is a bug, you might check the articles recently
-posted to the comp.lang.perl.misc newsgroup and the perl bug database at
-https://rt.perl.org/ .  There may also be information at
-http://www.perl.org/ , the Perl Home Page.
-
-If you believe you have an unreported bug, please run the L<perlbug> program
-included with your release.  Be sure to trim your bug down to a tiny but
-sufficient test case.  Your bug report, along with the output of C<perl -V>,
-will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
-
-If the bug you are reporting has security implications, which make it
-inappropriate to send to a publicly archived mailing list, then please send it
-to perl5-security-report@perl.org.  This points to a closed subscription
-unarchived mailing list, which includes all the core committers, who will be
-able to help assess the impact of issues, figure out a resolution, and help
-co-ordinate the release of patches to mitigate or fix the problem across all
-platforms on which Perl is supported.  Please only use this address for
-security issues in the Perl core, not for modules independently distributed on
-CPAN.
-
-=head1 SEE ALSO
-
-The F<Changes> file for an explanation of how to view exhaustive details on
-what changed.
-
-The F<INSTALL> file for how to build Perl.
-
-The F<README> file for general stuff.
-
-The F<Artistic> and F<Copying> files for copyright information.
-
-=cut
diff --git a/pod/perl5231delta.pod b/pod/perl5231delta.pod
deleted file mode 100644 (file)
index ad4c7ce..0000000
+++ /dev/null
@@ -1,317 +0,0 @@
-=encoding utf8
-
-=head1 NAME
-
-perl5231delta - what is new for perl v5.23.1
-
-=head1 DESCRIPTION
-
-This document describes differences between the 5.23.0 release and the 5.23.1
-release.
-
-If you are upgrading from an earlier release such as 5.22.0, first read
-L<perl5230delta>, which describes differences between 5.22.0 and 5.23.0.
-
-=head1 Core Enhancements
-
-=head2 Integer shift (C<< << >> and C<< >> >>) now more explicitly defined
-
-Negative shifts are reverse shifts: left shift becomes right shift,
-and right shift becomes left shift.
-
-Shifting by the number of bits in a native integer (or more) is zero,
-except when the "overshift" is right shifting a negative value under
-C<use integer>, in which case the result is -1 (arithmetic shift).
-
-Until now negative shifting and overshifting have been undefined
-because they have relied on whatever the C implementation happens
-to do.  For example, for the overshift a common C behavior is
-"modulo shift":
-
-  1 >> 64 == 1 >> (64 % 64) == 1 >> 0 == 1  # Common C behavior.
-
-  # And the same for <<, while Perl now produces 0 for both.
-
-Now these behaviors are well-defined under Perl, regardless of what
-the underlying C implementation does.  Note, however, that you cannot
-escape the native integer width, you need to know how far left you
-can go.  You can use for example:
-
-  use Config;
-  my $wordbits = $Config{uvsize} * 8;  # Or $Config{uvsize} << 3.
-
-If you need a more bits on the left shift, you can use for example
-the C<bigint> pragma, or the C<Bit::Vector> module from CPAN.
-
-=head2 Postfix dereferencing is no longer experimental
-
-Using the C<postderef> and C<postderef_qq> features no longer emits a
-warning. Existing code that disables the C<experimental::postderef> warning
-category that they previously used will continue to work. The C<postderef>
-feature has no effect; all Perl code can use postfix dereferencing,
-regardless of what feature declarations are in scope. The C<5.24> feature
-bundle now includes the C<postderef_qq> feature.
-
-=head2 printf and sprintf now allow reordered precision arguments
-
-That is, C<< sprintf '|%.*2$|', 2, 3 >> now returns C<|002|>. This extends
-the existing reordering mechanism (which allows reordering for arguments
-that are used as format fields, widths, and vector separators).
-
-=head1 Incompatible Changes
-
-=head2 ASCII characters in variable names must now be all visible
-
-It was legal until now on ASCII platforms for variable names to contain
-non-graphical ASCII control characters (ordinals 0 through 31, and 127,
-which are the C0 controls and C<DELETE>).  This usage has been
-deprecated since v5.20, and as of now causes a syntax error.  The
-variables these names referred to are special, reserved by Perl for
-whatever use it may choose, now, or in the future.  Each such variable
-has an alternative way of spelling it.  Instead of the single
-non-graphic control character, a two character sequence beginning with a
-caret is used, like C<$^]> and C<${^GLOBAL_PHASE}>.  Details are at
-L<perlvar>.   It remains legal, though unwise and deprecated (raising a
-deprecation warning), to use certain non-graphic non-ASCII characters in
-variables names when not under S<C<use utf8>>.  No code should do this,
-as all such variables are reserved by Perl, and Perl doesn't currently
-define any of them (but could at any time, without notice).
-
-=head2 The C<autoderef> feature has been removed
-
-The experimental C<autoderef> feature (which allowed calling C<push>,
-C<pop>, C<shift>, C<unshift>, C<splice>, C<keys>, C<values>, and C<each> on
-a scalar argument) has been deemed unsuccessful. It has now been removed;
-trying to use the feature (or to disable the C<experimental::autoderef>
-warning it previously triggered) now yields an exception.
-
-=head1 Modules and Pragmata
-
-=head2 Updated Modules and Pragmata
-
-=over 4
-
-=item *
-
-The libnet distribution has been upgraded from version 3.06 to 3.07.
-
-=item *
-
-L<autodie> has been upgraded from version 2.27 to 2.29.
-
-=item *
-
-L<DynaLoader> has been upgraded from version 1.32 to 1.33.
-
-=item *
-
-L<Encode> has been upgraded from version 2.73 to 2.75.
-
-=item *
-
-L<encoding> has been upgraded from version 2.15 to 2.16.
-
-=item *
-
-L<feature> has been upgraded from version 1.41 to 1.42.
-
-=item *
-
-L<File::Path> has been upgraded from version 2.09 to 2.11.
-
-=item *
-
-L<Getopt::Long> has been upgraded from version 2.46 to 2.47.
-
-=item *
-
-L<I18N::Langinfo> has been upgraded from version 0.12 to 0.13.
-
-=item *
-
-L<IPC::Open3> has been upgraded from version 1.18 to 1.19.
-
-If a Perl exception was thrown from inside this module, the exception
-C<IPC::Open3> threw to the callers of C<open3> would have an irrelevant
-message derived from C<$!> which was in an undefined state, instead of the
-C<$@> message which triggers the failure path inside C<open3>.
-
-=item *
-
-L<Module::CoreList> has been upgraded from version 5.20150620 to 5.20150720.
-
-=item *
-
-L<Opcode> has been upgraded from version 1.32 to 1.33.
-
-=item *
-
-L<PerlIO::scalar> has been upgraded from version 0.22 to 0.23.
-
-=item *
-
-L<POSIX> has been upgraded from version 1.54 to 1.55.
-
-=item *
-
-L<Socket> has been upgraded from version 2.019 to 2.020.
-
-=item *
-
-L<Storable> has been upgraded from version 2.53 to 2.54.
-
-=item *
-
-L<Unicode::Collate> has been upgraded from version 1.12 to 1.14.
-
-=item *
-
-L<Unicode::Normalize> has been upgraded from version 1.18 to 1.19.
-
-=item *
-
-L<warnings> has been upgraded from version 1.32 to 1.33.
-
-=item *
-
-L<XS::Typemap> has been upgraded from version 0.13 to 0.14.
-
-=back
-
-=head1 Diagnostics
-
-The following additions or changes have been made to diagnostic output,
-including warnings and fatal error messages.  For the complete list of
-diagnostic messages, see L<perldiag>.
-
-=head2 Changes to Existing Diagnostics
-
-=over 4
-
-=item *
-
-The C<printf> and C<sprintf> builtins are now more careful about the
-warnings they emit: argument reordering now disables the "redundant
-argument" warning in all cases; and invalid format strings are no longer
-treated as absorbing arguments (so "redundant argument" warnings can
-correctly be emitted by such code).
-
-=back
-
-=head1 Platform Support
-
-=head2 Platform-Specific Notes
-
-=over 4
-
-=item VMS
-
-=over
-
-=item *
-
-The minimum supported version of VMS is now v7.3-2, released in 2003.  As a
-side effect of this change, VAX is no longer supported as the terminal
-release of OpenVMS VAX was v7.3 in 2001.
-
-=back
-
-=back
-
-=head1 Internal Changes
-
-=over 4
-
-=item *
-
-C<sv_catpvf> and related functions (including C<sv_vcatpvfn_flags> when
-called with a C<va_list> rather than an array of SV pointers) have never
-handled argument reordering. Attempts to reorder arguments now yield an
-exception, rather than being silently ignored.
-
-=back
-
-=head1 Selected Bug Fixes
-
-=over 4
-
-=item *
-
-A leak in the XS typemap caused one scalar to be leaked each time a C<FILE *>
-or a C<PerlIO *> was C<OUTPUT:>ed or imported to Perl, since perl 5.000. These
-particular typemap entries are thought to be extremely rarely used by XS
-modules. [perl #124181]
-
-=item *
-
-C<alarm()> and C<sleep()> will now warn if the argument is a negative number
-and return undef. Previously they would pass the negative value to the
-underlying C function which may have set up a timer with a surprising value.
-
-=back
-
-=head1 Acknowledgements
-
-Perl 5.23.1 represents approximately 4 weeks of development since Perl 5.23.0
-and contains approximately 8,400 lines of changes across 320 files from 22
-authors.
-
-Excluding auto-generated files, documentation and release tools, there were
-approximately 5,000 lines of changes to 140 .pm, .t, .c and .h files.
-
-Perl continues to flourish into its third decade thanks to a vibrant community
-of users and developers. The following people are known to have contributed the
-improvements that became Perl 5.23.1:
-
-Aaron Crane, Aristotle Pagaltzis, Chas. Owens, Chris 'BinGOs' Williams, Craig
-A. Berry, Daniel Dragan, David Mitchell, Father Chrysostomos, Herbert Breunung,
-H.Merijn Brand, James E Keenan, Jarkko Hietaniemi, Karen Etheridge, Karl
-Williamson, Leon Timmermans, Matthew Horsfall, Max Maischein, Rafael
-Garcia-Suarez, Ricardo Signes, Stanislaw Pusep, Steve Hay, Tony Cook.
-
-The list above is almost certainly incomplete as it is automatically generated
-from version control history. In particular, it does not include the names of
-the (very much appreciated) contributors who reported issues to the Perl bug
-tracker.
-
-Many of the changes included in this version originated in the CPAN modules
-included in Perl's core. We're grateful to the entire CPAN community for
-helping Perl to flourish.
-
-For a more complete list of all of Perl's historical contributors, please see
-the F<AUTHORS> file in the Perl source distribution.
-
-=head1 Reporting Bugs
-
-If you find what you think is a bug, you might check the articles recently
-posted to the comp.lang.perl.misc newsgroup and the perl bug database at
-L<https://rt.perl.org/> .  There may also be information at
-L<http://www.perl.org/> , the Perl Home Page.
-
-If you believe you have an unreported bug, please run the L<perlbug> program
-included with your release.  Be sure to trim your bug down to a tiny but
-sufficient test case.  Your bug report, along with the output of C<perl -V>,
-will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
-
-If the bug you are reporting has security implications, which make it
-inappropriate to send to a publicly archived mailing list, then please send it
-to perl5-security-report@perl.org.  This points to a closed subscription
-unarchived mailing list, which includes all the core committers, who will be
-able to help assess the impact of issues, figure out a resolution, and help
-co-ordinate the release of patches to mitigate or fix the problem across all
-platforms on which Perl is supported.  Please only use this address for
-security issues in the Perl core, not for modules independently distributed on
-CPAN.
-
-=head1 SEE ALSO
-
-The F<Changes> file for an explanation of how to view exhaustive details on
-what changed.
-
-The F<INSTALL> file for how to build Perl.
-
-The F<README> file for general stuff.
-
-The F<Artistic> and F<Copying> files for copyright information.
-
-=cut
diff --git a/pod/perl5232delta.pod b/pod/perl5232delta.pod
deleted file mode 100644 (file)
index 220cd51..0000000
+++ /dev/null
@@ -1,375 +0,0 @@
-=encoding utf8
-
-=head1 NAME
-
-perl5232delta - what is new for perl v5.23.2
-
-=head1 DESCRIPTION
-
-This document describes differences between the 5.23.1 release and the 5.23.2
-release.
-
-If you are upgrading from an earlier release such as 5.23.0, first read
-L<perl5231delta>, which describes differences between 5.23.0 and 5.23.1.
-
-=head1 Incompatible Changes
-
-=head2 Nested declarations are now disallowed
-
-A C<my>, C<our>, or C<state> declaration is no longer allowed inside
-of another C<my>, C<our>, or C<state> declaration.
-
-For example, these are now fatal:
-
-   my ($x, my($y));
-   our (my $x);
-
-L<[perl #125587]|https://rt.perl.org/Ticket/Display.html?id=125587>
-
-L<[perl #121058]|https://rt.perl.org/Ticket/Display.html?id=121058>
-
-=head1 Deprecations
-
-=head2 sysread(), syswrite(), recv() and send() are deprecated on
-:utf8 handles
-
-The sysread(), recv(), syswrite() and send() operators
-are deprecated on handles that have the C<:utf8> layer, either
-explicitly, or implicitly, eg., with the C<:encoding(UTF-16LE)> layer.
-
-Both sysread() and recv() currently use only the C<:utf8> flag for the
-stream, ignoring the actual layers.  Since sysread() and recv() do no
-UTF-8 validation they can end up creating invalidly encoded scalars.
-
-Similarly, syswrite() and send() use only the C<:utf8> flag, otherwise
-ignoring any layers.  If the flag is set, both write the value UTF-8
-encoded, even if the layer is some different encoding, such as the
-example above.
-
-Ideally, all of these operators would completely ignore the C<:utf8>
-state, working only with bytes, but this would result in silently
-breaking existing code.  To avoid this a future version of perl will
-throw an exception when any of sysread(), recv(), syswrite() or send()
-are called on handle with the C<:utf8> layer.
-
-=head1 Performance Enhancements
-
-=over 4
-
-=item *
-
-Creating Perl debugger data structures (see L<perldebguts/"Debugger Internals">)
-for XSUBs and const subs has been removed.  This removed one glob/scalar combo
-for each unique C<.c> file that XSUBs and const subs came from.  On startup
-(C<perl -e"0">) about half a dozen glob/scalar debugger combos were created.
-Loading XS modules created more glob/scalar combos.  These things were created
-regardless if the perl debugger was being used or not, unlike for pure perl
-subs, and ignores that the perl debugger can not debug C code.
-
-=item *
-
-Single arguments in list assign are now slightly faster:
-
-  ($x) = (...);
-  (...) = ($x);
-
-=back
-
-=head1 Modules and Pragmata
-
-=head2 Updated Modules and Pragmata
-
-=over 4
-
-=item *
-
-The PathTools module collection has been upgraded from version 3.55 to
-3.56.
-
-Minor optimizations.
-L<[perl #125712]|https://rt.perl.org/Ticket/Display.html?id=125712>
-
-=item *
-
-L<Attribute::Handlers> has been upgraded from version 0.97 to 0.99.
-
-=item *
-
-L<CPAN::Meta::YAML> has been upgraded from version 0.016 to 0.017.
-
-=item *
-
-L<Encode> has been upgraded from version 2.75 to 2.76.
-
-=item *
-
-L<ExtUtils::ParseXS> has been upgraded from version 3.28 to 3.29.
-
-=item *
-
-L<ExtUtils::Typemaps> has been upgraded from version 3.28 to 3.29.
-
-=item *
-
-L<File::Find> has been upgraded from version 1.29 to 1.30.
-
-=item *
-
-L<File::Spec> has been upgraded from version 3.56 to 3.57.
-
-=item *
-
-L<Filter::Util::Call> has been upgraded from version 1.54 to 1.55.
-
-=item *
-
-L<Hash::Util> has been upgraded from version 0.18 to 0.19.
-
-C<unlock_hashref_recurse> and C<unlock_hash_recurse> didn't
-actually unlock parts of the data structures...
-
-...now they do.
-
-=item *
-
-L<Module::CoreList> has been upgraded from version 5.20150720 to 5.20150820.
-
-=item *
-
-L<perlfaq> has been upgraded from version 5.021009 to 5.021010.
-
-=item *
-
-L<POSIX> has been upgraded from version 1.55 to 1.56.
-
-=item *
-
-L<Term::Cap> has been upgraded from version 1.15 to 1.17.
-
-=item *
-
-L<Unicode::UCD> has been upgraded from version 0.61 to 0.62.
-
-=back
-
-=head1 Documentation
-
-=head2 Changes to Existing Documentation
-
-=head3 L<perlpolicy>
-
-=over 4
-
-=item *
-
-This note has been added to perlpolicy:
-
-  While civility is required, kindness is encouraged; if you have any doubt
-  about whether you are being civil, simply ask yourself, "Am I being kind?"
-  and aspire to that.
-
-=back
-
-=head3 L<perlvar>
-
-=over 4
-
-=item *
-
-Use of C<$OLD_PERL_VERSION> is now discouraged.
-
-=back
-
-=head1 Diagnostics
-
-The following additions or changes have been made to diagnostic output,
-including warnings and fatal error messages.  For the complete list of
-diagnostic messages, see L<perldiag>.
-
-=head2 New Diagnostics
-
-=head3 New Errors
-
-=over 4
-
-=item *
-
-L<Can't redeclare "%s" in "%s"|perldiag/"Can't redeclare "%s" in "%s"">
-
-(F) A "my", "our" or "state" declaration was found within another declaration,
-such as C<my ($x, my($y), $z)> or C<our (my $x)>.
-
-=back
-
-=head3 New Warnings
-
-=over 4
-
-=item *
-
-L<%s() is deprecated on :utf8 handles|perldiag/"%s() is deprecated on :utf8 handles">
-
-(W deprecated) The sysread(), recv(), syswrite() and send() operators
-are deprecated on handles that have the C<:utf8> layer, either
-explicitly, or implicitly, eg., with the C<:encoding(UTF-16LE)> layer.
-
-Both sysread() and recv() currently use only the C<:utf8> flag for the
-stream, ignoring the actual layers.  Since sysread() and recv() do no
-UTF-8 validation they can end up creating invalidly encoded scalars.
-
-Similarly, syswrite() and send() use only the C<:utf8> flag, otherwise
-ignoring any layers.  If the flag is set, both write the value UTF-8
-encoded, even if the layer is some different encoding, such as the
-example above.
-
-Ideally, all of these operators would completely ignore the C<:utf8>
-state, working only with bytes, but this would result in silently
-breaking existing code.  To avoid this a future version of perl will
-throw an exception when any of sysread(), recv(), syswrite() or send()
-are called on handle with the C<:utf8> layer.
-
-=back
-
-=head2 Changes to Existing Diagnostics
-
-=over 4
-
-=item *
-
-The diagnostic C<< Hexadecimal float: internal error >> has been changed to
-C<< Hexadecimal float: internal error (%s) >> to include more information.
-
-=back
-
-=head1 Configuration and Compilation
-
-=over 4
-
-=item *
-
-F<Configure> should handle spaces in paths a little better.
-
-=back
-
-=head1 Testing
-
-=over 4
-
-=item *
-
-A new test (F<t/op/aassign.t>) has been added to test the list assignment operator
-C<OP_AASSIGN>.
-
-=back
-
-=head1 Internal Changes
-
-=over 4
-
-=item *
-
-C<PL_sawalias> and C<GPf_ALIASED_SV> have been removed.
-
-=item *
-
-C<GvASSIGN_GENERATION> and C<GvASSIGN_GENERATION_set> have been removed.
-
-=back
-
-=head1 Selected Bug Fixes
-
-=over 4
-
-=item *
-
-Perl can again be compiled with any Unicode version.  This used to
-(mostly) work, but was lost in v5.18 through v5.20.  The property
-C<Name_Alias> did not exist prior to Unicode 5.0.  L<Unicode::UCD>
-incorrectly said it did.  This has been fixed.
-
-=item *
-
-Very large code-points (beyond Unicode) in regular expressions no
-longer cause a buffer overflow in some cases when converted to UTF-8.
-L<[perl #125826]|https://rt.perl.org/Ticket/Display.html?id=125826>
-
-=item *
-
-The integer overflow check for the range operator (...) in list
-context now correctly handles the case where the size of the range is
-larger than the address space.  This could happen on 32-bits with
--Duse64bitint.
-L<[perl #125781]|https://rt.perl.org/Ticket/Display.html?id=125781>
-
-=item *
-
-A crash with C<< %::=(); J->${\"::"} >> has been fixed.
-L<[perl #125541]|https://rt.perl.org/Ticket/Display.html?id=125541>
-
-=back
-
-=head1 Acknowledgements
-
-Perl 5.23.2 represents approximately 4 weeks of development since Perl 5.23.1
-and contains approximately 22,000 lines of changes across 240 files from 23
-authors.
-
-Excluding auto-generated files, documentation and release tools, there were
-approximately 17,000 lines of changes to 140 .pm, .t, .c and .h files.
-
-Perl continues to flourish into its third decade thanks to a vibrant community
-of users and developers. The following people are known to have contributed the
-improvements that became Perl 5.23.2:
-
-Aaron Priven, Aristotle Pagaltzis, Chris 'BinGOs' Williams, Craig A. Berry,
-Dagfinn Ilmari MannsÃ¥ker, Daniel Dragan, David Mitchell, Ed J, Father
-Chrysostomos, H.Merijn Brand, Ivan Pozdeev, James E Keenan, Jarkko Hietaniemi,
-Karen Etheridge, Karl Williamson, Ludovic E. R. Tolhurst-Cleaver, Lukas Mai,
-Matthew Horsfall, Reini Urban, Ricardo Signes, Sisyphus, Steve Hay, Tony Cook.
-
-The list above is almost certainly incomplete as it is automatically generated
-from version control history. In particular, it does not include the names of
-the (very much appreciated) contributors who reported issues to the Perl bug
-tracker.
-
-Many of the changes included in this version originated in the CPAN modules
-included in Perl's core. We're grateful to the entire CPAN community for
-helping Perl to flourish.
-
-For a more complete list of all of Perl's historical contributors, please see
-the F<AUTHORS> file in the Perl source distribution.
-
-=head1 Reporting Bugs
-
-If you find what you think is a bug, you might check the articles recently
-posted to the comp.lang.perl.misc newsgroup and the perl bug database at
-L<https://rt.perl.org/> .  There may also be information at
-L<http://www.perl.org/> , the Perl Home Page.
-
-If you believe you have an unreported bug, please run the L<perlbug> program
-included with your release.  Be sure to trim your bug down to a tiny but
-sufficient test case.  Your bug report, along with the output of C<perl -V>,
-will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
-
-If the bug you are reporting has security implications, which make it
-inappropriate to send to a publicly archived mailing list, then please send it
-to perl5-security-report@perl.org.  This points to a closed subscription
-unarchived mailing list, which includes all the core committers, who will be
-able to help assess the impact of issues, figure out a resolution, and help
-co-ordinate the release of patches to mitigate or fix the problem across all
-platforms on which Perl is supported.  Please only use this address for
-security issues in the Perl core, not for modules independently distributed on
-CPAN.
-
-=head1 SEE ALSO
-
-The F<Changes> file for an explanation of how to view exhaustive details on
-what changed.
-
-The F<INSTALL> file for how to build Perl.
-
-The F<README> file for general stuff.
-
-The F<Artistic> and F<Copying> files for copyright information.
-
-=cut
diff --git a/pod/perl5233delta.pod b/pod/perl5233delta.pod
deleted file mode 100644 (file)
index a8adeee..0000000
+++ /dev/null
@@ -1,404 +0,0 @@
-=encoding utf8
-
-=head1 NAME
-
-perl5233delta - what is new for perl v5.23.3
-
-=head1 DESCRIPTION
-
-This document describes differences between the 5.23.2 release and the 5.23.3
-release.
-
-If you are upgrading from an earlier release such as 5.23.1, first read
-L<perl5232delta>, which describes differences between 5.23.1 and 5.23.2.
-
-=head1 Core Enhancements
-
-=head2 C<qr/(?[ ])/> now works in UTF-8 locales
-
-L<Extended Bracketed Character Classes|perlrecharclass/Extended Bracketed Character Classes>
-now will successfully compile when S<C<use locale>> is in effect.  The compiled
-pattern will use standard Unicode rules.  If the runtime locale is not a
-UTF-8 one, a warning is raised and standard Unicode rules are used
-anyway.  No tainting is done since the outcome does not actually depend
-on the locale.
-
-=head1 Incompatible Changes
-
-=head2 An off by one issue in C<$Carp::MaxArgNums> has been fixed
-
-C<$Carp::MaxArgNums> is supposed to be the number of arguments to display.
-Prior to this version, it was instead showing C<$Carp::MaxArgNums> + 1 arguments,
-contrary to the documentation.
-
-=head1 Modules and Pragmata
-
-=head2 Updated Modules and Pragmata
-
-=over 4
-
-=item *
-
-L<B> has been upgraded from version 1.58 to 1.59.
-
-=item *
-
-L<bignum> has been upgraded from version 0.39 to 0.40.
-
-=item *
-
-L<Carp> has been upgraded from version 1.36 to 1.37.
-
-=item *
-
-L<Compress::Raw::Zlib> has been upgraded from version 2.068 to 2.068_01.
-
-=item *
-
-L<DynaLoader> has been upgraded from version 1.33 to 1.34.
-
-=item *
-
-L<Encode> has been upgraded from version 2.76 to 2.77.
-
-=item *
-
-L<encoding> has been upgraded from version 2.16 to 2.17.
-
-=item *
-
-L<English> has been upgraded from version 1.09 to 1.10.
-
-=item *
-
-L<Errno> has been upgraded from version 1.23 to 1.24.
-
-=item *
-
-L<experimental> has been upgraded from version 0.013 to 0.014.
-
-=item *
-
-L<ExtUtils::MakeMaker> has been upgraded from version 7.04_01 to 7.10.
-
-=item *
-
-L<ExtUtils::ParseXS> has been upgraded from version 3.29 to 3.30.
-
-=item *
-
-L<ExtUtils::Typemaps> has been upgraded from version 3.29 to 3.30.
-
-=item *
-
-L<File::Find> has been upgraded from version 1.30 to 1.31.
-
-=item *
-
-L<File::Glob> has been upgraded from version 1.24 to 1.25.
-
-=item *
-
-L<File::Spec> has been upgraded from version 3.57 to 3.58.
-
-=item *
-
-L<Hash::Util::FieldHash> has been upgraded from version 1.15 to 1.17.
-
-=item *
-
-L<if> has been upgraded from version 0.0604 to 0.0605.
-
-=item *
-
-L<locale> has been upgraded from version 1.06 to 1.07.
-
-=item *
-
-L<Locale::Codes> has been upgraded from version 3.35 to 3.36.
-
-=item *
-
-L<Module::CoreList> has been upgraded from version 5.20150820 to 5.20150920.
-
-=item *
-
-L<mro> has been upgraded from version 1.17 to 1.18.
-
-=item *
-
-L<Pod::Perldoc> has been upgraded from version 3.25 to 3.25_01.
-
-=item *
-
-L<POSIX> has been upgraded from version 1.56 to 1.57.
-
-=item *
-
-L<Socket> has been upgraded from version 2.020 to 2.020_01.
-
-=item *
-
-L<Test> has been upgraded from version 1.26 to 1.27.
-
-=item *
-
-L<Thread::Queue> has been upgraded from version 3.05 to 3.06.
-
-=item *
-
-L<threads> has been upgraded from version 2.02 to 2.03.
-
-=item *
-
-L<Time::HiRes> has been upgraded from version 1.9726 to 1.9727_02.
-
-=item *
-
-L<Unicode::UCD> has been upgraded from version 0.62 to 0.63.
-
-=item *
-
-L<Win32> has been upgraded from version 0.51 to 0.52.
-
-=back
-
-=head2 New Modules and Pragmata
-
-=over 4
-
-=item *
-
-L<Amiga::ARexx> has been added, as version 0.02
-
-=item *
-
-L<Amiga::Exec> has been added, as version 0.01
-
-=back
-
-=head1 Documentation
-
-=head2 Changes to Existing Documentation
-
-=head3 L<perlcall>
-
-=over 4
-
-=item *
-
-A number of cleanups have been made to perlcall, including:
-
-=over 4
-
-=item *
-
-use EXTEND(SP, n) and PUSHs() instead of XPUSHs() where applicable
-and update prose to match
-
-=item *
-
-add POPu, POPul and POPpbytex to the "complete list of POP macros"
-and clarify the documentation for some of the existing entries, and
-a note about side-effects
-
-=item *
-
-add API documentation for POPu and POPul
-
-=item *
-
-use ERRSV more efficiently
-
-=item *
-
-approaches to thread-safety storage of SVs.
-
-=back
-
-=back
-
-=head3 L<perlunicode>
-
-=over 4
-
-=item *
-
-Discourage use of 'In' prefix for Unicode Block property.
-
-=back
-
-=head1 Diagnostics
-
-The following additions or changes have been made to diagnostic output,
-including warnings and fatal error messages.  For the complete list of
-diagnostic messages, see L<perldiag>.
-
-=head2 New Diagnostics
-
-=head3 New Errors
-
-=over 4
-
-=item *
-
-L<%s must not be a named sequence in transliteration operator|perldiag/"%s must not be a named sequence in transliteration operator">
-
-(F) Transliteration (C<tr///> and C<y///>) transliterates individual
-characters.  But a named sequence by definition is more than an
-individual charater, and hence doing this operation on it doesn't make
-sense.
-
-=back
-
-=head1 Testing
-
-=over 4
-
-=item *
-
-Parallel building has been added to the dmake C<makefile.mk> makefile. All
-Win32 compilers are supported.
-
-=back
-
-=head1 Platform Support
-
-=head2 Platform-Specific Notes
-
-=over 4
-
-=item EBCDIC C<cmp()> and C<sort()> fixed for UTF-EBCDIC strings
-
-Comparing two strings that were both encoded in UTF-8 (or more
-precisely, UTF-EBCDIC) did not work properly until now.  Since C<sort()>
-uses C<cmp()>, this fixes that as well.
-
-=item EBCDIC C<tr///> and C<y///> fixed for C<\N{}>, and C<S<use utf8>> ranges
-
-Perl v5.22 introduced the concept of portable ranges to regular
-expression patterns.  A portable range matches the same set of
-characters no matter what platform is being run on.  This concept is now
-extended to C<tr///>.  See
-C<L<trE<sol>E<sol>E<sol>|perlop/trE<sol>SEARCHLISTE<sol>REPLACEMENTLISTE<sol>cdsr>>.
-
-There were also some problems with these operations under S<C<use
-utf8>>, which are now fixed
-
-=item Win32
-
-=over
-
-=item *
-
-Parallel building has been added to the dmake C<makefile.mk> makefile. All
-Win32 compilers are supported.
-
-=back
-
-=item AmigaOS
-
-The AmigaOS port has been reintegrated into the main tree, based off of
-Perl 5.22.1.
-
-=item clang++
-
-Don't add -shared when the compiler is clang++
-
-=back
-
-=head1 Selected Bug Fixes
-
-=over 4
-
-=item *
-
-C<qr/(?[ () ])/> no longer segfaults, giving a syntax error message instead.
-[perl #125805]
-
-=item *
-
-Regular expression possessive quantifier v5.20 regression now fixed.
-C<qr/>I<PAT>C<{>I<min>,I<max>C<}+>C</> is supposed to behave identically
-to C<qr/(?E<gt>>I<PAT>C<{>I<min>,I<max>C<})/>.  Since v5.20, this didn't
-work if I<min> and I<max> were equal.  [perl #125825]
-
-=item *
-
-C<< BEGIN <> >> no longer segfaults and properly produces an error
-message.  [perl #125341]
-
-=item *
-
-In C<tr///> an illegal backwards range like C<tr/\x{101}-\x{100}//> was
-not always detected, giving incorrect results.  This is now fixed.
-
-=back
-
-=head1 Acknowledgements
-
-Perl 5.23.3 represents approximately 4 weeks of development since Perl 5.23.2
-and contains approximately 150,000 lines of changes across 550 files from 30
-authors.
-
-Excluding auto-generated files, documentation and release tools, there were
-approximately 120,000 lines of changes to 410 .pm, .t, .c and .h files.
-
-Perl continues to flourish into its third decade thanks to a vibrant community
-of users and developers. The following people are known to have contributed the
-improvements that became Perl 5.23.3:
-
-Aaron Crane, Alexander D'Archangel, Andy Broad, Chris 'BinGOs' Williams, Craig
-A. Berry, Dan Collins, Daniel Dragan, David Mitchell, Father Chrysostomos,
-James E Keenan, Jan Dubois, Jarkko Hietaniemi, Jerry D. Hedden, John SJ
-Anderson, Karen Etheridge, Karl Williamson, Lukas Mai, Matthew Horsfall,
-Nicolas R., Peter John Acklam, Peter Martini, Ricardo Signes, Shlomi Fish,
-Steffen Müller, Steve Hay, Sullivan Beck, Thomas Sibley, Todd Rinaldo, Tony
-Cook, Zachary Storer.
-
-The list above is almost certainly incomplete as it is automatically generated
-from version control history. In particular, it does not include the names of
-the (very much appreciated) contributors who reported issues to the Perl bug
-tracker.
-
-Many of the changes included in this version originated in the CPAN modules
-included in Perl's core. We're grateful to the entire CPAN community for
-helping Perl to flourish.
-
-For a more complete list of all of Perl's historical contributors, please see
-the F<AUTHORS> file in the Perl source distribution.
-
-=head1 Reporting Bugs
-
-If you find what you think is a bug, you might check the articles recently
-posted to the comp.lang.perl.misc newsgroup and the perl bug database at
-L<https://rt.perl.org/> .  There may also be information at
-L<http://www.perl.org/> , the Perl Home Page.
-
-If you believe you have an unreported bug, please run the L<perlbug> program
-included with your release.  Be sure to trim your bug down to a tiny but
-sufficient test case.  Your bug report, along with the output of C<perl -V>,
-will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
-
-If the bug you are reporting has security implications, which make it
-inappropriate to send to a publicly archived mailing list, then please send it
-to perl5-security-report@perl.org.  This points to a closed subscription
-unarchived mailing list, which includes all the core committers, who will be
-able to help assess the impact of issues, figure out a resolution, and help
-co-ordinate the release of patches to mitigate or fix the problem across all
-platforms on which Perl is supported.  Please only use this address for
-security issues in the Perl core, not for modules independently distributed on
-CPAN.
-
-=head1 SEE ALSO
-
-The F<Changes> file for an explanation of how to view exhaustive details on
-what changed.
-
-The F<INSTALL> file for how to build Perl.
-
-The F<README> file for general stuff.
-
-The F<Artistic> and F<Copying> files for copyright information.
-
-=cut
diff --git a/pod/perl5234delta.pod b/pod/perl5234delta.pod
deleted file mode 100644 (file)
index 193e824..0000000
+++ /dev/null
@@ -1,557 +0,0 @@
-=encoding utf8
-
-=head1 NAME
-
-perl5234delta - what is new for perl v5.23.4
-
-=head1 DESCRIPTION
-
-This document describes differences between the 5.23.3 release and the 5.23.4
-release.
-
-If you are upgrading from an earlier release such as 5.23.2, first read
-L<perl5233delta>, which describes differences between 5.23.2 and 5.23.3.
-
-=head1 Incompatible Changes
-
-=head2 Lexical $_ has been removed
-
-C<my $_> was introduced in Perl 5.10, and subsequently caused much confusion
-with no obvious solution.  In Perl 5.18.0, it was made experimental on the
-theory that it would either be removed or redesigned in a less confusing (but
-backward-incompatible) way.  Over the following years, no alternatives were
-proposed.  The feature has now been removed and will fail to compile.
-
-=head2 Only blanks and tabs are now allowed within C<[...]> within C<(?[...])>.
-
-The experimental Extended Bracketed Character Classes can contain regular
-bracketed character classes within them.  These differ from regular ones in
-that white space is generally ignored, unless escaped by preceding it with a
-backslash.  The white space that is ignored is now limited to just tab C<\t>
-and SPACE characters.  Previously, it was any white space.  See
-L<perlrecharclass/Extended Bracketed Character Classes>.
-
-=head1 Performance Enhancements
-
-=over 4
-
-=item *
-
-C</fixed-substr/> has been made much faster.
-
-On platforms with a libc memchr() implementation which makes good use of
-underlying hardware support, patterns which include fixed substrings will now
-often be much faster; for example with glibc on a recent x86_64 CPU, this:
-
-    $s = "a" x 1000 . "wxyz";
-    $s =~ /wxyz/ for 1..30000
-
-is now about 7 times faster.  On systems with slow memchr(), e.g. 32-bit ARM
-Raspberry Pi, there will be a small or little speedup.  Conversely, some
-pathological cases, such as C<"ab" x 1000 =~ /aa/> will be slower now; up to 3
-times slower on the rPi, 1.5x slower on x86_64.
-
-=back
-
-=head1 Modules and Pragmata
-
-=head2 Updated Modules and Pragmata
-
-=over 4
-
-=item *
-
-L<B> has been upgraded from version 1.59 to 1.60.
-
-=item *
-
-L<bignum> has been upgraded from version 0.40 to 0.41.
-
-=item *
-
-L<Compress::Raw::Bzip2> has been upgraded from version 2.068 to 2.069.
-
-=item *
-
-L<Compress::Raw::Zlib> has been upgraded from version 2.068_01 to 2.069.
-
-=item *
-
-L<Devel::PPPort> has been upgraded from version 3.31 to 3.32.
-
-=item *
-
-L<DynaLoader> has been upgraded from version 1.34 to 1.35.
-
-=item *
-
-L<Encode> has been upgraded from version 2.77 to 2.78.
-
-=item *
-
-L<experimental> has been upgraded from version 0.014 to 0.016.
-
-=item *
-
-L<ExtUtils::CBuilder> has been upgraded from version 0.280223 to 0.280224.
-
-=item *
-
-L<File::Path> has been upgraded from version 2.11 to 2.12.
-
-=item *
-
-L<if> has been upgraded from version 0.0605 to 0.0606.
-
-=item *
-
-L<IO> has been upgraded from version 1.35 to 1.36.
-
-For an IO::Poll object C<$poll> with no file handles yet in it,
-C<$poll-E<gt>poll(10)> now sleeps for up to 10 seconds anyway instead of
-returning 0 immediately.
-L<[cpan #25049]|https://rt.cpan.org/Ticket/Display.html?id=25049>
-
-=item *
-
-The IO-Compress modules have been upgraded from version 2.068 to 2.069.
-
-=item *
-
-L<Math::BigInt> has been upgraded from version 1.999701 to 1.999704.
-
-=item *
-
-L<Math::BigInt::FastCalc> has been upgraded from version 0.31 to 0.34.
-
-=item *
-
-L<Module::CoreList> has been upgraded from version 5.20150920 to 5.20151020.
-
-=item *
-
-L<Module::Metadata> has been upgraded from version 1.000027 to 1.000029.
-
-=item *
-
-L<Perl::OSType> has been upgraded from version 1.008 to 1.009.
-
-=item *
-
-L<PerlIO::encoding> has been upgraded from version 0.21 to 0.22.
-
-PerlIO::encoding objects are now properly duplicated.
-L<[perl #31923]|https://rt.perl.org/Ticket/Display.html?id=31923>
-
-=item *
-
-L<POSIX> has been upgraded from version 1.57 to 1.58.
-
-If C<POSIX::strerror> was passed C<$!> as its argument then it accidentally
-cleared C<$!>.  This has been fixed.
-L<[perl #126229]|https://rt.perl.org/Ticket/Display.html?id=126229>
-
-=item *
-
-L<Socket> has been upgraded from version 2.020_01 to 2.020_02.
-
-Various fixes have been applied to inet_pton for the benefit of MS VC++ builds
-on Windows.  In particular, this restores the build with MS VC++ 6.0.
-
-=item *
-
-L<Unicode::Normalize> has been upgraded from version 1.19 to 1.21.
-
-=item *
-
-L<warnings> has been upgraded from version 1.33 to 1.35.
-
-The C<warnings::enabled> example now actually uses C<warnings::enabled>.
-L<[perl #126051]|https://rt.perl.org/Ticket/Display.html?id=126051>
-
-=back
-
-=head1 Documentation
-
-=head2 Changes to Existing Documentation
-
-=head3 L<perlapi>
-
-=over 4
-
-=item *
-
-The process of using undocumented globals has been documented, namely, that one
-should send email to L<perl5-porters@perl.org|mailto:perl5-porters@perl.org>
-first to get the go-ahead for documenting and using an undocumented function or
-global variable.
-
-=back
-
-=head3 L<perlsub>
-
-=over 4
-
-=item *
-
-Updated to note that anonymous subroutines can have signatures.
-
-=back
-
-=head3 L<perltie>
-
-=over 4
-
-=item *
-
-The usage of C<FIRSTKEY> and C<NEXTKEY> has been clarified.
-
-=back
-
-=head3 L<perlvar>
-
-=over 4
-
-=item *
-
-The specific true value of C<$!{E...}> is now documented, noting that it is
-subject to change and not guaranteed.
-
-=back
-
-=head1 Diagnostics
-
-The following additions or changes have been made to diagnostic output,
-including warnings and fatal error messages.  For the complete list of
-diagnostic messages, see L<perldiag>.
-
-=head2 New Diagnostics
-
-=head3 New Errors
-
-=over 4
-
-=item *
-
-L<Can't find Unicode property definition "%s" in regex;|perldiag/"Can't find Unicode property definition "%s" in regex; marked by <-- HERE in m/%s/">
-
-=item *
-
-L<Character following \p must be '{' or a single-character Unicode property name in regex;|perldiag/"Character following \%c must be '{' or a single-character Unicode property name in regex; marked by <-- HERE in m/%s/">
-
-=item *
-
-L<Illegal user-defined property name|perldiag/"Illegal user-defined property name">
-
-=back
-
-=head2 Changes to Existing Diagnostics
-
-=over 4
-
-=item *
-
-L<Can't modify non-lvalue subroutine call of &%s|perldiag/"Can't modify non-lvalue subroutine call of &%s">
-
-This error now reports the name of the non-lvalue subroutine you attempted to
-use as an lvalue.
-
-=back
-
-=head1 Configuration and Compilation
-
-=over 4
-
-=item *
-
-Using the C<NO_HASH_SEED> define in combination with the default hash algorithm
-C<PERL_HASH_FUNC_ONE_AT_A_TIME_HARD> resulted in a fatal error while compiling
-the interpreter, since Perl 5.17.10.  This has been fixed.
-
-=item *
-
-If you had F<Configure> hints for C<d_procselfexe> or C<procselfexe>, they were
-probably broken by the AmigaOS changes in Perl 5.23.3.  This has been now
-fixed.
-L<[perl #126152]|https://rt.perl.org/Ticket/Display.html?id=126152>
-
-=back
-
-=head1 Platform Support
-
-=head2 Platform-Specific Notes
-
-=over 4
-
-=item IRIX
-
-=over
-
-=item *
-
-Under some circumstances IRIX stdio fgetc() and fread() set the errno to
-C<ENOENT>, which made no sense according to either IRIX or POSIX docs.  Errno
-is now cleared in such cases.
-L<[perl #123977]|https://rt.perl.org/Ticket/Display.html?id=123977>
-
-=item *
-
-Problems when multiplying long doubles by infinity have been fixed.
-L<[perl #126396]|https://rt.perl.org/Ticket/Display.html?id=126396>
-
-=back
-
-=item MacOS X
-
-=over
-
-=item *
-
-Until now OS X builds of perl have specified a link target of 10.3 (Panther,
-2003) but have not specified a compiler target.  From now on, builds of perl on
-OS X 10.6 or later (Snow Leopard, 2008) by default capture the current OS X
-version and specify that as the explicit build target in both compiler and
-linker flags, thus preserving binary compatibility for extensions built later
-regardless of changes in OS X, SDK, or compiler and linker versions.  To
-override the default value used in the build and preserved in the flags,
-specify C<export MACOSX_DEPLOYMENT_TARGET=10.N> before configuring and building
-perl, where 10.N is the version of OS X you wish to target.  In OS X 10.5 or
-earlier there is no change to the behavior present when those systems were
-current; the link target is still OS X 10.3 and there is no explicit compiler
-target.
-
-=back
-
-=item VMS
-
-=over
-
-=item *
-
-Perl now implements its own C<killpg> by scanning for processes in the
-specified process group, which may not mean exactly the same thing as a Unix
-process group, but allows us to send a signal to a parent (or master) process
-and all of its sub-processes.  At the perl level, this means we can now send a
-negative pid like so:
-
-    kill SIGKILL, -$pid;
-
-to signal all processes in the same group as C<$pid>.
-
-=back
-
-=item Win32
-
-=over
-
-=item *
-
-A new build option C<USE_NO_REGISTRY> has been added to the makefiles.  This
-option is off by default, meaning the default is to do Windows registry
-lookups.  This option stops Perl from looking inside the registry for anything.
-For what values are looked up in the registry see L<perlwin32>.  Internally, in
-C, the name of this option is C<WIN32_NO_REGISTRY>.
-
-=item *
-
-The behavior of Perl using C<HKEY_CURRENT_USER\Software\Perl> and
-C<HKEY_LOCAL_MACHINE\Software\Perl> to lookup certain values, including C<%ENV>
-vars starting with C<PERL> has changed.  Previously, the 2 keys were checked
-for entries at all times through Perl processes life time even if they did not
-exist.  For performance reasons, now, if the root key (i.e.
-C<HKEY_CURRENT_USER\Software\Perl> or C<HKEY_LOCAL_MACHINE\Software\Perl>) does
-not exist at process start time, it will not be checked again for C<%ENV>
-override entries for the remainder of the Perl processes life.  This more
-closely matches Unix behaviour in that the environment is copied or inherited
-on startup and changing the variable in the parent process or another process
-or editing F<.bashrc> will not change the environmental variable in other
-existing, running, processes.
-
-=item *
-
-One glob fetch was removed for each C<-X> or C<stat> call whether done from
-Perl code or internally from Perl's C code.  The glob being looked up was
-C<${^WIN32_SLOPPY_STAT}> which is a special variable.  This makes C<-X> and
-C<stat> slightly faster.
-
-=item *
-
-During miniperl's process startup, during the build process, 4 to 8 IO calls
-related to the process starting F<.pl> and the F<buildcustomize.pl> file were
-removed from the code opening and executing the first 1 or 2 F<.pl> files.
-
-=back
-
-=back
-
-=head1 Internal Changes
-
-=over 4
-
-=item *
-
-L<perlapi/sv_backoff> had its return type changed from C<int> to C<void>.  It
-previously has always returned C<0> since Perl 5.000 stable but that was
-undocumented.  Although C<sv_backoff> is marked as public API, XS code is not
-expected to be impacted since the proper API call would be through public API
-C<sv_setsv(sv, &PL_sv_undef)>, or quasi-public C<SvOOK_off>, or non-public
-C<SvOK_off> calls, and the return value of C<sv_backoff> was previously a
-meaningless constant that can be rewritten as C<(sv_backoff(sv),0)>.
-
-=item *
-
-The C<EXTEND> and C<MEXTEND> macros have been improved to avoid various issues
-with integer truncation and wrapping.  In particular, some casts formerly used
-within the macros have been removed.  This means for example that passing an
-unsigned nitems argument is likely to raise a compiler warning now (it's always
-been documented to require a signed value; formerly int, lately SSize_t).
-
-=back
-
-=head1 Selected Bug Fixes
-
-=over 4
-
-=item *
-
-There were places in regular expression patterns where comments (C<(?#...)>)
-weren't allowed, but should have been.  This is now fixed.
-L<[perl #116639]|https://rt.perl.org/Ticket/Display.html?id=116639>
-
-=item *
-
-Some regressions from Perl 5.20 have been fixed, in which some syntax errors in
-L<C<(?[...])>|perlrecharclass/Extended Bracketed Character Classes> constructs
-within regular expression patterns could cause a segfault instead of a proper
-error message.
-L<[perl #126180]|https://rt.perl.org/Ticket/Display.html?id=126180>
-L<[perl #126404]|https://rt.perl.org/Ticket/Display.html?id=126404>
-
-=item *
-
-Another problem with
-L<C<(?[...])>|perlrecharclass/Extended Bracketed Character Classes>
-constructs has been fixed wherein things like C<\c]> could cause panics.
-L<[perl #126181]|https://rt.perl.org/Ticket/Display.html?id=126181>
-
-=item *
-
-Some problems with attempting to extend the perl stack to around 2G or 4G
-entries have been fixed.  This was particularly an issue on 32-bit perls built
-to use 64-bit integers, and was easily noticeable with the list repetition
-operator, e.g.
-
-    @a = (1) x $big_number
-
-Formerly perl may have crashed, depending on the exact value of C<$big_number>;
-now it will typically raise an exception.
-L<[perl #125937]|https://rt.perl.org/Ticket/Display.html?id=125937>
-
-=item *
-
-In a regex conditional expression C<(?(condition)yes-pattern|no-pattern)>, if
-the condition is C<(?!)> then perl failed the match outright instead of
-matching the no-pattern.  This has been fixed.
-L<[perl #126222]|https://rt.perl.org/Ticket/Display.html?id=126222>
-
-=item *
-
-The special backtracking control verbs C<(*VERB:ARG)> now all allow an optional
-argument and set C<REGERROR>/C<REGMARK> appropriately as well.
-L<[perl #126186]|https://rt.perl.org/Ticket/Display.html?id=126186>
-
-=item *
-
-Several bugs, including a segmentation fault, have been fixed with the bounds
-checking constructs (introduced in Perl 5.22) C<\b{gcb}>, C<\b{sb}>, C<\b{wb}>,
-C<\B{gcb}>, C<\B{sb}>, and C<\B{wb}>.  All the C<\B{}> ones now match an empty
-string; none of the C<\b{}> ones do.
-L<[perl #126319]|https://rt.perl.org/Ticket/Display.html?id=126319>
-
-=back
-
-=head1 Errata From Previous Releases
-
-=over 4
-
-=item *
-
-(This was actually done in Perl 5.23.2, but the perldelta entry got missed.)
-The way that C<OP_AASSIGN> handles assignment with potentially common values
-(e.g. C<($a,$b) = ($b, $a)> has changed.  In particular the C<OPpASSIGN_COMMON>
-flag has been replaced with three more specific flags:
-
-    OPpASSIGN_COMMON_AGG
-    OPpASSIGN_COMMON_RC1
-    OPpASSIGN_COMMON_SCALAR
-
-and the runtime now sometimes does a mark and sweep using the C<SVf_BREAK> to
-detect common elements.
-
-=back
-
-=head1 Acknowledgements
-
-Perl 5.23.4 represents approximately 4 weeks of development since Perl 5.23.3
-and contains approximately 21,000 lines of changes across 360 files from 21
-authors.
-
-Excluding auto-generated files, documentation and release tools, there were
-approximately 15,000 lines of changes to 250 .pm, .t, .c and .h files.
-
-Perl continues to flourish into its third decade thanks to a vibrant community
-of users and developers.  The following people are known to have contributed
-the improvements that became Perl 5.23.4:
-
-Chris 'BinGOs' Williams, Craig A. Berry, Dagfinn Ilmari MannsÃ¥ker, Daniel
-Dragan, David Mitchell, Doug Bell, Father Chrysostomos, H.Merijn Brand, Jarkko
-Hietaniemi, Karen Etheridge, Karl Williamson, Nicholas Clark, Peter Martini,
-Rafael Garcia-Suarez, Reini Urban, Ricardo Signes, Steve Hay, Tony Cook, Victor
-Adam, Vincent Pit, Yves Orton.
-
-The list above is almost certainly incomplete as it is automatically generated
-from version control history.  In particular, it does not include the names of
-the (very much appreciated) contributors who reported issues to the Perl bug
-tracker.
-
-Many of the changes included in this version originated in the CPAN modules
-included in Perl's core.  We're grateful to the entire CPAN community for
-helping Perl to flourish.
-
-For a more complete list of all of Perl's historical contributors, please see
-the F<AUTHORS> file in the Perl source distribution.
-
-=head1 Reporting Bugs
-
-If you find what you think is a bug, you might check the articles recently
-posted to the comp.lang.perl.misc newsgroup and the perl bug database at
-L<https://rt.perl.org/> .  There may also be information at
-L<http://www.perl.org/> , the Perl Home Page.
-
-If you believe you have an unreported bug, please run the L<perlbug> program
-included with your release.  Be sure to trim your bug down to a tiny but
-sufficient test case.  Your bug report, along with the output of C<perl -V>,
-will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
-
-If the bug you are reporting has security implications, which make it
-inappropriate to send to a publicly archived mailing list, then please send it
-to perl5-security-report@perl.org.  This points to a closed subscription
-unarchived mailing list, which includes all the core committers, who will be
-able to help assess the impact of issues, figure out a resolution, and help
-co-ordinate the release of patches to mitigate or fix the problem across all
-platforms on which Perl is supported.  Please only use this address for
-security issues in the Perl core, not for modules independently distributed on
-CPAN.
-
-=head1 SEE ALSO
-
-The F<Changes> file for an explanation of how to view exhaustive details on
-what changed.
-
-The F<INSTALL> file for how to build Perl.
-
-The F<README> file for general stuff.
-
-The F<Artistic> and F<Copying> files for copyright information.
-
-=cut
diff --git a/pod/perl5235delta.pod b/pod/perl5235delta.pod
deleted file mode 100644 (file)
index c9a3e55..0000000
+++ /dev/null
@@ -1,420 +0,0 @@
-=encoding utf8
-
-=head1 NAME
-
-perl5235delta - what is new for perl v5.23.5
-
-=head1 DESCRIPTION
-
-This document describes differences between the 5.23.4 release and the 5.23.5
-release.
-
-If you are upgrading from an earlier release such as 5.23.3, first read
-L<perl5234delta>, which describes differences between 5.23.3 and 5.23.4.
-
-=head1 Performance Enhancements
-
-=over 4
-
-=item *
-
-Faster addition, subtraction and multiplication.
-
-Since 5.8.0, arithmetic became slower due to the need to support
-64-bit integers. To deal with 64-bit integers, a lot more corner
-cases need to be checked, which adds time. We now detect common
-cases where there is no need to check for those corner cases,
-and special-case them.
-
-=item *
-
-Faster preincrement, predecrement, postincrement, postdecrement.
-
-By internally splitting the functions which handled multiple
-cases into different functions.
-
-=back
-
-=head1 Modules and Pragmata
-
-=head2 Updated Modules and Pragmata
-
-=over 4
-
-=item *
-
-L<arybase> has been upgraded from version 0.10 to 0.11.
-
-=item *
-
-L<B> has been upgraded from version 1.60 to 1.61.
-
-=item *
-
-L<base> has been upgraded from version 2.22 to 2.22_01.
-
-Better handling of attempts to load non-existent modules. 
-Improvements to fields.pm documentation. L<base> now requires v5.8.0.
-
-=item *
-
-L<Carp> has been upgraded from version 1.37 to 1.38.
-
-Improvements when working with older perls.
-
-=item *
-
-L<Config::Perl::V> has been upgraded from version 0.24 to 0.25.
-
-=item *
-
-L<Devel::Peek> has been upgraded from version 1.22 to 1.23.
-
-=item *
-
-L<Dumpvalue> has been upgraded from version 1.17 to 1.18.
-
-=item *
-
-L<DynaLoader> has been upgraded from version 1.35 to 1.36.
-
-=item *
-
-L<fields> has been upgraded from version 2.17 to 2.22_01.
-
-=item *
-
-L<File::Find> has been upgraded from version 1.31 to 1.32.
-
-Handles empty directory lists.
-
-=item *
-
-L<File::Spec> has been upgraded from version 3.58 to 3.59.
-
-=item *
-
-L<Getopt::Long> has been upgraded from version 2.47 to 2.48.
-
-Fixes an issue with C<< gnu_compat >>
-
-=item *
-
-L<Hash::Util::FieldHash> has been upgraded from version 1.17 to 1.18.
-
-=item *
-
-L<IPC::Open3> has been upgraded from version 1.19 to 1.20.
-
-Include the error message on C<< exec() >> failure.
-
-=item *
-
-L<Math::BigInt> has been upgraded from version 1.999704 to 1.999710.
-
-=item *
-
-L<Math::BigInt::FastCalc> has been upgraded from version 0.34 to 0.37.
-
-=item *
-
-L<Module::CoreList> has been upgraded from version 5.20151020 to 5.20151120.
-
-=item *
-
-L<Module::Metadata> has been upgraded from version 1.000029 to 1.000030.
-
-Temp dirs cleaned up during tests. More accurately mark tests as TODO, so as to have a quieter and less confusing test run without passing TODO tests.
-
-=item *
-
-L<PerlIO::encoding> has been upgraded from version 0.22 to 0.23.
-
-=item *
-
-L<PerlIO::mmap> has been upgraded from version 0.014 to 0.015.
-
-=item *
-
-L<PerlIO::scalar> has been upgraded from version 0.23 to 0.24.
-
-=item *
-
-L<PerlIO::via> has been upgraded from version 0.15 to 0.16.
-
-=item *
-
-L<Pod::Simple> has been upgraded from version 3.30 to 3.32.
-
-Switched debugging output from C<< STDOUT >> to C<< STDERR >>.
-
-Added C<< errata_seen() >> to make POD errors easily accessible.
-
-Simplified the detection of case-insensitivity in Pod::Simple::Search.
-
-Fixed C<< Use of uninitialized value $1 in lc >> warning in
-Pod::Simple::Search.
-
-If C<< @INC >> includes the current directory symbol, C<.>, the
-C<< survey() >> method of C<< Pod::Simple::Search >> no longer excludes
-it from its list of directories to search. Instead, The C<< survey() >> and
-C<< find() >> methods now both exclude duplicate directories from C<< @INC >>
-(RT #102344).
-
-Moved source repository and updated links to new perl-pod GitHub
-organization: L<https://github.com/perl-pod/pod-simple>.
-
-Improved repository links and added GitHub issue tracking link to
-the distribution metadata.
-
-Switched from C<< File::Spec >>'s C<< catdir >> to C<< catfile >>
-for path names, to fix failures on VMS. Also now use Unix path semantics
-where they're not required to be platform-specific. (RT #105511).
-
-Improved the example use of the C<< html_encode_chars() >> method in
-the C<< Pod::Simple::XHTML >> documentation.
-
-=item *
-
-L<POSIX> has been upgraded from version 1.58 to 1.59.
-
-=item *
-
-L<Thread::Queue> has been upgraded from version 3.06 to 3.07.
-
-=item *
-
-L<threads> has been upgraded from version 2.03 to 2.04.
-
-=item *
-
-L<threads::shared> has been upgraded from version 1.48 to 1.49.
-
-=item *
-
-L<Tie::Scalar> has been upgraded from version 1.03 to 1.04.
-
-=item *
-
-L<Time::HiRes> has been upgraded from version 1.9727_02 to 1.9728.
-
-=item *
-
-L<Time::Piece> has been upgraded from version 1.30 to 1.31.
-
-=item *
-
-L<Unicode::Normalize> has been upgraded from version 1.21 to 1.23.
-
-=item *
-
-L<XSLoader> has been upgraded from version 0.20 to 0.21.
-
-=back
-
-=head1 Diagnostics
-
-The following additions or changes have been made to diagnostic output,
-including warnings and fatal error messages.  For the complete list of
-diagnostic messages, see L<perldiag>.
-
-=head2 New Diagnostics
-
-=head3 New Errors
-
-=over 4
-
-=item *
-
-L<<< Sequence (?... not terminated in regex; marked by S<<-- HERE> in mE<sol>%sE<sol>|perldiag/"Sequence (?... not terminated in regex; marked by <-- HERE in mE<sol>%sE<sol>" >>>
-
-=back
-
-=head2 Changes to Existing Diagnostics
-
-=over 4
-
-=item *
-
-When running out of memory during an attempt the increase the stack
-size, previously, perl would die using the cryptic message 
-C<< panic: av_extend_guts() negative count (-9223372036854775681) >>.
-This has been fixed to show the prettier message:
-L<< Out of memory during stack extend|perldiag/"Out of memory during %s extend" >>
-
-=back
-
-=head1 Configuration and Compilation
-
-=over 4
-
-=item *
-
-C<Configure> now acts as if the C<-O> option is always passed, allowing command
-line options to override saved configuration.  This should eliminate confusion
-when command line options are ignored for no obvious reason.  C<-O> is now
-permitted, but ignored.
-
-=item *
-
-Some filesystem stat symbols which were not used by the Perl core 
-were removed in an earlier commit. However, since these symbols
-turned out to be used by at least one CPAN module, these symbols
-have been restored.
-
-=item *
-
-C<< PPPort.so/PPPort.dll >> no longer get installed, as they are
-not used by C<< PPPort.pm >>, only by its test files.
-
-=item *
-
-It is now possible to specify which compilation date to show on
-C<< perl -V >> output, by setting the macro C<< PERL_BUILD_DATE >>.
-
-=back
-
-=head1 Platform Support
-
-=head2 Platform-Specific Notes
-
-=over 4
-
-=item Win32
-
-Win32 does now a parallel build with C++.
-
-=item Tru64
-
-Workaround where Tru64 balks when prototypes are listed as
-C<< PERL_STATIC_INLINE >>, but where the test is build with
-C<< -DPERL_NO_INLINE_FUNCTIONS >>.
-
-=back
-
-=head1 Internal Changes
-
-=over 4
-
-=item *
-
-C<< sv_ref() >> is now part of the API.
-
-=back
-
-=head1 Selected Bug Fixes
-
-=over 4
-
-=item *
-
-C<\b{sb}> works much better.  In Perl v5.22.0, this new construct didn't
-seem to give the expected results, yet passed all the tests in the
-extensive suite furnished by Unicode.  It turns out that it was because
-these were short input strings, and the failures had to do with longer
-inputs.  This was fixed in Perl 5.23.4, but the improvement was not
-noticed until after that was released, so is included here now.
-
-=item *
-
-Certain syntax errors in
-L<perlrecharclass/Extended Bracketed Character Classes> caused panics
-instead of the proper error message.  This has now been fixed. [perl
-#126481]
-
-=item *
-
-An earlier commit added a message when a quantifier in a regular
-expression was useless, but then caused the parser to skip it;
-this caused the surplus quantifier to be silently ignored, instead
-of throwing an error. This is now fixed. [perl #126253]
-
-=item *
-
-The switch to building non-XS modules last in win32/makefile.mk (introduced
-by design as part of the changes to enable parallel building) caused the
-build of POSIX to break due to problems with the version module. This
-is now fixed.
-
-=item *
-
-Improved parsing of hex float constants.
-
-=item *
-
-Fixed an issue with C<< pack >> where C<< pack "H" >> (and C<< pack "h" >>)
-could read past the source when given a non-utf8 source, and a utf8 target.
-[perl #126325]
-
-=item *
-
-Fixed several cases where perl would abort due to a segmentation fault,
-or a C-level assert. [perl #126615], [perl #126602], [perl #126193].
-
-=back
-
-=head1 Acknowledgements
-
-Perl 5.23.5 represents approximately 4 weeks of development since Perl 5.23.4
-and contains approximately 12,000 lines of changes across 290 files from 23
-authors.
-
-Excluding auto-generated files, documentation and release tools, there were
-approximately 6,400 lines of changes to 180 .pm, .t, .c and .h files.
-
-Perl continues to flourish into its third decade thanks to a vibrant community
-of users and developers. The following people are known to have contributed the
-improvements that became Perl 5.23.5:
-
-Aaron Crane, Abigail, Chris 'BinGOs' Williams, Craig A. Berry, Dagfinn Ilmari
-MannsÃ¥ker, Daniel Dragan, David Mitchell, Dr.Ruud, H.Merijn Brand, Ivan
-Pozdeev, James E Keenan, Jarkko Hietaniemi, Jerry D. Hedden, Karen Etheridge,
-Karl Williamson, Lukas Mai, Mohammed El-Afifi, Niko Tyni, Peter Rabbitson,
-Reini Urban, Ricardo Signes, Steve Hay, Tony Cook.
-
-The list above is almost certainly incomplete as it is automatically generated
-from version control history. In particular, it does not include the names of
-the (very much appreciated) contributors who reported issues to the Perl bug
-tracker.
-
-Many of the changes included in this version originated in the CPAN modules
-included in Perl's core. We're grateful to the entire CPAN community for
-helping Perl to flourish.
-
-For a more complete list of all of Perl's historical contributors, please see
-the F<AUTHORS> file in the Perl source distribution.
-
-=head1 Reporting Bugs
-
-If you find what you think is a bug, you might check the articles recently
-posted to the comp.lang.perl.misc newsgroup and the perl bug database at
-L<https://rt.perl.org/> .  There may also be information at
-L<http://www.perl.org/> , the Perl Home Page.
-
-If you believe you have an unreported bug, please run the L<perlbug> program
-included with your release.  Be sure to trim your bug down to a tiny but
-sufficient test case.  Your bug report, along with the output of C<perl -V>,
-will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
-
-If the bug you are reporting has security implications, which make it
-inappropriate to send to a publicly archived mailing list, then please send it
-to perl5-security-report@perl.org.  This points to a closed subscription
-unarchived mailing list, which includes all the core committers, who will be
-able to help assess the impact of issues, figure out a resolution, and help
-co-ordinate the release of patches to mitigate or fix the problem across all
-platforms on which Perl is supported.  Please only use this address for
-security issues in the Perl core, not for modules independently distributed on
-CPAN.
-
-=head1 SEE ALSO
-
-The F<Changes> file for an explanation of how to view exhaustive details on
-what changed.
-
-The F<INSTALL> file for how to build Perl.
-
-The F<README> file for general stuff.
-
-The F<Artistic> and F<Copying> files for copyright information.
-
-=cut
diff --git a/pod/perl5236delta.pod b/pod/perl5236delta.pod
deleted file mode 100644 (file)
index 128b6d9..0000000
+++ /dev/null
@@ -1,522 +0,0 @@
-=encoding utf8
-
-=head1 NAME
-
-perl5236delta - what is new for perl v5.23.6
-
-=head1 DESCRIPTION
-
-This document describes differences between the 5.23.5 release and the 5.23.6
-release.
-
-If you are upgrading from an earlier release such as 5.23.4, first read
-L<perl5235delta>, which describes differences between 5.23.4 and 5.23.5.
-
-=head1 Incompatible Changes
-
-=head2 Regular expression compilation errors
-
-Some regular expression patterns that had runtime errors now
-don't compile at all.
-
-This should have been in the perldelta for 5.23.4, but was omitted.
-
-Almost all Unicode properties using the C<\p{}> and C<\P{}> regular
-expression pattern constructs are now checked for validity at pattern
-compilation time, and invalid ones will cause the program to not
-compile.  In earlier releases, this check was often deferred until run
-time.  Whenever an error check is moved from run- to compile time,
-erroneous code is caught 100% of the time, whereas before it would only
-get caught if and when the offending portion actually gets executed,
-which for unreachable code might be never.
-
-=head1 Deprecations
-
-=head2 Using code points above the platform's C<IV_MAX> is now
-deprecated
-
-Unicode defines code points in the range C<0..0x10FFFF>.  Some standards
-at one time defined them up to 2**31 - 1, but Perl has allowed them to
-be as high as anything that will fit in a word on the platform being
-used.  However, use of those above the platform's C<IV_MAX> is broken in
-some constructs, notably C<tr///>, regular expression patterns involving
-quantifiers, and in some arithmetic and comparison operations, such as
-being the upper limit of a loop.  Now the use of such code points raises
-a deprecation warning, unless that warning category is turned off.
-C<IV_MAX> is typically 2**31 -1 on 32-bit platforms, and 2**63-1 on
-64-bit ones.
-
-=head2 Doing bitwise operations on strings containing code points above
-0xFF is deprecated
-
-The string bitwise operators treat their operands as strings of bytes,
-and values beyond 0xFF are nonsensical in this context.  To operate on
-encoded bytes, first encode the strings.  To operate on code points'
-numeric values, use C<split> and C<map ord>.  In the future, this
-warning will be replaced by an exception.
-
-=head1 Performance Enhancements
-
-=over 4
-
-=item *
-
-Many languages, such as Chinese, are caseless.  Perl now knows about
-most modern commercially important ones, and skips much of the work when
-a program tries to change case in them (like C<ucfirst()>) or match
-caselessly (C<qr//i>).  This will speed up a program, such as a web
-server, that can operate on multiple languages, while operating on a
-caseless one.
-
-=back
-
-=head1 Modules and Pragmata
-
-=head2 Updated Modules and Pragmata
-
-=over 4
-
-=item *
-
-The modules L<sigtrap>, L<DB>, and the perl debugger could have, under
-rare circumstances, output raw control characters.  This has been fixed.
-
-=item *
-
-L<B::Deparse> has been upgraded from version 1.35 to 1.36.
-
-Uses of C<< < > >> are now always deparsed as either C<glob()> or
-C<readline()>, and uses of C<glob()> or C<readline()> are never deparsed as
-C<< < > >>. This fixes the deparsing of C<readline ${"a"}>.
-L<[perl #116677]|https://rt.perl.org/Ticket/Display.html?id=116677>
-
-=item *
-
-L<base> has been upgraded from version 2.22_01 to 2.23.
-
-=item *
-
-L<Benchmark> has been upgraded from version 1.2 to 1.21.
-
-=item *
-
-L<CPAN::Meta::Requirements> has been upgraded from version 2.133 to 2.140.
-
-Adds a method for getting structured requirements and adds better error
-messages.
-
-=item *
-
-L<CPAN::Meta::YAML> has been upgraded from version 0.017 to 0.018,
-with no change since 0.017.
-
-=item *
-
-L<Data::Dumper> has been upgraded from version 2.158 to 2.159.
-
-This adds a "Trailingcomma" option, which when enabled adds a trailing comma
-after the last element of dumped arrays and hashes that would otherwise be
-followed immediately by a line break.
-L<[perl #126813]|https://rt.perl.org/Ticket/Display.html?id=126813>
-
-The internals have also been substantially refactored and cleaned up.  It
-may be more efficient on some platforms.
-
-=item *
-
-L<DynaLoader> has been upgraded from version 1.36 to 1.37.
-
-Fixed an else nesting issue in dynamic loading support for OS/390 (and
-similar systems) that was introduced in 1.36.
-
-=item *
-
-L<encoding::warnings> has been upgraded from version 0.11 to 0.12.
-
-=item *
-
-L<fields> has been upgraded from version 2.22_01 to 2.23.
-
-=item *
-
-L<File::Spec> and L<Cwd> have been upgraded from version 3.59 to 3.60,
-adding L<File::Spec::AmigaOS>.
-
-=item *
-
-L<Hash::Util::FieldHash> has been upgraded from version 1.18 to 1.19.
-
-=item *
-
-L<locale> has been upgraded from version 1.07 to 1.08.
-
-=item *
-
-L<Locale::Codes> has been upgraded from version 3.36 to 3.37.
-
-=item *
-
-L<Math::BigInt::FastCalc> has been updated from version 0.37 to 0.38.
-
-=item *
-
-L<Module::CoreList> has been updated from version 5.20151120 to
-5.20151220.
-
-=item *
-
-L<Module::Metadata> has been updated from version 1.000030 to
-1.000031, with no functional changes.
-
-=item *
-
-L<Opcode> has been upgraded from version 1.33 to 1.34.
-
-=item *
-
-L<PerlIO::mmap> has been upgraded from version 0.015 to 0.016.
-
-=item *
-
-L<Pod::Perldoc> has been upgraded from version 3.25_01 to 3.25_02.
-
-=item *
-
-L<SDBM_File> has been upgraded from version 1.13 to 1.14.
-
-=item *
-
-L<strict> has been upgraded from version 1.09 to 1.10, with only a
-documentation change.
-
-=item *
-
-L<Term::ANSIColor> has been upgraded from version 4.03 to 4.04, with no
-functional changes.
-
-=item *
-
-L<Test> has been upgraded from version 1.27 to 1.28.
-
-=item *
-
-L<threads> has been upgraded from version 2.04 to 2.05.
-
-=item *
-
-L<threads::shared> has been upgraded from version 1.49 to 1.50.
-
-=item *
-
-L<Unicode::Normalize> has been updated from version 1.23 to 1.24, with
-no functional changes.
-
-=item *
-
-L<utf8> has been upgraded from version 1.17 to 1.18.
-
-Partly reverted a micro-optimization to F<lib/utf_heavy.pl> that
-caused self-recursion when it was loaded with C<${^ENCODING}> set.
-L<[perl #126593]|https://rt.perl.org/Ticket/Display.html?id=126593>
-
-=back
-
-=head1 Documentation
-
-=head2 Changes to Existing Documentation
-
-=head3 L<perlfunc>
-
-=over 4
-
-=item *
-
-The documentation of C<hex> has been revised to clarify valid inputs.
-
-=back
-
-=head3 L<perlop>
-
-=over 4
-
-=item *
-
-The documentation of C<qx//> now describes how C<$?> is affected.
-
-=back
-
-=head3 L<perlvar>
-
-=over 4
-
-=item *
-
-The documentation of C<$@> was reworded to clarify that it is not just for
-syntax errors in C<eval>.
-L<[perl #124034]|https://rt.perl.org/Ticket/Display.html?id=124034>
-
-=back
-
-=head3 L<perlxs>
-
-=over 4
-
-=item *
-
-The documentation of C<PROTOTYPES> has been clarified; they are I<disabled>
-by default, not I<enabled>.
-
-=back
-
-=head1 Diagnostics
-
-The following additions or changes have been made to diagnostic output,
-including warnings and fatal error messages.  For the complete list of
-diagnostic messages, see L<perldiag>.
-
-=head2 New Diagnostics
-
-=head3 New Errors
-
-=over 4
-
-=item *
-
-L<Invalid number '%s' for -C option.|perldiag/"Invalid number '%s' for -C option.">
-
-(F) You supplied a number to the -C option that either has extra leading
-zeroes or overflows perl's unsigned integer representation.
-
-=back
-
-=head1 Configuration and Compilation
-
-=over 4
-
-=item *
-
-F<make_ext.pl> is no longer inappropriately silent.  This was caused
-by an operator precedence error introduced in 5.23.4.
-
-=back
-
-=head1 Platform Support
-
-=head2 New Platforms
-
-=over 4
-
-=item OpenIndiana
-
-OpenIndiana (continuation of OpenSolaris) builds were not working due
-to problems with the Perl shared library.  This should be working now.
-L<[perl #126958]|https://rt.perl.org/Ticket/Display.html?id=126958>
-
-=back
-
-=head2 Platform-Specific Notes
-
-=over 4
-
-=item EBCDIC platforms, such as z/OS
-
-UTF-EBCDIC is like UTF-8, but for EBCDIC platforms.  It now has been
-extended so that it can represent code points up to 2 ** 64 - 1 on
-platforms with 64-bit words.  This brings it into parity with UTF-8.
-This enhancement requires an incompatible change to the representation
-of code points in the range 2 ** 30 to 2 ** 31 -1 (the latter was the
-previous maximum representable code point).  This means that a file that
-contains one of these code points, written out with previous versions of
-perl cannot be read in, without conversion, by a perl containing this
-change.  We do not believe any such files are in existence, but if you
-do have one, submit a ticket at L<perlbug@perl.org|mailto:perlbug@perl.org>,
-and we will write a conversion script for you.
-
-=item Cygwin
-
-Tests are more robust against unusual cygdrive prefixes.
-L<[perl #126834]|https://rt.perl.org/Ticket/Display.html?id=126834>
-
-=item OS X/Darwin
-
-Builds with both -DDEBUGGING and threading enabled would fail with a
-"panic: free from wrong pool" error when built or tested from Terminal
-on OS X.  This was caused by perl's internal management of the
-environment conflicting with an atfork handler using the libc
-setenv() function to update the environment.
-
-Perl now uses setenv()/unsetenv() to update the environment on OS X.
-L<[perl #126240]|https://rt.perl.org/Ticket/Display.html?id=126240>
-
-=item ppc64el floating point
-
-The floating point format of ppc64el (Debian naming for little-endian
-PowerPC) is now detected correctly.
-
-=item Solaris
-
-All Solaris now builds shared libperl.
-
-Solaris and variants like OpenIndiana now always build with the shared
-Perl library (Configure -Duseshrplib).  This was required for the
-OpenIndiana builds, but this has also been the setting for Oracle/Sun
-Perl builds for several years.
-
-=back
-
-=head1 Internal Changes
-
-=over 4
-
-=item *
-
-Perl core code and the threads extension have been annotated so that,
-if Perl is configured to use threads, then during compile-time clang (3.6
-or later) will warn about suspicious uses of mutexes.
-See L<http://clang.llvm.org/docs/ThreadSafetyAnalysis.html> for more
-information.
-
-=item *
-
-The C<signbit()> emulation has been enhanced.  This will help older
-and/or more exotic platforms or configurations.
-
-=item *
-
-The C<to_utf8_case> function is discouraged in favor of C<toUPPER_utf8>,
-C<toTITLE_utf8>, C<toLOWER_utf8>, and C<toFOLD_utf8>.
-
-=item *
-
-EBCDIC code paths have largely been unified to avoid repetition.
-
-=item *
-
-MSWin32 code for C<$^X> has been moved out of the F<win32> directory to
-F<caretx.c>, where other operating systems set that variable.
-
-=back
-
-=head1 Selected Bug Fixes
-
-=over 4
-
-=item *
-
-C</...\G/> no longer crashes on utf8 strings. When C<\G> is a fixed number
-of characters from the start of the regex, perl needs to count back that
-many characters from the current C<pos()> position and start matching from
-there. However, it was counting back bytes rather than characters, which
-could lead to panics on utf8 strings.
-
-=item *
-
-In some cases operators that return integers would return negative
-integers as large positive integers.
-L<[perl #126635]|https://rt.perl.org/Ticket/Display.html?id=126635>
-
-=item *
-
-The C<pipe()> operator would assert for DEBUGGING builds instead of
-producing the correct error message.  The condition asserted on is
-detected and reported on correctly without the assertions, so the
-assertions were removed.
-L<[perl #126480]|https://rt.perl.org/Ticket/Display.html?id=126480>
-
-=item *
-
-In some cases, failing to parse a here-doc would attempt to use freed
-memory.  This was caused by a pointer not being restored correctly.
-L<[perl #126443]|https://rt.perl.org/Ticket/Display.html?id=126443>
-
-=item *
-
-C<< @x = sort { *a = 0; $a <=> $b } 0 .. 1 >> no longer frees the GP
-for *a before restoring its SV slot.
-L<[perl #124097]|https://rt.perl.org/Ticket/Display.html?id=124097>
-
-=item *
-
-Multiple problems with the new hexadecimal floating point printf
-format C<%a> were fixed:
-L<[perl #126582]|https://rt.perl.org/Ticket/Display.html?id=126582>,
-L<[perl #126586]|https://rt.perl.org/Ticket/Display.html?id=126586>,
-L<[perl #126822]|https://rt.perl.org/Ticket/Display.html?id=126822>
-
-=item *
-
-Calling mg_set() in leave_scope() no longer leaks.
-
-=item *
-
-A regression from Perl v5.20 was fixed in which debugging output of regular
-expression compilation was wrong.  (The pattern was correctly compiled, but
-what got displayed for it was wrong.)
-
-=back
-
-=head1 Acknowledgements
-
-Perl 5.23.6 represents approximately 4 weeks of development since Perl 5.23.5
-and contains approximately 11,000 lines of changes across 260 files from 22
-authors.
-
-Excluding auto-generated files, documentation and release tools, there were
-approximately 7,500 lines of changes to 170 .pm, .t, .c and .h files.
-
-Perl continues to flourish into its third decade thanks to a vibrant community
-of users and developers. The following people are known to have contributed the
-improvements that became Perl 5.23.6:
-
-Aaron Crane, Abigail, Achim Gratz, Andy Broad, Aristotle Pagaltzis, Chris
-'BinGOs' Williams, Craig A. Berry, Dagfinn Ilmari MannsÃ¥ker, Daniel Dragan,
-David Golden, David Mitchell, Doug Bell, Ed Avis, Jarkko Hietaniemi, Karen
-Etheridge, Karl Williamson, Lukas Mai, Ricardo Signes, Shlomi Fish, Steve Hay,
-Sullivan Beck, Tony Cook.
-
-The list above is almost certainly incomplete as it is automatically generated
-from version control history. In particular, it does not include the names of
-the (very much appreciated) contributors who reported issues to the Perl bug
-tracker.
-
-Many of the changes included in this version originated in the CPAN modules
-included in Perl's core. We're grateful to the entire CPAN community for
-helping Perl to flourish.
-
-For a more complete list of all of Perl's historical contributors, please see
-the F<AUTHORS> file in the Perl source distribution.
-
-=head1 Reporting Bugs
-
-If you find what you think is a bug, you might check the articles recently
-posted to the comp.lang.perl.misc newsgroup and the perl bug database at
-L<https://rt.perl.org/> .  There may also be information at
-L<http://www.perl.org/> , the Perl Home Page.
-
-If you believe you have an unreported bug, please run the L<perlbug> program
-included with your release.  Be sure to trim your bug down to a tiny but
-sufficient test case.  Your bug report, along with the output of C<perl -V>,
-will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
-
-If the bug you are reporting has security implications, which make it
-inappropriate to send to a publicly archived mailing list, then please send it
-to perl5-security-report@perl.org.  This points to a closed subscription
-unarchived mailing list, which includes all the core committers, who will be
-able to help assess the impact of issues, figure out a resolution, and help
-co-ordinate the release of patches to mitigate or fix the problem across all
-platforms on which Perl is supported.  Please only use this address for
-security issues in the Perl core, not for modules independently distributed on
-CPAN.
-
-=head1 SEE ALSO
-
-The F<Changes> file for an explanation of how to view exhaustive details on
-what changed.
-
-The F<INSTALL> file for how to build Perl.
-
-The F<README> file for general stuff.
-
-The F<Artistic> and F<Copying> files for copyright information.
-
-=cut
diff --git a/pod/perl5237delta.pod b/pod/perl5237delta.pod
deleted file mode 100644 (file)
index 2f960f5..0000000
+++ /dev/null
@@ -1,438 +0,0 @@
-=encoding utf8
-
-=head1 NAME
-
-perl5237delta - what is new for perl v5.23.7
-
-=head1 DESCRIPTION
-
-This document describes differences between the 5.23.6 release and the 5.23.7
-release.
-
-If you are upgrading from an earlier release such as 5.23.5, first read
-L<perl5236delta>, which describes differences between 5.23.5 and 5.23.6.
-
-=head1 Core Enhancements
-
-=head2 New C<\b{lb}> boundary in regular expressions
-
-C<lb> stands for Line Break.  It is a Unicode property
-that determines where a line of text is suitable to break (typically so
-that it can be output without overflowing the available horizontal
-space).  This capability has long been furnished by the
-L<Unicode::LineBreak> module, but now a light-weight, non-customizable
-version that is suitable for many purposes is in core Perl.
-
-=head1 Security
-
-=head2 fix out of boundary access in Win32 path handling
-
-This is CVE-2015-8608.  For more information see
-L<[perl #126755]|https://rt.perl.org/Ticket/Display.html?id=126755>
-
-=head2 fix loss of taint in canonpath
-
-This is CVE-2015-8607.  For more information see
-L<[perl #126862]|https://rt.perl.org/Ticket/Display.html?id=126862>
-
-=head2 Avoid accessing uninitialized memory in win32 C<crypt()>
-
-Added validation that will detect both a short salt and invalid characters
-in the salt.  L<[perl #126922]|https://rt.perl.org/Ticket/Display.html?id=126922>
-
-=head1 Incompatible Changes
-
-=head2 C<qr/\b{wb}/> is now tailored to Perl expectations
-
-This is now more suited to be a drop-in replacement for plain C<\b>, but
-giving better results for parsing natural language.  Previously it
-strictly followed the current Unicode rules which calls for it to match
-between each white space character.  Now it doesn't generally match
-within spans of white space, behaving like C<\b> does.  See
-L<perlrebackslash/\b{wb}>
-
-=head1 Modules and Pragmata
-
-=head2 Updated Modules and Pragmata
-
-=over 4
-
-=item *
-
-The F<cpan/podlators/> bundle has been upgraded from version 2.28 to 4.04.
-
-=item *
-
-L<B> has been upgraded from version 1.61 to 1.62.
-
-=item *
-
-L<B::Deparse> has been upgraded from version 1.36 to 1.37.
-
-=item *
-
-L<Benchmark> has been upgraded from version 1.21 to 1.22.
-
-=item *
-
-L<bignum> has been upgraded from version 0.41 to 0.42.
-
-=item *
-
-L<Data::Dumper> has been upgraded from version 2.159 to 2.160.
-
-=item *
-
-L<ExtUtils::ParseXS> has been upgraded from version 3.30 to 3.31.
-
-=item *
-
-L<ExtUtils::Typemaps> has been upgraded from version 3.30 to 3.31.
-
-=item *
-
-L<File::Find> has been upgraded from version 1.32 to 1.33.
-
-=item *
-
-L<File::Spec> has been upgraded from version 3.60 to 3.62.
-
-=item *
-
-L<Math::BigInt> has been upgraded from version 1.999710 to 1.999715.
-
-=item *
-
-L<Math::BigInt::FastCalc> has been upgraded from version 0.38 to 0.40.
-
-=item *
-
-L<Math::BigRat> has been upgraded from version 0.260801 to 0.260802.
-
-=item *
-
-L<Module::CoreList> has been upgraded from version 5.20151220 to 5.20160120.
-
-=item *
-
-L<Pod::Usage> has been upgraded from version 1.67 to 1.68.
-
-=item *
-
-L<Test::Harness> has been upgraded from version 3.35 to 3.36.
-
-=item *
-
-L<Unicode::Normalize> has been upgraded from version 1.24 to 1.25.
-
-=item *
-
-L<Unicode::UCD> has been upgraded from version 0.63 to 0.64.
-
-=item *
-
-L<utf8> has been upgraded from version 1.18 to 1.19.
-
-=back
-
-=head1 Documentation
-
-=head2 Changes to Existing Documentation
-
-=head3 L<perlsyn>
-
-=over 4
-
-=item *
-
-Fixed a broken example where C<=> was used instead of
-C<==> in conditional in do/while example.
-
-=back
-
-=head3 L<perlfunc>
-
-=over 4
-
-=item *
-
-Better explain meaning of negative PIDs in C<waitpid>.
-L<[perl #127080]|https://rt.perl.org/Ticket/Display.html?id=127080>
-
-=back
-
-=head3 L<perlgit>
-
-=over 4
-
-=item *
-
-Move sample commands into verbatim paragraphs.
-
-=item *
-
-Improve hyperlinks for all email addresses, RT tickets
-and commit hashes.
-
-=item *
-
-Consistently refer to bisect.pl as F<Porting/bisect.pl>
-
-=item *
-
-Miscellaneous grammar and POD fixes.
-
-=back
-
-=head3 L<perlreftut>
-
-=over 4
-
-=item *
-
-Fix some examples to be L<strict> clean.
-
-=back
-
-=head3 L<perlrebackslash>
-
-=over 4
-
-=item *
-
-Clarify that in languages like Japanese and Thai, dictionary lookup
-is required to determine word boundaries.
-
-=back
-
-=head1 Diagnostics
-
-The following additions or changes have been made to diagnostic output,
-including warnings and fatal error messages.  For the complete list of
-diagnostic messages, see L<perldiag>.
-
-=head2 Changes to Existing Diagnostics
-
-=over 4
-
-=item *
-
-Accessing the C<IO> part of a glob as C<FILEHANDLE> instead of C<IO> is no
-longer deprecated.  It is discouraged to encourage uniformity (so that, for
-example, one can grep more easily) but it will not be removed.
-L<[perl #127060]|https://rt.perl.org/Ticket/Display.html?id=127060>
-
-=back
-
-=head1 Configuration and Compilation
-
-=over 4
-
-=item *
-
-F<Configure> no longer probes for F<libnm> by default.  Originally
-this was the "New Math" library, but the name has been re-used by the
-GNOME NetworkManager.
-L<[perl #127131]|https://rt.perl.org/Ticket/Display.html?id=127131>
-
-=item *
-
-No longer generate EBCDIC POSIX-BC tables.  We don't believe anyone is
-using Perl and POSIX-BC at this time, and by not generating these tables
-it saves time during development, and makes the resulting tar ball smaller.
-
-=item *
-
-The Win32 miniperl now has a real C<getcwd> which increases build performance
-resulting in C<getcwd()> being 605x faster in Win32 miniperl.
-
-=back
-
-=head1 Platform Support
-
-=head2 Platform-Specific Notes
-
-=over 4
-
-=item *
-
-On VMS, the math function prototypes in C<math.h> are now visible under C++.
-Now building the POSIX extension with C++ will no longer crash.
-
-=item *
-
-VMS has had C<setenv/unsetenv> since v7.0 (released in 1996), C<Perl_vmssetenv>
-now always uses C<setenv/unsetenv>.
-
-=item *
-
-Try more crypt algorithms in the tests, for OpenBSD. OpenBSD implements the
-Blowfish algorithm, but not the MD5 one used by C<glibc>. Enhance the crypt and
-taint tests to try both algorithms. If neither works, fall back to no algorithm.
-The Blowfish salt is taken from the OpenBSD C<crypt(3)> page.
-
-=item *
-
-Use the C<fdclose()> function from FreeBSD if it is available.
-L<[perl #126847]|https://rt.perl.org/Ticket/Display.html?id=126847>
-
-=back
-
-=head1 Internal Changes
-
-=over 4
-
-=item *
-
-The obscure C<PL_timesbuf> variable, effectively a vestige of Perl 1, has
-been removed. It was documented as deprecated in Perl 5.20, with a statement
-that it would be removed early in the 5.21.x series; that has now finally
-happened.
-L<[perl #121351]|https://rt.perl.org/Ticket/Display.html?id=121351>
-
-=item *
-
-Remove unwarranted assertion in C<Perl_newATTRSUB_x()>. If a stub subroutine
-definition with a prototype has been seen, then any subsequent stub (or
-definition) of the same subroutine with an attribute was causing an assertion
-failure because of a null pointer.
-L<[perl #126845]|https://rt.perl.org/Ticket/Display.html?id=126845>
-
-=item *
-
-Replace C<::> with C<__> in C<ExtUtils::ParseXS> like it's done for
-parameters/return values. This is more consistent, and simplifies writing XS
-code wrapping C++ classes into a nested Perl namespace (it requires only
-a typedef for C<Foo__Bar> rather than two, one for C<Foo_Bar> and the other
-for C<Foo::Bar>).
-
-=item *
-
-Deprecate the C<to_utf8_case()> function, see
-L<http://nntp.perl.org/group/perl.perl5.porters/233287>.
-
-=back
-
-=head1 Selected Bug Fixes
-
-=over 4
-
-=item *
-
-A regression that allowed undeclared barewords in hash keys to work despite
-strictures has been fixed.
-L<[perl #126981]|https://rt.perl.org/Ticket/Display.html?id=126981>
-
-=item *
-
-Calls to the placeholder C<&PL_sv_yes> used internally when an C<import()>
-or C<unimport()> method isn't found now correctly handle scalar context.
-L<[perl #126042]|https://rt.perl.org/Ticket/Display.html?id=126042>
-
-=item *
-
-Fixed some problems introduced in 5.23.2 with list assignment dealing
-with magic and XS functions returning their arguments.
-L<[perl #126633]|https://rt.perl.org/Ticket/Display.html?id=126633>
-
-=item *
-
-Report more context when we see an array where we expect to see an
-operator and avoid an assertion failure.
-L<[perl #123737]|https://rt.perl.org/Ticket/Display.html?id=123737>
-
-=item *
-
-Modifying an array that was previously a package C<@ISA> no longer
-causes assertion failures or crashes.
-L<[perl #123788]|https://rt.perl.org/Ticket/Display.html?id=123788>
-
-=item *
-
-Retain binary compatibility across plain and DEBUGGING perl builds.
-L<[perl #127212]|https://rt.perl.org/Ticket/Display.html?id=127212>
-
-=item *
-
-Avoid leaking memory when setting C<$ENV{foo}> on darwin.
-L<[perl #126240]|https://rt.perl.org/Ticket/Display.html?id=126240>
-
-=back
-
-=head1 Known Problems
-
-=over 4
-
-=item *
-
-Statically building perl is not currently working due to a problem
-related to multiple definitions of the C<cp1252_encoding> in the
-C<Encode> module.
-
-=back
-
-=head1 Acknowledgements
-
-Perl 5.23.7 represents approximately 4 weeks of development since Perl 5.23.6
-and contains approximately 87,000 lines of changes across 450 files from 21
-authors.
-
-Excluding auto-generated files, documentation and release tools, there were
-approximately 67,000 lines of changes to 320 .pm, .t, .c and .h files.
-
-Perl continues to flourish into its third decade thanks to a vibrant community
-of users and developers. The following people are known to have contributed the
-improvements that became Perl 5.23.7:
-
-Aaron Crane, Andreas König, Andy Dougherty, Chris 'BinGOs' Williams, Craig A.
-Berry, Dagfinn Ilmari MannsÃ¥ker, Daniel Dragan, David Golden, David Mitchell,
-James E Keenan, Jarkko Hietaniemi, Karen Etheridge, Karl Williamson, Lukas Mai,
-Mattia Barbon, Ricardo Signes, Stevan Little, Steve Hay, Todd Rinaldo, Tom
-Hukins, Tony Cook.
-
-The list above is almost certainly incomplete as it is automatically generated
-from version control history. In particular, it does not include the names of
-the (very much appreciated) contributors who reported issues to the Perl bug
-tracker.
-
-Many of the changes included in this version originated in the CPAN modules
-included in Perl's core. We're grateful to the entire CPAN community for
-helping Perl to flourish.
-
-For a more complete list of all of Perl's historical contributors, please see
-the F<AUTHORS> file in the Perl source distribution.
-
-=head1 Reporting Bugs
-
-If you find what you think is a bug, you might check the articles recently
-posted to the comp.lang.perl.misc newsgroup and the perl bug database at
-L<https://rt.perl.org/> .  There may also be information at
-L<http://www.perl.org/> , the Perl Home Page.
-
-If you believe you have an unreported bug, please run the L<perlbug> program
-included with your release.  Be sure to trim your bug down to a tiny but
-sufficient test case.  Your bug report, along with the output of C<perl -V>,
-will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
-
-If the bug you are reporting has security implications, which make it
-inappropriate to send to a publicly archived mailing list, then please send it
-to perl5-security-report@perl.org.  This points to a closed subscription
-unarchived mailing list, which includes all the core committers, who will be
-able to help assess the impact of issues, figure out a resolution, and help
-co-ordinate the release of patches to mitigate or fix the problem across all
-platforms on which Perl is supported.  Please only use this address for
-security issues in the Perl core, not for modules independently distributed on
-CPAN.
-
-=head1 SEE ALSO
-
-The F<Changes> file for an explanation of how to view exhaustive details on
-what changed.
-
-The F<INSTALL> file for how to build Perl.
-
-The F<README> file for general stuff.
-
-The F<Artistic> and F<Copying> files for copyright information.
-
-=cut
diff --git a/pod/perl5238delta.pod b/pod/perl5238delta.pod
deleted file mode 100644 (file)
index aade38a..0000000
+++ /dev/null
@@ -1,525 +0,0 @@
-=encoding utf8
-
-=head1 NAME
-
-perl5238delta - what is new for perl v5.23.8
-
-=head1 DESCRIPTION
-
-This document describes differences between the 5.23.7 release and the 5.23.8
-release.
-
-If you are upgrading from an earlier release such as 5.23.6, first read
-L<perl5237delta>, which describes differences between 5.23.6 and 5.23.7.
-
-=head1 Core Enhancements
-
-=head2 More fields provided to C<sigaction> callback with C<SA_SIGINFO>
-
-When passing the C<SA_SIGINFO> flag to L<sigaction|POSIX/sigaction>, the
-C<errno>, C<status>, C<uid>, C<pid>, C<addr> and C<band> fields are now
-included in the hash passed to the handler, if supported by the
-platform.
-
-=head1 Security
-
-=head2 Set proper umask before calling C<mkstemp(3)>
-
-In 5.22 perl started setting umask to 0600 before calling C<mkstemp(3)>
-and restoring it afterwards. This wrongfully tells open(2) to strip
-the owner read and write bits from the given mode before applying it,
-rather than the intended negation of leaving only those bits in place.
-
-Systems that use mode 0666 in C<mkstemp(3)> (like old versions of
-glibc) create a file with permissions 0066, leaving world read and
-write permissions regardless of current umask.
-
-This has been fixed by using umask 0177 instead. [perl #127322]
-
-=head1 Incompatible Changes
-
-=head2 C<qr/\N{}/> now disallowed under C<use re "strict">
-
-An empty C<\N{}> makes no sense, but for backwards compatibility is
-silently accepted as doing nothing.  But now this is a fatal error under
-the experimental feature L<re/'strict' mode>.
-
-=head1 Performance Enhancements
-
-=over 4
-
-=item *
-
-The overhead of scope entry and exit has been considerably reduced, so
-for example subroutine calls, loops and basic blocks are all faster now.
-This empty function call now takes about a third less time to execute:
-
-    sub f{} f();
-
-=item *
-
-On Win32, C<stat>ing or C<-X>ing a path, if the file or directory does not
-exist, is now 3.5x faster on a SSD (or any drive) than before.
-
-=back
-
-=head1 Modules and Pragmata
-
-=head2 Updated Modules and Pragmata
-
-=over 4
-
-=item *
-
-F<cpan/podlators/> has been upgraded from version 4.04 to 4.06.
-
-=item *
-
-The PathTools module collection has been upgraded from version 3.62
-to 3.63.
-
-=item *
-
-L<DynaLoader> has been upgraded from version 1.37 to 1.38.
-
-DynaLoader now always looks for bootstrap files having the same base name as
-the module for which the bootstrap code is being run. Previously, and only on
-platforms that use C<mod2fname> to produce unique loadable library names,
-L<DynaLoader> would look for the bootstrap file using a base name that matched
-the loadable library and not find it.
-
-=item *
-
-L<Encode> has been upgraded from version 2.78 to 2.80.
-
-=item *
-
-L<ExtUtils::CBuilder> has been upgraded from version 0.280224 to 0.280225.
-
-=item *
-
-L<ExtUtils::MakeMaker> has been upgraded from version 7.10 to 7.10_01.
-
-=item *
-
-L<File::Spec> has been upgraded from version 3.62 to 3.63.
-
-=item *
-
-L<IPC::SysV> has been upgraded from version 2.04 to 2.05.
-
-=item *
-
-L<Module::CoreList> has been upgraded from version 5.20160120 to 5.20160121.
-
-=item *
-
-L<ODBM_File> has been upgraded from version 1.12 to 1.13.
-
-=item *
-
-L<PerlIO::encoding> has been upgraded from version 0.23 to 0.24.
-
-=item *
-
-L<POSIX> has been upgraded from version 1.59 to 1.63.
-
-It can now export constants for the C<code> value in the hash passed to the
-L<sigaction|POSIX/sigaction> handler when using the C<SA_SIGINFO> flag.
-
-These previously deprecated functions are now removed: C<isalnum>,
-C<isalpha>, C<iscntrl>, C<isdigit>, C<isgraph>, C<islower>, C<isprint>,
-C<ispunct>, C<isspace>, C<isupper>, and C<isxdigit>.
-
-=item *
-
-L<Storable> has been upgraded from version 2.54 to 2.55.
-
-=item *
-
-L<Time::HiRes> has been upgraded from version 1.9728 to 1.9730.
-
-It can now export Linux-specific and FreeBSD-specific C<clock_gettime()>
-constants. It also now has emulation for OS X C<clock_nanosleep()>,
-C<clock_gettime()>, and C<clock_getres()>.
-
-=back
-
-=head1 Documentation
-
-=head2 Changes to Existing Documentation
-
-=head3 L<perlguts>
-
-=over 4
-
-=item *
-
-A new section has been added, L<perlguts/"Dynamic Scope and the Context
-Stack">, which explains how the perl context stack works.
-
-=back
-
-=head3 L<perlmodlib>
-
-=over 4
-
-=item *
-
-We now recommend contacting the module-authors list or PAUSE in seeking
-guidance on the naming of modules.
-
-=back
-
-=head1 Diagnostics
-
-The following additions or changes have been made to diagnostic output,
-including warnings and fatal error messages.  For the complete list of
-diagnostic messages, see L<perldiag>.
-
-=head2 New Diagnostics
-
-=head3 New Errors
-
-=over 4
-
-=item *
-
-L<<< Sequence (?PE<lt>... not terminated in regex; marked by E<lt>-- HERE in mE<sol>%sE<sol>
-|perldiag/"Sequence (?PE<lt>... not terminated in regex; marked by <-- HERE in mE<sol>%sE<sol>" >>>
-
-=item *
-
-L<Sequence (?PE<gt>... not terminated in regex; marked by E<lt>-- HERE in mE<sol>%sE<sol>
-|perldiag/"Sequence (?PE<gt>... not terminated in regex; marked by <-- HERE in mE<sol>%sE<sol>">
-
-=item *
-
-L<Empty \%c in regex; marked by E<lt>-- HERE in mE<sol>%sE<sol>
-|perldiag/"Empty \%c in regex; marked by <-- HERE in mE<sol>%sE<sol>">
-
-=back
-
-=head3 New Warnings
-
-=over 4
-
-=item *
-
-L<Assuming NOT a POSIX class since %s in regex; marked by E<lt>-- HERE in mE<sol>%sE<sol>|
-perldiag/Assuming NOT a POSIX class since %s in regex; marked by <-- HERE in mE<sol>%sE<sol>>
-
-=back
-
-=head1 Configuration and Compilation
-
-=over 4
-
-=item *
-
-The GNU Make makefile for Win32 now supports parallel builds.  [perl #126632]
-
-=item *
-
-You can now build perl with MSVC++ on Win32 using GNU Make.  [perl #126632]
-
-=item *
-
-Bison 3.0 is now supported.
-
-=back
-
-=head1 Platform Support
-
-=head2 Platform-Specific Notes
-
-=over 4
-
-=item VMS
-
-=over
-
-=item *
-
-For those C<%ENV> elements based on the CRTL environ array, we've always
-preserved case when setting them but did look-ups only after upcasing the
-key first, which made lower- or mixed-case entries go missing. This problem
-has been corrected by making C<%ENV> elements derived from the environ array
-case-sensitive on look-up as well as case-preserving on store.
-
-=item *
-
-Environment look-ups for C<PERL5LIB> and C<PERLLIB> previously only
-considered logical names, but now consider all sources of C<%ENV> as
-determined by C<PERL_ENV_TABLES> and as documented in L<perlvms/%ENV>.
-
-=back
-
-=item Win32
-
-Builds using Microsoft Visual C++ 2003 and earlier no longer produce
-an "INTERNAL COMPILER ERROR" message.  [perl #126045]
-
-=back
-
-=head1 Internal Changes
-
-=over 4
-
-=item *
-
-The implementation of perl's context stack system, and its internal API,
-have been heavily reworked. Note that no significant changes have been
-made to any external APIs, but XS code which relies on such internal
-details may need to be fixed. The main changes are:
-
-=over 4
-
-=item *
-
-The C<PUSHBLOCK()>, C<POPSUB()> etc. macros have been replaced with static
-inline functions such as C<cx_pushblock()>, C<cx_popsub()> etc. These use
-function args rather than implicitly relying on local vars such as
-C<gimme> and C<newsp> being available. Also their functionality has
-changed: in particular, C<cx_popblock()> no longer decrements
-C<cxstack_ix>. The ordering of the steps in the C<pp_leave*> functions
-involving C<cx_popblock()>, C<cx_popsub()> etc. has changed. See the new
-documentation, L<perlguts/"Dynamic Scope and the Context Stack">, for
-details on how to use them.
-
-=item *
-
-Various macros, which now consistently have a CX_ prefix, have been added:
-
-  CX_CUR(), CX_LEAVE_SCOPE(), CX_POP()
-
-or renamed:
-
-  CX_POP_SAVEARRAY(), CX_DEBUG(), CX_PUSHSUBST(), CX_POPSUBST()
-
-=item *
-
-C<cx_pushblock()> now saves C<PL_savestack_ix> and C<PL_tmps_floor>, so
-C<pp_enter*> and C<pp_leave*> no longer do
-
-  ENTER; SAVETMPS; ....; LEAVE
-
-=item *
-
-C<cx_popblock()> now also restores C<PL_curpm>.
-
-=item *
-
-In C<dounwind()> for every context type, the current savestack frame is
-now processed before each context is popped; formerly this was only done
-for sub-like context frames. This action has been removed from
-C<cx_popsub()> and placed into its own macro, C<CX_LEAVE_SCOPE(cx)>, which
-must be called before C<cx_popsub()> etc.
-
-C<dounwind()> now also does a C<cx_popblock()> on the last popped frame
-(formerly it only did the C<cx_popsub()> etc. actions on each frame).
-
-=item *
-
-The temps stack is now freed on scope exit; previously, temps created
-during the last statement of a block wouldn't be freed until the next
-C<nextstate> following the block (apart from an existing hack that did
-this for recursive subs in scalar context); and in something like
-C<f(g())>, the temps created by the last statement in C<g()> would
-formerly not be freed until the statement following the return from
-C<f()>.
-
-=item *
-
-Most values that were saved on the savestack on scope entry are now
-saved in suitable new fields in the context struct, and saved and
-restored directly by C<cx_pushfoo()> and C<cx_popfoo()>, which is much
-faster.
-
-=item *
-
-Various context struct fields have been added, removed or modified.
-
-=item *
-
-The handling of C<@_> in C<cx_pushsub()> and C<cx_popsub()> has been
-considerably tidied up, including removing the C<argarray> field from the
-context struct, and extracting out some common (but rarely used) code into
-a separate function, C<clear_defarray()>. Also, useful subsets of
-C<cx_popsub()> which had been unrolled in places like C<pp_goto> have been
-gathered into the new functions C<cx_popsub_args()> and
-C<cx_popsub_common()>.
-
-=item *
-
-C<pp_leavesub> and C<pp_leavesublv> now use the same function as the rest
-of the C<pp_leave*>'s to process return args.
-
-=item *
-
-C<CXp_FOR_PAD> and C<CXp_FOR_GV> flags have been added, and
-C<CXt_LOOP_FOR> has been split into C<CXt_LOOP_LIST>, C<CXt_LOOP_ARY>.
-
-=item *
-
-Some variables formerly declared by C<dMULTICALL> (but not documented) have
-been removed.
-
-=back
-
-=back
-
-=head1 Selected Bug Fixes
-
-=over 4
-
-=item *
-
-Line numbers larger than 2**31-1 but less than 2**32 are no longer
-returned by caller() as negative numbers.  [perl #126991]
-
-=item *
-
-C<< unless ( I<assignment> ) >> now properly warns when syntax
-warnings are enabled.  [perl #127122]
-
-=item *
-
-Setting an C<ISA> glob to an array reference now properly adds
-C<isaelem> magic to any existing elements.  Previously modifying such
-an element would not update the ISA cache, so method calls would call
-the wrong function.  Perl would also crash if the C<ISA> glob was
-destroyed, since new code added in 5.23.7 would try to release the
-C<isaelem> magic from the elements.  [perl #127351]
-
-=item *
-
-If a here-doc was found while parsing another operator, the parser had
-already read end of file, and the here-doc was not terminated, perl
-could produce an assertion or a segmentation fault.  This now reliably
-complains about the unterminated here-doc.  [perl #125540]
-
-=item *
-
-untie() would sometimes return the last value returned by the UNTIE()
-handler as well as it's normal value, messing up the stack.  [perl
-#126621]
-
-=item *
-
-Fixed an operator precedence problem when C< castflags & 2> is true.
-[perl #127474]
-
-=item *
-
-Caching of DESTROY methods could result in a non-pointer or a
-non-STASH stored in the SvSTASH() slot of a stash, breaking the B
-STASH() method.  The DESTROY method is now cached in the MRO metadata
-for the stash.  [perl #126410]
-
-=item *
-
-The AUTOLOAD method is now called when searching for a DESTROY method,
-and correctly sets C<$AUTOLOAD> too.  [perl #124387]  [perl #127494]
-
-=item *
-
-Avoid parsing beyond the end of the buffer when processing a C<#line>
-directive with no filename.  [perl #127334]
-
-=item *
-
-Perl now raises a warning when a regular expression pattern looks like
-it was supposed to contain a POSIX class, like C<qr/[[:alpha:]]/>, but
-there was some slight defect in its specification which causes it to
-instead be treated as a regular bracketed character class.  An example
-would be missing the second colon in the above like this:
-C<qr/[[:alpha]]/>.  This compiles to match a sequence of two characters.
-The second is C<"]">, and the first is any of: C<"[">, C<":">, C<"a">,
-C<"h">, C<"l">, or C<"p">.   This is unlikely to be the intended
-meaning, and now a warning is raised.  No warning is raised unless the
-specification is very close to one of the 14 legal POSIX classes.  (See
-L<perlrecharclass/POSIX Character Classes>.)
-[perl #8904]
-
-=item *
-
-Certain regex patterns involving a complemented POSIX class in an
-inverted bracketed character class, and matching something else
-optionally would improperly fail to match.  An example of one that could
-fail is C</qr/_?[^\Wbar]\x{100}/>.  This has been fixed.
-[perl #127537]
-
-=item *
-
-Perl 5.22 added support to the C99 hexadecimal floating point notation,
-but sometimes misparses hex floats. This had been fixed.
-[perl #127183]
-
-=back
-
-=head1 Acknowledgements
-
-Perl 5.23.8 represents approximately 4 weeks of development since Perl 5.23.7
-and contains approximately 30,000 lines of changes across 350 files from 23
-authors.
-
-Excluding auto-generated files, documentation and release tools, there were
-approximately 14,000 lines of changes to 210 .pm, .t, .c and .h files.
-
-Perl continues to flourish into its third decade thanks to a vibrant community
-of users and developers. The following people are known to have contributed the
-improvements that became Perl 5.23.8:
-
-Aaron Crane, Chris 'BinGOs' Williams, Craig A. Berry, Dagfinn Ilmari
-MannsÃ¥ker, Daniel Dragan, David Mitchell, Ed J, Herbert Breunung, H.Merijn
-Brand, James E Keenan, Jarkko Hietaniemi, Karl Williamson, Lukas Mai, Niko
-Tyni, Pip Cet, Ricardo Signes, Sawyer X, Sisyphus, Stevan Little, Steve Hay,
-Todd Rinaldo, Tom Hukins, Tony Cook.
-
-The list above is almost certainly incomplete as it is automatically generated
-from version control history. In particular, it does not include the names of
-the (very much appreciated) contributors who reported issues to the Perl bug
-tracker.
-
-Many of the changes included in this version originated in the CPAN modules
-included in Perl's core. We're grateful to the entire CPAN community for
-helping Perl to flourish.
-
-For a more complete list of all of Perl's historical contributors, please see
-the F<AUTHORS> file in the Perl source distribution.
-
-=head1 Reporting Bugs
-
-If you find what you think is a bug, you might check the articles recently
-posted to the comp.lang.perl.misc newsgroup and the perl bug database at
-L<https://rt.perl.org/> .  There may also be information at
-L<http://www.perl.org/> , the Perl Home Page.
-
-If you believe you have an unreported bug, please run the L<perlbug> program
-included with your release.  Be sure to trim your bug down to a tiny but
-sufficient test case.  Your bug report, along with the output of C<perl -V>,
-will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
-
-If the bug you are reporting has security implications, which make it
-inappropriate to send to a publicly archived mailing list, then please send it
-to perl5-security-report@perl.org.  This points to a closed subscription
-unarchived mailing list, which includes all the core committers, who will be
-able to help assess the impact of issues, figure out a resolution, and help
-co-ordinate the release of patches to mitigate or fix the problem across all
-platforms on which Perl is supported.  Please only use this address for
-security issues in the Perl core, not for modules independently distributed on
-CPAN.
-
-=head1 SEE ALSO
-
-The F<Changes> file for an explanation of how to view exhaustive details on
-what changed.
-
-The F<INSTALL> file for how to build Perl.
-
-The F<README> file for general stuff.
-
-The F<Artistic> and F<Copying> files for copyright information.
-
-=cut
index ce241e6..9a86066 100644 (file)
@@ -2,18 +2,29 @@
 
 =head1 NAME
 
-perldelta - what is new for perl v5.23.9
+perldelta - what is new for perl v5.24.0
 
 =head1 DESCRIPTION
 
-This document describes differences between the 5.23.8 release and the 5.23.9
-release.
-
-If you are upgrading from an earlier release such as 5.23.7, first read
-L<perl5238delta>, which describes differences between 5.23.7 and 5.23.8.
+This document describes the differences between the 5.22.0 release and the
+5.24.0 release.
 
 =head1 Core Enhancements
 
+=head2 Postfix dereferencing is no longer experimental
+
+Using the C<postderef> and C<postderef_qq> features no longer emits a
+warning. Existing code that disables the C<experimental::postderef> warning
+category that they previously used will continue to work. The C<postderef>
+feature has no effect; all Perl code can use postfix dereferencing,
+regardless of what feature declarations are in scope. The C<5.24> feature
+bundle now includes the C<postderef_qq> feature.
+
+=head2 Unicode 8.0 is now supported
+
+For details on what is in this release, see
+L<http://www.unicode.org/versions/Unicode8.0.0/>.
+
 =head2 perl will now croak when closing an in-place output file fails
 
 Until now, failure to close the output file for an in-place edit was not
@@ -21,8 +32,104 @@ detected, meaning that the input file could be clobbered without the edit being
 successfully completed.  Now, when the output file cannot be closed
 successfully, an exception is raised.
 
+=head2 New C<\b{lb}> boundary in regular expressions
+
+C<lb> stands for Line Break.  It is a Unicode property
+that determines where a line of text is suitable to break (typically so
+that it can be output without overflowing the available horizontal
+space).  This capability has long been furnished by the
+L<Unicode::LineBreak> module, but now a light-weight, non-customizable
+version that is suitable for many purposes is in core Perl.
+
+=head2 C<qr/(?[ ])/> now works in UTF-8 locales
+
+L<Extended Bracketed Character Classes|perlrecharclass/Extended Bracketed Character Classes>
+now will successfully compile when S<C<use locale>> is in effect.  The compiled
+pattern will use standard Unicode rules.  If the runtime locale is not a
+UTF-8 one, a warning is raised and standard Unicode rules are used
+anyway.  No tainting is done since the outcome does not actually depend
+on the locale.
+
+=head2 Integer shift (C<< << >> and C<< >> >>) now more explicitly defined
+
+Negative shifts are reverse shifts: left shift becomes right shift,
+and right shift becomes left shift.
+
+Shifting by the number of bits in a native integer (or more) is zero,
+except when the "overshift" is right shifting a negative value under
+C<use integer>, in which case the result is -1 (arithmetic shift).
+
+Until now negative shifting and overshifting have been undefined
+because they have relied on whatever the C implementation happens
+to do.  For example, for the overshift a common C behavior is
+"modulo shift":
+
+  1 >> 64 == 1 >> (64 % 64) == 1 >> 0 == 1  # Common C behavior.
+
+  # And the same for <<, while Perl now produces 0 for both.
+
+Now these behaviors are well-defined under Perl, regardless of what
+the underlying C implementation does.  Note, however, that you are still
+constrained by the native integer width: you need to know how far left you
+can go.  You can use for example:
+
+  use Config;
+  my $wordbits = $Config{uvsize} * 8;  # Or $Config{uvsize} << 3.
+
+If you need a more bits on the left shift, you can use for example
+the C<bigint> pragma, or the C<Bit::Vector> module from CPAN.
+
+=head2 printf and sprintf now allow reordered precision arguments
+
+That is, C<< sprintf '|%.*2$d|', 2, 3 >> now returns C<|002|>. This extends
+the existing reordering mechanism (which allows reordering for arguments
+that are used as format fields, widths, and vector separators).
+
+=head2 More fields provided to C<sigaction> callback with C<SA_SIGINFO>
+
+When passing the C<SA_SIGINFO> flag to L<sigaction|POSIX/sigaction>, the
+C<errno>, C<status>, C<uid>, C<pid>, C<addr> and C<band> fields are now
+included in the hash passed to the handler, if supported by the
+platform.
+
+=head2 Hashbang redirection to Perl 6
+
+Previously perl would redirect to another interpreter if it found a
+hashbang path unless the path contains "perl" (see L<perlrun>). To improve
+compatability with Perl 6 this behavior has been extended to also redirect
+if "perl" is followed by "6".
+
 =head1 Security
 
+=head2 Set proper umask before calling C<mkstemp(3)>
+
+In 5.22 perl started setting umask to 0600 before calling C<mkstemp(3)>
+and restoring it afterwards. This wrongfully tells C<open(2)> to strip
+the owner read and write bits from the given mode before applying it,
+rather than the intended negation of leaving only those bits in place.
+
+Systems that use mode 0666 in C<mkstemp(3)> (like old versions of
+glibc) create a file with permissions 0066, leaving world read and
+write permissions regardless of current umask.
+
+This has been fixed by using umask 0177 instead. [perl #127322]
+
+=head2 Fix out of boundary access in Win32 path handling
+
+This is CVE-2015-8608.  For more information see
+L<[perl #126755]|https://rt.perl.org/Ticket/Display.html?id=126755>
+
+=head2 Fix loss of taint in canonpath
+
+This is CVE-2015-8607.  For more information see
+L<[perl #126862]|https://rt.perl.org/Ticket/Display.html?id=126862>
+
+=head2 Avoid accessing uninitialized memory in win32 C<crypt()>
+
+Added validation that will detect both a short salt and invalid characters
+in the salt.
+L<[perl #126922]|https://rt.perl.org/Ticket/Display.html?id=126922>
+
 =head2 Remove duplicate environment variables from C<environ>
 
 Previously, if an environment variable appeared more than once in
@@ -31,19 +138,242 @@ while a typical C<getenv()> would return the first entry. We now
 make sure C<%ENV> contains the same as what C<getenv> returns.
 
 Second, we remove duplicates from C<environ[]>, so if a setting
-with that name is set in C<%ENV> we won't pass an unsafe value
+with that name is set in C<%ENV>, we won't pass an unsafe value
 to a child process.
 
 [CVE-2016-2381]
 
+=head1 Incompatible Changes
+
+=head2 The C<autoderef> feature has been removed
+
+The experimental C<autoderef> feature (which allowed calling C<push>,
+C<pop>, C<shift>, C<unshift>, C<splice>, C<keys>, C<values>, and C<each> on
+a scalar argument) has been deemed unsuccessful. It has now been removed;
+trying to use the feature (or to disable the C<experimental::autoderef>
+warning it previously triggered) now yields an exception.
+
+=head2 Lexical $_ has been removed
+
+C<my $_> was introduced in Perl 5.10, and subsequently caused much confusion
+with no obvious solution.  In Perl 5.18.0, it was made experimental on the
+theory that it would either be removed or redesigned in a less confusing (but
+backward-incompatible) way.  Over the following years, no alternatives were
+proposed.  The feature has now been removed and will fail to compile.
+
+=head2 C<qr/\b{wb}/> is now tailored to Perl expectations
+
+This is now more suited to be a drop-in replacement for plain C<\b>, but
+giving better results for parsing natural language.  Previously it
+strictly followed the current Unicode rules which calls for it to match
+between each white space character.  Now it doesn't generally match
+within spans of white space, behaving like C<\b> does.  See
+L<perlrebackslash/\b{wb}>
+
+=head2 Regular expression compilation errors
+
+Some regular expression patterns that had runtime errors now
+don't compile at all.
+
+Almost all Unicode properties using the C<\p{}> and C<\P{}> regular
+expression pattern constructs are now checked for validity at pattern
+compilation time, and invalid ones will cause the program to not
+compile.  In earlier releases, this check was often deferred until run
+time.  Whenever an error check is moved from run- to compile time,
+erroneous code is caught 100% of the time, whereas before it would only
+get caught if and when the offending portion actually gets executed,
+which for unreachable code might be never.
+
+=head2 C<qr/\N{}/> now disallowed under C<use re "strict">
+
+An empty C<\N{}> makes no sense, but for backwards compatibility is
+accepted as doing nothing, though a deprecation warning is raised by
+default.  But now this is a fatal error under the experimental feature
+L<re/'strict' mode>.
+
+=head2 Nested declarations are now disallowed
+
+A C<my>, C<our>, or C<state> declaration is no longer allowed inside
+of another C<my>, C<our>, or C<state> declaration.
+
+For example, these are now fatal:
+
+   my ($x, my($y));
+   our (my $x);
+
+L<[perl #125587]|https://rt.perl.org/Ticket/Display.html?id=125587>
+
+L<[perl #121058]|https://rt.perl.org/Ticket/Display.html?id=121058>
+
+=head2 The C</\C/> character class has been removed.
+
+This regular expression character class was deprecated in v5.20.0 and has
+produced a deprecation warning since v5.22.0. It is now a compile-time
+error. If you need to examine the individual bytes that make up a
+UTF8-encoded character, then use C<utf8::encode()> on the string (or a
+copy) first.
+
+=head2 C<chdir('')> no longer chdirs home
+
+Using C<chdir('')> or C<chdir(undef)> to chdir home has been deprecated since
+perl v5.8, and will now fail.  Use C<chdir()> instead.
+
+=head2 ASCII characters in variable names must now be all visible
+
+It was legal until now on ASCII platforms for variable names to contain
+non-graphical ASCII control characters (ordinals 0 through 31, and 127,
+which are the C0 controls and C<DELETE>).  This usage has been
+deprecated since v5.20, and as of now causes a syntax error.  The
+variables these names referred to are special, reserved by Perl for
+whatever use it may choose, now, or in the future.  Each such variable
+has an alternative way of spelling it.  Instead of the single
+non-graphic control character, a two character sequence beginning with a
+caret is used, like C<$^]> and C<${^GLOBAL_PHASE}>.  Details are at
+L<perlvar>.   It remains legal, though unwise and deprecated (raising a
+deprecation warning), to use certain non-graphic non-ASCII characters in
+variables names when not under S<C<use utf8>>.  No code should do this,
+as all such variables are reserved by Perl, and Perl doesn't currently
+define any of them (but could at any time, without notice).
+
+=head2 An off by one issue in C<$Carp::MaxArgNums> has been fixed
+
+C<$Carp::MaxArgNums> is supposed to be the number of arguments to display.
+Prior to this version, it was instead showing C<$Carp::MaxArgNums> + 1 arguments,
+contrary to the documentation.
+
+=head2 Only blanks and tabs are now allowed within C<[...]> within C<(?[...])>.
+
+The experimental Extended Bracketed Character Classes can contain regular
+bracketed character classes within them.  These differ from regular ones in
+that white space is generally ignored, unless escaped by preceding it with a
+backslash.  The white space that is ignored is now limited to just tab C<\t>
+and SPACE characters.  Previously, it was any white space.  See
+L<perlrecharclass/Extended Bracketed Character Classes>.
+
+=head1 Deprecations
+
+=head2 Using code points above the platform's C<IV_MAX> is now deprecated
+
+Unicode defines code points in the range C<0..0x10FFFF>.  Some standards
+at one time defined them up to 2**31 - 1, but Perl has allowed them to
+be as high as anything that will fit in a word on the platform being
+used.  However, use of those above the platform's C<IV_MAX> is broken in
+some constructs, notably C<tr///>, regular expression patterns involving
+quantifiers, and in some arithmetic and comparison operations, such as
+being the upper limit of a loop.  Now the use of such code points raises
+a deprecation warning, unless that warning category is turned off.
+C<IV_MAX> is typically 2**31 -1 on 32-bit platforms, and 2**63-1 on
+64-bit ones.
+
+=head2 Doing bitwise operations on strings containing code points above
+0xFF is deprecated
+
+The string bitwise operators treat their operands as strings of bytes,
+and values beyond 0xFF are nonsensical in this context.  To operate on
+encoded bytes, first encode the strings.  To operate on code points'
+numeric values, use C<split> and C<map ord>.  In the future, this
+warning will be replaced by an exception.
+
+=head2 C<sysread()>, C<syswrite()>, C<recv()> and C<send()> are deprecated on
+:utf8 handles
+
+The C<sysread()>, C<recv()>, C<syswrite()> and C<send()> operators
+are deprecated on handles that have the C<:utf8> layer, either
+explicitly, or implicitly, eg., with the C<:encoding(UTF-16LE)> layer.
+
+Both C<sysread()> and C<recv()> currently use only the C<:utf8> flag for the
+stream, ignoring the actual layers.  Since C<sysread()> and C<recv()> do no
+UTF-8 validation they can end up creating invalidly encoded scalars.
+
+Similarly, C<syswrite()> and C<send()> use only the C<:utf8> flag, otherwise
+ignoring any layers.  If the flag is set, both write the value UTF-8
+encoded, even if the layer is some different encoding, such as the
+example above.
+
+Ideally, all of these operators would completely ignore the C<:utf8>
+state, working only with bytes, but this would result in silently
+breaking existing code.  To avoid this a future version of perl will
+throw an exception when any of C<sysread()>, C<recv()>, C<syswrite()> or C<send()>
+are called on handle with the C<:utf8> layer.
+
 =head1 Performance Enhancements
 
 =over 4
 
 =item *
 
-The number of calls to C<add_cp_to_invlist> has been reduced. This
-optimizes the compilation of inverted character classes.
+The overhead of scope entry and exit has been considerably reduced, so
+for example subroutine calls, loops and basic blocks are all faster now.
+This empty function call now takes about a third less time to execute:
+
+    sub f{} f();
+
+=item *
+
+Many languages, such as Chinese, are caseless.  Perl now knows about
+most common ones, and skips much of the work when
+a program tries to change case in them (like C<ucfirst()>) or match
+caselessly (C<qr//i>).  This will speed up a program, such as a web
+server, that can operate on multiple languages, while it is operating on a
+caseless one.
+
+=item *
+
+C</fixed-substr/> has been made much faster.
+
+On platforms with a libc C<memchr()> implementation which makes good use of
+underlying hardware support, patterns which include fixed substrings will now
+often be much faster; for example with glibc on a recent x86_64 CPU, this:
+
+    $s = "a" x 1000 . "wxyz";
+    $s =~ /wxyz/ for 1..30000
+
+is now about 7 times faster.  On systems with slow C<memchr()>, e.g. 32-bit ARM
+Raspberry Pi, there will be a small or little speedup.  Conversely, some
+pathological cases, such as C<"ab" x 1000 =~ /aa/> will be slower now; up to 3
+times slower on the rPi, 1.5x slower on x86_64.
+
+=item *
+
+Faster addition, subtraction and multiplication.
+
+Since 5.8.0, arithmetic became slower due to the need to support
+64-bit integers. To deal with 64-bit integers, a lot more corner
+cases need to be checked, which adds time. We now detect common
+cases where there is no need to check for those corner cases,
+and special-case them.
+
+=item *
+
+Preincrement, predecrement, postincrement, and postdecrement have been
+made faster by internally splitting the functions which handled multiple
+cases into different functions.
+
+=item *
+
+Creating Perl debugger data structures (see L<perldebguts/"Debugger Internals">)
+for XSUBs and const subs has been removed.  This removed one glob/scalar combo
+for each unique C<.c> file that XSUBs and const subs came from.  On startup
+(C<perl -e"0">) about half a dozen glob/scalar debugger combos were created.
+Loading XS modules created more glob/scalar combos.  These things were
+being created regardless of whether the perl debugger was being used,
+and despite the fact that it can't debug C code anyway
+
+=item *
+
+On Win32, C<stat>ing or C<-X>ing a path, if the file or directory does not
+exist, is now 3.5x faster than before.
+
+=item *
+
+Single arguments in list assign are now slightly faster:
+
+  ($x) = (...);
+  (...) = ($x);
+
+=item *
+
+Less peak memory is now used when compiling regular expression patterns.
 
 =back
 
@@ -51,7 +381,19 @@ optimizes the compilation of inverted character classes.
 
 =head2 Updated Modules and Pragmata
 
-=over 4
+=over
+
+=item *
+
+L<arybase> has been upgraded from version 0.10 to 0.11.
+
+=item *
+
+L<Attribute::Handlers> has been upgraded from version 0.97 to 0.99.
+
+=item *
+
+L<autodie> has been upgraded from version 2.26 to 2.29.
 
 =item *
 
@@ -59,330 +401,1815 @@ L<autouse> has been upgraded from version 1.08 to 1.11.
 
 =item *
 
+L<B> has been upgraded from version 1.58 to 1.62.
+
+=item *
+
+L<B::Deparse> has been upgraded from version 1.35 to 1.37.
+
+=item *
+
+L<base> has been upgraded from version 2.22 to 2.23.
+
+=item *
+
+L<Benchmark> has been upgraded from version 1.2 to 1.22.
+
+=item *
+
+L<bignum> has been upgraded from version 0.39 to 0.42.
+
+=item *
+
 L<bytes> has been upgraded from version 1.04 to 1.05.
 
 =item *
 
-L<Carp> has been upgraded from version 1.38 to 1.40.
+L<Carp> has been upgraded from version 1.36 to 1.40.
+
+=item *
+
+L<Compress::Raw::Bzip2> has been upgraded from version 2.068 to 2.069.
+
+=item *
 
-C<longmess> now returns the error in scalar context. [CPAN #107225]
+L<Compress::Raw::Zlib> has been upgraded from version 2.068 to 2.069.
 
 =item *
 
-L<Errno> has been upgraded from version 1.24 to 1.25.
+L<Config::Perl::V> has been upgraded from version 0.24 to 0.25.
+
+=item *
 
-It now exports Winsock error constants.
+L<CPAN::Meta> has been upgraded from version 2.150001 to 2.150005.
 
 =item *
 
-L<ExtUtils::Embed> has been upgraded from version 1.32 to 1.33.
+L<CPAN::Meta::Requirements> has been upgraded from version 2.132 to 2.140.
 
 =item *
 
-L<File::Find> has been upgraded from version 1.33 to 1.34.
+L<CPAN::Meta::YAML> has been upgraded from version 0.012 to 0.018.
 
 =item *
 
-L<File::Glob> has been upgraded from version 1.25 to 1.26.
+L<Data::Dumper> has been upgraded from version 2.158 to 2.160.
 
 =item *
 
-L<IPC::SysV> has been upgraded from version 2.05 to 2.06_01.
+L<Devel::Peek> has been upgraded from version 1.22 to 1.23.
 
 =item *
 
-L<List::Util> has been upgraded from version 1.42_01 to 1.42_02.
+L<Devel::PPPort> has been upgraded from version 3.31 to 3.32.
 
 =item *
 
-L<Module::CoreList> has been upgraded from version 5.20160121 to
-5.20160320.
+L<Dumpvalue> has been upgraded from version 1.17 to 1.18.
 
 =item *
 
-L<Pod::Functions> has been upgraded from version 1.09 to 1.10.
+L<DynaLoader> has been upgraded from version 1.32 to 1.38.
 
 =item *
 
-L<POSIX> has been upgraded from version 1.63 to 1.64.
+L<Encode> has been upgraded from version 2.72 to 2.80.
+
+=item *
 
-It now exports Winsock error constants.
+L<encoding> has been upgraded from version 2.14 to 2.17.
 
 =item *
 
-L<Scalar::Util> has been upgraded from version 1.42_01 to 1.42_02.
+L<encoding::warnings> has been upgraded from version 0.11 to 0.12.
 
 =item *
 
-L<SelfLoader> has been upgraded from version 1.22 to 1.23.
+L<English> has been upgraded from version 1.09 to 1.10.
 
 =item *
 
-L<Socket> has been upgraded from version 2.020_02 to 2.020_03.
+L<Errno> has been upgraded from version 1.23 to 1.25.
 
 =item *
 
-L<Storable> has been upgraded from version 2.55 to 2.56.
+L<experimental> has been upgraded from version 0.013 to 0.016.
 
 =item *
 
-L<strict> has been upgraded from version 1.10 to 1.11.
+L<ExtUtils::CBuilder> has been upgraded from version 0.280221 to 0.280225.
+
+=item *
 
-Narrowed the filename check.
+L<ExtUtils::Embed> has been upgraded from version 1.32 to 1.33.
 
 =item *
 
-L<Thread::Queue> has been upgraded from version 3.07 to 3.08.
+L<ExtUtils::MakeMaker> has been upgraded from version 7.04_01 to 7.10_01.
 
 =item *
 
-L<threads> has been upgraded from version 2.05 to 2.06.
+L<ExtUtils::ParseXS> has been upgraded from version 3.28 to 3.31.
 
 =item *
 
-L<Tie::File> has been upgraded from version 1.01 to 1.02.
+L<ExtUtils::Typemaps> has been upgraded from version 3.28 to 3.31.
 
 =item *
 
-L<Time::HiRes> has been upgraded from version 1.9730 to 1.9732.
+L<feature> has been upgraded from version 1.40 to 1.42.
 
 =item *
 
-L<version> has been upgraded from version 0.9909 to 0.9916.
+L<fields> has been upgraded from version 2.17 to 2.23.
 
 =item *
 
-L<warnings> has been upgraded from version 1.35 to 1.36.
+L<File::Copy> has been upgraded from version 2.30 to 2.31.
+
+=item *
 
-Narrowed the filename check.
+L<File::Find> has been upgraded from version 1.29 to 1.34.
 
 =item *
 
-L<Win32API::File> has been upgraded from version 0.1202 to 0.1203.
+L<File::Glob> has been upgraded from version 1.24 to 1.26.
 
-=back
+=item *
 
-=head1 Documentation
+L<File::Path> has been upgraded from version 2.09 to 2.12_01.
 
-=head2 Changes to Existing Documentation
+=item *
 
-=head3 L<perlfunc>
+L<File::Spec> has been upgraded from version 3.56 to 3.63.
 
-=over 4
+=item *
+
+L<Filter::Util::Call> has been upgraded from version 1.54 to 1.55.
 
 =item *
 
-The L<perlfunc> manual page got a cleanup: there's more consistency now
-(in POD usage, grammar, code examples), better practices in code examples
-(use of C<my>, removal of bareword filehandles, dropped usage of C<&>
-when calling subroutines, ...), etc.
+L<Getopt::Long> has been upgraded from version 2.45 to 2.48.
 
-=back
+=item *
 
-=head1 Configuration and Compilation
+L<Hash::Util> has been upgraded from version 0.18 to 0.19.
 
-=over 4
+=item *
+
+L<Hash::Util::FieldHash> has been upgraded from version 1.15 to 1.19.
 
 =item *
 
-Dtrace builds now build successfully on systems with a newer dtrace
-that require an input object file that uses the probes in the F<.d>
-file.
+L<HTTP::Tiny> has been upgraded from version 0.054 to 0.056.
+
+=item *
 
-Previously the probe would fail and cause a build failure. [perl
-#122287]
+L<I18N::Langinfo> has been upgraded from version 0.12 to 0.13.
 
 =item *
 
-F<installman> no longer warns if a module doesn't contain documentation,
-as this isn't actually an error. Now missing documentation will only
-be reported when using the B<--verbose> switch, and if it does, the
-missing documentation will be reported on C<STDOUT> instead of C<STDERR>.
+L<if> has been upgraded from version 0.0604 to 0.0606.
 
 =item *
 
-The B<u> option to the C<ar> command was removed. This was redundant
-anyway, and on some systems, it caused a warning.
+L<IO> has been upgraded from version 1.35 to 1.36.
 
 =item *
 
-Added F<Configure> probes for C<newlocale>, C<freelocale>, and C<uselocale>.
+IO-Compress has been upgraded from version 2.068 to 2.069.
 
 =item *
 
-Fix up dtrace compile/link for Solaris. [perl #127543]
+L<IPC::Open3> has been upgraded from version 1.18 to 1.20.
 
-=back
+=item *
 
-=head1 Platform Support
+L<IPC::SysV> has been upgraded from version 2.04 to 2.06_01.
 
-=head2 Platform-Specific Notes
+=item *
 
-=over 4
+L<List::Util> has been upgraded from version 1.41 to 1.42_02.
 
-=item Win32
+=item *
 
-=over
+L<locale> has been upgraded from version 1.06 to 1.08.
 
 =item *
 
-Building a 64-bit perl with a 64-bit GCC but a 32-bit gmake would
-result in an invalid C<$Config{archname}> for the resulting perl.
-[perl #127584]
+L<Locale::Codes> has been upgraded from version 3.34 to 3.37.
 
 =item *
 
-Errors set by Winsock functions are now put directly into C<$^E>, and the
-relevant C<WSAE*> error codes are now exported from the L<Errno> and L<POSIX>
-modules for testing this against.
+L<Math::BigInt> has been upgraded from version 1.9997 to 1.999715.
 
-The previous behaviour of putting the errors (converted to POSIX-style C<E*>
-error codes since Perl 5.20.0) into C<$!> was buggy due to the non-equivalence
-of like-named Winsock and POSIX error constants, a relationship between which
-has unfortunately been established in one way or another since Perl 5.8.0.
+=item *
 
-The new behaviour provides a much more robust solution for checking Winsock
-errors in portable software without accidentally matching POSIX tests that were
-intended for other OSes and may have different meanings for Winsock.
+L<Math::BigInt::FastCalc> has been upgraded from version 0.31 to 0.40.
 
-The old behaviour is currently retained, warts and all, for backwards
-compatibility, but users are encouraged to change any code that tests C<$!>
-against C<E*> constants for Winsock errors to instead test C<$^E> against
-C<WSAE*> constants.  After a suitable deprecation period, the old behaviour may
-be removed, leaving C<$!> unchanged after Winsock function calls, to avoid any
-possible confusion over which error variable to check.
+=item *
 
-=back
+L<Math::BigRat> has been upgraded from version 0.2608 to 0.260802.
 
-=back
+=item *
 
-=head1 Selected Bug Fixes
+L<Module::CoreList> has been upgraded from version 5.20150520 to 5.20160506.
 
-=over 4
+=item *
+
+L<Module::Metadata> has been upgraded from version 1.000026 to 1.000031.
 
 =item *
 
-It now works properly to specify a user-defined property, such as
+L<mro> has been upgraded from version 1.17 to 1.18.
 
- qr/\p{mypkg1::IsMyProperty}/i
+=item *
 
-with C</i> caseless matching, an explicit package name, and
-I<IsMyProperty> not defined at the time of the pattern compilation.
+L<ODBM_File> has been upgraded from version 1.12 to 1.14.
 
 =item *
 
-Perl's memcpy(), memmove(), memset() and memcmp() fallbacks are now
-more compatible with the originals.  [perl #127619]
+L<Opcode> has been upgraded from version 1.32 to 1.34.
 
 =item *
 
-The peak memory usage when compiling some regular expression patterns is
-now significantly smaller. [perl #127392]
+L<parent> has been upgraded from version 0.232 to 0.234.
 
 =item *
 
-A case has been fixed in which malformed UTF-8 in the source of a Perl
-script caused an assertion failure instead of an error message. [perl
-#127262]
+L<Parse::CPAN::Meta> has been upgraded from version 1.4414 to 1.4417.
 
 =item *
 
-Fixed a buffer overrun issue in F<Socked.xs> which was reported by Coverity.
-[CPAN #111707]
+L<Perl::OSType> has been upgraded from version 1.008 to 1.009.
 
-=item * 
+=item *
 
-Fixed a possible division by 0 error in C<Scalar::List::Utils::product>
-(reported by Coverity). [CPAN #105415]
+L<perlfaq> has been upgraded from version 5.021009 to 5.021010.
 
 =item *
 
-Fixed the issue where a C<< s///r >>) with B<< -DPERL_NO_COW >> attempts
-to modify the source SV, resulting in the program dying. [perl #127635]
+L<PerlIO::encoding> has been upgraded from version 0.21 to 0.24.
 
 =item *
 
-Fixed a spurious warning about posix character classes. [perl #127581]
+L<PerlIO::mmap> has been upgraded from version 0.014 to 0.016.
 
 =item *
 
-Fixed an obscure case where a pattern could fail to match. This only 
-occurred when matching characters from the set of C1 controls, when
-the target matched string was in UTF-8, and only on EBCDIC platforms.
+L<PerlIO::scalar> has been upgraded from version 0.22 to 0.24.
 
 =item *
 
-Fixed over eager warnings for C<< /[.foo.]/ >>.
+L<PerlIO::via> has been upgraded from version 0.15 to 0.16.
+
+=item *
 
-This prevents Perl from warning about constructs like C<< /[.].*[.]/ >>.
-[perl #127582, #127604]
+podlators has been upgraded from version 2.28 to 4.07.
 
 =item *
 
-Narrow the filename check in F<strict.pm> and F<warnings.pm>. Previously,
-it assumed that if the filename (without the F<.pmc?> extension) differed
-from the package name, if was a misspelled use statement (i.e. C<use Strict>
-instead of C<use strict>). We now check whether there's really a 
-miscapitalization happening, and not another issue.
+L<Pod::Functions> has been upgraded from version 1.09 to 1.10.
 
 =item *
 
-Turn an assertion into a more user friendly failure when parsing
-regexes. [perl #127599]
+L<Pod::Perldoc> has been upgraded from version 3.25 to 3.25_02.
 
 =item *
 
-Correctly raise an error when trying to compile patterns with 
-unterminated character classes while there are trailing backslashes.
-[perl #126141].
+L<Pod::Simple> has been upgraded from version 3.29 to 3.32.
 
 =item *
 
-Added a guard against malformed UTF-8. [perl #127262]
+L<Pod::Usage> has been upgraded from version 1.64 to 1.68.
 
 =item *
 
-Only test C<semctl> if we have everything needed to use it. In a FreeBSD
-the C<semctl> entry point may exist, but it can be disabled by policy.
-[perl #127533]
+L<POSIX> has been upgraded from version 1.53 to 1.65.
 
 =item *
 
-Handle C<NOTHING> regops and C<EXACTFU_SS> regops in C<make_trie> properly.
-[perl #126206]
+L<Scalar::Util> has been upgraded from version 1.41 to 1.42_02.
 
 =item *
 
-Fix a Solaris optimiser bug which prevented certain regular expression
-to be compiled. [perl #127455]
+L<SDBM_File> has been upgraded from version 1.13 to 1.14.
 
 =item *
 
-Improved the detection of infinite recursion in regular expressions.
-Previously, perl would in certain cases slowly consume resources until
-finally running out of memory. [perl #126182]
+L<SelfLoader> has been upgraded from version 1.22 to 1.23.
 
+=item *
 
-=back
+L<Socket> has been upgraded from version 2.018 to 2.020_03.
 
-=head1 Acknowledgements
+=item *
 
-Perl 5.23.9 represents approximately 4 weeks of development since Perl 5.23.8
-and contains approximately 21,000 lines of changes across 230 files from 23
-authors.
+L<Storable> has been upgraded from version 2.53 to 2.56.
 
-Excluding auto-generated files, documentation and release tools, there were
-approximately 8,500 lines of changes to 120 .pm, .t, .c and .h files.
+=item *
 
-Perl continues to flourish into its third decade thanks to a vibrant community
-of users and developers. The following people are known to have contributed the
-improvements that became Perl 5.23.9:
+L<strict> has been upgraded from version 1.09 to 1.11.
+
+=item *
+
+L<Term::ANSIColor> has been upgraded from version 4.03 to 4.04.
+
+=item *
+
+L<Term::Cap> has been upgraded from version 1.15 to 1.17.
+
+=item *
+
+L<Test> has been upgraded from version 1.26 to 1.28.
+
+=item *
+
+L<Test::Harness> has been upgraded from version 3.35 to 3.36.
+
+=item *
+
+L<Thread::Queue> has been upgraded from version 3.05 to 3.09.
+
+=item *
+
+L<threads> has been upgraded from version 2.01 to 2.07.
+
+=item *
+
+L<threads::shared> has been upgraded from version 1.48 to 1.51.
+
+=item *
+
+L<Tie::File> has been upgraded from version 1.01 to 1.02.
+
+=item *
 
-Abigail, Alex Vandiver, Andy Broad, Aristotle Pagaltzis, Chris 'BinGOs'
-Williams, Craig A. Berry, Dagfinn Ilmari MannsÃ¥ker, Daniel Dragan, David
-Mitchell, Father Chrysostomos, H.Merijn Brand, Jarkko Hietaniemi, John Peacock,
-Karl Williamson, Leon Timmermans, Lukas Mai, Matthew Horsfall, Ricardo Signes,
-Sawyer X, Shlomi Fish, Steve Hay, Tony Cook, Yves Orton.
+L<Tie::Scalar> has been upgraded from version 1.03 to 1.04.
+
+=item *
+
+L<Time::HiRes> has been upgraded from version 1.9726 to 1.9733.
+
+=item *
+
+L<Time::Piece> has been upgraded from version 1.29 to 1.31.
+
+=item *
+
+L<Unicode::Collate> has been upgraded from version 1.12 to 1.14.
+
+=item *
+
+L<Unicode::Normalize> has been upgraded from version 1.18 to 1.25.
+
+=item *
+
+L<Unicode::UCD> has been upgraded from version 0.61 to 0.64.
+
+=item *
+
+L<UNIVERSAL> has been upgraded from version 1.12 to 1.13.
+
+=item *
+
+L<utf8> has been upgraded from version 1.17 to 1.19.
+
+=item *
+
+L<version> has been upgraded from version 0.9909 to 0.9916.
+
+=item *
+
+L<warnings> has been upgraded from version 1.32 to 1.36.
+
+=item *
+
+L<Win32> has been upgraded from version 0.51 to 0.52.
+
+=item *
+
+L<Win32API::File> has been upgraded from version 0.1202 to 0.1203.
+
+=item *
+
+L<XS::Typemap> has been upgraded from version 0.13 to 0.14.
+
+=item *
+
+L<XSLoader> has been upgraded from version 0.20 to 0.21.
+
+=back
+
+=head1 Documentation
+
+=head2 Changes to Existing Documentation
+
+=head3 L<perlapi>
+
+=over 4
+
+=item *
+
+The process of using undocumented globals has been documented, namely, that one
+should send email to L<perl5-porters@perl.org|mailto:perl5-porters@perl.org>
+first to get the go-ahead for documenting and using an undocumented function or
+global variable.
+
+=back
+
+=head3 L<perlcall>
+
+=over 4
+
+=item *
+
+A number of cleanups have been made to perlcall, including:
+
+=over 4
+
+=item *
+
+use C<EXTEND(SP, n)> and C<PUSHs()> instead of C<XPUSHs()> where applicable
+and update prose to match
+
+=item *
+
+add POPu, POPul and POPpbytex to the "complete list of POP macros"
+and clarify the documentation for some of the existing entries, and
+a note about side-effects
+
+=item *
+
+add API documentation for POPu and POPul
+
+=item *
+
+use ERRSV more efficiently
+
+=item *
+
+approaches to thread-safety storage of SVs.
+
+=back
+
+=back
+
+=head3 L<perlfunc>
+
+=over 4
+
+=item *
+
+The documentation of C<hex> has been revised to clarify valid inputs.
+
+=item *
+
+Better explain meaning of negative PIDs in C<waitpid>.
+L<[perl #127080]|https://rt.perl.org/Ticket/Display.html?id=127080>
+
+=item *
+
+General cleanup: there's more consistency now (in POD usage, grammar, code
+examples), better practices in code examples (use of C<my>, removal of bareword
+filehandles, dropped usage of C<&> when calling subroutines, ...), etc.
+
+=back
+
+=head3 L<perlguts>
+
+=over 4
+
+=item *
+
+A new section has been added, L<perlguts/"Dynamic Scope and the Context
+Stack">, which explains how the perl context stack works.
+
+=back
+
+=head3 L<perllocale>
+
+=over 4
+
+=item *
+
+A stronger caution about using locales in threaded applications is
+given.  Locales are not thread-safe, and you can get wrong results or
+even segfaults if you use them there.
+
+=back
+
+=head3 L<perlmodlib>
+
+=over 4
+
+=item *
+
+We now recommend contacting the module-authors list or PAUSE in seeking
+guidance on the naming of modules.
+
+=back
+
+=head3 L<perlop>
+
+=over 4
+
+=item *
+
+The documentation of C<qx//> now describes how C<$?> is affected.
+
+=back
+
+=head3 L<perlpolicy>
+
+=over 4
+
+=item *
+
+This note has been added to perlpolicy:
+
+ While civility is required, kindness is encouraged; if you have any
+ doubt about whether you are being civil, simply ask yourself, "Am I
+ being kind?" and aspire to that.
+
+=back
+
+=head3 L<perlreftut>
+
+=over 4
+
+=item *
+
+Fix some examples to be L<strict> clean.
+
+=back
+
+=head3 L<perlrebackslash>
+
+=over 4
+
+=item *
+
+Clarify that in languages like Japanese and Thai, dictionary lookup
+is required to determine word boundaries.
+
+=back
+
+=head3 L<perlsub>
+
+=over 4
+
+=item *
+
+Updated to note that anonymous subroutines can have signatures.
+
+=back
+
+=head3 L<perlsyn>
+
+=over 4
+
+=item *
+
+Fixed a broken example where C<=> was used instead of
+C<==> in conditional in do/while example.
+
+=back
+
+=head3 L<perltie>
+
+=over 4
+
+=item *
+
+The usage of C<FIRSTKEY> and C<NEXTKEY> has been clarified.
+
+=back
+
+=head3 L<perlunicode>
+
+=over 4
+
+=item *
+
+Discourage use of 'In' as a prefix signifying the Unicode Block property.
+
+=back
+
+=head3 L<perlvar>
+
+=over 4
+
+=item *
+
+The documentation of C<$@> was reworded to clarify that it is not just for
+syntax errors in C<eval>.
+L<[perl #124034]|https://rt.perl.org/Ticket/Display.html?id=124034>
+
+=item *
+
+The specific true value of C<$!{E...}> is now documented, noting that it is
+subject to change and not guaranteed.
+
+=item *
+
+Use of C<$OLD_PERL_VERSION> is now discouraged.
+
+=back
+
+=head3 L<perlxs>
+
+=over 4
+
+=item *
+
+The documentation of C<PROTOTYPES> has been corrected; they are I<disabled>
+by default, not I<enabled>.
+
+=back
+
+=head1 Diagnostics
+
+The following additions or changes have been made to diagnostic output,
+including warnings and fatal error messages.  For the complete list of
+diagnostic messages, see L<perldiag>.
+
+=head2 New Diagnostics
+
+=head3 New Errors
+
+=over 4
+
+=item *
+
+L<%s must not be a named sequence in transliteration operator|perldiag/"%s must not be a named sequence in transliteration operator">
+
+=item *
+
+L<Can't find Unicode property definition "%s" in regex;|perldiag/"Can't find Unicode property definition "%s" in regex; marked by <-- HERE in m/%s/">
+
+=item *
+
+L<Can't redeclare "%s" in "%s"|perldiag/"Can't redeclare "%s" in "%s"">
+
+=item *
+
+L<Character following \p must be '{' or a single-character Unicode property name in regex;|perldiag/"Character following \%c must be '{' or a single-character Unicode property name in regex; marked by <-- HERE in m/%s/">
+
+=item *
+
+L<Empty \%c in regex; marked by E<lt>-- HERE in mE<sol>%sE<sol>
+|perldiag/"Empty \%c in regex; marked by <-- HERE in mE<sol>%sE<sol>">
+
+=item *
+
+L<Illegal user-defined property name|perldiag/"Illegal user-defined property name">
+
+=item *
+
+L<Invalid number '%s' for -C option.|perldiag/"Invalid number '%s' for -C option.">
+
+=item *
+
+L<<< Sequence (?... not terminated in regex; marked by S<<-- HERE> in mE<sol>%sE<sol>|perldiag/"Sequence (?... not terminated in regex; marked by <-- HERE in mE<sol>%sE<sol>" >>>
+
+=item *
+
+L<<< Sequence (?PE<lt>... not terminated in regex; marked by E<lt>-- HERE in mE<sol>%sE<sol>
+|perldiag/"Sequence (?PE<lt>... not terminated in regex; marked by <-- HERE in mE<sol>%sE<sol>" >>>
+
+=item *
+
+L<Sequence (?PE<gt>... not terminated in regex; marked by E<lt>-- HERE in mE<sol>%sE<sol>
+|perldiag/"Sequence (?PE<gt>... not terminated in regex; marked by <-- HERE in mE<sol>%sE<sol>">
+
+=back
+
+=head3 New Warnings
+
+=over 4
+
+=item *
+
+L<Assuming NOT a POSIX class since %s in regex; marked by E<lt>-- HERE in mE<sol>%sE<sol>|
+perldiag/Assuming NOT a POSIX class since %s in regex; marked by <-- HERE in mE<sol>%sE<sol>>
+
+=item *
+
+L<%s() is deprecated on :utf8 handles|perldiag/"%s() is deprecated on :utf8 handles">
+
+=back
+
+=head2 Changes to Existing Diagnostics
+
+=over 4
+
+=item *
+
+Accessing the C<IO> part of a glob as C<FILEHANDLE> instead of C<IO> is no
+longer deprecated.  It is discouraged to encourage uniformity (so that, for
+example, one can grep more easily) but it will not be removed.
+L<[perl #127060]|https://rt.perl.org/Ticket/Display.html?id=127060>
+
+=item *
+
+The diagnostic C<< Hexadecimal float: internal error >> has been changed to
+C<< Hexadecimal float: internal error (%s) >> to include more information.
+
+=item *
+
+L<Can't modify non-lvalue subroutine call of &%s|perldiag/"Can't modify non-lvalue subroutine call of &%s">
+
+This error now reports the name of the non-lvalue subroutine you attempted to
+use as an lvalue.
+
+=item *
+
+When running out of memory during an attempt the increase the stack
+size, previously, perl would die using the cryptic message
+C<< panic: av_extend_guts() negative count (-9223372036854775681) >>.
+This has been fixed to show the prettier message:
+L<< Out of memory during stack extend|perldiag/"Out of memory during %s extend" >>
+
+=back
+
+=head1 Configuration and Compilation
+
+=over 4
+
+=item *
+
+C<Configure> now acts as if the C<-O> option is always passed, allowing command
+line options to override saved configuration.  This should eliminate confusion
+when command line options are ignored for no obvious reason.  C<-O> is now
+permitted, but ignored.
+
+=item *
+
+Bison 3.0 is now supported.
+
+=item *
+
+F<Configure> no longer probes for F<libnm> by default.  Originally
+this was the "New Math" library, but the name has been re-used by the
+GNOME NetworkManager.
+L<[perl #127131]|https://rt.perl.org/Ticket/Display.html?id=127131>
+
+=item *
+
+Added F<Configure> probes for C<newlocale>, C<freelocale>, and C<uselocale>.
+
+=item *
+
+C<< PPPort.so/PPPort.dll >> no longer get installed, as they are
+not used by C<< PPPort.pm >>, only by its test files.
+
+=item *
+
+It is now possible to specify which compilation date to show on
+C<< perl -V >> output, by setting the macro C<< PERL_BUILD_DATE >>.
+
+=item *
+
+Using the C<NO_HASH_SEED> define in combination with the default hash algorithm
+C<PERL_HASH_FUNC_ONE_AT_A_TIME_HARD> resulted in a fatal error while compiling
+the interpreter, since Perl 5.17.10.  This has been fixed.
+
+=item *
+
+F<Configure> should handle spaces in paths a little better.
+
+=item *
+
+No longer generate EBCDIC POSIX-BC tables.  We don't believe anyone is
+using Perl and POSIX-BC at this time, and by not generating these tables
+it saves time during development, and makes the resulting tar ball smaller.
+
+=item *
+
+The GNU Make makefile for Win32 now supports parallel builds.  [perl #126632]
+
+=item *
+
+You can now build perl with MSVC++ on Win32 using GNU Make.  [perl #126632]
+
+=item *
+
+The Win32 miniperl now has a real C<getcwd> which increases build performance
+resulting in C<getcwd()> being 605x faster in Win32 miniperl.
+
+=item *
+
+Configure now takes C<-Dusequadmath> into account when calculating the
+C<alignbytes> configuration variable.  Previously the mis-calculated
+C<alignbytes> could cause alignment errors on debugging builds. [perl
+#127894]
+
+=back
+
+=head1 Testing
+
+=over 4
+
+=item *
+
+A new test (F<t/op/aassign.t>) has been added to test the list assignment operator
+C<OP_AASSIGN>.
+
+=item *
+
+Parallel building has been added to the dmake C<makefile.mk> makefile. All
+Win32 compilers are supported.
+
+=back
+
+=head1 Platform Support
+
+=head2 Platform-Specific Notes
+
+=over 4
+
+=item AmigaOS
+
+=over 4
+
+=item *
+
+The AmigaOS port has been reintegrated into the main tree, based off of
+Perl 5.22.1.
+
+=back
+
+=item Cygwin
+
+=over 4
+
+=item *
+
+Tests are more robust against unusual cygdrive prefixes.
+L<[perl #126834]|https://rt.perl.org/Ticket/Display.html?id=126834>
+
+=back
+
+=item EBCDIC
+
+=over 4
+
+=item UTF-EBCDIC extended
+
+UTF-EBCDIC is like UTF-8, but for EBCDIC platforms.  It now has been
+extended so that it can represent code points up to 2 ** 64 - 1 on
+platforms with 64-bit words.  This brings it into parity with UTF-8.
+This enhancement requires an incompatible change to the representation
+of code points in the range 2 ** 30 to 2 ** 31 -1 (the latter was the
+previous maximum representable code point).  This means that a file that
+contains one of these code points, written out with previous versions of
+perl cannot be read in, without conversion, by a perl containing this
+change.  We do not believe any such files are in existence, but if you
+do have one, submit a ticket at L<perlbug@perl.org|mailto:perlbug@perl.org>,
+and we will write a conversion script for you.
+
+=item EBCDIC C<cmp()> and C<sort()> fixed for UTF-EBCDIC strings
+
+Comparing two strings that were both encoded in UTF-8 (or more
+precisely, UTF-EBCDIC) did not work properly until now.  Since C<sort()>
+uses C<cmp()>, this fixes that as well.
+
+=item EBCDIC C<tr///> and C<y///> fixed for C<\N{}>, and C<S<use utf8>> ranges
+
+Perl v5.22 introduced the concept of portable ranges to regular
+expression patterns.  A portable range matches the same set of
+characters no matter what platform is being run on.  This concept is now
+extended to C<tr///>.  See
+C<L<trE<sol>E<sol>E<sol>|perlop/trE<sol>SEARCHLISTE<sol>REPLACEMENTLISTE<sol>cdsr>>.
+
+There were also some problems with these operations under S<C<use
+utf8>>, which are now fixed
+
+=back
+
+=item FreeBSD
+
+=over 4
+
+=item *
+
+Use the C<fdclose()> function from FreeBSD if it is available.
+L<[perl #126847]|https://rt.perl.org/Ticket/Display.html?id=126847>
+
+=back
+
+=item IRIX
+
+=over 4
+
+=item *
+
+Under some circumstances IRIX stdio C<fgetc()> and C<fread()> set the errno to
+C<ENOENT>, which made no sense according to either IRIX or POSIX docs.  Errno
+is now cleared in such cases.
+L<[perl #123977]|https://rt.perl.org/Ticket/Display.html?id=123977>
+
+=item *
+
+Problems when multiplying long doubles by infinity have been fixed.
+L<[perl #126396]|https://rt.perl.org/Ticket/Display.html?id=126396>
+
+=back
+
+=item MacOS X
+
+=over 4
+
+=item *
+
+Until now OS X builds of perl have specified a link target of 10.3 (Panther,
+2003) but have not specified a compiler target.  From now on, builds of perl on
+OS X 10.6 or later (Snow Leopard, 2008) by default capture the current OS X
+version and specify that as the explicit build target in both compiler and
+linker flags, thus preserving binary compatibility for extensions built later
+regardless of changes in OS X, SDK, or compiler and linker versions.  To
+override the default value used in the build and preserved in the flags,
+specify C<export MACOSX_DEPLOYMENT_TARGET=10.N> before configuring and building
+perl, where 10.N is the version of OS X you wish to target.  In OS X 10.5 or
+earlier there is no change to the behavior present when those systems were
+current; the link target is still OS X 10.3 and there is no explicit compiler
+target.
+
+=item *
+
+Builds with both -DDEBUGGING and threading enabled would fail with a
+"panic: free from wrong pool" error when built or tested from Terminal
+on OS X.  This was caused by perl's internal management of the
+environment conflicting with an atfork handler using the libc
+C<setenv()> function to update the environment.
+
+Perl now uses C<setenv()>/C<unsetenv()> to update the environment on OS X.
+L<[perl #126240]|https://rt.perl.org/Ticket/Display.html?id=126240>
+
+=back
+
+=item Solaris
+
+=over 4
+
+=item *
+
+All Solaris variants now build a shared libperl
+
+Solaris and variants like OpenIndiana now always build with the shared
+Perl library (Configure -Duseshrplib).  This was required for the
+OpenIndiana builds, but this has also been the setting for Oracle/Sun
+Perl builds for several years.
+
+=back
+
+=item Tru64
+
+=over 4
+
+=item *
+
+Workaround where Tru64 balks when prototypes are listed as
+C<< PERL_STATIC_INLINE >>, but where the test is build with
+C<< -DPERL_NO_INLINE_FUNCTIONS >>.
+
+=back
+
+=item VMS
+
+=over 4
+
+=item *
+
+On VMS, the math function prototypes in C<math.h> are now visible under C++.
+Now building the POSIX extension with C++ will no longer crash.
+
+=item *
+
+VMS has had C<setenv>/C<unsetenv> since v7.0 (released in 1996),
+C<Perl_vmssetenv> now always uses C<setenv>/C<unsetenv>.
+
+=item *
+
+Perl now implements its own C<killpg> by scanning for processes in the
+specified process group, which may not mean exactly the same thing as a Unix
+process group, but allows us to send a signal to a parent (or master) process
+and all of its sub-processes.  At the perl level, this means we can now send a
+negative pid like so:
+
+    kill SIGKILL, -$pid;
+
+to signal all processes in the same group as C<$pid>.
+
+=item *
+
+For those C<%ENV> elements based on the CRTL environ array, we've always
+preserved case when setting them but did look-ups only after upcasing the
+key first, which made lower- or mixed-case entries go missing. This problem
+has been corrected by making C<%ENV> elements derived from the environ array
+case-sensitive on look-up as well as case-preserving on store.
+
+=item *
+
+Environment look-ups for C<PERL5LIB> and C<PERLLIB> previously only
+considered logical names, but now consider all sources of C<%ENV> as
+determined by C<PERL_ENV_TABLES> and as documented in L<perlvms/%ENV>.
+
+=item *
+
+The minimum supported version of VMS is now v7.3-2, released in 2003.  As a
+side effect of this change, VAX is no longer supported as the terminal
+release of OpenVMS VAX was v7.3 in 2001.
+
+=back
+
+=item Win32
+
+=over 4
+
+=item *
+
+A new build option C<USE_NO_REGISTRY> has been added to the makefiles.  This
+option is off by default, meaning the default is to do Windows registry
+lookups.  This option stops Perl from looking inside the registry for anything.
+For what values are looked up in the registry see L<perlwin32>.  Internally, in
+C, the name of this option is C<WIN32_NO_REGISTRY>.
+
+=item *
+
+The behavior of Perl using C<HKEY_CURRENT_USER\Software\Perl> and
+C<HKEY_LOCAL_MACHINE\Software\Perl> to lookup certain values, including C<%ENV>
+vars starting with C<PERL> has changed.  Previously, the 2 keys were checked
+for entries at all times through the perl process's life time even if
+they did not
+exist.  For performance reasons, now, if the root key (i.e.
+C<HKEY_CURRENT_USER\Software\Perl> or C<HKEY_LOCAL_MACHINE\Software\Perl>) does
+not exist at process start time, it will not be checked again for C<%ENV>
+override entries for the remainder of the perl process's life.  This more
+closely matches Unix behavior in that the environment is copied or inherited
+on startup and changing the variable in the parent process or another process
+or editing F<.bashrc> will not change the environmental variable in other
+existing, running, processes.
+
+=item *
+
+One glob fetch was removed for each C<-X> or C<stat> call whether done from
+Perl code or internally from Perl's C code.  The glob being looked up was
+C<${^WIN32_SLOPPY_STAT}> which is a special variable.  This makes C<-X> and
+C<stat> slightly faster.
+
+=item *
+
+During miniperl's process startup, during the build process, 4 to 8 IO calls
+related to the process starting F<.pl> and the F<buildcustomize.pl> file were
+removed from the code opening and executing the first 1 or 2 F<.pl> files.
+
+=item *
+
+Builds using Microsoft Visual C++ 2003 and earlier no longer produce
+an "INTERNAL COMPILER ERROR" message.  [perl #126045]
+
+=item *
+
+Visual C++ 2013 builds will now execute on XP and higher. Previously they would
+only execute on Vista and higher.
+
+=item *
+
+You can now build perl with GNU Make and GCC.  [perl #123440]
+
+=item *
+
+C<truncate($filename, $size)> now works for files over 4GB in size.
+[perl #125347]
+
+=item *
+
+Parallel building has been added to the dmake C<makefile.mk> makefile. All
+Win32 compilers are supported.
+
+=item *
+
+Building a 64-bit perl with a 64-bit GCC but a 32-bit gmake would
+result in an invalid C<$Config{archname}> for the resulting perl.
+[perl #127584]
+
+=item *
+
+Errors set by Winsock functions are now put directly into C<$^E>, and the
+relevant C<WSAE*> error codes are now exported from the L<Errno> and L<POSIX>
+modules for testing this against.
+
+The previous behavior of putting the errors (converted to POSIX-style C<E*>
+error codes since Perl 5.20.0) into C<$!> was buggy due to the non-equivalence
+of like-named Winsock and POSIX error constants, a relationship between which
+has unfortunately been established in one way or another since Perl 5.8.0.
+
+The new behavior provides a much more robust solution for checking Winsock
+errors in portable software without accidentally matching POSIX tests that were
+intended for other OSes and may have different meanings for Winsock.
+
+The old behavior is currently retained, warts and all, for backwards
+compatibility, but users are encouraged to change any code that tests C<$!>
+against C<E*> constants for Winsock errors to instead test C<$^E> against
+C<WSAE*> constants.  After a suitable deprecation period, the old behavior may
+be removed, leaving C<$!> unchanged after Winsock function calls, to avoid any
+possible confusion over which error variable to check.
+
+=back
+
+=item ppc64el
+
+=over 4
+
+=item floating point
+
+The floating point format of ppc64el (Debian naming for little-endian
+PowerPC) is now detected correctly.
+
+=back
+
+=back
+
+=head1 Internal Changes
+
+=over 4
+
+=item *
+
+The implementation of perl's context stack system, and its internal API,
+have been heavily reworked. Note that no significant changes have been
+made to any external APIs, but XS code which relies on such internal
+details may need to be fixed. The main changes are:
+
+=over 4
+
+=item *
+
+The C<PUSHBLOCK()>, C<POPSUB()> etc. macros have been replaced with static
+inline functions such as C<cx_pushblock()>, C<cx_popsub()> etc. These use
+function args rather than implicitly relying on local vars such as
+C<gimme> and C<newsp> being available. Also their functionality has
+changed: in particular, C<cx_popblock()> no longer decrements
+C<cxstack_ix>. The ordering of the steps in the C<pp_leave*> functions
+involving C<cx_popblock()>, C<cx_popsub()> etc. has changed. See the new
+documentation, L<perlguts/"Dynamic Scope and the Context Stack">, for
+details on how to use them.
+
+=item *
+
+Various macros, which now consistently have a CX_ prefix, have been added:
+
+  CX_CUR(), CX_LEAVE_SCOPE(), CX_POP()
+
+or renamed:
+
+  CX_POP_SAVEARRAY(), CX_DEBUG(), CX_PUSHSUBST(), CX_POPSUBST()
+
+=item *
+
+C<cx_pushblock()> now saves C<PL_savestack_ix> and C<PL_tmps_floor>, so
+C<pp_enter*> and C<pp_leave*> no longer do
+
+  ENTER; SAVETMPS; ....; LEAVE
+
+=item *
+
+C<cx_popblock()> now also restores C<PL_curpm>.
+
+=item *
+
+In C<dounwind()> for every context type, the current savestack frame is
+now processed before each context is popped; formerly this was only done
+for sub-like context frames. This action has been removed from
+C<cx_popsub()> and placed into its own macro, C<CX_LEAVE_SCOPE(cx)>, which
+must be called before C<cx_popsub()> etc.
+
+C<dounwind()> now also does a C<cx_popblock()> on the last popped frame
+(formerly it only did the C<cx_popsub()> etc. actions on each frame).
+
+=item *
+
+The temps stack is now freed on scope exit; previously, temps created
+during the last statement of a block wouldn't be freed until the next
+C<nextstate> following the block (apart from an existing hack that did
+this for recursive subs in scalar context); and in something like
+C<f(g())>, the temps created by the last statement in C<g()> would
+formerly not be freed until the statement following the return from
+C<f()>.
+
+=item *
+
+Most values that were saved on the savestack on scope entry are now
+saved in suitable new fields in the context struct, and saved and
+restored directly by C<cx_pushfoo()> and C<cx_popfoo()>, which is much
+faster.
+
+=item *
+
+Various context struct fields have been added, removed or modified.
+
+=item *
+
+The handling of C<@_> in C<cx_pushsub()> and C<cx_popsub()> has been
+considerably tidied up, including removing the C<argarray> field from the
+context struct, and extracting out some common (but rarely used) code into
+a separate function, C<clear_defarray()>. Also, useful subsets of
+C<cx_popsub()> which had been unrolled in places like C<pp_goto> have been
+gathered into the new functions C<cx_popsub_args()> and
+C<cx_popsub_common()>.
+
+=item *
+
+C<pp_leavesub> and C<pp_leavesublv> now use the same function as the rest
+of the C<pp_leave*>'s to process return args.
+
+=item *
+
+C<CXp_FOR_PAD> and C<CXp_FOR_GV> flags have been added, and
+C<CXt_LOOP_FOR> has been split into C<CXt_LOOP_LIST>, C<CXt_LOOP_ARY>.
+
+=item *
+
+Some variables formerly declared by C<dMULTICALL> (but not documented) have
+been removed.
+
+=back
+
+=item *
+
+The obscure C<PL_timesbuf> variable, effectively a vestige of Perl 1, has
+been removed. It was documented as deprecated in Perl 5.20, with a statement
+that it would be removed early in the 5.21.x series; that has now finally
+happened.
+L<[perl #121351]|https://rt.perl.org/Ticket/Display.html?id=121351>
+
+=item *
+
+An unwarranted assertion in C<Perl_newATTRSUB_x()> has been removed.  If
+a stub subroutine
+definition with a prototype has been seen, then any subsequent stub (or
+definition) of the same subroutine with an attribute was causing an assertion
+failure because of a null pointer.
+L<[perl #126845]|https://rt.perl.org/Ticket/Display.html?id=126845>
+
+=item *
+
+C<::> has been replaced by C<__> in C<ExtUtils::ParseXS>, like it's done for
+parameters/return values. This is more consistent, and simplifies writing XS
+code wrapping C++ classes into a nested Perl namespace (it requires only
+a typedef for C<Foo__Bar> rather than two, one for C<Foo_Bar> and the other
+for C<Foo::Bar>).
+
+=item *
+
+The C<to_utf8_case()> function is now deprecated.  Instead use
+C<toUPPER_utf8>, C<toTITLE_utf8>, C<toLOWER_utf8>, and C<toFOLD_utf8>.
+(See L<http://nntp.perl.org/group/perl.perl5.porters/233287>.)
+
+=item *
+
+Perl core code and the threads extension have been annotated so that,
+if Perl is configured to use threads, then during compile-time clang (3.6
+or later) will warn about suspicious uses of mutexes.
+See L<http://clang.llvm.org/docs/ThreadSafetyAnalysis.html> for more
+information.
+
+=item *
+
+The C<signbit()> emulation has been enhanced.  This will help older
+and/or more exotic platforms or configurations.
+
+
+=item *
+
+Most EBCDIC-specific code in the core has been unified with non-EBCDIC
+code, to avoid repetition and make maintenance easier.
+
+=item *
+
+MSWin32 code for C<$^X> has been moved out of the F<win32> directory to
+F<caretx.c>, where other operating systems set that variable.
+
+=item *
+
+C<< sv_ref() >> is now part of the API.
+
+=item *
+
+L<perlapi/sv_backoff> had its return type changed from C<int> to C<void>.  It
+previously has always returned C<0> since Perl 5.000 stable but that was
+undocumented.  Although C<sv_backoff> is marked as public API, XS code is not
+expected to be impacted since the proper API call would be through public API
+C<sv_setsv(sv, &PL_sv_undef)>, or quasi-public C<SvOOK_off>, or non-public
+C<SvOK_off> calls, and the return value of C<sv_backoff> was previously a
+meaningless constant that can be rewritten as C<(sv_backoff(sv),0)>.
+
+=item *
+
+The C<EXTEND> and C<MEXTEND> macros have been improved to avoid various issues
+with integer truncation and wrapping.  In particular, some casts formerly used
+within the macros have been removed.  This means for example that passing an
+unsigned C<nitems> argument is likely to raise a compiler warning now
+(it's always been documented to require a signed value; formerly int,
+lately SSize_t).
+
+=item *
+
+C<PL_sawalias> and C<GPf_ALIASED_SV> have been removed.
+
+=item *
+
+C<GvASSIGN_GENERATION> and C<GvASSIGN_GENERATION_set> have been removed.
+
+=back
+
+=head1 Selected Bug Fixes
+
+=over 4
+
+=item *
+
+It now works properly to specify a user-defined property, such as
+
+ qr/\p{mypkg1::IsMyProperty}/i
+
+with C</i> caseless matching, an explicit package name, and
+I<IsMyProperty> not defined at the time of the pattern compilation.
+
+=item *
+
+Perl's C<memcpy()>, C<memmove()>, C<memset()> and C<memcmp()> fallbacks are now
+more compatible with the originals.  [perl #127619]
+
+=item *
+
+Fixed the issue where a C<< s///r >>) with B<< -DPERL_NO_COW >> attempts
+to modify the source SV, resulting in the program dying. [perl #127635]
+
+=item *
+
+Fixed an EBCDIC-platform-only case where a pattern could fail to match. This
+occurred when matching characters from the set of C1 controls when the
+target matched string was in UTF-8.
+
+=item *
+
+Narrow the filename check in F<strict.pm> and F<warnings.pm>. Previously,
+it assumed that if the filename (without the F<.pmc?> extension) differed
+from the package name, if was a misspelled use statement (i.e. C<use Strict>
+instead of C<use strict>). We now check whether there's really a 
+miscapitalization happening, and not some other issue.
+
+=item *
+
+Turn an assertion into a more user friendly failure when parsing
+regexes. [perl #127599]
+
+=item *
+
+Correctly raise an error when trying to compile patterns with 
+unterminated character classes while there are trailing backslashes.
+[perl #126141].
+
+=item *
+
+Line numbers larger than 2**31-1 but less than 2**32 are no longer
+returned by C<caller()> as negative numbers.  [perl #126991]
+
+=item *
+
+C<< unless ( I<assignment> ) >> now properly warns when syntax
+warnings are enabled.  [perl #127122]
+
+=item *
+
+Setting an C<ISA> glob to an array reference now properly adds
+C<isaelem> magic to any existing elements.  Previously modifying such
+an element would not update the ISA cache, so method calls would call
+the wrong function.  Perl would also crash if the C<ISA> glob was
+destroyed, since new code added in 5.23.7 would try to release the
+C<isaelem> magic from the elements.  [perl #127351]
+
+=item *
+
+If a here-doc was found while parsing another operator, the parser had
+already read end of file, and the here-doc was not terminated, perl
+could produce an assertion or a segmentation fault.  This now reliably
+complains about the unterminated here-doc.  [perl #125540]
+
+=item *
+
+C<untie()> would sometimes return the last value returned by the C<UNTIE()>
+handler as well as it's normal value, messing up the stack.  [perl
+#126621]
+
+=item *
+
+Fixed an operator precedence problem when C< castflags & 2> is true.
+[perl #127474]
+
+=item *
+
+Caching of DESTROY methods could result in a non-pointer or a
+non-STASH stored in the C<SvSTASH()> slot of a stash, breaking the B
+C<STASH()> method.  The DESTROY method is now cached in the MRO metadata
+for the stash.  [perl #126410]
+
+=item *
+
+The AUTOLOAD method is now called when searching for a DESTROY method,
+and correctly sets C<$AUTOLOAD> too.  [perl #124387]  [perl #127494]
+
+=item *
+
+Avoid parsing beyond the end of the buffer when processing a C<#line>
+directive with no filename.  [perl #127334]
+
+=item *
+
+Perl now raises a warning when a regular expression pattern looks like
+it was supposed to contain a POSIX class, like C<qr/[[:alpha:]]/>, but
+there was some slight defect in its specification which causes it to
+instead be treated as a regular bracketed character class.  An example
+would be missing the second colon in the above like this:
+C<qr/[[:alpha]]/>.  This compiles to match a sequence of two characters.
+The second is C<"]">, and the first is any of: C<"[">, C<":">, C<"a">,
+C<"h">, C<"l">, or C<"p">.   This is unlikely to be the intended
+meaning, and now a warning is raised.  No warning is raised unless the
+specification is very close to one of the 14 legal POSIX classes.  (See
+L<perlrecharclass/POSIX Character Classes>.)
+[perl #8904]
+
+=item *
+
+Certain regex patterns involving a complemented POSIX class in an
+inverted bracketed character class, and matching something else
+optionally would improperly fail to match.  An example of one that could
+fail is C<qr/_?[^\Wbar]\x{100}/>.  This has been fixed.
+[perl #127537]
+
+=item *
+
+Perl 5.22 added support to the C99 hexadecimal floating point notation,
+but sometimes misparses hex floats. This has been fixed.
+[perl #127183]
+
+=item *
+
+A regression that allowed undeclared barewords in hash keys to work despite
+strictures has been fixed.
+L<[perl #126981]|https://rt.perl.org/Ticket/Display.html?id=126981>
+
+=item *
+
+Calls to the placeholder C<&PL_sv_yes> used internally when an C<import()>
+or C<unimport()> method isn't found now correctly handle scalar context.
+L<[perl #126042]|https://rt.perl.org/Ticket/Display.html?id=126042>
+
+=item *
+
+Report more context when we see an array where we expect to see an
+operator and avoid an assertion failure.
+L<[perl #123737]|https://rt.perl.org/Ticket/Display.html?id=123737>
+
+=item *
+
+Modifying an array that was previously a package C<@ISA> no longer
+causes assertion failures or crashes.
+L<[perl #123788]|https://rt.perl.org/Ticket/Display.html?id=123788>
+
+=item *
+
+Retain binary compatibility across plain and DEBUGGING perl builds.
+L<[perl #127212]|https://rt.perl.org/Ticket/Display.html?id=127212>
+
+=item *
+
+Avoid leaking memory when setting C<$ENV{foo}> on darwin.
+L<[perl #126240]|https://rt.perl.org/Ticket/Display.html?id=126240>
+
+=item *
+
+C</...\G/> no longer crashes on utf8 strings. When C<\G> is a fixed number
+of characters from the start of the regex, perl needs to count back that
+many characters from the current C<pos()> position and start matching from
+there. However, it was counting back bytes rather than characters, which
+could lead to panics on utf8 strings.
+
+=item *
+
+In some cases operators that return integers would return negative
+integers as large positive integers.
+L<[perl #126635]|https://rt.perl.org/Ticket/Display.html?id=126635>
+
+=item *
+
+The C<pipe()> operator would assert for DEBUGGING builds instead of
+producing the correct error message.  The condition asserted on is
+detected and reported on correctly without the assertions, so the
+assertions were removed.
+L<[perl #126480]|https://rt.perl.org/Ticket/Display.html?id=126480>
+
+=item *
+
+In some cases, failing to parse a here-doc would attempt to use freed
+memory.  This was caused by a pointer not being restored correctly.
+L<[perl #126443]|https://rt.perl.org/Ticket/Display.html?id=126443>
+
+=item *
+
+C<< @x = sort { *a = 0; $a <=> $b } 0 .. 1 >> no longer frees the GP
+for *a before restoring its SV slot.
+L<[perl #124097]|https://rt.perl.org/Ticket/Display.html?id=124097>
+
+=item *
+
+Multiple problems with the new hexadecimal floating point printf
+format C<%a> were fixed:
+L<[perl #126582]|https://rt.perl.org/Ticket/Display.html?id=126582>,
+L<[perl #126586]|https://rt.perl.org/Ticket/Display.html?id=126586>,
+L<[perl #126822]|https://rt.perl.org/Ticket/Display.html?id=126822>
+
+=item *
+
+Calling C<mg_set()> in C<leave_scope()> no longer leaks.
+
+=item *
+
+A regression from Perl v5.20 was fixed in which debugging output of regular
+expression compilation was wrong.  (The pattern was correctly compiled, but
+what got displayed for it was wrong.)
+
+=item *
+
+C<\b{sb}> works much better.  In Perl v5.22.0, this new construct didn't
+seem to give the expected results, yet passed all the tests in the
+extensive suite furnished by Unicode.  It turns out that it was because
+these were short input strings, and the failures had to do with longer
+inputs.
+
+=item *
+
+Certain syntax errors in
+L<perlrecharclass/Extended Bracketed Character Classes> caused panics
+instead of the proper error message.  This has now been fixed. [perl
+#126481]
+
+=item *
+
+Perl 5.20 added a message when a quantifier in a regular
+expression was useless, but then caused the parser to skip it;
+this caused the surplus quantifier to be silently ignored, instead
+of throwing an error. This is now fixed. [perl #126253]
+
+=item *
+
+The switch to building non-XS modules last in win32/makefile.mk (introduced
+by design as part of the changes to enable parallel building) caused the
+build of POSIX to break due to problems with the version module. This
+is now fixed.
+
+=item *
+
+Improved parsing of hex float constants.
+
+=item *
+
+Fixed an issue with C<< pack >> where C<< pack "H" >> (and C<< pack "h" >>)
+could read past the source when given a non-utf8 source, and a utf8 target.
+[perl #126325]
+
+=item *
+
+Fixed several cases where perl would abort due to a segmentation fault,
+or a C-level assert. [perl #126615], [perl #126602], [perl #126193].
+
+=item *
+
+There were places in regular expression patterns where comments (C<(?#...)>)
+weren't allowed, but should have been.  This is now fixed.
+L<[perl #116639]|https://rt.perl.org/Ticket/Display.html?id=116639>
+
+=item *
+
+Some regressions from Perl 5.20 have been fixed, in which some syntax errors in
+L<C<(?[...])>|perlrecharclass/Extended Bracketed Character Classes> constructs
+within regular expression patterns could cause a segfault instead of a proper
+error message.
+L<[perl #126180]|https://rt.perl.org/Ticket/Display.html?id=126180>
+L<[perl #126404]|https://rt.perl.org/Ticket/Display.html?id=126404>
+
+=item *
+
+Another problem with
+L<C<(?[...])>|perlrecharclass/Extended Bracketed Character Classes>
+constructs has been fixed wherein things like C<\c]> could cause panics.
+L<[perl #126181]|https://rt.perl.org/Ticket/Display.html?id=126181>
+
+=item *
+
+Some problems with attempting to extend the perl stack to around 2G or 4G
+entries have been fixed.  This was particularly an issue on 32-bit perls built
+to use 64-bit integers, and was easily noticeable with the list repetition
+operator, e.g.
+
+    @a = (1) x $big_number
+
+Formerly perl may have crashed, depending on the exact value of C<$big_number>;
+now it will typically raise an exception.
+L<[perl #125937]|https://rt.perl.org/Ticket/Display.html?id=125937>
+
+=item *
+
+In a regex conditional expression C<(?(condition)yes-pattern|no-pattern)>, if
+the condition is C<(?!)> then perl failed the match outright instead of
+matching the no-pattern.  This has been fixed.
+L<[perl #126222]|https://rt.perl.org/Ticket/Display.html?id=126222>
+
+=item *
+
+The special backtracking control verbs C<(*VERB:ARG)> now all allow an optional
+argument and set C<REGERROR>/C<REGMARK> appropriately as well.
+L<[perl #126186]|https://rt.perl.org/Ticket/Display.html?id=126186>
+
+=item *
+
+Several bugs, including a segmentation fault, have been fixed with the boundary
+checking constructs (introduced in Perl 5.22) C<\b{gcb}>, C<\b{sb}>, C<\b{wb}>,
+C<\B{gcb}>, C<\B{sb}>, and C<\B{wb}>.  All the C<\B{}> ones now match an empty
+string; none of the C<\b{}> ones do.
+L<[perl #126319]|https://rt.perl.org/Ticket/Display.html?id=126319>
+
+=item *
+
+Duplicating a closed file handle for write no longer creates a
+filename of the form F<GLOB(0xXXXXXXXX)>.  [perl #125115]
+
+=item *
+
+Warning fatality is now ignored when rewinding the stack.  This
+prevents infinite recursion when the now fatal error also causes
+rewinding of the stack.  [perl #123398]
+
+=item * 
+
+In perl v5.22.0, the logic changed when parsing a numeric parameter to the -C
+option, such that the successfully parsed number was not saved as the option
+value if it parsed to the end of the argument.  [perl #125381]
+
+=item *
+
+The PadlistNAMES macro is an lvalue again.
+
+=item *
+
+Zero -DPERL_TRACE_OPS memory for sub-threads.
+
+C<perl_clone_using()> was missing Zero init of PL_op_exec_cnt[].  This
+caused sub-threads in threaded -DPERL_TRACE_OPS builds to spew exceedingly
+large op-counts at destruct.  These counts would print %x as "ABABABAB",
+clearly a mem-poison value.
+
+=item *
+
+A leak in the XS typemap caused one scalar to be leaked each time a C<FILE *>
+or a C<PerlIO *> was C<OUTPUT:>ed or imported to Perl, since perl 5.000. These
+particular typemap entries are thought to be extremely rarely used by XS
+modules. [perl #124181]
+
+=item *
+
+C<alarm()> and C<sleep()> will now warn if the argument is a negative number
+and return undef. Previously they would pass the negative value to the
+underlying C function which may have set up a timer with a surprising value.
+
+=item *
+
+Perl can again be compiled with any Unicode version.  This used to
+(mostly) work, but was lost in v5.18 through v5.20.  The property
+C<Name_Alias> did not exist prior to Unicode 5.0.  L<Unicode::UCD>
+incorrectly said it did.  This has been fixed.
+
+=item *
+
+Very large code-points (beyond Unicode) in regular expressions no
+longer cause a buffer overflow in some cases when converted to UTF-8.
+L<[perl #125826]|https://rt.perl.org/Ticket/Display.html?id=125826>
+
+=item *
+
+The integer overflow check for the range operator (...) in list
+context now correctly handles the case where the size of the range is
+larger than the address space.  This could happen on 32-bits with
+-Duse64bitint.
+L<[perl #125781]|https://rt.perl.org/Ticket/Display.html?id=125781>
+
+=item *
+
+A crash with C<< %::=(); J->${\"::"} >> has been fixed.
+L<[perl #125541]|https://rt.perl.org/Ticket/Display.html?id=125541>
+
+=item *
+
+C<qr/(?[ () ])/> no longer segfaults, giving a syntax error message instead.
+[perl #125805]
+
+=item *
+
+Regular expression possessive quantifier v5.20 regression now fixed.
+C<qr/>I<PAT>C<{>I<min>,I<max>C<}+>C</> is supposed to behave identically
+to C<qr/(?E<gt>>I<PAT>C<{>I<min>,I<max>C<})/>.  Since v5.20, this didn't
+work if I<min> and I<max> were equal.  [perl #125825]
+
+=item *
+
+C<< BEGIN <> >> no longer segfaults and properly produces an error
+message.  [perl #125341]
+
+=item *
+
+In C<tr///> an illegal backwards range like C<tr/\x{101}-\x{100}//> was
+not always detected, giving incorrect results.  This is now fixed.
+
+=back
+
+=head1 Known Problems
+
+=over 4
+
+=item *
+
+Some modules have been broken by the L<context stack rework|/Internal Changes>.
+These modules were relying on non-guaranteed implementation details in perl.
+Their maintainers have been informed, and should contact perl5-porters for
+advice if needed.  Below is a subset of these modules:
+
+=over 4
+
+=item L<Algorithm::Permute>
+
+=item L<Coro>
+
+L<Coro> and perl v5.22.0 were already incompatible due to a change in the perl,
+and the reworking on the perl context stack creates a further incompatibility.
+perl5-porters has L<discussed the issue on the mailing
+list|http://www.nntp.perl.org/group/perl.perl5.porters/2016/05/msg236174.html>.
+
+=item L<Data::Alias>
+
+=item L<RPerl>
+
+=item L<Scope::Upper>
+
+=item L<TryCatch>
+
+=back
+
+=item *
+
+The module L<lexical::underscore> no longer works on perl v5.24.0, because perl
+no longer has a lexical C<$_>!
+
+=item *
+
+C<mod_perl> has been patched for compatibility for v5.22.0 and later but no
+release has been made.  The relevant patch (and other changes) can be found in
+their source code repository, L<mirrored at
+GitHub|https://github.com/apache/mod_perl/commit/82827132efd3c2e25cc413c85af61bb63375da6e>.
+
+=back
+
+=head1 Acknowledgements
+
+Perl 5.24.0 represents approximately 11 months of development since Perl 5.22.0
+and contains approximately 360,000 lines of changes across 1,800 files from 77
+authors.
+
+Excluding auto-generated files, documentation and release tools, there were
+approximately 250,000 lines of changes to 1,200 .pm, .t, .c and .h files.
+
+Perl continues to flourish into its third decade thanks to a vibrant community
+of users and developers. The following people are known to have contributed the
+improvements that became Perl 5.24.0:
+
+Aaron Crane, Aaron Priven, Abigail, Achim Gratz, Alexander D'Archangel, Alex
+Vandiver, Andreas König, Andy Broad, Andy Dougherty, Aristotle Pagaltzis,
+Chase Whitener, Chas. Owens, Chris 'BinGOs' Williams, Craig A. Berry, Dagfinn
+Ilmari MannsÃ¥ker, Dan Collins, Daniel Dragan, David Golden, David Mitchell,
+Dominic Hargreaves, Doug Bell, Dr.Ruud, Ed Avis, Ed J, Father Chrysostomos,
+Herbert Breunung, H.Merijn Brand, Hugo van der Sanden, Ivan Pozdeev, James E
+Keenan, Jan Dubois, Jarkko Hietaniemi, Jerry D. Hedden, Jim Cromie, John
+Peacock, John SJ Anderson, Karen Etheridge, Karl Williamson, kmx, Leon
+Timmermans, Ludovic E. R. Tolhurst-Cleaver, Lukas Mai, Martijn Lievaart,
+Matthew Horsfall, Mattia Barbon, Max Maischein, Mohammed El-Afifi, Nicholas
+Clark, Nicolas R., Niko Tyni, Peter John Acklam, Peter Martini, Peter
+Rabbitson, Pip Cet, Rafael Garcia-Suarez, Reini Urban, Renee Baecker, Ricardo
+Signes, Sawyer X, Shlomi Fish, Sisyphus, Stanislaw Pusep, Steffen Müller,
+Stevan Little, Steve Hay, Sullivan Beck, Thomas Sibley, Todd Rinaldo, Tom
+Hukins, Tony Cook, Unicode Consortium, Victor Adam, Vincent Pit, Vladimir
+Timofeev, Yves Orton, Zachary Storer, Zefram.
 
 The list above is almost certainly incomplete as it is automatically generated
 from version control history. In particular, it does not include the names of
@@ -400,23 +2227,18 @@ the F<AUTHORS> file in the Perl source distribution.
 
 If you find what you think is a bug, you might check the articles recently
 posted to the comp.lang.perl.misc newsgroup and the perl bug database at
-L<https://rt.perl.org/> .  There may also be information at
-L<http://www.perl.org/> , the Perl Home Page.
+https://rt.perl.org/ .  There may also be information at
+http://www.perl.org/ , the Perl Home Page.
 
 If you believe you have an unreported bug, please run the L<perlbug> program
 included with your release.  Be sure to trim your bug down to a tiny but
 sufficient test case.  Your bug report, along with the output of C<perl -V>,
 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
 
-If the bug you are reporting has security implications, which make it
-inappropriate to send to a publicly archived mailing list, then please send it
-to perl5-security-report@perl.org.  This points to a closed subscription
-unarchived mailing list, which includes all the core committers, who will be
-able to help assess the impact of issues, figure out a resolution, and help
-co-ordinate the release of patches to mitigate or fix the problem across all
-platforms on which Perl is supported.  Please only use this address for
-security issues in the Perl core, not for modules independently distributed on
-CPAN.
+If the bug you are reporting has security implications which make it
+inappropriate to send to a publicly archived mailing list, then see
+L<perlsec/SECURITY VULNERABILITY CONTACT INFORMATION>
+for details of how to report the issue.
 
 =head1 SEE ALSO
 
index d72b8bd..78aeb16 100644 (file)
@@ -216,6 +216,11 @@ operator which expects either a number or a string matching
 C</^[a-zA-Z]*[0-9]*\z/>.  See L<perlop/Auto-increment and
 Auto-decrement> for details.
 
+=item Array passed to stat will be coerced to a scalar%s
+
+(W syntax) You called stat() on an array, but the array will be
+coerced to a scalar - the number of elements in the array.
+
 =item assertion botched: %s
 
 (X) The malloc package that comes with Perl had an internal failure.
@@ -6231,6 +6236,12 @@ problems when being input or output, which is likely where this message
 came from.  If you really really know what you are doing you can turn
 off this warning by C<no warnings 'surrogate';>.
 
+=item Unknown charname '' is deprecated
+
+(D deprecated) You had a C<\N{}> with nothing between the braces.  This
+usage is deprecated, and will be made a syntax error in a future Perl
+version.
+
 =item Unknown charname '%s'
 
 (F) The name you used inside C<\N{}> is unknown to Perl.  Check the
@@ -7095,8 +7106,21 @@ space.
 
 =item Warning: unable to close filehandle %s properly: %s
 
-(S io) An error occurred when Perl implicitly closed a filehandle.  This
-usually indicates your file system ran out of disk space.
+(S io) There were errors during the implicit close() done on a filehandle
+when its reference count reached zero while it was still open, e.g.:
+
+    {
+        open my $fh, '>', $file  or die "open: '$file': $!\n";
+        print $fh $data or die "print: $!";
+    } # implicit close here
+
+Because various errors may only be detected by close() (e.g. buffering could
+allow the C<print> in this example to return true even when the disk is full),
+it is dangerous to ignore its result. So when it happens implicitly, perl will
+signal errors by warning.
+
+B<Prior to version 5.22.0, perl ignored such errors>, so the common idiom shown
+above was liable to cause B<silent data loss>.
 
 =item Warning: Use of "%s" without parentheses is ambiguous
 
index 18d2e40..e9c7038 100644 (file)
@@ -6630,7 +6630,8 @@ is the moral equivalent of these two:
     foo();
     print(uc($bar), $baz);
 
-See L<perlop> for more details on unary operators and the comma operator.
+See L<perlop> for more details on unary operators and the comma operator,
+and L<perldata> for details on evaluating a hash in scalar contex.
 
 =item seek FILEHANDLE,POSITION,WHENCE
 X<seek> X<fseek> X<filehandle, position>
index ba6cd16..42ebb8d 100644 (file)
@@ -2742,7 +2742,7 @@ source, like this:
  =for apidoc sv_setiv
 
  Copies an integer into the given SV.  Does not handle 'set' magic.  See
C<sv_setiv_mg>.
L<perlapi/sv_setiv_mg>.
 
  =cut
  */
index 42b63d9..1dd715a 100644 (file)
@@ -1451,12 +1451,13 @@ C<-DPERL_MEM_LOG> instead.
 
 =head2 PERL_MEM_LOG
 
-If compiled with C<-DPERL_MEM_LOG>, both memory and SV allocations go
-through logging functions, which is handy for breakpoint setting.
+If compiled with C<-DPERL_MEM_LOG> (C<-Accflags=-DPERL_MEM_LOG>), both
+memory and SV allocations go through logging functions, which is
+handy for breakpoint setting.
 
-Unless C<-DPERL_MEM_LOG_NOIMPL> is also compiled, the logging functions
-read $ENV{PERL_MEM_LOG} to determine whether to log the event, and if
-so how:
+Unless C<-DPERL_MEM_LOG_NOIMPL> (C<-Accflags=-DPERL_MEM_LOG_NOIMPL>) is
+also compiled, the logging functions read $ENV{PERL_MEM_LOG} to
+determine whether to log the event, and if so how:
 
     $ENV{PERL_MEM_LOG} =~ /m/           Log all memory ops
     $ENV{PERL_MEM_LOG} =~ /s/           Log all SV ops
index a688859..ee414fc 100644 (file)
@@ -565,6 +565,8 @@ the strings?).
  Steve     5.22.1-RC3   2015-Dec-02
  Steve     5.22.1-RC4   2015-Dec-08
  Steve     5.22.1       2015-Dec-13
+ Steve     5.22.2-RC1   2016-Apr-10
+ Steve     5.22.2       2016-Apr-29
 
  Ricardo   5.23.0       2015-Jun-20     The 5.23 development track
  Matthew   5.23.1       2015-Jul-20
@@ -577,6 +579,13 @@ the strings?).
  Sawyer X  5.23.8       2016-Feb-20
  Abigail   5.23.9       2016-Mar-20
 
+ Ricardo   5.24.0-RC1   2016-Apr-13     The 5.24 maintenance track
+ Ricardo   5.24.0-RC2   2016-Apr-23
+ Ricardo   5.24.0-RC3   2016-Apr-26
+ Ricardo   5.24.0-RC4   2016-May-02
+ Ricardo   5.24.0-RC5   2016-May-04
+ Ricardo   5.24.0       2016-May-09
+
 =head2 SELECTED RELEASE SIZES
 
 For example the notation "core: 212  29" in the release 1.000 means that
@@ -658,6 +667,7 @@ explained below.
  5.18.0         5892 113   1088  79  20077 2760   9365 2439   4943 154
  5.20.0         6243 115   1187  75  19499 2701   9620 2457   5145 159
  5.22.0         7819 115   1284  77  19121 2635   9772 2434   5615 176
+ 5.24.0         7922 113   1287  77  19535 2677   9994 2465   5702 177
 
 The "core"..."doc" mean the following files from the Perl source code
 distribution.  The glob notation ** means recursively, (.) means
@@ -962,25 +972,25 @@ the Perl source distribution for somewhat more selected releases.
 
  ======================================================================
 
-                  5.20.0           5.22.0
-
- Configure    552      1       570      1
- Cross        118     15       118     15
- djgpp         18      7        17      7
- h2pl          13     15        13     15
- hints        355     90       356     87
- mad          174      8         -      -
- NetWare      467     61       466     61
- os2          510     70       510     70
- plan9        316     17       317     17
- Porting     1204     68      1393     71
- qnx            1      4         1      4
- symbian      290     54       291     54
- utils        241     27       242     27
- vms          538     12       532     12
- vos            8      7         8      7
- win32       1183     64      1201     64
- x2p          341     19         -      -
+                  5.20.0           5.22.0          5.24.0
+
+ Configure    552      1       570      1      586      1
+ Cross        118     15       118     15      118     15
+ djgpp         18      7        17      7       17      7
+ h2pl          13     15        13     15       13     15
+ hints        355     90       356     87      362     87
+ mad          174      8         -      -        -      -
+ NetWare      467     61       466     61      467     61
+ os2          510     70       510     70      510     70
+ plan9        316     17       317     17      314     17
+ Porting     1204     68      1393     71     1321     71
+ qnx            1      4         1      4        1      4
+ symbian      290     54       291     54      292     54
+ utils        241     27       242     27      679     53
+ vms          538     12       532     12      524     12
+ vos            8      7         8      7        8      7
+ win32       1183     64      1201     64     1268     65
+ x2p          341     19         -      -        -      -
 
 =head2 SELECTED PATCH SIZES
 
index 0ab6452..018f916 100644 (file)
@@ -41,9 +41,9 @@ for EBCDIC platforms.
 L<http://cldr.unicode.org/> which includes more types of information than
 are available in the POSIX locale system.  At the time of this writing,
 there was no CPAN module that provides access to this XML-encoded data.
-However, many of its locales have the POSIX-only data extracted, and are
-available as UTF-8 locales at
-L<http://unicode.org/Public/cldr/latest/>.)
+However, it is possible to compute the POSIX locale data from them, and
+earlier CLDR versions had these already extracted for you as UTF-8 locales
+L<http://unicode.org/Public/cldr/2.0.1/>.)
 
 =head1 WHAT IS A LOCALE
 
@@ -164,6 +164,15 @@ L<The setlocale function>.
 
 =head2 The C<"use locale"> pragma
 
+WARNING!  Do NOT use this pragma in scripts that have multiple
+L<threads|threads> active.  The locale is not local to a single thread.
+Another thread may change the locale at any time, which could cause at a
+minimum that a given thread is operating in a locale it isn't expecting
+to be in.  On some platforms, segfaults can also occur.  The locale
+change need not be explicit; some operations cause perl to change the
+locale itself.  You are vulnerable simply by having done a C<"use
+locale">.
+
 By default, Perl itself (outside the L<POSIX> module)
 ignores the current locale.  The S<C<use locale>>
 pragma tells Perl to use the current locale for some operations.
@@ -389,6 +398,13 @@ this, as described in L</Unicode and UTF-8>.
 
 =head2 The setlocale function
 
+WARNING!  Do NOT use this function in a L<thread|threads>.  The locale
+will change in all other threads at the same time, and should your
+thread get paused by the operating system, and another started, that
+thread will not have the locale it is expecting.  On some platforms,
+there can be a race leading to segfaults if two threads call this
+function nearly simultaneously.
+
 You can switch locales as often as you wish at run time with the
 C<POSIX::setlocale()> function:
 
@@ -417,10 +433,6 @@ C<POSIX::setlocale()> function:
         # restore the old locale
         setlocale(LC_CTYPE, $old_locale);
 
-This simultaneously affects all threads of the program, so it may be
-problematic to use locales in threaded applications except where there
-is a single locale applicable to all threads.
-
 The first argument of C<setlocale()> gives the B<category>, the second the
 B<locale>.  The category tells in what aspect of data processing you
 want to apply locale-specific rules.  Category names are discussed in
@@ -1365,7 +1377,10 @@ system's implementation of the locale system than by Perl.
 The Unicode CLDR project extracts the POSIX portion of many of its
 locales, available at
 
-  http://unicode.org/Public/cldr/latest/
+  http://unicode.org/Public/cldr/2.0.1/
+
+(Newer versions of CLDR require you to compute the POSIX data yourself.
+See L<http://unicode.org/Public/cldr/latest/>.)
 
 There is a large collection of locale definitions at:
 
@@ -1446,7 +1461,10 @@ multi-byte:
 The only multi-byte (or wide character) locale that Perl is ever likely
 to support is UTF-8.  This is due to the difficulty of implementation,
 the fact that high quality UTF-8 locales are now published for every
-area of the world (L<http://unicode.org/Public/cldr/latest/>), and that
+area of the world (L<http://unicode.org/Public/cldr/2.0.1/> for
+ones that are already set-up, but from an earlier version;
+L<http://unicode.org/Public/cldr/latest/> for the most up-to-date, but
+you have to extract the POSIX information yourself), and that
 failing all that you can use the L<Encode> module to translate to/from
 your locale.  So, you'll have to do one of those things if you're using
 one of these locales, such as Big5 or Shift JIS.  For UTF-8 locales, in
index 7eee1ec..b3defad 100644 (file)
@@ -170,45 +170,6 @@ to do something a bit funnier looking:
     # add new columns to an existing row
     push @{ $AoA[0] }, "wilma", "betty";   # explicit deref
 
-Prior to Perl 5.14, this wouldn't even compile:
-
-    push $AoA[0], "wilma", "betty";        # implicit deref
-
-How come?  Because once upon a time, the argument to push() had to be a
-real array, not just a reference to one. That's no longer true.  In fact,
-the line marked "implicit deref" above works just fine--in this
-instance--to do what the one that says explicit deref did.
-
-The reason I said "in this instance" is because that I<only> works
-because C<$AoA[0]> already held an array reference.  If you try that on an
-undefined variable, you'll take an exception.  That's because the implicit
-derefererence will never autovivify an undefined variable the way C<@{ }>
-always will:
-
-    my $aref = undef;
-    push $aref,  qw(some more values);  # WRONG!
-    push @$aref, qw(a few more);        # ok
-
-If you want to take advantage of this new implicit dereferencing behavior,
-go right ahead: it makes code easier on the eye and wrist.  Just understand
-that older releases will choke on it during compilation.  Whenever you make
-use of something that works only in some given release of Perl and later,
-but not earlier, you should place a prominent
-
-    use v5.14;   # needed for implicit deref of array refs by array ops
-
-directive at the top of the file that needs it.  That way when somebody
-tries to run the new code under an old perl, rather than getting an error like
-
-    Type of arg 1 to push must be array (not array element) at /tmp/a
-    line 8, near ""betty";"
-    Execution of /tmp/a aborted due to compilation errors.
-
-they'll be politely informed that
-
- Perl v5.14.0 required--this is only v5.12.3, stopped at /tmp/a line 1.
- BEGIN failed--compilation aborted at /tmp/a line 1.
-
 =head2 Access and Printing
 
 Now it's time to print your data structure out.  How
@@ -291,7 +252,7 @@ parsable Perl code.  For example:
           [ "george", "jane", "elroy" ],
           [ "homer", "marge", "bart" ],
  );
- push $AoA[0], "wilma", "betty";
+ push @{ $AoA[0] }, "wilma", "betty";
  show @AoA;
 
 will print out:
index 17d24bb..9b1319a 100644 (file)
@@ -258,7 +258,7 @@ produces a warning unless you use S<C<no warnings 'experimental::bitwise'>>.
 Unary C<"+"> has no effect whatsoever, even on strings.  It is useful
 syntactically for separating a function name from a parenthesized expression
 that would otherwise be interpreted as the complete list of function
-arguments.  (See examples above under L<Terms and List Operators (Leftward)>.)
+arguments.  (See examples above under L</Terms and List Operators (Leftward)>.)
 X<+>
 
 Unary C<"\"> creates a reference to whatever follows it.  See L<perlreftut>
@@ -1272,7 +1272,7 @@ in which case you might as well just use the more customary C<"||"> operator:
 
     open(HANDLE, "< :utf8", "filename") || die "Can't open: $!\n";
 
-See also discussion of list operators in L<Terms and List Operators (Leftward)>.
+See also discussion of list operators in L</Terms and List Operators (Leftward)>.
 
 =head2 Logical Not
 X<operator, logical, not> X<not>
index 063dae5..ff841fc 100644 (file)
@@ -84,9 +84,9 @@ the Perl community should expect from Perl's developers:
 
 =item *
 
-We "officially" support the two most recent stable release series.  5.16.x
-and earlier are now out of support.  As of the release of 5.22.0, we will
-"officially" end support for Perl 5.18.x, other than providing security
+We "officially" support the two most recent stable release series.  5.20.x
+and earlier are now out of support.  As of the release of 5.26.0, we will
+"officially" end support for Perl 5.22.x, other than providing security
 updates as described below.
 
 =item *
@@ -120,8 +120,8 @@ beyond our 3 year support commitment.  We can provide limited support and
 advice to you as you do so and, where possible will try to apply
 those patches to the relevant -maint branches in git, though we may or
 may not choose to make numbered releases or "official" patches
-available.  Contact us at E<lt>perl5-security-report@perl.orgE<gt>
-to begin that process.
+available. See L<perlsec/SECURITY VULNERABILITY CONTACT INFORMATION>
+for details on how to begin that process.
 
 =back
 
@@ -274,8 +274,8 @@ not also fall into any of the "unacceptable" categories set out below:
 =item *
 
 Patches that fix CVEs or security issues.  These changes should
-be run through the perl5-security-report@perl.org mailing list
-rather than applied directly.
+be passed using the security reporting mechanism rather than applied
+directly; see L<perlsec/SECURITY VULNERABILITY CONTACT INFORMATION>.
 
 =item *
 
@@ -572,7 +572,7 @@ month.  Subsequent removals will double in length.  After six months with no
 warning, a user's ban length is reset.  Removals, like warnings, are public.
 
 The list of moderators will be public knowledge.  At present, it is:
-Aaron Crane, Andy Dougherty, Ricardo Signes, Steffen Müller.
+Aaron Crane, Andy Dougherty, Ricardo Signes, Sawyer X, Steffen Müller.
 
 =head1 CREDITS
 
index d77dfa9..15d411c 100644 (file)
@@ -376,8 +376,8 @@ semantics for that.  Let the operating system sort it out.
 
 The I<portable filename characters> as defined by ANSI C are
 
- a b c d e f g h i j k l m n o p q r t u v w x y z
- A B C D E F G H I J K L M N O P Q R T U V W X Y Z
+ a b c d e f g h i j k l m n o p q r t u v w x y z
+ A B C D E F G H I J K L M N O P Q R T U V W X Y Z
  0 1 2 3 4 5 6 7 8 9
  . _ -
 
index f27da1f..3df9bd2 100644 (file)
@@ -537,7 +537,7 @@ C<\b> when not immediately followed by a C<"{"> matches at any place
 between a word (something matched by C<\w>) and a non-word character
 (C<\W>); C<\B> when not immediately followed by a C<"{"> matches at any
 place between characters where C<\b> doesn't match.  To get better
-word matching of natural language text, see L<\b{wb}> below.
+word matching of natural language text, see L</\b{wb}> below.
 
 C<\b>
 and C<\B> assume there's a non-word character before the beginning and after
index e64abe4..8959ba5 100644 (file)
@@ -51,13 +51,6 @@ When a scalar is holding a reference, it always behaves as a simple scalar.
 It doesn't magically start being an array or hash or subroutine; you have to
 tell it explicitly to do so, by dereferencing it.
 
-That said, be aware that Perl version 5.14 introduces an exception
-to the rule, for syntactic convenience.  Experimental array and hash container
-function behavior allows array and hash references to be handled by Perl as
-if they had been explicitly syntactically dereferenced.  See
-L<perl5140delta/"Syntactical Enhancements">
-and L<perlfunc> for details.
-
 =head2 Making References
 X<reference, creation> X<referencing>
 
index 1ff3ce2..e454bf8 100644 (file)
@@ -706,9 +706,10 @@ at least a week:
     find . -mtime +7 -print | perl -nle unlink
 
 This is faster than using the B<-exec> switch of I<find> because you don't
-have to start a process on every filename found.  It does suffer from
-the bug of mishandling newlines in pathnames, which you can fix if
-you follow the example under B<-0>.
+have to start a process on every filename found (but it's not faster
+than using the B<-delete> switch available in newer versions of I<find>.
+It does suffer from the bug of mishandling newlines in pathnames, which
+you can fix if you follow the example under B<-0>.
 
 C<BEGIN> and C<END> blocks may be used to capture control before or after
 the implicit program loop, just as in I<awk>.
index 75ce3fd..6eb1bd2 100644 (file)
@@ -14,11 +14,24 @@ untrustworthy) programs to accomplish its purposes.
 
 =head1 SECURITY VULNERABILITY CONTACT INFORMATION
 
-If you believe you have found a security vulnerability in Perl, please email
-perl5-security-report@perl.org with details.  This points to a closed
-subscription, unarchived mailing list.  Please only use this address for
-security issues in the Perl core, not for modules independently distributed on
-CPAN.
+If you believe you have found a security vulnerability in Perl, please
+email the details to perl5-security-report@perl.org. This creates a new
+Request Tracker ticket in a special queue which isn't initially publicly
+accessible. The email will also be copied to a closed subscription
+unarchived mailing list which includes all the core committers, who will
+be able to help assess the impact of issues, figure out a resolution, and
+help co-ordinate the release of patches to mitigate or fix the problem
+across all platforms on which Perl is supported. Please only use this
+address for security issues in the Perl core, not for modules
+independently distributed on CPAN.
+
+When sending an initial request to the security email address, please
+don't Cc any other parties, because if they reply to all, the reply will
+generate yet another new ticket. Once you have received an initial reply
+with a C<[perl #NNNNNN]> ticket number in  the headline, it's okay to Cc
+subsequent replies to third parties: all emails to the
+perl5-security-report address with the ticket number in the subject line
+will be added to the ticket; without it, a new ticket will be created.
 
 =head1 SECURITY MECHANISMS AND CONCERNS
 
index 132c15e..1821b95 100644 (file)
@@ -1720,7 +1720,7 @@ from within the Win32 API.  Most Win32-specific code will report errors
 via C<$^E>.  ANSI C and Unix-like calls set C<errno> and so most
 portable Perl code will report errors via C<$!>.
 
-Caveats mentioned in the description of C<L<$!>> generally apply to
+Caveats mentioned in the description of C<L</$!>> generally apply to
 C<$^E>, also.
 
 This variable was added in Perl 5.003.
diff --git a/pp.c b/pp.c
index 4fcc577..4a2cde0 100644 (file)
--- a/pp.c
+++ b/pp.c
@@ -3875,10 +3875,7 @@ PP(pp_ucfirst)
     /* We may be able to get away with changing only the first character, in
      * place, but not if read-only, etc.  Later we may discover more reasons to
      * not convert in-place. */
-    inplace = !SvREADONLY(source)
-          && (  SvPADTMP(source)
-             || (  SvTEMP(source) && !SvSMAGICAL(source)
-                && SvREFCNT(source) == 1));
+    inplace = !SvREADONLY(source) && SvPADTMP(source);
 
     /* First calculate what the changed first character should be.  This affects
      * whether we can just swap it out, leaving the rest of the string unchanged,
@@ -4118,9 +4115,7 @@ PP(pp_uc)
 
     SvGETMAGIC(source);
 
-    if ((SvPADTMP(source)
-        ||
-       (SvTEMP(source) && !SvSMAGICAL(source) && SvREFCNT(source) == 1))
+    if (   SvPADTMP(source)
        && !SvREADONLY(source) && SvPOK(source)
        && !DO_UTF8(source)
        && (
@@ -4377,10 +4372,7 @@ PP(pp_lc)
 
     SvGETMAGIC(source);
 
-    if (   (  SvPADTMP(source)
-          || (  SvTEMP(source) && !SvSMAGICAL(source)
-             && SvREFCNT(source) == 1  )
-          )
+    if (   SvPADTMP(source)
        && !SvREADONLY(source) && SvPOK(source)
        && !DO_UTF8(source)) {
 
index 7b31bbb..99ff59a 100644 (file)
--- a/pp_ctl.c
+++ b/pp_ctl.c
@@ -2052,7 +2052,8 @@ PP(pp_leave)
     assert(CxTYPE(cx) == CXt_BLOCK);
 
     if (PL_op->op_flags & OPf_SPECIAL)
-       cx->blk_oldpm = PL_curpm; /* fake block should preserve $1 et al */
+        /* fake block should preserve $1 et al; e.g.  /(...)/ while ...; */
+       cx->blk_oldpm = PL_curpm;
 
     oldsp = PL_stack_base + cx->blk_oldsp;
     gimme = cx->blk_gimme;
@@ -2256,6 +2257,8 @@ PP(pp_leaveloop)
  *
  * Any changes made to this function may need to be copied to pp_leavesub
  * and vice-versa.
+ *
+ * also tail-called by pp_return
  */
 
 PP(pp_leavesublv)
@@ -2397,20 +2400,18 @@ PP(pp_return)
         }
 
         /* There are contexts that need popping. Doing this may free the
-         * return value(s), so preserve them first, e.g. popping the plain
+         * return value(s), so preserve them first: e.g. popping the plain
          * loop here would free $x:
          *     sub f {  { my $x = 1; return $x } }
          * We may also need to shift the args down; for example,
          *    for (1,2) { return 3,4 }
-         * leaves 1,2,3,4 on the stack. Both these actions can be done by
-         * leave_adjust_stacks().  By calling it with and lvalue "pass
-         * all" action, we just bump the ref count and mortalise the args
-         * that need it, do a FREETMPS.  The "scan the args and maybe copy
-         * them" process will be repeated by whoever we tail-call (e.g.
-         * pp_leaveeval), where any copying etc will be done. That is to
-         * say, in this code path two scans of the args will be done; the
-         * first just shifts and preserves; the second is the "real" arg
-         * processing, based on the type of return.
+         * leaves 1,2,3,4 on the stack. Both these actions will be done by
+         * leave_adjust_stacks(), along with freeing any temps. Note that
+         * whoever we tail-call (e.g. pp_leaveeval) will also call
+         * leave_adjust_stacks(); however, the second call is likely to
+         * just see a bunch of SvTEMPs with a ref count of 1, and so just
+         * pass them through, rather than copying them again. So this
+         * isn't as inefficient as it sounds.
          */
         cx = &cxstack[cxix];
         PUTBACK;
@@ -4201,6 +4202,9 @@ PP(pp_entereval)
     }
 }
 
+
+/* also tail-called by pp_return */
+
 PP(pp_leaveeval)
 {
     SV **oldsp;
@@ -4307,6 +4311,9 @@ PP(pp_entertry)
     return DOCATCH(PL_op->op_next);
 }
 
+
+/* also tail-called by pp_return */
+
 PP(pp_leavetry)
 {
     SV **oldsp;
index d7fa3d2..d6cb1aa 100644 (file)
--- a/pp_hot.c
+++ b/pp_hot.c
@@ -3623,6 +3623,8 @@ Perl_leave_adjust_stacks(pTHX_ SV **from_sp, SV **to_sp, U8 gimme, int pass)
 }
 
 
+/* also tail-called by pp_return */
+
 PP(pp_leavesub)
 {
     U8 gimme;
diff --git a/proto.h b/proto.h
index 044d31e..fb4ee29 100644 (file)
--- a/proto.h
+++ b/proto.h
@@ -1244,9 +1244,9 @@ PERL_CALLCONV void        Perl_init_stacks(pTHX);
 PERL_CALLCONV void     Perl_init_tm(pTHX_ struct tm *ptm);
 #define PERL_ARGS_ASSERT_INIT_TM       \
        assert(ptm)
-/* PERL_CALLCONV char* Perl_instr(const char* big, const char* little)
+PERL_CALLCONV char*    Perl_instr(const char* big, const char* little)
                        __attribute__warn_unused_result__
-                       __attribute__pure__; */
+                       __attribute__pure__;
 #define PERL_ARGS_ASSERT_INSTR \
        assert(big); assert(little)
 
@@ -3376,7 +3376,7 @@ PERL_CALLCONV IV  Perl_utf8_distance(pTHX_ const U8 *a, const U8 *b)
 #define PERL_ARGS_ASSERT_UTF8_DISTANCE \
        assert(a); assert(b)
 
-PERL_CALLCONV U8*      Perl_utf8_hop(const U8 *s, I32 off)
+PERL_CALLCONV U8*      Perl_utf8_hop(const U8 *s, SSize_t off)
                        __attribute__warn_unused_result__
                        __attribute__pure__;
 #define PERL_ARGS_ASSERT_UTF8_HOP      \
@@ -5473,6 +5473,17 @@ STATIC void      S_mem_log_common(enum mem_log_type mlt, const UV n, const UV typesiz
        assert(type_name); assert(filename); assert(funcname)
 #  endif
 #endif
+#if defined(PERL_MEM_LOG)
+PERL_CALLCONV Malloc_t Perl_mem_log_alloc(const UV nconst, UV typesize, const char *type_name, Malloc_t newalloc, const char *filename, const int linenumber, const char *funcname);
+#define PERL_ARGS_ASSERT_MEM_LOG_ALLOC \
+       assert(type_name); assert(filename); assert(funcname)
+PERL_CALLCONV Malloc_t Perl_mem_log_free(Malloc_t oldalloc, const char *filename, const int linenumber, const char *funcname);
+#define PERL_ARGS_ASSERT_MEM_LOG_FREE  \
+       assert(filename); assert(funcname)
+PERL_CALLCONV Malloc_t Perl_mem_log_realloc(const UV n, const UV typesize, const char *type_name, Malloc_t oldalloc, Malloc_t newalloc, const char *filename, const int linenumber, const char *funcname);
+#define PERL_ARGS_ASSERT_MEM_LOG_REALLOC       \
+       assert(type_name); assert(filename); assert(funcname)
+#endif
 #if defined(PERL_OP_PARENT)
 PERL_CALLCONV OP*      Perl_op_parent(OP *o);
 #define PERL_ARGS_ASSERT_OP_PARENT     \
index 2f46a24..be6cb96 100644 (file)
--- a/regcomp.c
+++ b/regcomp.c
@@ -933,7 +933,7 @@ Perl_re_indentf(pTHX_ const char *fmt, U32 depth, ...)
     PerlIO *f= Perl_debug_log;
     PERL_ARGS_ASSERT_RE_INDENTF;
     va_start(ap, depth);
-    PerlIO_printf(f, "%*s", ( depth % 20 ) * 2, "");
+    PerlIO_printf(f, "%*s", ( (int)depth % 20 ) * 2, "");
     result = PerlIO_vprintf(f, fmt, ap);
     va_end(ap);
     return result;
@@ -2166,7 +2166,8 @@ S_dump_trie_interim_table(pTHX_ const struct _reg_trie_data *trie,
         }
     }
 
-    Perl_re_printf( aTHX_  "\n%*sState+-",depth+1 );
+    Perl_re_printf( aTHX_ "\n");
+    Perl_re_indentf( aTHX_  "State+-", depth+1 );
 
     for( charid=0 ; charid < trie->uniquecharcount ; charid++ ) {
         Perl_re_printf( aTHX_  "%.*s", colwidth,"--------");
index c2e44aa..a8842a1 100644 (file)
--- a/regcomp.h
+++ b/regcomp.h
@@ -368,7 +368,7 @@ struct regnode_ssc {
 
 #define REG_MAGIC 0234
 
-#define SIZE_ONLY (RExC_emit == (regnode *) & RExC_emit_dummy)
+#define SIZE_ONLY cBOOL(RExC_emit == (regnode *) & RExC_emit_dummy)
 #define PASS1 SIZE_ONLY
 #define PASS2 (! SIZE_ONLY)
 
index d81a078..22c9c15 100644 (file)
@@ -358,8 +358,8 @@ EOM
 
   print $warn <<'EOM';
 
-#define isLEXWARN_on   (PL_curcop->cop_warnings != pWARN_STD)
-#define isLEXWARN_off  (PL_curcop->cop_warnings == pWARN_STD)
+#define isLEXWARN_on   cBOOL(PL_curcop->cop_warnings != pWARN_STD)
+#define isLEXWARN_off  cBOOL(PL_curcop->cop_warnings == pWARN_STD)
 #define isWARN_ONCE    (PL_dowarn & (G_WARN_ON|G_WARN_ONCE))
 #define isWARN_on(c,x) (IsSet((U8 *)(c + 1), 2*(x)))
 #define isWARNf_on(c,x)        (IsSet((U8 *)(c + 1), 2*(x)+1))
index f2e0164..cdaa95c 100644 (file)
--- a/regexec.c
+++ b/regexec.c
@@ -3640,7 +3640,7 @@ S_regtry(pTHX_ regmatch_info *reginfo, char **startposp)
    messages are inline with the regop output that created them.
 */
 #define REPORT_CODE_OFF 29
-#define INDENT_CHARS(depth) ((depth) % 20)
+#define INDENT_CHARS(depth) ((int)(depth) % 20)
 #ifdef DEBUGGING
 int
 Perl_re_exec_indentf(pTHX_ const char *fmt, U32 depth, ...)
@@ -3650,7 +3650,7 @@ Perl_re_exec_indentf(pTHX_ const char *fmt, U32 depth, ...)
     PerlIO *f= Perl_debug_log;
     PERL_ARGS_ASSERT_RE_EXEC_INDENTF;
     va_start(ap, depth);
-    PerlIO_printf(f, "%*s|%4d| %*s", REPORT_CODE_OFF, "", depth, INDENT_CHARS(depth), "" );
+    PerlIO_printf(f, "%*s|%4"UVuf"| %*s", REPORT_CODE_OFF, "", (UV)depth, INDENT_CHARS(depth), "" );
     result = PerlIO_vprintf(f, fmt, ap);
     va_end(ap);
     return result;
@@ -5232,6 +5232,13 @@ S_regmatch(pTHX_ regmatch_info *reginfo, char *startpos, regnode *prog)
     bool is_utf8_pat = reginfo->is_utf8_pat;
     bool match = FALSE;
 
+/* Solaris Studio 12.3 messes up fetching PL_charclass['\n'] */
+#if (defined(__SUNPRO_C) && (__SUNPRO_C == 0x5120) && defined(__x86_64) && defined(USE_64_BIT_ALL))
+#  define SOLARIS_BAD_OPTIMIZER
+    const U32 *pl_charclass_dup = PL_charclass;
+#  define PL_charclass pl_charclass_dup
+#endif
+
 #ifdef DEBUGGING
     GET_RE_DEBUG_FLAGS_DECL;
 #endif
@@ -6883,6 +6890,7 @@ S_regmatch(pTHX_ regmatch_info *reginfo, char *startpos, regnode *prog)
        }
 
        case EVAL_AB: /* cleanup after a successful (??{A})B */
+            /* note: this is called twice; first after popping B, then A */
             DEBUG_STACK_r({
                 Perl_re_exec_indentf( aTHX_  "EVAL_AB cur_eval=%p prev_eval=%p\n",
                     depth, cur_eval, ST.prev_eval);
@@ -8315,6 +8323,9 @@ NULL
             /* NOTREACHED */
        }
     }
+#ifdef SOLARIS_BAD_OPTIMIZER
+#  undef PL_charclass
+#endif
 
     /*
     * We get here only if there's trouble -- normally "case END" is
diff --git a/sv.c b/sv.c
index 819a250..decc47c 100644 (file)
--- a/sv.c
+++ b/sv.c
@@ -1573,7 +1573,9 @@ Perl_sv_grow(pTHX_ SV *const sv, STRLEN newlen)
      * Only increment if the allocation isn't MEM_SIZE_MAX,
      * otherwise it will wrap to 0.
      */
-    if (newlen & 0xff && newlen != MEM_SIZE_MAX)
+    if (   (newlen < 0x1000 || (newlen & (newlen - 1)))
+        && newlen != MEM_SIZE_MAX
+    )
         newlen++;
 #endif
 
@@ -14182,7 +14184,7 @@ Perl_ss_dup(pTHX_ PerlInterpreter *proto_perl, CLONE_PARAMS* param)
 {
     dVAR;
     ANY * const ss     = proto_perl->Isavestack;
-    const I32 max      = proto_perl->Isavestack_max;
+    const I32 max      = proto_perl->Isavestack_max + SS_MAXPUSH;
     I32 ix             = proto_perl->Isavestack_ix;
     ANY *nss;
     const SV *sv;
index 603ef44..48cb7a5 100644 (file)
@@ -308,6 +308,7 @@ d_mbtowc='undef'
 d_memchr='define'
 d_memcmp='define'
 d_memcpy='define'
+d_memmem='undef'
 d_memmove='define'
 d_memset='define'
 d_mkdir='define'
index da5332c..80c580b 100644 (file)
 #define Mkdir(path,mode)   mkdir((path),(mode))
 
 #ifndef PERL_SYS_TERM_BODY
-#define PERL_SYS_TERM_BODY()   HINTS_REFCNT_TERM; OP_REFCNT_TERM; \
-                               PERLIO_TERM; MALLOC_TERM; CloseSTDLIB();
+#define PERL_SYS_TERM_BODY()   HINTS_REFCNT_TERM; OP_REFCNT_TERM;          \
+                               PERLIO_TERM; MALLOC_TERM; CloseSTDLIB();    \
+                                PERL_LOCALE_TERM
+
 #endif
 
 #define BIT_BUCKET "NUL:"
index 8256c23..528639e 100644 (file)
@@ -2040,3 +2040,20 @@ EXPECT
 Non-finite repeat count does nothing at - line 5.
 Non-finite repeat count does nothing at - line 6.
 Non-finite repeat count does nothing at - line 7.
+########
+# NAME warn on stat @array
+@foo = ("op/stat.t");
+stat @foo;
+my @bar = @foo;
+stat @bar;
+my $ref = \@foo;
+stat @$ref;
+use warnings 'syntax';
+stat @foo;
+stat @bar;
+stat @$ref;
+EXPECT
+Array passed to stat will be coerced to a scalar (did you want stat $foo[0]?) at - line 8.
+Array passed to stat will be coerced to a scalar (did you want stat $bar[0]?) at - line 9.
+Array passed to stat will be coerced to a scalar at - line 10.
+
index 5d13678..08cb27b 100644 (file)
@@ -1,6 +1,7 @@
   regcomp.c    These tests have been moved to t/re/reg_mesg.t
                except for those that explicitly test line numbers
-                and those that don't have a <-- HERE in them, and those that die plus have warnings
+                and those that don't have a <-- HERE in them, and those that
+                die plus have warnings, or otherwise require special handling
 
 __END__
 use warnings 'regexp';
@@ -80,3 +81,40 @@ eval {/$_/}, print "$_ ==> ", $@ || "OK!\n" for "]]]]]]]]][\\", "]]]]][\\"
 EXPECT
 ]]]]]]]]][\ ==> Unmatched [ in regex; marked by <-- HERE in m/]]]]]]]]][\ <-- HERE / at - line 2.
 ]]]]][\ ==> Unmatched [ in regex; marked by <-- HERE in m/]]]]][\ <-- HERE / at - line 2.
+########
+# NAME [perl #123417]
+use warnings 'regexp';
+qr/[\N{}]/;
+qr/\N{}/;
+no warnings 'regexp';
+qr/[\N{}]/;
+qr/\N{}/;
+no warnings 'deprecated';
+qr/[\N{}]/;
+qr/\N{}/;
+EXPECT
+Unknown charname '' is deprecated at - line 2.
+Ignoring zero length \N{} in character class in regex; marked by <-- HERE in m/[\N{} <-- HERE ]/ at - line 2.
+Unknown charname '' is deprecated at - line 3.
+Unknown charname '' is deprecated at - line 5.
+Unknown charname '' is deprecated at - line 6.
+########
+# NAME [perl #123417]
+# OPTION fatal
+use warnings 'regexp';
+no warnings 'experimental::re_strict';
+use re 'strict';
+qr/[\N{}]/;
+EXPECT
+Unknown charname '' is deprecated at - line 5.
+Zero length \N{} in regex; marked by <-- HERE in m/[\N{} <-- HERE ]/ at - line 5.
+########
+# NAME [perl #123417]
+# OPTION fatal
+use warnings 'regexp';
+no warnings 'experimental::re_strict';
+use re 'strict';
+qr/\N{}/;
+EXPECT
+Unknown charname '' is deprecated at - line 5.
+Zero length \N{} in regex; marked by <-- HERE in m/\N{} <-- HERE / at - line 5.
index 14f9565..7b9fb17 100644 (file)
@@ -6,7 +6,7 @@ BEGIN {
     set_up_inc('../lib');
 }
 
-plan(tests => 133);
+plan(tests => 134);
 
 eval 'pass();';
 
@@ -653,3 +653,15 @@ pass("eval in freed package does not crash");
     eval q{$@ = 2};
     ok(!$@, 'eval clearing $@');
 }
+
+# RT #127786
+# this used to give an assertion failure
+
+{
+    package DB {
+        sub f127786 { eval q/\$s/ }
+    }
+    my $s;
+    sub { $s; DB::f127786}->();
+    pass("RT #127786");
+}
index a390c63..2ce65ac 100644 (file)
--- a/t/op/lc.t
+++ b/t/op/lc.t
@@ -1,6 +1,8 @@
 #!./perl
 
 # This file is intentionally encoded in latin-1.
+#
+# Test uc(), lc(), fc(), ucfirst(), lcfirst(), quotemeta() etc
 
 BEGIN {
     chdir 't' if -d 't';
@@ -14,7 +16,7 @@ BEGIN {
 
 use feature qw( fc );
 
-plan tests => 134 + 4 * 256;
+plan tests => 139 + 4 * 256;
 
 is(lc(undef),     "", "lc(undef) is ''");
 is(lcfirst(undef), "", "lcfirst(undef) is ''");
@@ -317,6 +319,28 @@ $h{k} = bless[], "\x{130}bcde"; # U+0130 grows with lc()
 like lc delete $h{k}, qr "^i\x{307}bcde=array\(.*\)",
     'lc(TEMP ref) does not produce a corrupt string';
 
+# List::Util::first() etc sets $_ to an SvTEMP without raising its
+# refcount.  This was causing lc() etc to unsafely modify in-place.
+# see http://nntp.perl.org/group/perl.perl5.porters/228213
+
+SKIP: {
+    skip "no List::Util on miniperl", 5, if is_miniperl;
+    require List::Util;
+    my %hl = qw(a 1 b 2 c 3);
+    my %hu = qw(A 1 B 2 C 3);
+    my $x;
+    $x = List::Util::first(sub { uc      $_ eq 'A' }, keys %hl);
+    is($x, "a", "first { uc }");
+    $x = List::Util::first(sub { ucfirst $_ eq 'A' }, keys %hl);
+    is($x, "a", "first { ucfirst }");
+    $x = List::Util::first(sub { lc      $_ eq 'a' }, keys %hu);
+    is($x, "A", "first { lc }");
+    $x = List::Util::first(sub { lcfirst $_ eq 'a' }, keys %hu);
+    is($x, "A", "first { lcfirst }");
+    $x = List::Util::first(sub { fc      $_ eq 'a' }, keys %hu);
+    is($x, "A", "first { fc }");
+}
+
 
 my $utf8_locale = find_utf8_ctype_locale();
 
index 4ea3f24..c4a5062 100644 (file)
@@ -197,6 +197,24 @@ eval {
 };
 is($@, '', 'ex-PVBM assert'.$@);
 
+# RT perl #127855
+# Check that stringification and assignment to itself doesn't break
+# anything. This is unlikely to actually fail the tests; its more something
+# for valgrind to spot. It will also only fail if SvGROW or its caller
+# decides to over-allocate (otherwise copying the string will skip the
+# sv_grow(), as the new size is the same as the current size).
+
+{
+    my $s;
+    for my $len (1..40) {
+        $s = 'x' x $len;
+        my $t = $s;
+        $t = "$t";
+        ok($s eq $t, "RT 127855: len=$len");
+    }
+}
+
+
 done_testing();
 
 __END__
index 2d7e3c7..637a902 100644 (file)
@@ -25,7 +25,7 @@ if ($^O eq 'MSWin32') {
     ${^WIN32_SLOPPY_STAT} = 0;
 }
 
-plan tests => 116;
+plan tests => 118;
 
 my $Perl = which_perl();
 
@@ -636,6 +636,21 @@ SKIP: {
 is join("-", 1,2,3,(stat stat stat),4,5,6), "1-2-3-4-5-6",
   'stat inside stat gets scalar context';
 
+# [perl #126162] stat an array should not work
+my $Errno_loaded = eval { require Errno };
+my $statfile = './op/stat.t';
+my @statarg = ($statfile, $statfile);
+ok !stat(@statarg),
+  'stat on an array of valid paths should warn and should not return any data';
+my $error = 0+$!;
+SKIP:
+{
+    skip "Errno not available", 1
+      unless $Errno_loaded;
+    is $error, &Errno::ENOENT,
+      'stat on an array of valid paths should return ENOENT';
+}
+
 END {
     chmod 0666, $tmpfile;
     unlink_all $tmpfile;
index 82a8543..2b3b01a 100644 (file)
@@ -242,12 +242,18 @@ for ([chdir=>''],[chmod=>'0,'],[chown=>'0,0,'],[utime=>'0,0,'],
     check_count "$op $args\\\$tied_glob$postargs";
 }
 
-$dummy  =   crypt $var,0; check_count 'crypt $tied, ...';
-$dummy  =   crypt 0,$var; check_count 'crypt ..., $tied';
-$var = substr(chr 256,0,0);
-$dummy  =   crypt $var,0; check_count 'crypt $tied_utf8, ...';
-$var = substr(chr 256,0,0);
-$dummy  =   crypt 0,$var; check_count 'crypt ..., $tied_utf8';
+my $can_config = eval { require Config; 1 };
+SKIP:
+{
+    skip "No Config", 4 unless $can_config;
+    skip "No crypt()", 4 unless $Config::Config{d_crypt};
+    $dummy  =   crypt $var,0; check_count 'crypt $tied, ...';
+    $dummy  =   crypt 0,$var; check_count 'crypt ..., $tied';
+    $var = substr(chr 256,0,0);
+    $dummy  =   crypt $var,0; check_count 'crypt $tied_utf8, ...';
+    $var = substr(chr 256,0,0);
+    $dummy  =   crypt 0,$var; check_count 'crypt ..., $tied_utf8';
+}
 
 SKIP:
 {
index a7e4421..f871a32 100644 (file)
@@ -36,6 +36,8 @@ ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/t/echo.t 37aec8f794c52e037540757eb5b
 ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/t/lib/MakeMaker/Test/NoXS.pm 371cdff1b2375017907cfbc9c8f4a31f5ad10582
 ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/t/prereq.t 53bda2c549fd13a6b6c13a070ca6bc79883081c0
 ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/t/vstrings.t 90035a2bdbf45f15b9c3196d072d7cba7e662871
+File::Path cpan/File-Path/lib/File/Path.pm fd8ce4420a0c113d3f47dd3223859743655c1da8
+File::Path cpan/File-Path/t/Path_win32.t 94b9276557ce7f80b91f6fd9bfa7a0cd9bf9683e
 IPC::SysV cpan/IPC-SysV/lib/IPC/Msg.pm 88865a2c7a06351cf10e08addd077bbdea02fb60
 IPC::SysV cpan/IPC-SysV/lib/IPC/Semaphore.pm 04f0d11b7d0babf8e41ccc917cccecc4a3ff9050
 IPC::SysV cpan/IPC-SysV/lib/IPC/SharedMem.pm 85dea09a5bb625fc1fdda433909633fda05ea831
@@ -53,4 +55,3 @@ Socket cpan/Socket/Socket.pm 98e38176d745c38282907f391c077298f5a3d0ba
 Socket cpan/Socket/Socket.xs edd4fed212785f11c5c2095a75941dad27d586d9
 autodie cpan/autodie/t/mkdir.t 9e70d2282a3cc7d76a78bf8144fccba20fb37dac
 version cpan/version/lib/version.pm ff75e2076be10bd4c05133cd979fda0b38ca8653
-version vutil.c 6d7f036a394f25a3a5b4a4a1dafd2eba4ebc67e3
index c0c4107..4f1379b 100644 (file)
@@ -1,4 +1,4 @@
-# This file is the data file for t/porting/podcheck.t.
+# This file is the data file for porting/podcheck.t.
 # There are three types of lines.
 # Comment lines are white-space only or begin with a '#', like this one.  Any
 #   changes you make to the comment lines will be lost when the file is
@@ -15,6 +15,7 @@ _control87(3)
 accept(2)
 access(2)
 Algorithm::C3
+Algorithm::Permute
 AnyEvent
 Apache::MP3
 Archive::Extract
@@ -141,6 +142,7 @@ IPC::Signal
 kill(3)
 langinfo(3)
 LaTeX::Encode
+lexical::underscore
 Lexical::Var
 Lingua::JA::Romanize::Japanese
 Lingua::KO::Hangul::Util
@@ -234,8 +236,10 @@ recvfrom(2)
 recvmsg(3)
 rename(2)
 Role::Tiny
+RPerl
 s2p
 Scalar::Readonly
+Scope::Upper
 sdbm(3)
 select(2)
 semctl(2)
@@ -285,6 +289,7 @@ Tk
 Tk::Pod
 touch(1)
 tr(1)
+TryCatch
 tty(1)
 umask(2)
 Unicode::CaseFold
index ab145eb..913e846 100644 (file)
@@ -2313,6 +2313,7 @@ EOF
         is "$1" || $@, "foo", 'multichar \N{...} stringified and retoked';
     }
     {   # empty \N{...} tripping roundly
+        no warnings 'deprecated';
         BEGIN { $^H{charnames} = sub { "" } }
         my $qr = qr$(a\N{foo}t)$;
         "at" =~ eval "qr/$qr/";
@@ -2434,6 +2435,7 @@ EOF
 
         like($string, qr/$string/i, "LATIN SMALL SHARP S matches itself under /id");
         unlike($folded_string, qr/$string/i, "LATIN SMALL SHARP S doesn't match 'ss' under /di");
+        no warnings 'deprecated';
         like($folded_string, qr/\N{}$string/i, "\\N{} earlier than LATIN SMALL SHARP S transforms /di into /ui, matches 'ss'");
         like($folded_string, qr/$string\N{}/i, "\\N{} after LATIN SMALL SHARP S transforms /di into /ui, matches 'ss'");
     }
index 25061e1..34ac94a 100644 (file)
@@ -1954,7 +1954,7 @@ foo(*ACCEPT:foo)  foo     y       $::REGMARK      foo
 (foo(*ACCEPT:foo))     foo     y       $::REGMARK      foo
 A(*FAIL:foo)[BC]       A       n       $::REGERROR     foo
 
-\N(?#comment){SPACE}   A       c       -       Missing braces on \N{}
+\N(?#comment){SPACE}   A       c       -       Missing braces on \\N{}
 ab(?#Comment){2}c      abbc    y       $&      abbc
 \p A   A       c       -       Character following \\p must be '{' or a single-character Unicode property name         # [perl #126187
 \P:A   A       c       -       Character following \\P must be '{' or a single-character Unicode property name
index f08c708..0fe4539 100644 (file)
@@ -300,10 +300,6 @@ my @death_only_under_strict = (
                      => 'Non-hex character {#} m/\x{ABCDEFG{#}}/',
     'm/[\x{ABCDEFG}]/' => 'Illegal hexadecimal digit \'G\' ignored',
                        => 'Non-hex character {#} m/[\x{ABCDEFG{#}}]/',
-    'm/[\N{}]/' => 'Ignoring zero length \\N{} in character class {#} m/[\\N{}{#}]/',
-                => 'Zero length \\N{} {#} m/[\\N{}{#}]/',
-    'm/\N{}/' => "",
-                => 'Zero length \\N{} {#} m/\\N{}{#}/',
     "m'[\\y]\\x{100}'" => 'Unrecognized escape \y in character class passed through {#} m/[\y{#}]\x{100}/',
                        => 'Unrecognized escape \y in character class {#} m/[\y{#}]\x{100}/',
     'm/[a-\d]\x{100}/' => 'False [] range "a-\d" {#} m/[a-\d{#}]\x{100}/',
@@ -716,6 +712,8 @@ for my $strict ("",  "no warnings 'experimental::re_strict'; use re 'strict';")
 
             {
                 $_ = "x";
+                #use feature 'unicode_eval';
+                #print STDERR __LINE__, ": ", "eval '$strict no warnings; $regex'", "\n";
                 eval "$strict no warnings; $regex";
             }
             if (is($@, "", "$strict $regex did not die")) {
index f27a027..8e98e55 100644 (file)
@@ -406,7 +406,7 @@ EOFCODE
            # Probably we should annotate specific tests with which warnings
            # categories they're known to trigger, and hence should be
            # disabled just for that test
-           no warnings qw(uninitialized regexp);
+           no warnings qw(uninitialized regexp deprecated);
            eval $code;
        }
        chomp( my $err = $@ );
index 28d4dbb..648f2e9 100644 (file)
@@ -23,7 +23,7 @@ BEGIN {
     skip_all_without_unicode_tables();
 }
 
-plan tests => 57;  #** update watchdog timeouts proportionally when adding tests
+plan tests => 58;  #** update watchdog timeouts proportionally when adding tests
 
 use strict;
 use warnings;
@@ -140,6 +140,20 @@ PROG
         }
     }
 
+    {
+        # [perl #127855] Slowdown in m//g on COW strings of certain lengths
+        # this should take milliseconds, but took 10's of seconds.
+        my $elapsed= -time;
+        my $len= 4e6;
+        my $zeros= 40000;
+        my $str= ( "0" x $zeros ) . ( "1" x ( $len - $zeros ) );
+        my $substr= substr( $str, 1 );
+        1 while $substr=~m/0/g;
+        $elapsed += time;
+        ok( $elapsed <= 1, "should not COW on long string with substr and m//g");
+    }
+
+
 } # End of sub run_tests
 
 1;
diff --git a/toke.c b/toke.c
index fd359ed..c95f6d2 100644 (file)
--- a/toke.c
+++ b/toke.c
@@ -2518,8 +2518,11 @@ S_get_and_check_backslash_N_name(pTHX_ const char* s, const char* const e)
 
     PERL_ARGS_ASSERT_GET_AND_CHECK_BACKSLASH_N_NAME;
 
-    if (!SvCUR(res))
+    if (!SvCUR(res)) {
+        Perl_ck_warner_d(aTHX_ packWARN(WARN_DEPRECATED),
+                       "Unknown charname '' is deprecated");
         return res;
+    }
 
     if (UTF && ! is_utf8_string_loc((U8 *) backslash_ptr,
                                      e - backslash_ptr,
index f87fb1a..c050a08 100644 (file)
--- a/uconfig.h
+++ b/uconfig.h
  */
 /*#define I_VFORK      / **/
 
+/* STDCHAR:
+ *     This symbol is defined to be the type of char used in stdio.h.
+ *     It has the values "unsigned char" or "char".
+ */
+#define STDCHAR char   /**/
+
 /* CAN_VAPROTO:
  *     This variable is defined on systems supporting prototype declaration
  *     of functions with a variable number of arguments.
 #define        _V(args) ()
 #endif
 
-/* OSNAME:
- *     This symbol contains the name of the operating system, as determined
- *     by Configure.  You shouldn't rely on it too much; the specific
- *     feature tests from Configure are generally more reliable.
+/* INTSIZE:
+ *     This symbol contains the value of sizeof(int) so that the C
+ *     preprocessor can make decisions based on it.
  */
-/* OSVERS:
- *     This symbol contains the version of the operating system, as determined
- *     by Configure.  You shouldn't rely on it too much; the specific
- *     feature tests from Configure are generally more reliable.
+/* LONGSIZE:
+ *     This symbol contains the value of sizeof(long) so that the C
+ *     preprocessor can make decisions based on it.
  */
-#define OSNAME "unknown"               /**/
-#define OSVERS "unknown"               /**/
+/* SHORTSIZE:
+ *     This symbol contains the value of sizeof(short) so that the C
+ *     preprocessor can make decisions based on it.
+ */
+#define INTSIZE 4              /**/
+#define LONGSIZE 4             /**/
+#define SHORTSIZE 2            /**/
 
 /* MULTIARCH:
  *     This symbol, if defined, signifies that the build
  */
 /*#define MULTIARCH            / **/
 
-/* MEM_ALIGNBYTES:
- *     This symbol contains the number of bytes required to align a
- *     double, or a long double when applicable. Usual values are 2,
- *     4 and 8. The default is eight, for safety.  For cross-compiling
- *     or multiarch support, Configure will set a minimum of 8.
+/* HAS_QUAD:
+ *     This symbol, if defined, tells that there's a 64-bit integer type,
+ *     Quad_t, and its unsigned counterpart, Uquad_t. QUADKIND will be one
+ *     of QUAD_IS_INT, QUAD_IS_LONG, QUAD_IS_LONG_LONG, QUAD_IS_INT64_T,
+ *     or QUAD_IS___INT64.
  */
-#define MEM_ALIGNBYTES 4
+/*#define HAS_QUAD     / **/
+#ifdef HAS_QUAD
+#   define Quad_t int64_t      /**/
+#   define Uquad_t uint64_t    /**/
+#   define QUADKIND 4  /**/
+#   define QUAD_IS_INT 1
+#   define QUAD_IS_LONG        2
+#   define QUAD_IS_LONG_LONG   3
+#   define QUAD_IS_INT64_T     4
+#   define QUAD_IS___INT64     5
+#endif
 
-/* ARCHLIB:
- *     This variable, if defined, holds the name of the directory in
- *     which the user wants to put architecture-dependent public
- *     library files for perl5.  It is most often a local directory
- *     such as /usr/local/lib.  Programs using this variable must be
- *     prepared to deal with filename expansion.  If ARCHLIB is the
- *     same as PRIVLIB, it is not defined, since presumably the
- *     program already searches PRIVLIB.
- */
-/* ARCHLIB_EXP:
- *     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.
+/* HAS_ACCESSX:
+ *     This symbol, if defined, indicates that the accessx routine is
+ *     available to do extended access checks.
  */
-/*#define ARCHLIB "/usr/local/lib/perl5/5.23/unknown"          / **/
-/*#define ARCHLIB_EXP "/usr/local/lib/perl5/5.23/unknown"              / **/
+/*#define HAS_ACCESSX          / **/
 
-/* ARCHNAME:
- *     This symbol holds a string representing the architecture name.
- *     It may be used to construct an architecture-dependant pathname
- *     where library files may be held under a private library, for
- *     instance.
+/* HAS_EACCESS:
+ *     This symbol, if defined, indicates that the eaccess routine is
+ *     available to do extended access checks.
  */
-#define ARCHNAME "unknown"             /**/
+/*#define HAS_EACCESS          / **/
 
-/* BIN:
- *     This symbol holds the path of the bin directory where the package will
- *     be installed. Program must be prepared to deal with ~name substitution.
- */
-/* BIN_EXP:
- *     This symbol is the filename expanded version of the BIN symbol, for
- *     programs that do not want to deal with that at run-time.
- */
-/* PERL_RELOCATABLE_INC:
- *     This symbol, if defined, indicates that we'd like to relocate entries
- *     in @INC at run time based on the location of the perl binary.
+/* I_SYS_ACCESS:
+ *     This symbol, if defined, indicates to the C program that it should
+ *     include <sys/access.h>.
  */
-#define BIN "/usr/local/bin"   /**/
-#define BIN_EXP "/usr/local/bin"       /**/
-#define PERL_RELOCATABLE_INC "undef"           /**/
+/*#define   I_SYS_ACCESS                / **/
 
-/* INTSIZE:
- *     This symbol contains the value of sizeof(int) so that the C
- *     preprocessor can make decisions based on it.
- */
-/* LONGSIZE:
- *     This symbol contains the value of sizeof(long) so that the C
- *     preprocessor can make decisions based on it.
+/* I_SYS_SECURITY:
+ *     This symbol, if defined, indicates to the C program that it should
+ *     include <sys/security.h>.
  */
-/* SHORTSIZE:
- *     This symbol contains the value of sizeof(short) so that the C
- *     preprocessor can make decisions based on it.
+/*#define   I_SYS_SECURITY     / **/
+
+/* MEM_ALIGNBYTES:
+ *     This symbol contains the number of bytes required to align a
+ *     double, or a long double when applicable. Usual values are 2,
+ *     4 and 8. The default is eight, for safety.  For cross-compiling
+ *     or multiarch support, Configure will set a minimum of 8.
  */
-#define INTSIZE 4              /**/
-#define LONGSIZE 4             /**/
-#define SHORTSIZE 2            /**/
+#define MEM_ALIGNBYTES 4
 
 /* BYTEORDER:
  *     This symbol holds the hexadecimal constant defined in byteorder,
  */
 #define CHARBITS 8             /**/
 
-/* CAT2:
- *     This macro concatenates 2 tokens together.
- */
-/* STRINGIFY:
- *     This macro surrounds its token with double quotes.
- */
-#if 42 == 1
-#define CAT2(a,b)      a/**/b
-#define STRINGIFY(a)   "a"
-#endif
-#if 42 == 42
-#define PeRl_CaTiFy(a, b)      a ## b
-#define PeRl_StGiFy(a) #a
-#define CAT2(a,b)      PeRl_CaTiFy(a,b)
-#define StGiFy(a)      PeRl_StGiFy(a)
-#define STRINGIFY(a)   PeRl_StGiFy(a)
-#endif
-#if 42 != 1 && 42 != 42
-#include "Bletch: How does this C preprocessor concatenate tokens?"
-#endif
-
-/* CPPSTDIN:
- *     This symbol contains the first part of the string which will invoke
- *     the C preprocessor on the standard input and produce to standard
- *     output.  Typical value of "cc -E" or "/lib/cpp", but it can also
- *     call a wrapper. See CPPRUN.
- */
-/* CPPMINUS:
- *     This symbol contains the second part of the string which will invoke
- *     the C preprocessor on the standard input and produce to standard
- *     output.  This symbol will have the value "-" if CPPSTDIN needs a minus
- *     to specify standard input, otherwise the value is "".
- */
-/* CPPRUN:
- *     This symbol contains the string which will invoke a C preprocessor on
- *     the standard input and produce to standard output. It needs to end
- *     with CPPLAST, after all other preprocessor flags have been specified.
- *     The main difference with CPPSTDIN is that this program will never be a
- *     pointer to a shell wrapper, i.e. it will be empty if no preprocessor is
- *     available directly to the user. Note that it may well be different from
- *     the preprocessor used to compile the C program.
- */
-/* CPPLAST:
- *     This symbol is intended to be used along with CPPRUN in the same manner
- *     symbol CPPMINUS is used with CPPSTDIN. It contains either "-" or "".
- */
-#define CPPSTDIN "cc -E"
-#define CPPMINUS "-"
-#define CPPRUN "cc -E"
-#define CPPLAST "-"
-
-/* HAS_ACCESS:
- *     This manifest constant lets the C program know that the access()
- *     system call is available to check for accessibility using real UID/GID.
- *     (always present on UNIX.)
- */
-/*#define HAS_ACCESS           / **/
-
-/* HAS_ACCESSX:
- *     This symbol, if defined, indicates that the accessx routine is
- *     available to do extended access checks.
- */
-/*#define HAS_ACCESSX          / **/
-
-/* HAS_ASCTIME_R:
- *     This symbol, if defined, indicates that the asctime_r routine
- *     is available to asctime re-entrantly.
- */
-/* ASCTIME_R_PROTO:
- *     This symbol encodes the prototype of asctime_r.
- *     It is zero if d_asctime_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_asctime_r
- *     is defined.
- */
-/*#define HAS_ASCTIME_R           / **/
-#define ASCTIME_R_PROTO 0         /**/
-
-/* HASATTRIBUTE_FORMAT:
- *     Can we handle GCC attribute for checking printf-style formats
- */
-/* PRINTF_FORMAT_NULL_OK:
- *     Allows __printf__ format to be null when checking printf-style
- */
-/* HASATTRIBUTE_MALLOC:
- *     Can we handle GCC attribute for malloc-style functions.
- */
-/* HASATTRIBUTE_NONNULL:
- *     Can we handle GCC attribute for nonnull function parms.
- */
-/* HASATTRIBUTE_NORETURN:
- *     Can we handle GCC attribute for functions that do not return
- */
-/* HASATTRIBUTE_PURE:
- *     Can we handle GCC attribute for pure functions
- */
-/* HASATTRIBUTE_UNUSED:
- *     Can we handle GCC attribute for unused variables and arguments
- */
-/* HASATTRIBUTE_DEPRECATED:
- *     Can we handle GCC attribute for marking deprecated APIs
- */
-/* HASATTRIBUTE_WARN_UNUSED_RESULT:
- *     Can we handle GCC attribute for warning on unused results
- */
-/*#define HASATTRIBUTE_DEPRECATED      / **/
-/*#define HASATTRIBUTE_FORMAT  / **/
-/*#define PRINTF_FORMAT_NULL_OK        / **/
-/*#define HASATTRIBUTE_NORETURN        / **/
-/*#define HASATTRIBUTE_MALLOC  / **/
-/*#define HASATTRIBUTE_NONNULL / **/
-/*#define HASATTRIBUTE_PURE    / **/
-/*#define HASATTRIBUTE_UNUSED  / **/
-/*#define HASATTRIBUTE_WARN_UNUSED_RESULT      / **/
-
-/* HAS_BACKTRACE:
- *     This symbol, if defined, indicates that the backtrace() routine is
- *     available to get a stack trace.  The <execinfo.h> header must be
- *     included to use this routine.
- */
-/*#define HAS_BACKTRACE        / **/
-
 /* CASTI32:
  *     This symbol is defined if the C compiler can cast negative
  *     or large floating point numbers to 32-bit ints.
  */
 /*#define VOID_CLOSEDIR                / **/
 
-/* HASCONST:
- *     This symbol, if defined, indicates that this C compiler knows about
- *     the const type. There is no need to actually test for that symbol
- *     within your programs. The mere use of the "const" keyword will
- *     trigger the necessary tests.
+/* HAS_FD_SET:
+ *     This symbol, when defined, indicates presence of the fd_set typedef
+ *     in <sys/types.h>
  */
-/*#define HASCONST     / **/
-#ifndef HASCONST
-#define const
-#endif
+/*#define HAS_FD_SET   / **/
 
-/* HAS_CRYPT_R:
- *     This symbol, if defined, indicates that the crypt_r routine
- *     is available to crypt re-entrantly.
- */
-/* CRYPT_R_PROTO:
- *     This symbol encodes the prototype of crypt_r.
- *     It is zero if d_crypt_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_crypt_r
- *     is defined.
+/* Gconvert:
+ *     This preprocessor macro is defined to convert a floating point
+ *     number to a string without a trailing decimal point.  This
+ *     emulates the behavior of sprintf("%g"), but is sometimes much more
+ *     efficient.  If gconvert() is not available, but gcvt() drops the
+ *     trailing decimal point, then gcvt() is used.  If all else fails,
+ *     a macro using sprintf("%g") is used. Arguments for the Gconvert
+ *     macro are: value, number of digits, whether trailing zeros should
+ *     be retained, and the output buffer.
+ *     The usual values are:
+ *             d_Gconvert='gconvert((x),(n),(t),(b))'
+ *             d_Gconvert='gcvt((x),(n),(b))'
+ *             d_Gconvert='sprintf((b),"%.*g",(n),(x))'
+ *     The last two assume trailing zeros should not be kept.
  */
-/*#define HAS_CRYPT_R     / **/
-#define CRYPT_R_PROTO 0           /**/
+#define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
 
-/* HAS_CSH:
- *     This symbol, if defined, indicates that the C-shell exists.
+/* HAS_GETPAGESIZE:
+ *     This symbol, if defined, indicates that the getpagesize system call
+ *     is available to get system page size, which is the granularity of
+ *     many memory management calls.
  */
-/* CSH:
- *     This symbol, if defined, contains the full pathname of csh.
+/*#define HAS_GETPAGESIZE              / **/
+
+/* HAS_GNULIBC:
+ *     This symbol, if defined, indicates to the C program that
+ *     the GNU C library is being used.  A better check is to use
+ *     the __GLIBC__ and __GLIBC_MINOR__ symbols supplied with glibc.
  */
-/*#define HAS_CSH              / **/
-#ifdef HAS_CSH
-#define CSH "" /**/
+/*#define HAS_GNULIBC          / **/
+#if defined(HAS_GNULIBC) && !defined(_GNU_SOURCE)
+#   define _GNU_SOURCE
 #endif
 
-/* HAS_CTERMID_R:
- *     This symbol, if defined, indicates that the ctermid_r routine
- *     is available to ctermid re-entrantly.
- */
-/* CTERMID_R_PROTO:
- *     This symbol encodes the prototype of ctermid_r.
- *     It is zero if d_ctermid_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_ctermid_r
- *     is defined.
+/* HAS_ISASCII:
+ *     This manifest constant lets the C program know that isascii
+ *     is available.
  */
-/*#define HAS_CTERMID_R           / **/
-#define CTERMID_R_PROTO 0         /**/
+/*#define HAS_ISASCII          / **/
 
-/* HAS_CTIME_R:
- *     This symbol, if defined, indicates that the ctime_r routine
- *     is available to ctime re-entrantly.
- */
-/* CTIME_R_PROTO:
- *     This symbol encodes the prototype of ctime_r.
- *     It is zero if d_ctime_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_ctime_r
- *     is defined.
+/* HAS_LCHOWN:
+ *     This symbol, if defined, indicates that the lchown routine is
+ *     available to operate on a symbolic link (instead of following the
+ *     link).
  */
-/*#define HAS_CTIME_R     / **/
-#define CTIME_R_PROTO 0           /**/
+/*#define HAS_LCHOWN           / **/
 
-/* HAS_DLADDR:
- *     This symbol, if defined, indicates that the dladdr() routine is
- *     available to query dynamic linker information for an address.
- *     The <dlfcn.h> header must be included to use this routine.
+/* HAS_OPEN3:
+ *     This manifest constant lets the C program know that the three
+ *     argument form of open(2) is available.
  */
-/*#define HAS_DLADDR   / **/
+/*#define HAS_OPEN3            / **/
 
-/* SETUID_SCRIPTS_ARE_SECURE_NOW:
- *     This symbol, if defined, indicates that the bug that prevents
- *     setuid scripts from being secure is not present in this kernel.
- */
-/* DOSUID:
- *     This symbol, if defined, indicates that the C program should
- *     check the script that it is executing for setuid/setgid bits, and
- *     attempt to emulate setuid/setgid on systems that have disabled
- *     setuid #! scripts because the kernel can't do it securely.
- *     It is up to the package designer to make sure that this emulation
- *     is done securely.  Among other things, it should do an fstat on
- *     the script it just opened to make sure it really is a setuid/setgid
- *     script, it should make sure the arguments passed correspond exactly
- *     to the argument on the #! line, and it should not trust any
- *     subprocesses to which it must pass the filename rather than the
- *     file descriptor of the script to be executed.
+/* HAS_SAFE_BCOPY:
+ *     This symbol, if defined, indicates that the bcopy routine is available
+ *     to copy potentially overlapping memory blocks. Normally, you should
+ *     probably use memmove() or memcpy(). If neither is defined, roll your
+ *     own version.
  */
-/*#define SETUID_SCRIPTS_ARE_SECURE_NOW        / **/
-/*#define DOSUID               / **/
+/*#define HAS_SAFE_BCOPY       / **/
 
-/* HAS_DRAND48_R:
- *     This symbol, if defined, indicates that the drand48_r routine
- *     is available to drand48 re-entrantly.
- */
-/* DRAND48_R_PROTO:
- *     This symbol encodes the prototype of drand48_r.
- *     It is zero if d_drand48_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_drand48_r
- *     is defined.
+/* HAS_SAFE_MEMCPY:
+ *     This symbol, if defined, indicates that the memcpy routine is available
+ *     to copy potentially overlapping memory blocks.  If you need to
+ *     copy overlapping memory blocks, you should check HAS_MEMMOVE and
+ *     use memmove() instead, if available.
  */
-/*#define HAS_DRAND48_R           / **/
-#define DRAND48_R_PROTO 0         /**/
+/*#define HAS_SAFE_MEMCPY      / **/
 
-/* HAS_DRAND48_PROTO:
- *     This symbol, if defined, indicates that the system provides
- *     a prototype for the drand48() function.  Otherwise, it is up
- *     to the program to supply one.  A good guess is
- *             extern double drand48(void);
+/* HAS_SANE_MEMCMP:
+ *     This symbol, if defined, indicates that the memcmp routine is available
+ *     and can be used to compare relative magnitudes of chars with their high
+ *     bits set.  If it is not defined, roll your own version.
  */
-/*#define      HAS_DRAND48_PROTO       / **/
+/*#define HAS_SANE_MEMCMP      / **/
 
-/* HAS_EACCESS:
- *     This symbol, if defined, indicates that the eaccess routine is
- *     available to do extended access checks.
+/* HAS_SIGACTION:
+ *     This symbol, if defined, indicates that Vr4's sigaction() routine
+ *     is available.
  */
-/*#define HAS_EACCESS          / **/
+/*#define HAS_SIGACTION        / **/
 
-/* HAS_ENDGRENT:
- *     This symbol, if defined, indicates that the getgrent routine is
- *     available for finalizing sequential access of the group database.
+/* HAS_SIGINFO_SI_ERRNO:
+ *     This symbol, if defined, indicates that siginfo_t has the
+ *     si_errno member
  */
-/*#define HAS_ENDGRENT         / **/
-
-/* HAS_ENDGRENT_R:
- *     This symbol, if defined, indicates that the endgrent_r routine
- *     is available to endgrent re-entrantly.
+/* HAS_SIGINFO_SI_PID:
+ *     This symbol, if defined, indicates that siginfo_t has the
+ *     si_pid member
  */
-/* ENDGRENT_R_PROTO:
- *     This symbol encodes the prototype of endgrent_r.
- *     It is zero if d_endgrent_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_endgrent_r
- *     is defined.
+/* HAS_SIGINFO_SI_UID:
+ *     This symbol, if defined, indicates that siginfo_t has the
+ *     si_uid member
  */
-/*#define HAS_ENDGRENT_R          / **/
-#define ENDGRENT_R_PROTO 0        /**/
-
-/* HAS_ENDHOSTENT:
- *     This symbol, if defined, indicates that the endhostent() routine is
- *     available to close whatever was being used for host queries.
+/* HAS_SIGINFO_SI_ADDR:
+ *     This symbol, if defined, indicates that siginfo_t has the
+ *     si_addr member
  */
-/*#define HAS_ENDHOSTENT               / **/
-
-/* HAS_ENDHOSTENT_R:
- *     This symbol, if defined, indicates that the endhostent_r routine
- *     is available to endhostent re-entrantly.
+/* HAS_SIGINFO_SI_STATUS:
+ *     This symbol, if defined, indicates that siginfo_t has the
+ *     si_status member
  */
-/* ENDHOSTENT_R_PROTO:
- *     This symbol encodes the prototype of endhostent_r.
- *     It is zero if d_endhostent_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_endhostent_r
- *     is defined.
+/* HAS_SIGINFO_SI_BAND:
+ *     This symbol, if defined, indicates that siginfo_t has the
+ *     si_band member
  */
-/*#define HAS_ENDHOSTENT_R        / **/
-#define ENDHOSTENT_R_PROTO 0      /**/
-
-/* HAS_ENDNETENT:
- *     This symbol, if defined, indicates that the endnetent() routine is
- *     available to close whatever was being used for network queries.
+/* HAS_SIGINFO_SI_VALUE:
+ *     This symbol, if defined, indicates that siginfo_t has the
+ *     si_value member
  */
-/*#define HAS_ENDNETENT                / **/
+/*#define      HAS_SIGINFO_SI_ERRNO    / **/
+/*#define      HAS_SIGINFO_SI_PID      / **/
+/*#define      HAS_SIGINFO_SI_UID      / **/
+/*#define      HAS_SIGINFO_SI_ADDR     / **/
+/*#define      HAS_SIGINFO_SI_STATUS   / **/
+/*#define      HAS_SIGINFO_SI_BAND     / **/
+/*#define      HAS_SIGINFO_SI_VALUE    / **/
 
-/* HAS_ENDNETENT_R:
- *     This symbol, if defined, indicates that the endnetent_r routine
- *     is available to endnetent re-entrantly.
- */
-/* ENDNETENT_R_PROTO:
- *     This symbol encodes the prototype of endnetent_r.
- *     It is zero if d_endnetent_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_endnetent_r
- *     is defined.
+/* HAS_SIGSETJMP:
+ *     This variable indicates to the C program that the sigsetjmp()
+ *     routine is available to save the calling process's registers
+ *     and stack environment for later use by siglongjmp(), and
+ *     to optionally save the process's signal mask.  See
+ *     Sigjmp_buf, Sigsetjmp, and Siglongjmp.
  */
-/*#define HAS_ENDNETENT_R         / **/
-#define ENDNETENT_R_PROTO 0       /**/
-
-/* HAS_ENDPROTOENT:
- *     This symbol, if defined, indicates that the endprotoent() routine is
- *     available to close whatever was being used for protocol queries.
+/* Sigjmp_buf:
+ *     This is the buffer type to be used with Sigsetjmp and Siglongjmp.
  */
-/*#define HAS_ENDPROTOENT              / **/
-
-/* HAS_ENDPROTOENT_R:
- *     This symbol, if defined, indicates that the endprotoent_r routine
- *     is available to endprotoent re-entrantly.
+/* Sigsetjmp:
+ *     This macro is used in the same way as sigsetjmp(), but will invoke
+ *     traditional setjmp() if sigsetjmp isn't available.
+ *     See HAS_SIGSETJMP.
  */
-/* ENDPROTOENT_R_PROTO:
- *     This symbol encodes the prototype of endprotoent_r.
- *     It is zero if d_endprotoent_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_endprotoent_r
- *     is defined.
+/* Siglongjmp:
+ *     This macro is used in the same way as siglongjmp(), but will invoke
+ *     traditional longjmp() if siglongjmp isn't available.
+ *     See HAS_SIGSETJMP.
  */
-/*#define HAS_ENDPROTOENT_R       / **/
-#define ENDPROTOENT_R_PROTO 0     /**/
+/*#define HAS_SIGSETJMP        / **/
+#ifdef HAS_SIGSETJMP
+#define Sigjmp_buf sigjmp_buf
+#define Sigsetjmp(buf,save_mask) sigsetjmp((buf),(save_mask))
+#define Siglongjmp(buf,retval) siglongjmp((buf),(retval))
+#else
+#define Sigjmp_buf jmp_buf
+#define Sigsetjmp(buf,save_mask) setjmp((buf))
+#define Siglongjmp(buf,retval) longjmp((buf),(retval))
+#endif
 
-/* HAS_ENDPWENT:
- *     This symbol, if defined, indicates that the getgrent routine is
- *     available for finalizing sequential access of the passwd database.
+/* HAS_STATIC_INLINE:
+ *     This symbol, if defined, indicates that the C compiler supports
+ *     C99-style static inline.  That is, the function can't be called
+ *     from another translation unit.
  */
-/*#define HAS_ENDPWENT         / **/
+/* PERL_STATIC_INLINE:
+ *     This symbol gives the best-guess incantation to use for static
+ *     inline functions.  If HAS_STATIC_INLINE is defined, this will
+ *     give C99-style inline.  If HAS_STATIC_INLINE is not defined,
+ *     this will give a plain 'static'.  It will always be defined
+ *     to something that gives static linkage.
+ *     Possibilities include
+ *             static inline       (c99)
+ *             static __inline__   (gcc -ansi)
+ *             static __inline     (MSVC)
+ *             static _inline      (older MSVC)
+ *             static              (c89 compilers)
+ */
+/*#define HAS_STATIC_INLINE                            / **/
+#define PERL_STATIC_INLINE static      /**/
 
-/* HAS_ENDPWENT_R:
- *     This symbol, if defined, indicates that the endpwent_r routine
- *     is available to endpwent re-entrantly.
+/* USE_STDIO_PTR:
+ *     This symbol is defined if the _ptr and _cnt fields (or similar)
+ *     of the stdio FILE structure can be used to access the stdio buffer
+ *     for a file handle.  If this is defined, then the FILE_ptr(fp)
+ *     and FILE_cnt(fp) macros will also be defined and should be used
+ *     to access these fields.
  */
-/* ENDPWENT_R_PROTO:
- *     This symbol encodes the prototype of endpwent_r.
- *     It is zero if d_endpwent_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_endpwent_r
- *     is defined.
+/* FILE_ptr:
+ *     This macro is used to access the _ptr field (or equivalent) of the
+ *     FILE structure pointed to by its argument. This macro will always be
+ *     defined if USE_STDIO_PTR is defined.
  */
-/*#define HAS_ENDPWENT_R          / **/
-#define ENDPWENT_R_PROTO 0        /**/
-
-/* HAS_ENDSERVENT:
- *     This symbol, if defined, indicates that the endservent() routine is
- *     available to close whatever was being used for service queries.
+/* STDIO_PTR_LVALUE:
+ *     This symbol is defined if the FILE_ptr macro can be used as an
+ *     lvalue.
  */
-/*#define HAS_ENDSERVENT               / **/
-
-/* HAS_ENDSERVENT_R:
- *     This symbol, if defined, indicates that the endservent_r routine
- *     is available to endservent re-entrantly.
+/* FILE_cnt:
+ *     This macro is used to access the _cnt field (or equivalent) of the
+ *     FILE structure pointed to by its argument. This macro will always be
+ *     defined if USE_STDIO_PTR is defined.
  */
-/* ENDSERVENT_R_PROTO:
- *     This symbol encodes the prototype of endservent_r.
- *     It is zero if d_endservent_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_endservent_r
- *     is defined.
+/* STDIO_CNT_LVALUE:
+ *     This symbol is defined if the FILE_cnt macro can be used as an
+ *     lvalue.
  */
-/*#define HAS_ENDSERVENT_R        / **/
-#define ENDSERVENT_R_PROTO 0      /**/
-
-/* HAS_FD_SET:
- *     This symbol, when defined, indicates presence of the fd_set typedef
- *     in <sys/types.h>
+/* STDIO_PTR_LVAL_SETS_CNT:
+ *     This symbol is defined if using the FILE_ptr macro as an lvalue
+ *     to increase the pointer by n has the side effect of decreasing the
+ *     value of File_cnt(fp) by n.
  */
-/*#define HAS_FD_SET   / **/
-
-/* FLEXFILENAMES:
- *     This symbol, if defined, indicates that the system supports filenames
- *     longer than 14 characters.
+/* STDIO_PTR_LVAL_NOCHANGE_CNT:
+ *     This symbol is defined if using the FILE_ptr macro as an lvalue
+ *     to increase the pointer by n leaves File_cnt(fp) unchanged.
  */
-/*#define      FLEXFILENAMES           / **/
+/*#define USE_STDIO_PTR        / **/
+#ifdef USE_STDIO_PTR
+#define FILE_ptr(fp)   ((fp)->_IO_read_ptr)
+/*#define STDIO_PTR_LVALUE             / **/
+#define FILE_cnt(fp)   ((fp)->_IO_read_end - (fp)->_IO_read_ptr)
+/*#define STDIO_CNT_LVALUE             / **/
+/*#define STDIO_PTR_LVAL_SETS_CNT      / **/
+/*#define STDIO_PTR_LVAL_NOCHANGE_CNT  / **/
+#endif
 
-/* Gconvert:
- *     This preprocessor macro is defined to convert a floating point
- *     number to a string without a trailing decimal point.  This
- *     emulates the behavior of sprintf("%g"), but is sometimes much more
- *     efficient.  If gconvert() is not available, but gcvt() drops the
- *     trailing decimal point, then gcvt() is used.  If all else fails,
- *     a macro using sprintf("%g") is used. Arguments for the Gconvert
- *     macro are: value, number of digits, whether trailing zeros should
- *     be retained, and the output buffer.
- *     The usual values are:
- *             d_Gconvert='gconvert((x),(n),(t),(b))'
- *             d_Gconvert='gcvt((x),(n),(b))'
- *             d_Gconvert='sprintf((b),"%.*g",(n),(x))'
- *     The last two assume trailing zeros should not be kept.
+/* USE_STDIO_BASE:
+ *     This symbol is defined if the _base field (or similar) of the
+ *     stdio FILE structure can be used to access the stdio buffer for
+ *     a file handle.  If this is defined, then the FILE_base(fp) macro
+ *     will also be defined and should be used to access this field.
+ *     Also, the FILE_bufsiz(fp) macro will be defined and should be used
+ *     to determine the number of bytes in the buffer.  USE_STDIO_BASE
+ *     will never be defined unless USE_STDIO_PTR is.
  */
-#define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
-
-/* HAS_GETGRENT:
- *     This symbol, if defined, indicates that the getgrent routine is
- *     available for sequential access of the group database.
+/* FILE_base:
+ *     This macro is used to access the _base field (or equivalent) of the
+ *     FILE structure pointed to by its argument. This macro will always be
+ *     defined if USE_STDIO_BASE is defined.
  */
-/*#define HAS_GETGRENT         / **/
+/* FILE_bufsiz:
+ *     This macro is used to determine the number of bytes in the I/O
+ *     buffer pointed to by _base field (or equivalent) of the FILE
+ *     structure pointed to its argument. This macro will always be defined
+ *     if USE_STDIO_BASE is defined.
+ */
+/*#define USE_STDIO_BASE       / **/
+#ifdef USE_STDIO_BASE
+#define FILE_base(fp)  ((fp)->_IO_read_base)
+#define FILE_bufsiz(fp)        ((fp)->_IO_read_end - (fp)->_IO_read_base)
+#endif
 
-/* HAS_GETGRENT_R:
- *     This symbol, if defined, indicates that the getgrent_r routine
- *     is available to getgrent re-entrantly.
+/* HAS_VPRINTF:
+ *     This symbol, if defined, indicates that the vprintf routine is available
+ *     to printf with a pointer to an argument list.  If unavailable, you
+ *     may need to write your own, probably in terms of _doprnt().
  */
-/* GETGRENT_R_PROTO:
- *     This symbol encodes the prototype of getgrent_r.
- *     It is zero if d_getgrent_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_getgrent_r
- *     is defined.
+/* USE_CHAR_VSPRINTF:
+ *     This symbol is defined if this system has vsprintf() returning type
+ *     (char*).  The trend seems to be to declare it as "int vsprintf()".  It
+ *     is up to the package author to declare vsprintf correctly based on the
+ *     symbol.
  */
-/*#define HAS_GETGRENT_R          / **/
-#define GETGRENT_R_PROTO 0        /**/
+#define HAS_VPRINTF    /**/
+/*#define USE_CHAR_VSPRINTF    / **/
 
-/* HAS_GETGRGID_R:
- *     This symbol, if defined, indicates that the getgrgid_r routine
- *     is available to getgrgid re-entrantly.
- */
-/* GETGRGID_R_PROTO:
- *     This symbol encodes the prototype of getgrgid_r.
- *     It is zero if d_getgrgid_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_getgrgid_r
- *     is defined.
+/* DOUBLESIZE:
+ *     This symbol contains the size of a double, so that the C preprocessor
+ *     can make decisions based on it.
  */
-/*#define HAS_GETGRGID_R          / **/
-#define GETGRGID_R_PROTO 0        /**/
+#define DOUBLESIZE 8           /**/
 
-/* HAS_GETGRNAM_R:
- *     This symbol, if defined, indicates that the getgrnam_r routine
- *     is available to getgrnam re-entrantly.
+/* I_TIME:
+ *     This symbol, if defined, indicates to the C program that it should
+ *     include <time.h>.
  */
-/* GETGRNAM_R_PROTO:
- *     This symbol encodes the prototype of getgrnam_r.
- *     It is zero if d_getgrnam_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_getgrnam_r
- *     is defined.
+/* I_SYS_TIME:
+ *     This symbol, if defined, indicates to the C program that it should
+ *     include <sys/time.h>.
  */
-/*#define HAS_GETGRNAM_R          / **/
-#define GETGRNAM_R_PROTO 0        /**/
-
-/* HAS_GETHOSTBYADDR:
- *     This symbol, if defined, indicates that the gethostbyaddr() routine is
- *     available to look up hosts by their IP addresses.
+/* I_SYS_TIME_KERNEL:
+ *     This symbol, if defined, indicates to the C program that it should
+ *     include <sys/time.h> with KERNEL defined.
  */
-/*#define HAS_GETHOSTBYADDR            / **/
-
-/* HAS_GETHOSTBYNAME:
- *     This symbol, if defined, indicates that the gethostbyname() routine is
- *     available to look up host names in some data base or other.
+/* HAS_TM_TM_ZONE:
+ *     This symbol, if defined, indicates to the C program that
+ *     the struct tm has a tm_zone field.
  */
-/*#define HAS_GETHOSTBYNAME            / **/
-
-/* HAS_GETHOSTENT:
- *     This symbol, if defined, indicates that the gethostent() routine is
- *     available to look up host names in some data base or another.
+/* HAS_TM_TM_GMTOFF:
+ *     This symbol, if defined, indicates to the C program that
+ *     the struct tm has a tm_gmtoff field.
  */
-/*#define HAS_GETHOSTENT               / **/
+#define I_TIME         /**/
+/*#define I_SYS_TIME           / **/
+/*#define I_SYS_TIME_KERNEL            / **/
+/*#define HAS_TM_TM_ZONE               / **/
+/*#define HAS_TM_TM_GMTOFF             / **/
 
-/* HAS_GETHOSTNAME:
- *     This symbol, if defined, indicates that the C program may use the
- *     gethostname() routine to derive the host name.  See also HAS_UNAME
- *     and PHOSTNAME.
+/* VAL_O_NONBLOCK:
+ *     This symbol is to be used during open() or fcntl(F_SETFL) to turn on
+ *     non-blocking I/O for the file descriptor. Note that there is no way
+ *     back, i.e. you cannot turn it blocking again this way. If you wish to
+ *     alternatively switch between blocking and non-blocking, use the
+ *     ioctl(FIOSNBIO) call instead, but that is not supported by all devices.
  */
-/* HAS_UNAME:
- *     This symbol, if defined, indicates that the C program may use the
- *     uname() routine to derive the host name.  See also HAS_GETHOSTNAME
- *     and PHOSTNAME.
+/* VAL_EAGAIN:
+ *     This symbol holds the errno error code set by read() when no data was
+ *     present on the non-blocking file descriptor.
  */
-/* PHOSTNAME:
- *     This symbol, if defined, indicates the command to feed to the
- *     popen() routine to derive the host name.  See also HAS_GETHOSTNAME
- *     and HAS_UNAME.  Note that the command uses a fully qualified path,
- *     so that it is safe even if used by a process with super-user
- *     privileges.
+/* RD_NODATA:
+ *     This symbol holds the return code from read() when no data is present
+ *     on the non-blocking file descriptor. Be careful! If EOF_NONBLOCK is
+ *     not defined, then you can't distinguish between no data and EOF by
+ *     issuing a read(). You'll have to find another way to tell for sure!
  */
-/* HAS_PHOSTNAME:
- *     This symbol, if defined, indicates that the C program may use the
- *     contents of PHOSTNAME as a command to feed to the popen() routine
- *     to derive the host name.
+/* EOF_NONBLOCK:
+ *     This symbol, if defined, indicates to the C program that a read() on
+ *     a non-blocking file descriptor will return 0 on EOF, and not the value
+ *     held in RD_NODATA (-1 usually, in that case!).
  */
-/*#define HAS_GETHOSTNAME      / **/
-/*#define HAS_UNAME            / **/
-/*#define HAS_PHOSTNAME        / **/
-#ifdef HAS_PHOSTNAME
-#define PHOSTNAME "/bin/hostname"      /* How to get the host name */
-#endif
+#define VAL_O_NONBLOCK O_NONBLOCK
+#define VAL_EAGAIN EAGAIN
+#define RD_NODATA -1
+#undef EOF_NONBLOCK
 
-/* HAS_GETHOSTBYADDR_R:
- *     This symbol, if defined, indicates that the gethostbyaddr_r routine
- *     is available to gethostbyaddr re-entrantly.
- */
-/* GETHOSTBYADDR_R_PROTO:
- *     This symbol encodes the prototype of gethostbyaddr_r.
- *     It is zero if d_gethostbyaddr_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_gethostbyaddr_r
- *     is defined.
+/* PTRSIZE:
+ *     This symbol contains the size of a pointer, so that the C preprocessor
+ *     can make decisions based on it.  It will be sizeof(void *) if
+ *     the compiler supports (void *); otherwise it will be
+ *     sizeof(char *).
  */
-/*#define HAS_GETHOSTBYADDR_R     / **/
-#define GETHOSTBYADDR_R_PROTO 0           /**/
+#define PTRSIZE 4              /**/
 
-/* HAS_GETHOSTBYNAME_R:
- *     This symbol, if defined, indicates that the gethostbyname_r routine
- *     is available to gethostbyname re-entrantly.
+/* Drand01:
+ *     This macro is to be used to generate uniformly distributed
+ *     random numbers over the range [0., 1.[.  You may have to supply
+ *     an 'extern double drand48();' in your program since SunOS 4.1.3
+ *     doesn't provide you with anything relevant in its headers.
+ *     See HAS_DRAND48_PROTO.
  */
-/* GETHOSTBYNAME_R_PROTO:
- *     This symbol encodes the prototype of gethostbyname_r.
- *     It is zero if d_gethostbyname_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_gethostbyname_r
- *     is defined.
+/* Rand_seed_t:
+ *     This symbol defines the type of the argument of the
+ *     random seed function.
  */
-/*#define HAS_GETHOSTBYNAME_R     / **/
-#define GETHOSTBYNAME_R_PROTO 0           /**/
-
-/* HAS_GETHOSTENT_R:
- *     This symbol, if defined, indicates that the gethostent_r routine
- *     is available to gethostent re-entrantly.
+/* seedDrand01:
+ *     This symbol defines the macro to be used in seeding the
+ *     random number generator (see Drand01).
  */
-/* GETHOSTENT_R_PROTO:
- *     This symbol encodes the prototype of gethostent_r.
- *     It is zero if d_gethostent_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_gethostent_r
- *     is defined.
+/* RANDBITS:
+ *     This symbol indicates how many bits are produced by the
+ *     function used to generate normalized random numbers.
+ *     Values include 15, 16, 31, and 48.
  */
-/*#define HAS_GETHOSTENT_R        / **/
-#define GETHOSTENT_R_PROTO 0      /**/
+#define Drand01()              Perl_drand48()          /**/
+#define Rand_seed_t            U32             /**/
+#define seedDrand01(x) Perl_drand48_init((Rand_seed_t)x)       /**/
+#define RANDBITS               48              /**/
 
-/* HAS_GETHOST_PROTOS:
- *     This symbol, if defined, indicates that <netdb.h> includes
- *     prototypes for gethostent(), gethostbyname(), and
- *     gethostbyaddr().  Otherwise, it is up to the program to guess
- *     them.  See netdbtype.U for probing for various Netdb_xxx_t types.
+/* SSize_t:
+ *     This symbol holds the type used by functions that return
+ *     a count of bytes or an error condition.  It must be a signed type.
+ *     It is usually ssize_t, but may be long or int, etc.
+ *     It may be necessary to include <sys/types.h> or <unistd.h>
+ *     to get any typedef'ed information.
+ *     We will pick a type such that sizeof(SSize_t) == sizeof(Size_t).
  */
-/*#define      HAS_GETHOST_PROTOS      / **/
+#define SSize_t int     /* signed count of bytes */
 
-/* HAS_GETLOGIN_R:
- *     This symbol, if defined, indicates that the getlogin_r routine
- *     is available to getlogin re-entrantly.
- */
-/* GETLOGIN_R_PROTO:
- *     This symbol encodes the prototype of getlogin_r.
- *     It is zero if d_getlogin_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_getlogin_r
- *     is defined.
+/* EBCDIC:
+ *     This symbol, if defined, indicates that this system uses
+ *     EBCDIC encoding.
  */
-/*#define HAS_GETLOGIN_R          / **/
-#define GETLOGIN_R_PROTO 0        /**/
+/*#define      EBCDIC          / **/
 
-/* HAS_GETNETBYADDR:
- *     This symbol, if defined, indicates that the getnetbyaddr() routine is
- *     available to look up networks by their IP addresses.
+/* ARCHLIB:
+ *     This variable, if defined, holds the name of the directory in
+ *     which the user wants to put architecture-dependent public
+ *     library files for perl5.  It is most often a local directory
+ *     such as /usr/local/lib.  Programs using this variable must be
+ *     prepared to deal with filename expansion.  If ARCHLIB is the
+ *     same as PRIVLIB, it is not defined, since presumably the
+ *     program already searches PRIVLIB.
  */
-/*#define HAS_GETNETBYADDR             / **/
-
-/* HAS_GETNETBYNAME:
- *     This symbol, if defined, indicates that the getnetbyname() routine is
- *     available to look up networks by their names.
+/* ARCHLIB_EXP:
+ *     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 HAS_GETNETBYNAME             / **/
+/*#define ARCHLIB "/usr/local/lib/perl5/5.24/unknown"          / **/
+/*#define ARCHLIB_EXP "/usr/local/lib/perl5/5.24/unknown"              / **/
 
-/* HAS_GETNETENT:
- *     This symbol, if defined, indicates that the getnetent() routine is
- *     available to look up network names in some data base or another.
+/* BIN:
+ *     This symbol holds the path of the bin directory where the package will
+ *     be installed. Program must be prepared to deal with ~name substitution.
  */
-/*#define HAS_GETNETENT                / **/
-
-/* HAS_GETNETBYADDR_R:
- *     This symbol, if defined, indicates that the getnetbyaddr_r routine
- *     is available to getnetbyaddr re-entrantly.
+/* BIN_EXP:
+ *     This symbol is the filename expanded version of the BIN symbol, for
+ *     programs that do not want to deal with that at run-time.
  */
-/* GETNETBYADDR_R_PROTO:
- *     This symbol encodes the prototype of getnetbyaddr_r.
- *     It is zero if d_getnetbyaddr_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_getnetbyaddr_r
- *     is defined.
+/* PERL_RELOCATABLE_INC:
+ *     This symbol, if defined, indicates that we'd like to relocate entries
+ *     in @INC at run time based on the location of the perl binary.
  */
-/*#define HAS_GETNETBYADDR_R      / **/
-#define GETNETBYADDR_R_PROTO 0    /**/
+#define BIN "/usr/local/bin"   /**/
+#define BIN_EXP "/usr/local/bin"       /**/
+#define PERL_RELOCATABLE_INC "undef"           /**/
 
-/* HAS_GETNETBYNAME_R:
- *     This symbol, if defined, indicates that the getnetbyname_r routine
- *     is available to getnetbyname re-entrantly.
- */
-/* GETNETBYNAME_R_PROTO:
- *     This symbol encodes the prototype of getnetbyname_r.
- *     It is zero if d_getnetbyname_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_getnetbyname_r
- *     is defined.
+/* PERL_INC_VERSION_LIST:
+ *     This variable specifies the list of subdirectories in over
+ *     which perl.c:incpush() and lib/lib.pm will automatically
+ *     search when adding directories to @INC, in a format suitable
+ *     for a C initialization string.  See the inc_version_list entry
+ *     in Porting/Glossary for more details.
  */
-/*#define HAS_GETNETBYNAME_R      / **/
-#define GETNETBYNAME_R_PROTO 0    /**/
+/*#define PERL_INC_VERSION_LIST NULL           / **/
 
-/* HAS_GETNETENT_R:
- *     This symbol, if defined, indicates that the getnetent_r routine
- *     is available to getnetent re-entrantly.
- */
-/* GETNETENT_R_PROTO:
- *     This symbol encodes the prototype of getnetent_r.
- *     It is zero if d_getnetent_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_getnetent_r
- *     is defined.
+/* INSTALL_USR_BIN_PERL:
+ *     This symbol, if defined, indicates that Perl is to be installed
+ *     also as /usr/bin/perl.
  */
-/*#define HAS_GETNETENT_R         / **/
-#define GETNETENT_R_PROTO 0       /**/
+/*#define INSTALL_USR_BIN_PERL / **/
 
-/* HAS_GETNET_PROTOS:
- *     This symbol, if defined, indicates that <netdb.h> includes
- *     prototypes for getnetent(), getnetbyname(), and
- *     getnetbyaddr().  Otherwise, it is up to the program to guess
- *     them.  See netdbtype.U for probing for various Netdb_xxx_t types.
+/* PERL_OTHERLIBDIRS:
+ *     This variable contains a colon-separated set of paths for the perl
+ *     binary to search for additional library files or modules.
+ *     These directories will be tacked to the end of @INC.
+ *     Perl will automatically search below each path for version-
+ *     and architecture-specific directories.  See PERL_INC_VERSION_LIST
+ *     for more details.
  */
-/*#define      HAS_GETNET_PROTOS       / **/
+/*#define PERL_OTHERLIBDIRS " "                / **/
 
-/* HAS_GETPAGESIZE:
- *     This symbol, if defined, indicates that the getpagesize system call
- *     is available to get system page size, which is the granularity of
- *     many memory management calls.
+/* PRIVLIB:
+ *     This symbol contains the name of the private library for this package.
+ *     The library is private in the sense that it needn't be in anyone's
+ *     execution path, but it should be accessible by the world.  The program
+ *     should be prepared to do ~ expansion.
  */
-/*#define HAS_GETPAGESIZE              / **/
-
-/* HAS_GETPROTOENT:
- *     This symbol, if defined, indicates that the getprotoent() routine is
- *     available to look up protocols in some data base or another.
+/* PRIVLIB_EXP:
+ *     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 HAS_GETPROTOENT              / **/
+#define PRIVLIB "/usr/local/lib/perl5/5.24"            /**/
+#define PRIVLIB_EXP "/usr/local/lib/perl5/5.24"                /**/
 
-/* HAS_GETPGRP:
- *     This symbol, if defined, indicates that the getpgrp routine is
- *     available to get the current process group.
+/* SITEARCH:
+ *     This symbol contains the name of the private library for this package.
+ *     The library is private in the sense that it needn't be in anyone's
+ *     execution path, but it should be accessible by the world.  The program
+ *     should be prepared to do ~ expansion.
+ *     The standard distribution will put nothing in this directory.
+ *     After perl has been installed, users may install their own local
+ *     architecture-dependent modules in this directory with
+ *             MakeMaker Makefile.PL
+ *     or equivalent.  See INSTALL for details.
  */
-/* USE_BSD_GETPGRP:
- *     This symbol, if defined, indicates that getpgrp needs one
- *     arguments whereas USG one needs none.
+/* SITEARCH_EXP:
+ *     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 HAS_GETPGRP          / **/
-/*#define USE_BSD_GETPGRP      / **/
+/*#define SITEARCH "/usr/local/lib/perl5/5.24/unknown"         / **/
+/*#define SITEARCH_EXP "/usr/local/lib/perl5/5.24/unknown"             / **/
 
-/* HAS_GETPROTOBYNAME:
- *     This symbol, if defined, indicates that the getprotobyname()
- *     routine is available to look up protocols by their name.
+/* SITELIB:
+ *     This symbol contains the name of the private library for this package.
+ *     The library is private in the sense that it needn't be in anyone's
+ *     execution path, but it should be accessible by the world.  The program
+ *     should be prepared to do ~ expansion.
+ *     The standard distribution will put nothing in this directory.
+ *     After perl has been installed, users may install their own local
+ *     architecture-independent modules in this directory with
+ *             MakeMaker Makefile.PL
+ *     or equivalent.  See INSTALL for details.
  */
-/* HAS_GETPROTOBYNUMBER:
- *     This symbol, if defined, indicates that the getprotobynumber()
- *     routine is available to look up protocols by their number.
+/* SITELIB_EXP:
+ *     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 HAS_GETPROTOBYNAME           / **/
-/*#define HAS_GETPROTOBYNUMBER         / **/
-
-/* HAS_GETPROTOBYNAME_R:
- *     This symbol, if defined, indicates that the getprotobyname_r routine
- *     is available to getprotobyname re-entrantly.
+/* SITELIB_STEM:
+ *     This define is SITELIB_EXP with any trailing version-specific component
+ *     removed.  The elements in inc_version_list (inc_version_list.U) can
+ *     be tacked onto this variable to generate a list of directories to search.
  */
-/* GETPROTOBYNAME_R_PROTO:
- *     This symbol encodes the prototype of getprotobyname_r.
- *     It is zero if d_getprotobyname_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_getprotobyname_r
- *     is defined.
- */
-/*#define HAS_GETPROTOBYNAME_R    / **/
-#define GETPROTOBYNAME_R_PROTO 0          /**/
+#define SITELIB "/usr/local/lib/perl5/5.24"            /**/
+#define SITELIB_EXP "/usr/local/lib/perl5/5.24"                /**/
+#define SITELIB_STEM "/usr/local/lib/perl5"            /**/
 
-/* HAS_GETPROTOBYNUMBER_R:
- *     This symbol, if defined, indicates that the getprotobynumber_r routine
- *     is available to getprotobynumber re-entrantly.
+/* PERL_VENDORARCH:
+ *     If defined, this symbol contains the name of a private library.
+ *     The library is private in the sense that it needn't be in anyone's
+ *     execution path, but it should be accessible by the world.
+ *     It may have a ~ on the front.
+ *     The standard distribution will put nothing in this directory.
+ *     Vendors who distribute perl may wish to place their own
+ *     architecture-dependent modules and extensions in this directory with
+ *             MakeMaker Makefile.PL INSTALLDIRS=vendor
+ *     or equivalent.  See INSTALL for details.
  */
-/* GETPROTOBYNUMBER_R_PROTO:
- *     This symbol encodes the prototype of getprotobynumber_r.
- *     It is zero if d_getprotobynumber_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_getprotobynumber_r
- *     is defined.
+/* PERL_VENDORARCH_EXP:
+ *     This symbol contains the ~name expanded version of PERL_VENDORARCH, to be used
+ *     in programs that are not prepared to deal with ~ expansion at run-time.
  */
-/*#define HAS_GETPROTOBYNUMBER_R          / **/
-#define GETPROTOBYNUMBER_R_PROTO 0        /**/
+/*#define PERL_VENDORARCH ""           / **/
+/*#define PERL_VENDORARCH_EXP ""               / **/
 
-/* HAS_GETPROTOENT_R:
- *     This symbol, if defined, indicates that the getprotoent_r routine
- *     is available to getprotoent re-entrantly.
+/* PERL_VENDORLIB_EXP:
+ *     This symbol contains the ~name expanded version of VENDORLIB, to be used
+ *     in programs that are not prepared to deal with ~ expansion at run-time.
  */
-/* GETPROTOENT_R_PROTO:
- *     This symbol encodes the prototype of getprotoent_r.
- *     It is zero if d_getprotoent_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_getprotoent_r
- *     is defined.
+/* PERL_VENDORLIB_STEM:
+ *     This define is PERL_VENDORLIB_EXP with any trailing version-specific component
+ *     removed.  The elements in inc_version_list (inc_version_list.U) can
+ *     be tacked onto this variable to generate a list of directories to search.
  */
-/*#define HAS_GETPROTOENT_R       / **/
-#define GETPROTOENT_R_PROTO 0     /**/
+/*#define PERL_VENDORLIB_EXP ""                / **/
+/*#define PERL_VENDORLIB_STEM ""               / **/
 
-/* HAS_GETPROTO_PROTOS:
- *     This symbol, if defined, indicates that <netdb.h> includes
- *     prototypes for getprotoent(), getprotobyname(), and
- *     getprotobyaddr().  Otherwise, it is up to the program to guess
- *     them.  See netdbtype.U for probing for various Netdb_xxx_t types.
+/* OSNAME:
+ *     This symbol contains the name of the operating system, as determined
+ *     by Configure.  You shouldn't rely on it too much; the specific
+ *     feature tests from Configure are generally more reliable.
  */
-/*#define      HAS_GETPROTO_PROTOS     / **/
-
-/* HAS_GETPWENT:
- *     This symbol, if defined, indicates that the getpwent routine is
- *     available for sequential access of the passwd database.
- *     If this is not available, the older getpw() function may be available.
+/* OSVERS:
+ *     This symbol contains the version of the operating system, as determined
+ *     by Configure.  You shouldn't rely on it too much; the specific
+ *     feature tests from Configure are generally more reliable.
  */
-/*#define HAS_GETPWENT         / **/
+#define OSNAME "unknown"               /**/
+#define OSVERS "unknown"               /**/
 
-/* HAS_GETPWENT_R:
- *     This symbol, if defined, indicates that the getpwent_r routine
- *     is available to getpwent re-entrantly.
+/* CAT2:
+ *     This macro concatenates 2 tokens together.
  */
-/* GETPWENT_R_PROTO:
- *     This symbol encodes the prototype of getpwent_r.
- *     It is zero if d_getpwent_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_getpwent_r
- *     is defined.
+/* STRINGIFY:
+ *     This macro surrounds its token with double quotes.
  */
-/*#define HAS_GETPWENT_R          / **/
-#define GETPWENT_R_PROTO 0        /**/
+#if 42 == 1
+#define CAT2(a,b)      a/**/b
+#define STRINGIFY(a)   "a"
+#endif
+#if 42 == 42
+#define PeRl_CaTiFy(a, b)      a ## b
+#define PeRl_StGiFy(a) #a
+#define CAT2(a,b)      PeRl_CaTiFy(a,b)
+#define StGiFy(a)      PeRl_StGiFy(a)
+#define STRINGIFY(a)   PeRl_StGiFy(a)
+#endif
+#if 42 != 1 && 42 != 42
+#include "Bletch: How does this C preprocessor concatenate tokens?"
+#endif
 
-/* HAS_GETPWNAM_R:
- *     This symbol, if defined, indicates that the getpwnam_r routine
- *     is available to getpwnam re-entrantly.
+/* CPPSTDIN:
+ *     This symbol contains the first part of the string which will invoke
+ *     the C preprocessor on the standard input and produce to standard
+ *     output.  Typical value of "cc -E" or "/lib/cpp", but it can also
+ *     call a wrapper. See CPPRUN.
  */
-/* GETPWNAM_R_PROTO:
- *     This symbol encodes the prototype of getpwnam_r.
- *     It is zero if d_getpwnam_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_getpwnam_r
- *     is defined.
+/* CPPMINUS:
+ *     This symbol contains the second part of the string which will invoke
+ *     the C preprocessor on the standard input and produce to standard
+ *     output.  This symbol will have the value "-" if CPPSTDIN needs a minus
+ *     to specify standard input, otherwise the value is "".
  */
-/*#define HAS_GETPWNAM_R          / **/
-#define GETPWNAM_R_PROTO 0        /**/
-
-/* HAS_GETPWUID_R:
- *     This symbol, if defined, indicates that the getpwuid_r routine
- *     is available to getpwuid re-entrantly.
+/* CPPRUN:
+ *     This symbol contains the string which will invoke a C preprocessor on
+ *     the standard input and produce to standard output. It needs to end
+ *     with CPPLAST, after all other preprocessor flags have been specified.
+ *     The main difference with CPPSTDIN is that this program will never be a
+ *     pointer to a shell wrapper, i.e. it will be empty if no preprocessor is
+ *     available directly to the user. Note that it may well be different from
+ *     the preprocessor used to compile the C program.
  */
-/* GETPWUID_R_PROTO:
- *     This symbol encodes the prototype of getpwuid_r.
- *     It is zero if d_getpwuid_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_getpwuid_r
- *     is defined.
+/* CPPLAST:
+ *     This symbol is intended to be used along with CPPRUN in the same manner
+ *     symbol CPPMINUS is used with CPPSTDIN. It contains either "-" or "".
  */
-/*#define HAS_GETPWUID_R          / **/
-#define GETPWUID_R_PROTO 0        /**/
+#define CPPSTDIN "cc -E"
+#define CPPMINUS "-"
+#define CPPRUN "cc -E"
+#define CPPLAST "-"
 
-/* HAS_GETSERVENT:
- *     This symbol, if defined, indicates that the getservent() routine is
- *     available to look up network services in some data base or another.
+/* HAS_ACCESS:
+ *     This manifest constant lets the C program know that the access()
+ *     system call is available to check for accessibility using real UID/GID.
+ *     (always present on UNIX.)
  */
-/*#define HAS_GETSERVENT               / **/
+/*#define HAS_ACCESS           / **/
 
-/* HAS_GETSERVBYNAME_R:
- *     This symbol, if defined, indicates that the getservbyname_r routine
- *     is available to getservbyname re-entrantly.
+/* HASATTRIBUTE_FORMAT:
+ *     Can we handle GCC attribute for checking printf-style formats
  */
-/* GETSERVBYNAME_R_PROTO:
- *     This symbol encodes the prototype of getservbyname_r.
- *     It is zero if d_getservbyname_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_getservbyname_r
- *     is defined.
+/* PRINTF_FORMAT_NULL_OK:
+ *     Allows __printf__ format to be null when checking printf-style
  */
-/*#define HAS_GETSERVBYNAME_R     / **/
-#define GETSERVBYNAME_R_PROTO 0           /**/
-
-/* HAS_GETSERVBYPORT_R:
- *     This symbol, if defined, indicates that the getservbyport_r routine
- *     is available to getservbyport re-entrantly.
+/* HASATTRIBUTE_MALLOC:
+ *     Can we handle GCC attribute for malloc-style functions.
  */
-/* GETSERVBYPORT_R_PROTO:
- *     This symbol encodes the prototype of getservbyport_r.
- *     It is zero if d_getservbyport_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_getservbyport_r
- *     is defined.
+/* HASATTRIBUTE_NONNULL:
+ *     Can we handle GCC attribute for nonnull function parms.
  */
-/*#define HAS_GETSERVBYPORT_R     / **/
-#define GETSERVBYPORT_R_PROTO 0           /**/
-
-/* HAS_GETSERVENT_R:
- *     This symbol, if defined, indicates that the getservent_r routine
- *     is available to getservent re-entrantly.
+/* HASATTRIBUTE_NORETURN:
+ *     Can we handle GCC attribute for functions that do not return
  */
-/* GETSERVENT_R_PROTO:
- *     This symbol encodes the prototype of getservent_r.
- *     It is zero if d_getservent_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_getservent_r
- *     is defined.
+/* HASATTRIBUTE_PURE:
+ *     Can we handle GCC attribute for pure functions
  */
-/*#define HAS_GETSERVENT_R        / **/
-#define GETSERVENT_R_PROTO 0      /**/
-
-/* HAS_GETSERV_PROTOS:
- *     This symbol, if defined, indicates that <netdb.h> includes
- *     prototypes for getservent(), getservbyname(), and
- *     getservbyaddr().  Otherwise, it is up to the program to guess
- *     them.  See netdbtype.U for probing for various Netdb_xxx_t types.
+/* HASATTRIBUTE_UNUSED:
+ *     Can we handle GCC attribute for unused variables and arguments
  */
-/*#define      HAS_GETSERV_PROTOS      / **/
-
-/* HAS_GETSPNAM_R:
- *     This symbol, if defined, indicates that the getspnam_r routine
- *     is available to getspnam re-entrantly.
+/* HASATTRIBUTE_DEPRECATED:
+ *     Can we handle GCC attribute for marking deprecated APIs
  */
-/* GETSPNAM_R_PROTO:
- *     This symbol encodes the prototype of getspnam_r.
- *     It is zero if d_getspnam_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_getspnam_r
- *     is defined.
+/* HASATTRIBUTE_WARN_UNUSED_RESULT:
+ *     Can we handle GCC attribute for warning on unused results
  */
-/*#define HAS_GETSPNAM_R          / **/
-#define GETSPNAM_R_PROTO 0        /**/
+/*#define HASATTRIBUTE_DEPRECATED      / **/
+/*#define HASATTRIBUTE_FORMAT  / **/
+/*#define PRINTF_FORMAT_NULL_OK        / **/
+/*#define HASATTRIBUTE_NORETURN        / **/
+/*#define HASATTRIBUTE_MALLOC  / **/
+/*#define HASATTRIBUTE_NONNULL / **/
+/*#define HASATTRIBUTE_PURE    / **/
+/*#define HASATTRIBUTE_UNUSED  / **/
+/*#define HASATTRIBUTE_WARN_UNUSED_RESULT      / **/
 
-/* HAS_GETSERVBYNAME:
- *     This symbol, if defined, indicates that the getservbyname()
- *     routine is available to look up services by their name.
- */
-/* HAS_GETSERVBYPORT:
- *     This symbol, if defined, indicates that the getservbyport()
- *     routine is available to look up services by their port.
+/* HAS_BACKTRACE:
+ *     This symbol, if defined, indicates that the backtrace() routine is
+ *     available to get a stack trace.  The <execinfo.h> header must be
+ *     included to use this routine.
  */
-/*#define HAS_GETSERVBYNAME            / **/
-/*#define HAS_GETSERVBYPORT            / **/
+/*#define HAS_BACKTRACE        / **/
 
-/* HAS_GMTIME_R:
- *     This symbol, if defined, indicates that the gmtime_r routine
- *     is available to gmtime re-entrantly.
+/* HASCONST:
+ *     This symbol, if defined, indicates that this C compiler knows about
+ *     the const type. There is no need to actually test for that symbol
+ *     within your programs. The mere use of the "const" keyword will
+ *     trigger the necessary tests.
  */
-/* GMTIME_R_PROTO:
- *     This symbol encodes the prototype of gmtime_r.
- *     It is zero if d_gmtime_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_gmtime_r
- *     is defined.
+/*#define HASCONST     / **/
+#ifndef HASCONST
+#define const
+#endif
+
+/* HAS_CSH:
+ *     This symbol, if defined, indicates that the C-shell exists.
  */
-/*#define HAS_GMTIME_R    / **/
-#define GMTIME_R_PROTO 0          /**/
+/* CSH:
+ *     This symbol, if defined, contains the full pathname of csh.
+ */
+/*#define HAS_CSH              / **/
+#ifdef HAS_CSH
+#define CSH "" /**/
+#endif
 
-/* HAS_GNULIBC:
- *     This symbol, if defined, indicates to the C program that
- *     the GNU C library is being used.  A better check is to use
- *     the __GLIBC__ and __GLIBC_MINOR__ symbols supplied with glibc.
+/* HAS_DLADDR:
+ *     This symbol, if defined, indicates that the dladdr() routine is
+ *     available to query dynamic linker information for an address.
+ *     The <dlfcn.h> header must be included to use this routine.
  */
-/*#define HAS_GNULIBC          / **/
-#if defined(HAS_GNULIBC) && !defined(_GNU_SOURCE)
-#   define _GNU_SOURCE
+/*#define HAS_DLADDR   / **/
+
+/* SETUID_SCRIPTS_ARE_SECURE_NOW:
+ *     This symbol, if defined, indicates that the bug that prevents
+ *     setuid scripts from being secure is not present in this kernel.
+ */
+/* DOSUID:
+ *     This symbol, if defined, indicates that the C program should
+ *     check the script that it is executing for setuid/setgid bits, and
+ *     attempt to emulate setuid/setgid on systems that have disabled
+ *     setuid #! scripts because the kernel can't do it securely.
+ *     It is up to the package designer to make sure that this emulation
+ *     is done securely.  Among other things, it should do an fstat on
+ *     the script it just opened to make sure it really is a setuid/setgid
+ *     script, it should make sure the arguments passed correspond exactly
+ *     to the argument on the #! line, and it should not trust any
+ *     subprocesses to which it must pass the filename rather than the
+ *     file descriptor of the script to be executed.
+ */
+/*#define SETUID_SCRIPTS_ARE_SECURE_NOW        / **/
+/*#define DOSUID               / **/
+
+/* HAS_ENDGRENT:
+ *     This symbol, if defined, indicates that the getgrent routine is
+ *     available for finalizing sequential access of the group database.
+ */
+/*#define HAS_ENDGRENT         / **/
+
+/* HAS_ENDHOSTENT:
+ *     This symbol, if defined, indicates that the endhostent() routine is
+ *     available to close whatever was being used for host queries.
+ */
+/*#define HAS_ENDHOSTENT               / **/
+
+/* HAS_ENDNETENT:
+ *     This symbol, if defined, indicates that the endnetent() routine is
+ *     available to close whatever was being used for network queries.
+ */
+/*#define HAS_ENDNETENT                / **/
+
+/* HAS_ENDPROTOENT:
+ *     This symbol, if defined, indicates that the endprotoent() routine is
+ *     available to close whatever was being used for protocol queries.
+ */
+/*#define HAS_ENDPROTOENT              / **/
+
+/* HAS_ENDPWENT:
+ *     This symbol, if defined, indicates that the getgrent routine is
+ *     available for finalizing sequential access of the passwd database.
+ */
+/*#define HAS_ENDPWENT         / **/
+
+/* HAS_ENDSERVENT:
+ *     This symbol, if defined, indicates that the endservent() routine is
+ *     available to close whatever was being used for service queries.
+ */
+/*#define HAS_ENDSERVENT               / **/
+
+/* FLEXFILENAMES:
+ *     This symbol, if defined, indicates that the system supports filenames
+ *     longer than 14 characters.
+ */
+/*#define      FLEXFILENAMES           / **/
+
+/* HAS_GETGRENT:
+ *     This symbol, if defined, indicates that the getgrent routine is
+ *     available for sequential access of the group database.
+ */
+/*#define HAS_GETGRENT         / **/
+
+/* HAS_GETHOSTBYADDR:
+ *     This symbol, if defined, indicates that the gethostbyaddr() routine is
+ *     available to look up hosts by their IP addresses.
+ */
+/*#define HAS_GETHOSTBYADDR            / **/
+
+/* HAS_GETHOSTBYNAME:
+ *     This symbol, if defined, indicates that the gethostbyname() routine is
+ *     available to look up host names in some data base or other.
+ */
+/*#define HAS_GETHOSTBYNAME            / **/
+
+/* HAS_GETHOSTENT:
+ *     This symbol, if defined, indicates that the gethostent() routine is
+ *     available to look up host names in some data base or another.
+ */
+/*#define HAS_GETHOSTENT               / **/
+
+/* HAS_GETHOSTNAME:
+ *     This symbol, if defined, indicates that the C program may use the
+ *     gethostname() routine to derive the host name.  See also HAS_UNAME
+ *     and PHOSTNAME.
+ */
+/* HAS_UNAME:
+ *     This symbol, if defined, indicates that the C program may use the
+ *     uname() routine to derive the host name.  See also HAS_GETHOSTNAME
+ *     and PHOSTNAME.
+ */
+/* PHOSTNAME:
+ *     This symbol, if defined, indicates the command to feed to the
+ *     popen() routine to derive the host name.  See also HAS_GETHOSTNAME
+ *     and HAS_UNAME.  Note that the command uses a fully qualified path,
+ *     so that it is safe even if used by a process with super-user
+ *     privileges.
+ */
+/* HAS_PHOSTNAME:
+ *     This symbol, if defined, indicates that the C program may use the
+ *     contents of PHOSTNAME as a command to feed to the popen() routine
+ *     to derive the host name.
+ */
+/*#define HAS_GETHOSTNAME      / **/
+/*#define HAS_UNAME            / **/
+/*#define HAS_PHOSTNAME        / **/
+#ifdef HAS_PHOSTNAME
+#define PHOSTNAME "/bin/hostname"      /* How to get the host name */
 #endif
 
+/* HAS_GETNETBYADDR:
+ *     This symbol, if defined, indicates that the getnetbyaddr() routine is
+ *     available to look up networks by their IP addresses.
+ */
+/*#define HAS_GETNETBYADDR             / **/
+
+/* HAS_GETNETBYNAME:
+ *     This symbol, if defined, indicates that the getnetbyname() routine is
+ *     available to look up networks by their names.
+ */
+/*#define HAS_GETNETBYNAME             / **/
+
+/* HAS_GETNETENT:
+ *     This symbol, if defined, indicates that the getnetent() routine is
+ *     available to look up network names in some data base or another.
+ */
+/*#define HAS_GETNETENT                / **/
+
+/* HAS_GETPROTOENT:
+ *     This symbol, if defined, indicates that the getprotoent() routine is
+ *     available to look up protocols in some data base or another.
+ */
+/*#define HAS_GETPROTOENT              / **/
+
+/* HAS_GETPGRP:
+ *     This symbol, if defined, indicates that the getpgrp routine is
+ *     available to get the current process group.
+ */
+/* USE_BSD_GETPGRP:
+ *     This symbol, if defined, indicates that getpgrp needs one
+ *     arguments whereas USG one needs none.
+ */
+/*#define HAS_GETPGRP          / **/
+/*#define USE_BSD_GETPGRP      / **/
+
+/* HAS_GETPROTOBYNAME:
+ *     This symbol, if defined, indicates that the getprotobyname()
+ *     routine is available to look up protocols by their name.
+ */
+/* HAS_GETPROTOBYNUMBER:
+ *     This symbol, if defined, indicates that the getprotobynumber()
+ *     routine is available to look up protocols by their number.
+ */
+/*#define HAS_GETPROTOBYNAME           / **/
+/*#define HAS_GETPROTOBYNUMBER         / **/
+
+/* HAS_GETPWENT:
+ *     This symbol, if defined, indicates that the getpwent routine is
+ *     available for sequential access of the passwd database.
+ *     If this is not available, the older getpw() function may be available.
+ */
+/*#define HAS_GETPWENT         / **/
+
+/* HAS_GETSERVENT:
+ *     This symbol, if defined, indicates that the getservent() routine is
+ *     available to look up network services in some data base or another.
+ */
+/*#define HAS_GETSERVENT               / **/
+
+/* HAS_GETSERVBYNAME:
+ *     This symbol, if defined, indicates that the getservbyname()
+ *     routine is available to look up services by their name.
+ */
+/* HAS_GETSERVBYPORT:
+ *     This symbol, if defined, indicates that the getservbyport()
+ *     routine is available to look up services by their port.
+ */
+/*#define HAS_GETSERVBYNAME            / **/
+/*#define HAS_GETSERVBYPORT            / **/
+
 /* HAS_HTONL:
  *     This symbol, if defined, indicates that the htonl() routine (and
  *     friends htons() ntohl() ntohs()) are available to do network
 /*#define HAS_NTOHL            / **/
 /*#define HAS_NTOHS            / **/
 
-/* HAS_ISASCII:
- *     This manifest constant lets the C program know that isascii
- *     is available.
- */
-/*#define HAS_ISASCII          / **/
-
-/* HAS_LCHOWN:
- *     This symbol, if defined, indicates that the lchown routine is
- *     available to operate on a symbolic link (instead of following the
- *     link).
- */
-/*#define HAS_LCHOWN           / **/
-
-/* HAS_LOCALTIME_R:
- *     This symbol, if defined, indicates that the localtime_r routine
- *     is available to localtime re-entrantly.
- */
-/* LOCALTIME_R_NEEDS_TZSET:
- *     Many libc's localtime_r implementations do not call tzset,
- *     making them differ from localtime(), and making timezone
- *     changes using $ENV{TZ} without explicitly calling tzset
- *     impossible. This symbol makes us call tzset before localtime_r
- */
-/*#define LOCALTIME_R_NEEDS_TZSET / **/
-#ifdef LOCALTIME_R_NEEDS_TZSET
-#define L_R_TZSET tzset(),
-#else
-#define L_R_TZSET
-#endif
-
-/* LOCALTIME_R_PROTO:
- *     This symbol encodes the prototype of localtime_r.
- *     It is zero if d_localtime_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_localtime_r
- *     is defined.
- */
-/*#define HAS_LOCALTIME_R         / **/
-#define LOCALTIME_R_PROTO 0       /**/
-
 /* HAS_LONG_DOUBLE:
  *     This symbol will be defined if the C compiler supports long
  *     doubles.
 #define LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_LE_BE      7
 #define LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BE_LE      8
 #define LONG_DOUBLE_IS_UNKNOWN_FORMAT                  -1
-/* Backward compat. */
-#define LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_LITTLE_ENDIAN      LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_LE_LE
-#define LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BIG_ENDIAN LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BE_BE
+#define LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_LITTLE_ENDIAN      LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_LE_LE /* back-compat */
+#define LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BIG_ENDIAN LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BE_BE /* back-compat */
 #endif
 
 /* HAS_LONG_LONG:
 #define LONGLONGSIZE 8         /**/
 #endif
 
-/* HAS_LSEEK_PROTO:
- *     This symbol, if defined, indicates that the system provides
- *     a prototype for the lseek() function.  Otherwise, it is up
- *     to the program to supply one.  A good guess is
- *             extern off_t lseek(int, off_t, int);
- */
-/*#define      HAS_LSEEK_PROTO / **/
-
 /* HAS_MEMCHR:
  *     This symbol, if defined, indicates that the memchr routine is available
  *     to locate characters within a C string.
  */
 /*#define HAS_MSG              / **/
 
-/* HAS_OPEN3:
- *     This manifest constant lets the C program know that the three
- *     argument form of open(2) is available.
- */
-/*#define HAS_OPEN3            / **/
-
-/* OLD_PTHREAD_CREATE_JOINABLE:
- *     This symbol, if defined, indicates how to create pthread
- *     in joinable (aka undetached) state.  NOTE: not defined
- *     if pthread.h already has defined PTHREAD_CREATE_JOINABLE
- *     (the new version of the constant).
- *     If defined, known values are PTHREAD_CREATE_UNDETACHED
- *     and __UNDETACHED.
- */
-/*#define OLD_PTHREAD_CREATE_JOINABLE  / **/
-
-/* HAS_PTHREAD_ATFORK:
- *     This symbol, if defined, indicates that the pthread_atfork routine
- *     is available to setup fork handlers.
- */
-/*#define HAS_PTHREAD_ATFORK           / **/
-
-/* HAS_PTHREAD_YIELD:
- *     This symbol, if defined, indicates that the pthread_yield
- *     routine is available to yield the execution of the current
- *     thread.  sched_yield is preferable to pthread_yield.
- */
-/* SCHED_YIELD:
- *     This symbol defines the way to yield the execution of
- *     the current thread.  Known ways are sched_yield,
- *     pthread_yield, and pthread_yield with NULL.
- */
-/* HAS_SCHED_YIELD:
- *     This symbol, if defined, indicates that the sched_yield
- *     routine is available to yield the execution of the current
- *     thread.  sched_yield is preferable to pthread_yield.
- */
-/*#define HAS_PTHREAD_YIELD    / **/
-#define SCHED_YIELD    sched_yield()   /**/
-/*#define HAS_SCHED_YIELD      / **/
-
-/* HAS_RANDOM_R:
- *     This symbol, if defined, indicates that the random_r routine
- *     is available to random re-entrantly.
- */
-/* RANDOM_R_PROTO:
- *     This symbol encodes the prototype of random_r.
- *     It is zero if d_random_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_random_r
- *     is defined.
- */
-/*#define HAS_RANDOM_R    / **/
-#define RANDOM_R_PROTO 0          /**/
-
-/* HAS_READDIR64_R:
- *     This symbol, if defined, indicates that the readdir64_r routine
- *     is available to readdir64 re-entrantly.
- */
-/* READDIR64_R_PROTO:
- *     This symbol encodes the prototype of readdir64_r.
- *     It is zero if d_readdir64_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_readdir64_r
- *     is defined.
- */
-/*#define HAS_READDIR64_R         / **/
-#define READDIR64_R_PROTO 0       /**/
-
-/* HAS_READDIR_R:
- *     This symbol, if defined, indicates that the readdir_r routine
- *     is available to readdir re-entrantly.
- */
-/* READDIR_R_PROTO:
- *     This symbol encodes the prototype of readdir_r.
- *     It is zero if d_readdir_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_readdir_r
- *     is defined.
- */
-/*#define HAS_READDIR_R           / **/
-#define READDIR_R_PROTO 0         /**/
-
-/* HAS_SAFE_BCOPY:
- *     This symbol, if defined, indicates that the bcopy routine is available
- *     to copy potentially overlapping memory blocks. Normally, you should
- *     probably use memmove() or memcpy(). If neither is defined, roll your
- *     own version.
- */
-/*#define HAS_SAFE_BCOPY       / **/
-
-/* HAS_SAFE_MEMCPY:
- *     This symbol, if defined, indicates that the memcpy routine is available
- *     to copy potentially overlapping memory blocks.  If you need to
- *     copy overlapping memory blocks, you should check HAS_MEMMOVE and
- *     use memmove() instead, if available.
- */
-/*#define HAS_SAFE_MEMCPY      / **/
-
-/* HAS_SANE_MEMCMP:
- *     This symbol, if defined, indicates that the memcmp routine is available
- *     and can be used to compare relative magnitudes of chars with their high
- *     bits set.  If it is not defined, roll your own version.
- */
-/*#define HAS_SANE_MEMCMP      / **/
-
 /* HAS_SEM:
  *     This symbol, if defined, indicates that the entire sem*(2) library is
  *     supported.
  */
 /*#define HAS_SETGRENT         / **/
 
-/* HAS_SETGRENT_R:
- *     This symbol, if defined, indicates that the setgrent_r routine
- *     is available to setgrent re-entrantly.
- */
-/* SETGRENT_R_PROTO:
- *     This symbol encodes the prototype of setgrent_r.
- *     It is zero if d_setgrent_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_setgrent_r
- *     is defined.
- */
-/*#define HAS_SETGRENT_R          / **/
-#define SETGRENT_R_PROTO 0        /**/
-
 /* HAS_SETHOSTENT:
  *     This symbol, if defined, indicates that the sethostent() routine is
  *     available.
  */
 /*#define HAS_SETHOSTENT               / **/
 
-/* HAS_SETHOSTENT_R:
- *     This symbol, if defined, indicates that the sethostent_r routine
- *     is available to sethostent re-entrantly.
- */
-/* SETHOSTENT_R_PROTO:
- *     This symbol encodes the prototype of sethostent_r.
- *     It is zero if d_sethostent_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_sethostent_r
- *     is defined.
- */
-/*#define HAS_SETHOSTENT_R        / **/
-#define SETHOSTENT_R_PROTO 0      /**/
-
-/* HAS_SETLOCALE_R:
- *     This symbol, if defined, indicates that the setlocale_r routine
- *     is available to setlocale re-entrantly.
- */
-/* SETLOCALE_R_PROTO:
- *     This symbol encodes the prototype of setlocale_r.
- *     It is zero if d_setlocale_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_setlocale_r
- *     is defined.
- */
-/*#define HAS_SETLOCALE_R         / **/
-#define SETLOCALE_R_PROTO 0       /**/
-
 /* HAS_SETNETENT:
  *     This symbol, if defined, indicates that the setnetent() routine is
  *     available.
  */
 /*#define HAS_SETNETENT                / **/
 
-/* HAS_SETNETENT_R:
- *     This symbol, if defined, indicates that the setnetent_r routine
- *     is available to setnetent re-entrantly.
- */
-/* SETNETENT_R_PROTO:
- *     This symbol encodes the prototype of setnetent_r.
- *     It is zero if d_setnetent_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_setnetent_r
- *     is defined.
- */
-/*#define HAS_SETNETENT_R         / **/
-#define SETNETENT_R_PROTO 0       /**/
-
 /* HAS_SETPROTOENT:
  *     This symbol, if defined, indicates that the setprotoent() routine is
  *     available.
 /*#define HAS_SETPGRP          / **/
 /*#define USE_BSD_SETPGRP      / **/
 
-/* HAS_SETPROTOENT_R:
- *     This symbol, if defined, indicates that the setprotoent_r routine
- *     is available to setprotoent re-entrantly.
- */
-/* SETPROTOENT_R_PROTO:
- *     This symbol encodes the prototype of setprotoent_r.
- *     It is zero if d_setprotoent_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_setprotoent_r
- *     is defined.
- */
-/*#define HAS_SETPROTOENT_R       / **/
-#define SETPROTOENT_R_PROTO 0     /**/
-
 /* HAS_SETPWENT:
  *     This symbol, if defined, indicates that the setpwent routine is
  *     available for initializing sequential access of the passwd database.
  */
 /*#define HAS_SETPWENT         / **/
 
-/* HAS_SETPWENT_R:
- *     This symbol, if defined, indicates that the setpwent_r routine
- *     is available to setpwent re-entrantly.
- */
-/* SETPWENT_R_PROTO:
- *     This symbol encodes the prototype of setpwent_r.
- *     It is zero if d_setpwent_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_setpwent_r
- *     is defined.
- */
-/*#define HAS_SETPWENT_R          / **/
-#define SETPWENT_R_PROTO 0        /**/
-
 /* HAS_SETSERVENT:
  *     This symbol, if defined, indicates that the setservent() routine is
  *     available.
  */
 /*#define HAS_SETSERVENT               / **/
 
-/* HAS_SETSERVENT_R:
- *     This symbol, if defined, indicates that the setservent_r routine
- *     is available to setservent re-entrantly.
- */
-/* SETSERVENT_R_PROTO:
- *     This symbol encodes the prototype of setservent_r.
- *     It is zero if d_setservent_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_setservent_r
- *     is defined.
- */
-/*#define HAS_SETSERVENT_R        / **/
-#define SETSERVENT_R_PROTO 0      /**/
-
 /* HAS_SETVBUF:
  *     This symbol, if defined, indicates that the setvbuf routine is
  *     available to change buffering on an open stdio stream.
 #define Shmat_t void * /**/
 /*#define HAS_SHMAT_PROTOTYPE  / **/
 
-/* HAS_SIGACTION:
- *     This symbol, if defined, indicates that Vr4's sigaction() routine
- *     is available.
+/* HAS_SOCKET:
+ *     This symbol, if defined, indicates that the BSD socket interface is
+ *     supported.
  */
-/*#define HAS_SIGACTION        / **/
-
-/* HAS_SIGINFO_SI_ERRNO:
- *     This symbol, if defined, indicates that siginfo_t has the
- *     si_errno member
+/* HAS_SOCKETPAIR:
+ *     This symbol, if defined, indicates that the BSD socketpair() call is
+ *     supported.
  */
-/*#define HAS_SIGINFO_SI_ERRNO / **/
-
-/* HAS_SIGINFO_SI_PID:
- *     This symbol, if defined, indicates that siginfo_t has the
- *     si_pid member
+/* HAS_SOCKADDR_SA_LEN:
+ *     This symbol, if defined, indicates that the struct sockaddr
+ *     structure has a member called sa_len, indicating the length of
+ *     the structure.
  */
-/*#define HAS_SIGINFO_SI_PID   / **/
-
-/* HAS_SIGINFO_SI_UID:
- *     This symbol, if defined, indicates that siginfo_t has the
- *     si_uid member
+/* HAS_SOCKADDR_IN6:
+ *     This symbol, if defined, indicates the availability of
+ *     struct sockaddr_in6;
  */
-/*#define HAS_SIGINFO_SI_UID   / **/
-
-/* HAS_SIGINFO_SI_ADDR:
- *     This symbol, if defined, indicates that siginfo_t has the
- *     si_addr member
+/* HAS_SIN6_SCOPE_ID:
+ *     This symbol, if defined, indicates that the struct sockaddr_in6
+ *     structure has a member called sin6_scope_id.
  */
-/*#define HAS_SIGINFO_SI_ADDR  / **/
-
-/* HAS_SIGINFO_SI_STATUS:
- *     This symbol, if defined, indicates that siginfo_t has the
- *     si_status member
+/* HAS_IP_MREQ:
+ *     This symbol, if defined, indicates the availability of
+ *     struct ip_mreq;
  */
-/*#define HAS_SIGINFO_SI_STATUS        / **/
-
-/* HAS_SIGINFO_SI_BAND:
- *     This symbol, if defined, indicates that siginfo_t has the
- *     si_band member
- */
-/*#define HAS_SIGINFO_SI_BAND  / **/
-
-/* HAS_SIGINFO_SI_VALUE:
- *     This symbol, if defined, indicates that siginfo_t has the
- *     si_value member
- */
-/*#define HAS_SIGINFO_SI_VALUE / **/
-
-/* HAS_SIGSETJMP:
- *     This variable indicates to the C program that the sigsetjmp()
- *     routine is available to save the calling process's registers
- *     and stack environment for later use by siglongjmp(), and
- *     to optionally save the process's signal mask.  See
- *     Sigjmp_buf, Sigsetjmp, and Siglongjmp.
- */
-/* Sigjmp_buf:
- *     This is the buffer type to be used with Sigsetjmp and Siglongjmp.
- */
-/* Sigsetjmp:
- *     This macro is used in the same way as sigsetjmp(), but will invoke
- *     traditional setjmp() if sigsetjmp isn't available.
- *     See HAS_SIGSETJMP.
- */
-/* Siglongjmp:
- *     This macro is used in the same way as siglongjmp(), but will invoke
- *     traditional longjmp() if siglongjmp isn't available.
- *     See HAS_SIGSETJMP.
- */
-/*#define HAS_SIGSETJMP        / **/
-#ifdef HAS_SIGSETJMP
-#define Sigjmp_buf sigjmp_buf
-#define Sigsetjmp(buf,save_mask) sigsetjmp((buf),(save_mask))
-#define Siglongjmp(buf,retval) siglongjmp((buf),(retval))
-#else
-#define Sigjmp_buf jmp_buf
-#define Sigsetjmp(buf,save_mask) setjmp((buf))
-#define Siglongjmp(buf,retval) longjmp((buf),(retval))
-#endif
-
-/* HAS_SOCKET:
- *     This symbol, if defined, indicates that the BSD socket interface is
- *     supported.
- */
-/* HAS_SOCKETPAIR:
- *     This symbol, if defined, indicates that the BSD socketpair() call is
- *     supported.
- */
-/* HAS_SOCKADDR_SA_LEN:
- *     This symbol, if defined, indicates that the struct sockaddr
- *     structure has a member called sa_len, indicating the length of
- *     the structure.
- */
-/* HAS_SOCKADDR_IN6:
- *     This symbol, if defined, indicates the availability of
- *     struct sockaddr_in6;
- */
-/* HAS_SIN6_SCOPE_ID:
- *     This symbol, if defined, indicates that the struct sockaddr_in6
- *     structure has a member called sin6_scope_id.
- */
-/* HAS_IP_MREQ:
- *     This symbol, if defined, indicates the availability of
- *     struct ip_mreq;
- */
-/* HAS_IP_MREQ_SOURCE:
- *     This symbol, if defined, indicates the availability of
- *     struct ip_mreq_source;
+/* HAS_IP_MREQ_SOURCE:
+ *     This symbol, if defined, indicates the availability of
+ *     struct ip_mreq_source;
  */
 /* HAS_IPV6_MREQ:
  *     This symbol, if defined, indicates the availability of
 /*#define      HAS_IPV6_MREQ   / **/
 /*#define      HAS_IPV6_MREQ_SOURCE    / **/
 
-/* HAS_SRAND48_R:
- *     This symbol, if defined, indicates that the srand48_r routine
- *     is available to srand48 re-entrantly.
- */
-/* SRAND48_R_PROTO:
- *     This symbol encodes the prototype of srand48_r.
- *     It is zero if d_srand48_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_srand48_r
- *     is defined.
- */
-/*#define HAS_SRAND48_R           / **/
-#define SRAND48_R_PROTO 0         /**/
-
-/* HAS_SRANDOM_R:
- *     This symbol, if defined, indicates that the srandom_r routine
- *     is available to srandom re-entrantly.
- */
-/* SRANDOM_R_PROTO:
- *     This symbol encodes the prototype of srandom_r.
- *     It is zero if d_srandom_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_srandom_r
- *     is defined.
- */
-/*#define HAS_SRANDOM_R           / **/
-#define SRANDOM_R_PROTO 0         /**/
-
 /* USE_STAT_BLOCKS:
  *     This symbol is defined if this system has a stat structure declaring
  *     st_blksize and st_blocks.
 /*#define USE_STAT_BLOCKS      / **/
 #endif
 
-/* HAS_STATIC_INLINE:
- *     This symbol, if defined, indicates that the C compiler supports
- *     C99-style static inline.  That is, the function can't be called
- *     from another translation unit.
- */
-/* PERL_STATIC_INLINE:
- *     This symbol gives the best-guess incantation to use for static
- *     inline functions.  If HAS_STATIC_INLINE is defined, this will
- *     give C99-style inline.  If HAS_STATIC_INLINE is not defined,
- *     this will give a plain 'static'.  It will always be defined
- *     to something that gives static linkage.
- *     Possibilities include
- *             static inline       (c99)
- *             static __inline__   (gcc -ansi)
- *             static __inline     (MSVC)
- *             static _inline      (older MSVC)
- *             static              (c89 compilers)
- */
-/*#define HAS_STATIC_INLINE                            / **/
-#define PERL_STATIC_INLINE static      /**/
-
-/* USE_STDIO_PTR:
- *     This symbol is defined if the _ptr and _cnt fields (or similar)
- *     of the stdio FILE structure can be used to access the stdio buffer
- *     for a file handle.  If this is defined, then the FILE_ptr(fp)
- *     and FILE_cnt(fp) macros will also be defined and should be used
- *     to access these fields.
- */
-/* FILE_ptr:
- *     This macro is used to access the _ptr field (or equivalent) of the
- *     FILE structure pointed to by its argument. This macro will always be
- *     defined if USE_STDIO_PTR is defined.
- */
-/* STDIO_PTR_LVALUE:
- *     This symbol is defined if the FILE_ptr macro can be used as an
- *     lvalue.
- */
-/* FILE_cnt:
- *     This macro is used to access the _cnt field (or equivalent) of the
- *     FILE structure pointed to by its argument. This macro will always be
- *     defined if USE_STDIO_PTR is defined.
- */
-/* STDIO_CNT_LVALUE:
- *     This symbol is defined if the FILE_cnt macro can be used as an
- *     lvalue.
- */
-/* STDIO_PTR_LVAL_SETS_CNT:
- *     This symbol is defined if using the FILE_ptr macro as an lvalue
- *     to increase the pointer by n has the side effect of decreasing the
- *     value of File_cnt(fp) by n.
- */
-/* STDIO_PTR_LVAL_NOCHANGE_CNT:
- *     This symbol is defined if using the FILE_ptr macro as an lvalue
- *     to increase the pointer by n leaves File_cnt(fp) unchanged.
- */
-/*#define USE_STDIO_PTR        / **/
-#ifdef USE_STDIO_PTR
-#define FILE_ptr(fp)   ((fp)->_IO_read_ptr)
-/*#define STDIO_PTR_LVALUE             / **/
-#define FILE_cnt(fp)   ((fp)->_IO_read_end - (fp)->_IO_read_ptr)
-/*#define STDIO_CNT_LVALUE             / **/
-/*#define STDIO_PTR_LVAL_SETS_CNT      / **/
-/*#define STDIO_PTR_LVAL_NOCHANGE_CNT  / **/
-#endif
-
-/* USE_STDIO_BASE:
- *     This symbol is defined if the _base field (or similar) of the
- *     stdio FILE structure can be used to access the stdio buffer for
- *     a file handle.  If this is defined, then the FILE_base(fp) macro
- *     will also be defined and should be used to access this field.
- *     Also, the FILE_bufsiz(fp) macro will be defined and should be used
- *     to determine the number of bytes in the buffer.  USE_STDIO_BASE
- *     will never be defined unless USE_STDIO_PTR is.
- */
-/* FILE_base:
- *     This macro is used to access the _base field (or equivalent) of the
- *     FILE structure pointed to by its argument. This macro will always be
- *     defined if USE_STDIO_BASE is defined.
- */
-/* FILE_bufsiz:
- *     This macro is used to determine the number of bytes in the I/O
- *     buffer pointed to by _base field (or equivalent) of the FILE
- *     structure pointed to its argument. This macro will always be defined
- *     if USE_STDIO_BASE is defined.
- */
-/*#define USE_STDIO_BASE       / **/
-#ifdef USE_STDIO_BASE
-#define FILE_base(fp)  ((fp)->_IO_read_base)
-#define FILE_bufsiz(fp)        ((fp)->_IO_read_end - (fp)->_IO_read_base)
-#endif
-
 /* USE_STRUCT_COPY:
  *     This symbol, if defined, indicates that this C compiler knows how
  *     to copy structures.  If undefined, you'll need to use a block copy
 /*#define HAS_SYS_ERRLIST      / **/
 #define Strerror(e) strerror(e)
 
-/* HAS_STRERROR_R:
- *     This symbol, if defined, indicates that the strerror_r routine
- *     is available to strerror re-entrantly.
- */
-/* STRERROR_R_PROTO:
- *     This symbol encodes the prototype of strerror_r.
- *     It is zero if d_strerror_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_strerror_r
- *     is defined.
- */
-/*#define HAS_STRERROR_R          / **/
-#define STRERROR_R_PROTO 0        /**/
-
 /* HAS_STRTOUL:
  *     This symbol, if defined, indicates that the strtoul routine is
  *     available to provide conversion of strings to unsigned long.
  */
 #define HAS_STRTOUL    /**/
 
-/* HAS_TIME:
- *     This symbol, if defined, indicates that the time() routine exists.
- */
-/* Time_t:
- *     This symbol holds the type returned by time(). It can be long,
- *     or time_t on BSD sites (in which case <sys/types.h> should be
- *     included).
- */
-#define HAS_TIME               /**/
-#define Time_t time_t          /* Time type */
-
-/* HAS_TIMES:
- *     This symbol, if defined, indicates that the times() routine exists.
- *     Note that this became obsolete on some systems (SUNOS), which now
- * use getrusage(). It may be necessary to include <sys/times.h>.
- */
-/*#define HAS_TIMES            / **/
-
-/* HAS_TMPNAM_R:
- *     This symbol, if defined, indicates that the tmpnam_r routine
- *     is available to tmpnam re-entrantly.
- */
-/* TMPNAM_R_PROTO:
- *     This symbol encodes the prototype of tmpnam_r.
- *     It is zero if d_tmpnam_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_tmpnam_r
- *     is defined.
- */
-/*#define HAS_TMPNAM_R    / **/
-#define TMPNAM_R_PROTO 0          /**/
-
-/* HAS_TTYNAME_R:
- *     This symbol, if defined, indicates that the ttyname_r routine
- *     is available to ttyname re-entrantly.
- */
-/* TTYNAME_R_PROTO:
- *     This symbol encodes the prototype of ttyname_r.
- *     It is zero if d_ttyname_r is undef, and one of the
- *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_ttyname_r
- *     is defined.
- */
-/*#define HAS_TTYNAME_R           / **/
-#define TTYNAME_R_PROTO 0         /**/
-
 /* HAS_UNION_SEMUN:
  *     This symbol, if defined, indicates that the union semun is
  *     defined by including <sys/sem.h>.  If not, the user code
 #define volatile
 #endif
 
-/* HAS_VPRINTF:
- *     This symbol, if defined, indicates that the vprintf routine is available
- *     to printf with a pointer to an argument list.  If unavailable, you
- *     may need to write your own, probably in terms of _doprnt().
+/* I_DIRENT:
+ *     This symbol, if defined, indicates to the C program that it should
+ *     include <dirent.h>. Using this symbol also triggers the definition
+ *     of the Direntry_t define which ends up being 'struct dirent' or
+ *     'struct direct' depending on the availability of <dirent.h>.
  */
-/* USE_CHAR_VSPRINTF:
- *     This symbol is defined if this system has vsprintf() returning type
- *     (char*).  The trend seems to be to declare it as "int vsprintf()".  It
- *     is up to the package author to declare vsprintf correctly based on the
- *     symbol.
- */
-#define HAS_VPRINTF    /**/
-/*#define USE_CHAR_VSPRINTF    / **/
-
-/* DOUBLESIZE:
- *     This symbol contains the size of a double, so that the C preprocessor
- *     can make decisions based on it.
- */
-#define DOUBLESIZE 8           /**/
-
-/* EBCDIC:
- *     This symbol, if defined, indicates that this system uses
- *     EBCDIC encoding.
- */
-/*#define      EBCDIC          / **/
-
-/* Fpos_t:
- *     This symbol holds the type used to declare file positions in libc.
- *     It can be fpos_t, long, uint, etc... It may be necessary to include
- *     <sys/types.h> to get any typedef'ed information.
- */
-#define Fpos_t int             /* File position type */
-
-/* Gid_t_f:
- *     This symbol defines the format string used for printing a Gid_t.
- */
-#define        Gid_t_f         "lu"            /**/
-
-/* Gid_t_sign:
- *     This symbol holds the signedness of a Gid_t.
- *     1 for unsigned, -1 for signed.
- */
-#define Gid_t_sign     1               /* GID sign */
-
-/* Gid_t_size:
- *     This symbol holds the size of a Gid_t in bytes.
- */
-#define Gid_t_size 4           /* GID size */
-
-/* Gid_t:
- *     This symbol holds the return type of getgid() and the type of
- *     argument to setrgid() and related functions.  Typically,
- *     it is the type of group ids in the kernel. It can be int, ushort,
- *     gid_t, etc... It may be necessary to include <sys/types.h> to get
- *     any typedef'ed information.
- */
-#define Gid_t int              /* Type for getgid(), etc... */
-
-/* I_DIRENT:
- *     This symbol, if defined, indicates to the C program that it should
- *     include <dirent.h>. Using this symbol also triggers the definition
- *     of the Direntry_t define which ends up being 'struct dirent' or
- *     'struct direct' depending on the availability of <dirent.h>.
- */
-/* DIRNAMLEN:
- *     This symbol, if defined, indicates to the C program that the length
- *     of directory entry names is provided by a d_namlen field.  Otherwise
- *     you need to do strlen() on the d_name field.
+/* DIRNAMLEN:
+ *     This symbol, if defined, indicates to the C program that the length
+ *     of directory entry names is provided by a d_namlen field.  Otherwise
+ *     you need to do strlen() on the d_name field.
  */
 /* Direntry_t:
  *     This symbol is set to 'struct direct' or 'struct dirent' depending on
 /*#define I_GRP                / **/
 /*#define GRPASSWD     / **/
 
-/* I_MACH_CTHREADS:
- *     This symbol, if defined, indicates to the C program that it should
- *     include <mach/cthreads.h>.
- */
-/*#define   I_MACH_CTHREADS    / **/
-
 /* I_NDBM:
  *     This symbol, if defined, indicates that <ndbm.h> exists and should
  *     be included.
  */
 /*#define I_NET_ERRNO          / **/
 
-/* I_PTHREAD:
- *     This symbol, if defined, indicates to the C program that it should
- *     include <pthread.h>.
- */
-/*#define   I_PTHREAD  / **/
-
 /* I_PWD:
  *     This symbol, if defined, indicates to the C program that it should
  *     include <pwd.h>.
 /*#define PWGECOS      / **/
 /*#define PWPASSWD     / **/
 
-/* I_SYS_ACCESS:
- *     This symbol, if defined, indicates to the C program that it should
- *     include <sys/access.h>.
- */
-/*#define   I_SYS_ACCESS                / **/
-
-/* I_SYS_SECURITY:
- *     This symbol, if defined, indicates to the C program that it should
- *     include <sys/security.h>.
- */
-/*#define   I_SYS_SECURITY     / **/
-
 /* I_SYSUIO:
  *     This symbol, if defined, indicates that <sys/uio.h> exists and
  *     should be included.
 /*#define I_TERMIOS            / **/
 /*#define I_SGTTY              / **/
 
-/* I_TIME:
- *     This symbol, if defined, indicates to the C program that it should
- *     include <time.h>.
- */
-/* I_SYS_TIME:
- *     This symbol, if defined, indicates to the C program that it should
- *     include <sys/time.h>.
- */
-/* I_SYS_TIME_KERNEL:
- *     This symbol, if defined, indicates to the C program that it should
- *     include <sys/time.h> with KERNEL defined.
- */
-/* HAS_TM_TM_ZONE:
- *     This symbol, if defined, indicates to the C program that
- *     the struct tm has a tm_zone field.
- */
-/* HAS_TM_TM_GMTOFF:
- *     This symbol, if defined, indicates to the C program that
- *     the struct tm has a tm_gmtoff field.
- */
-#define I_TIME         /**/
-/*#define I_SYS_TIME           / **/
-/*#define I_SYS_TIME_KERNEL            / **/
-/*#define HAS_TM_TM_ZONE               / **/
-/*#define HAS_TM_TM_GMTOFF             / **/
-
 /* I_STDARG:
  *     This symbol, if defined, indicates that <stdarg.h> exists and should
  *     be included.
 #define I_STDARG               /**/
 /*#define I_VARARGS    / **/
 
-/* PERL_INC_VERSION_LIST:
- *     This variable specifies the list of subdirectories in over
- *     which perl.c:incpush() and lib/lib.pm will automatically
- *     search when adding directories to @INC, in a format suitable
- *     for a C initialization string.  See the inc_version_list entry
- *     in Porting/Glossary for more details.
- */
-/*#define PERL_INC_VERSION_LIST NULL           / **/
-
-/* INSTALL_USR_BIN_PERL:
- *     This symbol, if defined, indicates that Perl is to be installed
- *     also as /usr/bin/perl.
- */
-/*#define INSTALL_USR_BIN_PERL / **/
-
-/* Off_t:
- *     This symbol holds the type used to declare offsets in the kernel.
- *     It can be int, long, off_t, etc... It may be necessary to include
- *     <sys/types.h> to get any typedef'ed information.
- */
-/* LSEEKSIZE:
- *     This symbol holds the number of bytes used by the Off_t.
- */
-/* Off_t_size:
- *     This symbol holds the number of bytes used by the Off_t.
- */
-#define Off_t int              /* <offset> type */
-#define LSEEKSIZE 4            /* <offset> size */
-#define Off_t_size 4   /* <offset> size */
-
 /* Free_t:
  *     This variable contains the return type of free().  It is usually
  * void, but occasionally int.
  */
 /*#define MYMALLOC                     / **/
 
-/* Mode_t:
- *     This symbol holds the type used to declare file modes
- *     for systems calls.  It is usually mode_t, but may be
- *     int or unsigned short.  It may be necessary to include <sys/types.h>
- *     to get any typedef'ed information.
- */
-#define Mode_t int      /* file mode parameter for system calls */
-
-/* VAL_O_NONBLOCK:
- *     This symbol is to be used during open() or fcntl(F_SETFL) to turn on
- *     non-blocking I/O for the file descriptor. Note that there is no way
- *     back, i.e. you cannot turn it blocking again this way. If you wish to
- *     alternatively switch between blocking and non-blocking, use the
- *     ioctl(FIOSNBIO) call instead, but that is not supported by all devices.
- */
-/* VAL_EAGAIN:
- *     This symbol holds the errno error code set by read() when no data was
- *     present on the non-blocking file descriptor.
- */
-/* RD_NODATA:
- *     This symbol holds the return code from read() when no data is present
- *     on the non-blocking file descriptor. Be careful! If EOF_NONBLOCK is
- *     not defined, then you can't distinguish between no data and EOF by
- *     issuing a read(). You'll have to find another way to tell for sure!
- */
-/* EOF_NONBLOCK:
- *     This symbol, if defined, indicates to the C program that a read() on
- *     a non-blocking file descriptor will return 0 on EOF, and not the value
- *     held in RD_NODATA (-1 usually, in that case!).
- */
-#define VAL_O_NONBLOCK O_NONBLOCK
-#define VAL_EAGAIN EAGAIN
-#define RD_NODATA -1
-#undef EOF_NONBLOCK
-
-/* Netdb_host_t:
- *     This symbol holds the type used for the 1st argument
- *     to gethostbyaddr().
- */
-/* Netdb_hlen_t:
- *     This symbol holds the type used for the 2nd argument
- *     to gethostbyaddr().
- */
-/* Netdb_name_t:
- *     This symbol holds the type used for the argument to
- *     gethostbyname().
- */
-/* Netdb_net_t:
- *     This symbol holds the type used for the 1st argument to
- *     getnetbyaddr().
- */
-#define Netdb_host_t           const char * /**/
-#define Netdb_hlen_t           int /**/
-#define Netdb_name_t           const char * /**/
-#define Netdb_net_t            unsigned long /**/
-
-/* PERL_OTHERLIBDIRS:
- *     This variable contains a colon-separated set of paths for the perl
- *     binary to search for additional library files or modules.
- *     These directories will be tacked to the end of @INC.
- *     Perl will automatically search below each path for version-
- *     and architecture-specific directories.  See PERL_INC_VERSION_LIST
- *     for more details.
- */
-/*#define PERL_OTHERLIBDIRS " "                / **/
-
-/* Pid_t:
- *     This symbol holds the type used to declare process ids in the kernel.
- *     It can be int, uint, pid_t, etc... It may be necessary to include
- *     <sys/types.h> to get any typedef'ed information.
- */
-#define Pid_t int              /* PID type */
-
-/* PRIVLIB:
- *     This symbol contains the name of the private library for this package.
- *     The library is private in the sense that it needn't be in anyone's
- *     execution path, but it should be accessible by the world.  The program
- *     should be prepared to do ~ expansion.
- */
-/* PRIVLIB_EXP:
- *     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 "/usr/local/lib/perl5/5.23"            /**/
-#define PRIVLIB_EXP "/usr/local/lib/perl5/5.23"                /**/
-
 /* CAN_PROTOTYPE:
  *     If defined, this macro indicates that the C compiler can handle
  *     function prototypes.
 #define        _(args) ()
 #endif
 
-/* PTRSIZE:
- *     This symbol contains the size of a pointer, so that the C preprocessor
- *     can make decisions based on it.  It will be sizeof(void *) if
- *     the compiler supports (void *); otherwise it will be
- *     sizeof(char *).
+/* SH_PATH:
+ *     This symbol contains the full pathname to the shell used on this
+ *     on this system to execute Bourne shell scripts.  Usually, this will be
+ *     /bin/sh, though it's possible that some systems will have /bin/ksh,
+ *     /bin/pdksh, /bin/ash, /bin/bash, or even something such as
+ *     D:/bin/sh.exe.
  */
-#define PTRSIZE 4              /**/
+#define SH_PATH "/bin/sh"  /**/
 
-/* HAS_QUAD:
- *     This symbol, if defined, tells that there's a 64-bit integer type,
- *     Quad_t, and its unsigned counterpart, Uquad_t. QUADKIND will be one
- *     of QUAD_IS_INT, QUAD_IS_LONG, QUAD_IS_LONG_LONG, QUAD_IS_INT64_T,
- *     or QUAD_IS___INT64.
- */
-/*#define HAS_QUAD     / **/
-#ifdef HAS_QUAD
-#   define Quad_t int64_t      /**/
-#   define Uquad_t uint64_t    /**/
-#   define QUADKIND 4  /**/
-#   define QUAD_IS_INT 1
-#   define QUAD_IS_LONG        2
-#   define QUAD_IS_LONG_LONG   3
-#   define QUAD_IS_INT64_T     4
-#   define QUAD_IS___INT64     5
-#endif
-
-/* Drand01:
- *     This macro is to be used to generate uniformly distributed
- *     random numbers over the range [0., 1.[.  You may have to supply
- *     an 'extern double drand48();' in your program since SunOS 4.1.3
- *     doesn't provide you with anything relevant in its headers.
- *     See HAS_DRAND48_PROTO.
- */
-/* Rand_seed_t:
- *     This symbol defines the type of the argument of the
- *     random seed function.
- */
-/* seedDrand01:
- *     This symbol defines the macro to be used in seeding the
- *     random number generator (see Drand01).
- */
-/* RANDBITS:
- *     This symbol indicates how many bits are produced by the
- *     function used to generate normalized random numbers.
- *     Values include 15, 16, 31, and 48.
- */
-#define Drand01()              Perl_drand48()          /**/
-#define Rand_seed_t            U32             /**/
-#define seedDrand01(x) Perl_drand48_init((Rand_seed_t)x)       /**/
-#define RANDBITS               48              /**/
-
-/* Select_fd_set_t:
- *     This symbol holds the type used for the 2nd, 3rd, and 4th
- *     arguments to select.  Usually, this is 'fd_set *', if HAS_FD_SET
- *     is defined, and 'int *' otherwise.  This is only useful if you
- *     have select(), of course.
- */
-#define Select_fd_set_t        int     /**/
-
-/* SH_PATH:
- *     This symbol contains the full pathname to the shell used on this
- *     on this system to execute Bourne shell scripts.  Usually, this will be
- *     /bin/sh, though it's possible that some systems will have /bin/ksh,
- *     /bin/pdksh, /bin/ash, /bin/bash, or even something such as
- *     D:/bin/sh.exe.
- */
-#define SH_PATH "/bin/sh"  /**/
-
-/* SIG_NAME:
- *     This symbol contains a list of signal names in order of
- *     signal number. This is intended
- *     to be used as a static array initialization, like this:
- *             char *sig_name[] = { SIG_NAME };
- *     The signals in the list are separated with commas, and each signal
- *     is surrounded by double quotes. There is no leading SIG in the signal
- *     name, i.e. SIGQUIT is known as "QUIT".
- *     Gaps in the signal numbers (up to NSIG) are filled in with NUMnn,
- *     etc., where nn is the actual signal number (e.g. NUM37).
- *     The signal number for sig_name[i] is stored in sig_num[i].
- *     The last element is 0 to terminate the list with a NULL.  This
- *     corresponds to the 0 at the end of the sig_name_init list.
- *     Note that this variable is initialized from the sig_name_init,
- *     not from sig_name (which is unused).
+/* SIG_NAME:
+ *     This symbol contains a list of signal names in order of
+ *     signal number. This is intended
+ *     to be used as a static array initialization, like this:
+ *             char *sig_name[] = { SIG_NAME };
+ *     The signals in the list are separated with commas, and each signal
+ *     is surrounded by double quotes. There is no leading SIG in the signal
+ *     name, i.e. SIGQUIT is known as "QUIT".
+ *     Gaps in the signal numbers (up to NSIG) are filled in with NUMnn,
+ *     etc., where nn is the actual signal number (e.g. NUM37).
+ *     The signal number for sig_name[i] is stored in sig_num[i].
+ *     The last element is 0 to terminate the list with a NULL.  This
+ *     corresponds to the 0 at the end of the sig_name_init list.
+ *     Note that this variable is initialized from the sig_name_init,
+ *     not from sig_name (which is unused).
  */
 /* SIG_NUM:
  *     This symbol contains a list of signal numbers, in the same order as the
 #define SIG_NUM  0             /**/
 #define SIG_SIZE 1                     /**/
 
-/* SITEARCH:
- *     This symbol contains the name of the private library for this package.
- *     The library is private in the sense that it needn't be in anyone's
- *     execution path, but it should be accessible by the world.  The program
- *     should be prepared to do ~ expansion.
- *     The standard distribution will put nothing in this directory.
- *     After perl has been installed, users may install their own local
- *     architecture-dependent modules in this directory with
- *             MakeMaker Makefile.PL
- *     or equivalent.  See INSTALL for details.
- */
-/* SITEARCH_EXP:
- *     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 "/usr/local/lib/perl5/5.23/unknown"         / **/
-/*#define SITEARCH_EXP "/usr/local/lib/perl5/5.23/unknown"             / **/
-
-/* SITELIB:
- *     This symbol contains the name of the private library for this package.
- *     The library is private in the sense that it needn't be in anyone's
- *     execution path, but it should be accessible by the world.  The program
- *     should be prepared to do ~ expansion.
- *     The standard distribution will put nothing in this directory.
- *     After perl has been installed, users may install their own local
- *     architecture-independent modules in this directory with
- *             MakeMaker Makefile.PL
- *     or equivalent.  See INSTALL for details.
- */
-/* SITELIB_EXP:
- *     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.
- */
-/* SITELIB_STEM:
- *     This define is SITELIB_EXP with any trailing version-specific component
- *     removed.  The elements in inc_version_list (inc_version_list.U) can
- *     be tacked onto this variable to generate a list of directories to search.
- */
-#define SITELIB "/usr/local/lib/perl5/5.23"            /**/
-#define SITELIB_EXP "/usr/local/lib/perl5/5.23"                /**/
-#define SITELIB_STEM "/usr/local/lib/perl5"            /**/
-
-/* Size_t_size:
- *     This symbol holds the size of a Size_t in bytes.
- */
-#define Size_t_size 4          /**/
-
-/* Size_t:
- *     This symbol holds the type used to declare length parameters
- *     for string functions.  It is usually size_t, but may be
- *     unsigned long, int, etc.  It may be necessary to include
- *     <sys/types.h> to get any typedef'ed information.
- */
-#define Size_t size_t   /* length parameter for string functions */
-
-/* Sock_size_t:
- *     This symbol holds the type used for the size argument of
- *     various socket calls (just the base type, not the pointer-to).
- */
-#define Sock_size_t            int /**/
-
-/* SSize_t:
- *     This symbol holds the type used by functions that return
- *     a count of bytes or an error condition.  It must be a signed type.
- *     It is usually ssize_t, but may be long or int, etc.
- *     It may be necessary to include <sys/types.h> or <unistd.h>
- *     to get any typedef'ed information.
- *     We will pick a type such that sizeof(SSize_t) == sizeof(Size_t).
- */
-#define SSize_t int     /* signed count of bytes */
-
-/* STDCHAR:
- *     This symbol is defined to be the type of char used in stdio.h.
- *     It has the values "unsigned char" or "char".
- */
-#define STDCHAR char   /**/
-
-/* Uid_t_f:
- *     This symbol defines the format string used for printing a Uid_t.
- */
-#define        Uid_t_f         "lu"            /**/
-
-/* Uid_t_sign:
- *     This symbol holds the signedness of a Uid_t.
- *     1 for unsigned, -1 for signed.
- */
-#define Uid_t_sign     1               /* UID sign */
-
-/* Uid_t_size:
- *     This symbol holds the size of a Uid_t in bytes.
- */
-#define Uid_t_size 4           /* UID size */
-
-/* Uid_t:
- *     This symbol holds the type used to declare user ids in the kernel.
- *     It can be int, ushort, uid_t, etc... It may be necessary to include
- *     <sys/types.h> to get any typedef'ed information.
- */
-#define Uid_t int              /* UID type */
-
-/* USE_ITHREADS:
- *     This symbol, if defined, indicates that Perl should be built to
- *     use the interpreter-based threading implementation.
- */
-/* USE_5005THREADS:
- *     This symbol, if defined, indicates that Perl should be built to
- *     use the 5.005-based threading implementation.
- *     Only valid up to 5.8.x.
- */
-/* OLD_PTHREADS_API:
- *     This symbol, if defined, indicates that Perl should
- *     be built to use the old draft POSIX threads API.
- */
-/* USE_REENTRANT_API:
- *     This symbol, if defined, indicates that Perl should
- *     try to use the various _r versions of library functions.
- *     This is extremely experimental.
- */
-/*#define      USE_5005THREADS         / **/
-/*#define      USE_ITHREADS            / **/
-#if defined(USE_5005THREADS) && !defined(USE_ITHREADS)
-#define                USE_THREADS             /* until src is revised*/
-#endif
-/*#define      OLD_PTHREADS_API                / **/
-/*#define      USE_REENTRANT_API       / **/
-
-/* PERL_VENDORARCH:
- *     If defined, this symbol contains the name of a private library.
- *     The library is private in the sense that it needn't be in anyone's
- *     execution path, but it should be accessible by the world.
- *     It may have a ~ on the front.
- *     The standard distribution will put nothing in this directory.
- *     Vendors who distribute perl may wish to place their own
- *     architecture-dependent modules and extensions in this directory with
- *             MakeMaker Makefile.PL INSTALLDIRS=vendor
- *     or equivalent.  See INSTALL for details.
- */
-/* PERL_VENDORARCH_EXP:
- *     This symbol contains the ~name expanded version of PERL_VENDORARCH, to be used
- *     in programs that are not prepared to deal with ~ expansion at run-time.
- */
-/*#define PERL_VENDORARCH ""           / **/
-/*#define PERL_VENDORARCH_EXP ""               / **/
-
-/* PERL_VENDORLIB_EXP:
- *     This symbol contains the ~name expanded version of VENDORLIB, to be used
- *     in programs that are not prepared to deal with ~ expansion at run-time.
- */
-/* PERL_VENDORLIB_STEM:
- *     This define is PERL_VENDORLIB_EXP with any trailing version-specific component
- *     removed.  The elements in inc_version_list (inc_version_list.U) can
- *     be tacked onto this variable to generate a list of directories to search.
- */
-/*#define PERL_VENDORLIB_EXP ""                / **/
-/*#define PERL_VENDORLIB_STEM ""               / **/
-
 /* USE_CROSS_COMPILE:
  *     This symbol, if defined, indicates that Perl is being cross-compiled.
  */
 
 /* HAS_LLRINT:
  *     This symbol, if defined, indicates that the llrint routine is
- *     available to return the closest long long value according to
- *     the current rounding mode.
+ *     available to return the long long value closest to a double
+ *     (according to the current rounding mode).
  */
 /*#define HAS_LLRINT           / **/
 
 /* HAS_LLRINTL:
  *     This symbol, if defined, indicates that the llrintl routine is
- *     available to return the closest long long value of the long double
- *     argument according to the current rounding mode.
+ *     available to return the long long value closest to a long double
+ *     (according to the current rounding mode).
  */
 /*#define HAS_LLRINTL          / **/
 
 
 /* HAS_LRINT:
  *     This symbol, if defined, indicates that the lrint routine is
- *     available to return the closest integral value according to
- *     the current rounding mode.
+ *     available to return the integral value closest to a double
+ *     (according to the current rounding mode).
  */
 /*#define HAS_LRINT            / **/
 
 /* HAS_LRINTL:
  *     This symbol, if defined, indicates that the lrintl routine is
- *     available to return the closest integral value of the long double
- *     argument according to the current rounding mode.
+ *     available to return the integral value closest to a long double
+ *     (according to the current rounding mode).
  */
 /*#define HAS_LRINTL           / **/
 
  */
 /*#define HAS_MALLOC_GOOD_SIZE / **/
 
+/* HAS_MEMMEM:
+ *     This symbol, if defined, indicates that the memmem routine is
+ *     available to return a pointer to the start of the first occurance
+ *     of a substring in a memory area (or NULL if not found).
+ */
+/*#define HAS_MEMMEM           / **/
+
 /* HAS_MKDTEMP:
  *     This symbol, if defined, indicates that the mkdtemp routine is
  *     available to exclusively create a uniquely named temporary directory.
  */
 #define SELECT_MIN_BITS        32      /**/
 
-/* ST_INO_SIZE:
- *     This variable contains the size of struct stat's st_ino in bytes.
+/* ST_INO_SIZE:
+ *     This variable contains the size of struct stat's st_ino in bytes.
+ */
+/* ST_INO_SIGN:
+ *     This symbol holds the signedness of struct stat's st_ino.
+ *     1 for unsigned, -1 for signed.
+ */
+#define ST_INO_SIGN 1  /* st_ino sign */
+#define ST_INO_SIZE 4  /* st_ino size */
+
+/* STARTPERL:
+ *     This variable contains the string to put in front of a perl
+ *     script to make sure (one hopes) that it runs with perl and not
+ *     some shell.
+ */
+#define STARTPERL "#!perl"             /**/
+
+/* HAS_STDIO_STREAM_ARRAY:
+ *     This symbol, if defined, tells that there is an array
+ *     holding the stdio streams.
+ */
+/* STDIO_STREAM_ARRAY:
+ *     This symbol tells the name of the array holding the stdio streams.
+ *     Usual values include _iob, __iob, and __sF.
+ */
+/*#define      HAS_STDIO_STREAM_ARRAY  / **/
+#ifdef HAS_STDIO_STREAM_ARRAY
+#define STDIO_STREAM_ARRAY     
+#endif
+
+/* GMTIME_MAX:
+ *     This symbol contains the maximum value for the time_t offset that
+ *     the system function gmtime () accepts, and defaults to 0
+ */
+/* GMTIME_MIN:
+ *     This symbol contains the minimum value for the time_t offset that
+ *     the system function gmtime () accepts, and defaults to 0
+ */
+/* LOCALTIME_MAX:
+ *     This symbol contains the maximum value for the time_t offset that
+ *     the system function localtime () accepts, and defaults to 0
+ */
+/* LOCALTIME_MIN:
+ *     This symbol contains the minimum value for the time_t offset that
+ *     the system function localtime () accepts, and defaults to 0
+ */
+#define GMTIME_MAX             2147483647      /**/
+#define GMTIME_MIN             0       /**/
+#define LOCALTIME_MAX  2147483647      /**/
+#define LOCALTIME_MIN  0       /**/
+
+/* USE_64_BIT_INT:
+ *     This symbol, if defined, indicates that 64-bit integers should
+ *     be used when available.  If not defined, the native integers
+ *     will be employed (be they 32 or 64 bits).  The minimal possible
+ *     64-bitness is used, just enough to get 64-bit integers into Perl.
+ *     This may mean using for example "long longs", while your memory
+ *     may still be limited to 2 gigabytes.
+ */
+/* USE_64_BIT_ALL:
+ *     This symbol, if defined, indicates that 64-bit integers should
+ *     be used when available.  If not defined, the native integers
+ *     will be used (be they 32 or 64 bits).  The maximal possible
+ *     64-bitness is employed: LP64 or ILP64, meaning that you will
+ *     be able to use more than 2 gigabytes of memory.  This mode is
+ *     even more binary incompatible than USE_64_BIT_INT. You may not
+ *     be able to run the resulting executable in a 32-bit CPU at all or
+ *     you may need at least to reboot your OS to 64-bit mode.
+ */
+#ifndef USE_64_BIT_INT
+/*#define      USE_64_BIT_INT          / **/
+#endif
+#ifndef USE_64_BIT_ALL
+/*#define      USE_64_BIT_ALL          / **/
+#endif
+
+/* USE_CBACKTRACE:
+ *     This symbol, if defined, indicates that Perl should
+ *     be built with support for backtrace.
+ */
+/*#define USE_CBACKTRACE               / **/
+
+/* USE_DTRACE:
+ *     This symbol, if defined, indicates that Perl should
+ *     be built with support for DTrace.
+ */
+/*#define USE_DTRACE           / **/
+
+/* USE_FAST_STDIO:
+ *     This symbol, if defined, indicates that Perl should
+ *     be built to use 'fast stdio'.
+ *     Defaults to define in Perls 5.8 and earlier, to undef later.
+ */
+#ifndef USE_FAST_STDIO
+/*#define      USE_FAST_STDIO          / **/
+#endif
+
+/* USE_KERN_PROC_PATHNAME:
+ *     This symbol, if defined, indicates that we can use sysctl with
+ *     KERN_PROC_PATHNAME to get a full path for the executable, and hence
+ *     convert $^X to an absolute path.
+ */
+/*#define USE_KERN_PROC_PATHNAME       / **/
+
+/* USE_LARGE_FILES:
+ *     This symbol, if defined, indicates that large file support
+ *     should be used when available.
+ */
+#ifndef USE_LARGE_FILES
+/*#define      USE_LARGE_FILES         / **/
+#endif
+
+/* USE_LONG_DOUBLE:
+ *     This symbol, if defined, indicates that long doubles should
+ *     be used when available.
+ */
+#ifndef USE_LONG_DOUBLE
+/*#define      USE_LONG_DOUBLE         / **/
+#endif
+
+/* USE_MORE_BITS:
+ *     This symbol, if defined, indicates that 64-bit interfaces and
+ *     long doubles should be used when available.
+ */
+#ifndef USE_MORE_BITS
+/*#define      USE_MORE_BITS           / **/
+#endif
+
+/* MULTIPLICITY:
+ *     This symbol, if defined, indicates that Perl should
+ *     be built to use multiplicity.
+ */
+#ifndef MULTIPLICITY
+/*#define      MULTIPLICITY            / **/
+#endif
+
+/* USE_NSGETEXECUTABLEPATH:
+ *     This symbol, if defined, indicates that we can use _NSGetExecutablePath
+ *     and realpath to get a full path for the executable, and hence convert
+ *     $^X to an absolute path.
+ */
+/*#define USE_NSGETEXECUTABLEPATH      / **/
+
+/* USE_PERLIO:
+ *     This symbol, if defined, indicates that the PerlIO abstraction should
+ *     be used throughout.  If not defined, stdio should be
+ *     used in a fully backward compatible manner.
+ */
+#ifndef USE_PERLIO
+/*#define      USE_PERLIO              / **/
+#endif
+
+/* USE_QUADMATH:
+ *     This symbol, if defined, indicates that the quadmath library should
+ *     be used when available.
+ */
+#ifndef USE_QUADMATH
+/*#define      USE_QUADMATH            / **/
+#endif
+
+/* USE_SOCKS:
+ *     This symbol, if defined, indicates that Perl should
+ *     be built to use socks.
+ */
+#ifndef USE_SOCKS
+/*#define      USE_SOCKS               / **/
+#endif
+
+/* HAS_DRAND48_PROTO:
+ *     This symbol, if defined, indicates that the system provides
+ *     a prototype for the drand48() function.  Otherwise, it is up
+ *     to the program to supply one.  A good guess is
+ *             extern double drand48(void);
+ */
+/*#define      HAS_DRAND48_PROTO       / **/
+
+/* HAS_GETHOST_PROTOS:
+ *     This symbol, if defined, indicates that <netdb.h> includes
+ *     prototypes for gethostent(), gethostbyname(), and
+ *     gethostbyaddr().  Otherwise, it is up to the program to guess
+ *     them.  See netdbtype.U for probing for various Netdb_xxx_t types.
+ */
+/*#define      HAS_GETHOST_PROTOS      / **/
+
+/* HAS_GETNET_PROTOS:
+ *     This symbol, if defined, indicates that <netdb.h> includes
+ *     prototypes for getnetent(), getnetbyname(), and
+ *     getnetbyaddr().  Otherwise, it is up to the program to guess
+ *     them.  See netdbtype.U for probing for various Netdb_xxx_t types.
+ */
+/*#define      HAS_GETNET_PROTOS       / **/
+
+/* HAS_GETPROTO_PROTOS:
+ *     This symbol, if defined, indicates that <netdb.h> includes
+ *     prototypes for getprotoent(), getprotobyname(), and
+ *     getprotobyaddr().  Otherwise, it is up to the program to guess
+ *     them.  See netdbtype.U for probing for various Netdb_xxx_t types.
+ */
+/*#define      HAS_GETPROTO_PROTOS     / **/
+
+/* HAS_GETSERV_PROTOS:
+ *     This symbol, if defined, indicates that <netdb.h> includes
+ *     prototypes for getservent(), getservbyname(), and
+ *     getservbyaddr().  Otherwise, it is up to the program to guess
+ *     them.  See netdbtype.U for probing for various Netdb_xxx_t types.
+ */
+/*#define      HAS_GETSERV_PROTOS      / **/
+
+/* HAS_LSEEK_PROTO:
+ *     This symbol, if defined, indicates that the system provides
+ *     a prototype for the lseek() function.  Otherwise, it is up
+ *     to the program to supply one.  A good guess is
+ *             extern off_t lseek(int, off_t, int);
+ */
+/*#define      HAS_LSEEK_PROTO / **/
+
+/* Netdb_host_t:
+ *     This symbol holds the type used for the 1st argument
+ *     to gethostbyaddr().
+ */
+/* Netdb_hlen_t:
+ *     This symbol holds the type used for the 2nd argument
+ *     to gethostbyaddr().
+ */
+/* Netdb_name_t:
+ *     This symbol holds the type used for the argument to
+ *     gethostbyname().
+ */
+/* Netdb_net_t:
+ *     This symbol holds the type used for the 1st argument to
+ *     getnetbyaddr().
+ */
+#define Netdb_host_t           const char * /**/
+#define Netdb_hlen_t           int /**/
+#define Netdb_name_t           const char * /**/
+#define Netdb_net_t            unsigned long /**/
+
+/* Select_fd_set_t:
+ *     This symbol holds the type used for the 2nd, 3rd, and 4th
+ *     arguments to select.  Usually, this is 'fd_set *', if HAS_FD_SET
+ *     is defined, and 'int *' otherwise.  This is only useful if you
+ *     have select(), of course.
+ */
+#define Select_fd_set_t        int     /**/
+
+/* Sock_size_t:
+ *     This symbol holds the type used for the size argument of
+ *     various socket calls (just the base type, not the pointer-to).
+ */
+#define Sock_size_t            int /**/
+
+/* ARCHNAME:
+ *     This symbol holds a string representing the architecture name.
+ *     It may be used to construct an architecture-dependant pathname
+ *     where library files may be held under a private library, for
+ *     instance.
+ */
+#define ARCHNAME "unknown"             /**/
+
+/* HAS_ASCTIME_R:
+ *     This symbol, if defined, indicates that the asctime_r routine
+ *     is available to asctime re-entrantly.
+ */
+/* ASCTIME_R_PROTO:
+ *     This symbol encodes the prototype of asctime_r.
+ *     It is zero if d_asctime_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_asctime_r
+ *     is defined.
+ */
+/*#define HAS_ASCTIME_R           / **/
+#define ASCTIME_R_PROTO 0         /**/
+
+/* HAS_CRYPT_R:
+ *     This symbol, if defined, indicates that the crypt_r routine
+ *     is available to crypt re-entrantly.
+ */
+/* CRYPT_R_PROTO:
+ *     This symbol encodes the prototype of crypt_r.
+ *     It is zero if d_crypt_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_crypt_r
+ *     is defined.
+ */
+/*#define HAS_CRYPT_R     / **/
+#define CRYPT_R_PROTO 0           /**/
+
+/* HAS_CTERMID_R:
+ *     This symbol, if defined, indicates that the ctermid_r routine
+ *     is available to ctermid re-entrantly.
+ */
+/* CTERMID_R_PROTO:
+ *     This symbol encodes the prototype of ctermid_r.
+ *     It is zero if d_ctermid_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_ctermid_r
+ *     is defined.
+ */
+/*#define HAS_CTERMID_R           / **/
+#define CTERMID_R_PROTO 0         /**/
+
+/* HAS_CTIME_R:
+ *     This symbol, if defined, indicates that the ctime_r routine
+ *     is available to ctime re-entrantly.
+ */
+/* CTIME_R_PROTO:
+ *     This symbol encodes the prototype of ctime_r.
+ *     It is zero if d_ctime_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_ctime_r
+ *     is defined.
+ */
+/*#define HAS_CTIME_R     / **/
+#define CTIME_R_PROTO 0           /**/
+
+/* HAS_DRAND48_R:
+ *     This symbol, if defined, indicates that the drand48_r routine
+ *     is available to drand48 re-entrantly.
+ */
+/* DRAND48_R_PROTO:
+ *     This symbol encodes the prototype of drand48_r.
+ *     It is zero if d_drand48_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_drand48_r
+ *     is defined.
+ */
+/*#define HAS_DRAND48_R           / **/
+#define DRAND48_R_PROTO 0         /**/
+
+/* HAS_ENDGRENT_R:
+ *     This symbol, if defined, indicates that the endgrent_r routine
+ *     is available to endgrent re-entrantly.
+ */
+/* ENDGRENT_R_PROTO:
+ *     This symbol encodes the prototype of endgrent_r.
+ *     It is zero if d_endgrent_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_endgrent_r
+ *     is defined.
+ */
+/*#define HAS_ENDGRENT_R          / **/
+#define ENDGRENT_R_PROTO 0        /**/
+
+/* HAS_ENDHOSTENT_R:
+ *     This symbol, if defined, indicates that the endhostent_r routine
+ *     is available to endhostent re-entrantly.
+ */
+/* ENDHOSTENT_R_PROTO:
+ *     This symbol encodes the prototype of endhostent_r.
+ *     It is zero if d_endhostent_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_endhostent_r
+ *     is defined.
+ */
+/*#define HAS_ENDHOSTENT_R        / **/
+#define ENDHOSTENT_R_PROTO 0      /**/
+
+/* HAS_ENDNETENT_R:
+ *     This symbol, if defined, indicates that the endnetent_r routine
+ *     is available to endnetent re-entrantly.
+ */
+/* ENDNETENT_R_PROTO:
+ *     This symbol encodes the prototype of endnetent_r.
+ *     It is zero if d_endnetent_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_endnetent_r
+ *     is defined.
+ */
+/*#define HAS_ENDNETENT_R         / **/
+#define ENDNETENT_R_PROTO 0       /**/
+
+/* HAS_ENDPROTOENT_R:
+ *     This symbol, if defined, indicates that the endprotoent_r routine
+ *     is available to endprotoent re-entrantly.
+ */
+/* ENDPROTOENT_R_PROTO:
+ *     This symbol encodes the prototype of endprotoent_r.
+ *     It is zero if d_endprotoent_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_endprotoent_r
+ *     is defined.
+ */
+/*#define HAS_ENDPROTOENT_R       / **/
+#define ENDPROTOENT_R_PROTO 0     /**/
+
+/* HAS_ENDPWENT_R:
+ *     This symbol, if defined, indicates that the endpwent_r routine
+ *     is available to endpwent re-entrantly.
+ */
+/* ENDPWENT_R_PROTO:
+ *     This symbol encodes the prototype of endpwent_r.
+ *     It is zero if d_endpwent_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_endpwent_r
+ *     is defined.
+ */
+/*#define HAS_ENDPWENT_R          / **/
+#define ENDPWENT_R_PROTO 0        /**/
+
+/* HAS_ENDSERVENT_R:
+ *     This symbol, if defined, indicates that the endservent_r routine
+ *     is available to endservent re-entrantly.
+ */
+/* ENDSERVENT_R_PROTO:
+ *     This symbol encodes the prototype of endservent_r.
+ *     It is zero if d_endservent_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_endservent_r
+ *     is defined.
+ */
+/*#define HAS_ENDSERVENT_R        / **/
+#define ENDSERVENT_R_PROTO 0      /**/
+
+/* HAS_GETGRENT_R:
+ *     This symbol, if defined, indicates that the getgrent_r routine
+ *     is available to getgrent re-entrantly.
+ */
+/* GETGRENT_R_PROTO:
+ *     This symbol encodes the prototype of getgrent_r.
+ *     It is zero if d_getgrent_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_getgrent_r
+ *     is defined.
+ */
+/*#define HAS_GETGRENT_R          / **/
+#define GETGRENT_R_PROTO 0        /**/
+
+/* HAS_GETGRGID_R:
+ *     This symbol, if defined, indicates that the getgrgid_r routine
+ *     is available to getgrgid re-entrantly.
+ */
+/* GETGRGID_R_PROTO:
+ *     This symbol encodes the prototype of getgrgid_r.
+ *     It is zero if d_getgrgid_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_getgrgid_r
+ *     is defined.
+ */
+/*#define HAS_GETGRGID_R          / **/
+#define GETGRGID_R_PROTO 0        /**/
+
+/* HAS_GETGRNAM_R:
+ *     This symbol, if defined, indicates that the getgrnam_r routine
+ *     is available to getgrnam re-entrantly.
+ */
+/* GETGRNAM_R_PROTO:
+ *     This symbol encodes the prototype of getgrnam_r.
+ *     It is zero if d_getgrnam_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_getgrnam_r
+ *     is defined.
+ */
+/*#define HAS_GETGRNAM_R          / **/
+#define GETGRNAM_R_PROTO 0        /**/
+
+/* HAS_GETHOSTBYADDR_R:
+ *     This symbol, if defined, indicates that the gethostbyaddr_r routine
+ *     is available to gethostbyaddr re-entrantly.
+ */
+/* GETHOSTBYADDR_R_PROTO:
+ *     This symbol encodes the prototype of gethostbyaddr_r.
+ *     It is zero if d_gethostbyaddr_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_gethostbyaddr_r
+ *     is defined.
+ */
+/*#define HAS_GETHOSTBYADDR_R     / **/
+#define GETHOSTBYADDR_R_PROTO 0           /**/
+
+/* HAS_GETHOSTBYNAME_R:
+ *     This symbol, if defined, indicates that the gethostbyname_r routine
+ *     is available to gethostbyname re-entrantly.
+ */
+/* GETHOSTBYNAME_R_PROTO:
+ *     This symbol encodes the prototype of gethostbyname_r.
+ *     It is zero if d_gethostbyname_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_gethostbyname_r
+ *     is defined.
+ */
+/*#define HAS_GETHOSTBYNAME_R     / **/
+#define GETHOSTBYNAME_R_PROTO 0           /**/
+
+/* HAS_GETHOSTENT_R:
+ *     This symbol, if defined, indicates that the gethostent_r routine
+ *     is available to gethostent re-entrantly.
+ */
+/* GETHOSTENT_R_PROTO:
+ *     This symbol encodes the prototype of gethostent_r.
+ *     It is zero if d_gethostent_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_gethostent_r
+ *     is defined.
+ */
+/*#define HAS_GETHOSTENT_R        / **/
+#define GETHOSTENT_R_PROTO 0      /**/
+
+/* HAS_GETLOGIN_R:
+ *     This symbol, if defined, indicates that the getlogin_r routine
+ *     is available to getlogin re-entrantly.
+ */
+/* GETLOGIN_R_PROTO:
+ *     This symbol encodes the prototype of getlogin_r.
+ *     It is zero if d_getlogin_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_getlogin_r
+ *     is defined.
+ */
+/*#define HAS_GETLOGIN_R          / **/
+#define GETLOGIN_R_PROTO 0        /**/
+
+/* HAS_GETNETBYADDR_R:
+ *     This symbol, if defined, indicates that the getnetbyaddr_r routine
+ *     is available to getnetbyaddr re-entrantly.
+ */
+/* GETNETBYADDR_R_PROTO:
+ *     This symbol encodes the prototype of getnetbyaddr_r.
+ *     It is zero if d_getnetbyaddr_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_getnetbyaddr_r
+ *     is defined.
+ */
+/*#define HAS_GETNETBYADDR_R      / **/
+#define GETNETBYADDR_R_PROTO 0    /**/
+
+/* HAS_GETNETBYNAME_R:
+ *     This symbol, if defined, indicates that the getnetbyname_r routine
+ *     is available to getnetbyname re-entrantly.
+ */
+/* GETNETBYNAME_R_PROTO:
+ *     This symbol encodes the prototype of getnetbyname_r.
+ *     It is zero if d_getnetbyname_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_getnetbyname_r
+ *     is defined.
+ */
+/*#define HAS_GETNETBYNAME_R      / **/
+#define GETNETBYNAME_R_PROTO 0    /**/
+
+/* HAS_GETNETENT_R:
+ *     This symbol, if defined, indicates that the getnetent_r routine
+ *     is available to getnetent re-entrantly.
+ */
+/* GETNETENT_R_PROTO:
+ *     This symbol encodes the prototype of getnetent_r.
+ *     It is zero if d_getnetent_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_getnetent_r
+ *     is defined.
+ */
+/*#define HAS_GETNETENT_R         / **/
+#define GETNETENT_R_PROTO 0       /**/
+
+/* HAS_GETPROTOBYNAME_R:
+ *     This symbol, if defined, indicates that the getprotobyname_r routine
+ *     is available to getprotobyname re-entrantly.
+ */
+/* GETPROTOBYNAME_R_PROTO:
+ *     This symbol encodes the prototype of getprotobyname_r.
+ *     It is zero if d_getprotobyname_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_getprotobyname_r
+ *     is defined.
+ */
+/*#define HAS_GETPROTOBYNAME_R    / **/
+#define GETPROTOBYNAME_R_PROTO 0          /**/
+
+/* HAS_GETPROTOBYNUMBER_R:
+ *     This symbol, if defined, indicates that the getprotobynumber_r routine
+ *     is available to getprotobynumber re-entrantly.
+ */
+/* GETPROTOBYNUMBER_R_PROTO:
+ *     This symbol encodes the prototype of getprotobynumber_r.
+ *     It is zero if d_getprotobynumber_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_getprotobynumber_r
+ *     is defined.
+ */
+/*#define HAS_GETPROTOBYNUMBER_R          / **/
+#define GETPROTOBYNUMBER_R_PROTO 0        /**/
+
+/* HAS_GETPROTOENT_R:
+ *     This symbol, if defined, indicates that the getprotoent_r routine
+ *     is available to getprotoent re-entrantly.
+ */
+/* GETPROTOENT_R_PROTO:
+ *     This symbol encodes the prototype of getprotoent_r.
+ *     It is zero if d_getprotoent_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_getprotoent_r
+ *     is defined.
+ */
+/*#define HAS_GETPROTOENT_R       / **/
+#define GETPROTOENT_R_PROTO 0     /**/
+
+/* HAS_GETPWENT_R:
+ *     This symbol, if defined, indicates that the getpwent_r routine
+ *     is available to getpwent re-entrantly.
+ */
+/* GETPWENT_R_PROTO:
+ *     This symbol encodes the prototype of getpwent_r.
+ *     It is zero if d_getpwent_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_getpwent_r
+ *     is defined.
+ */
+/*#define HAS_GETPWENT_R          / **/
+#define GETPWENT_R_PROTO 0        /**/
+
+/* HAS_GETPWNAM_R:
+ *     This symbol, if defined, indicates that the getpwnam_r routine
+ *     is available to getpwnam re-entrantly.
+ */
+/* GETPWNAM_R_PROTO:
+ *     This symbol encodes the prototype of getpwnam_r.
+ *     It is zero if d_getpwnam_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_getpwnam_r
+ *     is defined.
+ */
+/*#define HAS_GETPWNAM_R          / **/
+#define GETPWNAM_R_PROTO 0        /**/
+
+/* HAS_GETPWUID_R:
+ *     This symbol, if defined, indicates that the getpwuid_r routine
+ *     is available to getpwuid re-entrantly.
+ */
+/* GETPWUID_R_PROTO:
+ *     This symbol encodes the prototype of getpwuid_r.
+ *     It is zero if d_getpwuid_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_getpwuid_r
+ *     is defined.
+ */
+/*#define HAS_GETPWUID_R          / **/
+#define GETPWUID_R_PROTO 0        /**/
+
+/* HAS_GETSERVBYNAME_R:
+ *     This symbol, if defined, indicates that the getservbyname_r routine
+ *     is available to getservbyname re-entrantly.
+ */
+/* GETSERVBYNAME_R_PROTO:
+ *     This symbol encodes the prototype of getservbyname_r.
+ *     It is zero if d_getservbyname_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_getservbyname_r
+ *     is defined.
+ */
+/*#define HAS_GETSERVBYNAME_R     / **/
+#define GETSERVBYNAME_R_PROTO 0           /**/
+
+/* HAS_GETSERVBYPORT_R:
+ *     This symbol, if defined, indicates that the getservbyport_r routine
+ *     is available to getservbyport re-entrantly.
+ */
+/* GETSERVBYPORT_R_PROTO:
+ *     This symbol encodes the prototype of getservbyport_r.
+ *     It is zero if d_getservbyport_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_getservbyport_r
+ *     is defined.
+ */
+/*#define HAS_GETSERVBYPORT_R     / **/
+#define GETSERVBYPORT_R_PROTO 0           /**/
+
+/* HAS_GETSERVENT_R:
+ *     This symbol, if defined, indicates that the getservent_r routine
+ *     is available to getservent re-entrantly.
+ */
+/* GETSERVENT_R_PROTO:
+ *     This symbol encodes the prototype of getservent_r.
+ *     It is zero if d_getservent_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_getservent_r
+ *     is defined.
+ */
+/*#define HAS_GETSERVENT_R        / **/
+#define GETSERVENT_R_PROTO 0      /**/
+
+/* HAS_GETSPNAM_R:
+ *     This symbol, if defined, indicates that the getspnam_r routine
+ *     is available to getspnam re-entrantly.
+ */
+/* GETSPNAM_R_PROTO:
+ *     This symbol encodes the prototype of getspnam_r.
+ *     It is zero if d_getspnam_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_getspnam_r
+ *     is defined.
+ */
+/*#define HAS_GETSPNAM_R          / **/
+#define GETSPNAM_R_PROTO 0        /**/
+
+/* HAS_GMTIME_R:
+ *     This symbol, if defined, indicates that the gmtime_r routine
+ *     is available to gmtime re-entrantly.
+ */
+/* GMTIME_R_PROTO:
+ *     This symbol encodes the prototype of gmtime_r.
+ *     It is zero if d_gmtime_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_gmtime_r
+ *     is defined.
+ */
+/*#define HAS_GMTIME_R    / **/
+#define GMTIME_R_PROTO 0          /**/
+
+/* HAS_LOCALTIME_R:
+ *     This symbol, if defined, indicates that the localtime_r routine
+ *     is available to localtime re-entrantly.
+ */
+/* LOCALTIME_R_NEEDS_TZSET:
+ *     Many libc's localtime_r implementations do not call tzset,
+ *     making them differ from localtime(), and making timezone
+ *     changes using $ENV{TZ} without explicitly calling tzset
+ *     impossible. This symbol makes us call tzset before localtime_r
+ */
+/*#define LOCALTIME_R_NEEDS_TZSET / **/
+#ifdef LOCALTIME_R_NEEDS_TZSET
+#define L_R_TZSET tzset(),
+#else
+#define L_R_TZSET
+#endif
+
+/* LOCALTIME_R_PROTO:
+ *     This symbol encodes the prototype of localtime_r.
+ *     It is zero if d_localtime_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_localtime_r
+ *     is defined.
+ */
+/*#define HAS_LOCALTIME_R         / **/
+#define LOCALTIME_R_PROTO 0       /**/
+
+/* OLD_PTHREAD_CREATE_JOINABLE:
+ *     This symbol, if defined, indicates how to create pthread
+ *     in joinable (aka undetached) state.  NOTE: not defined
+ *     if pthread.h already has defined PTHREAD_CREATE_JOINABLE
+ *     (the new version of the constant).
+ *     If defined, known values are PTHREAD_CREATE_UNDETACHED
+ *     and __UNDETACHED.
+ */
+/*#define OLD_PTHREAD_CREATE_JOINABLE  / **/
+
+/* HAS_PTHREAD_ATFORK:
+ *     This symbol, if defined, indicates that the pthread_atfork routine
+ *     is available to setup fork handlers.
+ */
+/*#define HAS_PTHREAD_ATFORK           / **/
+
+/* HAS_PTHREAD_YIELD:
+ *     This symbol, if defined, indicates that the pthread_yield
+ *     routine is available to yield the execution of the current
+ *     thread.  sched_yield is preferable to pthread_yield.
+ */
+/* SCHED_YIELD:
+ *     This symbol defines the way to yield the execution of
+ *     the current thread.  Known ways are sched_yield,
+ *     pthread_yield, and pthread_yield with NULL.
+ */
+/* HAS_SCHED_YIELD:
+ *     This symbol, if defined, indicates that the sched_yield
+ *     routine is available to yield the execution of the current
+ *     thread.  sched_yield is preferable to pthread_yield.
+ */
+/*#define HAS_PTHREAD_YIELD    / **/
+#define SCHED_YIELD    sched_yield()   /**/
+/*#define HAS_SCHED_YIELD      / **/
+
+/* HAS_RANDOM_R:
+ *     This symbol, if defined, indicates that the random_r routine
+ *     is available to random re-entrantly.
+ */
+/* RANDOM_R_PROTO:
+ *     This symbol encodes the prototype of random_r.
+ *     It is zero if d_random_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_random_r
+ *     is defined.
+ */
+/*#define HAS_RANDOM_R    / **/
+#define RANDOM_R_PROTO 0          /**/
+
+/* HAS_READDIR64_R:
+ *     This symbol, if defined, indicates that the readdir64_r routine
+ *     is available to readdir64 re-entrantly.
+ */
+/* READDIR64_R_PROTO:
+ *     This symbol encodes the prototype of readdir64_r.
+ *     It is zero if d_readdir64_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_readdir64_r
+ *     is defined.
+ */
+/*#define HAS_READDIR64_R         / **/
+#define READDIR64_R_PROTO 0       /**/
+
+/* HAS_READDIR_R:
+ *     This symbol, if defined, indicates that the readdir_r routine
+ *     is available to readdir re-entrantly.
+ */
+/* READDIR_R_PROTO:
+ *     This symbol encodes the prototype of readdir_r.
+ *     It is zero if d_readdir_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_readdir_r
+ *     is defined.
+ */
+/*#define HAS_READDIR_R           / **/
+#define READDIR_R_PROTO 0         /**/
+
+/* HAS_SETGRENT_R:
+ *     This symbol, if defined, indicates that the setgrent_r routine
+ *     is available to setgrent re-entrantly.
+ */
+/* SETGRENT_R_PROTO:
+ *     This symbol encodes the prototype of setgrent_r.
+ *     It is zero if d_setgrent_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_setgrent_r
+ *     is defined.
+ */
+/*#define HAS_SETGRENT_R          / **/
+#define SETGRENT_R_PROTO 0        /**/
+
+/* HAS_SETHOSTENT_R:
+ *     This symbol, if defined, indicates that the sethostent_r routine
+ *     is available to sethostent re-entrantly.
+ */
+/* SETHOSTENT_R_PROTO:
+ *     This symbol encodes the prototype of sethostent_r.
+ *     It is zero if d_sethostent_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_sethostent_r
+ *     is defined.
+ */
+/*#define HAS_SETHOSTENT_R        / **/
+#define SETHOSTENT_R_PROTO 0      /**/
+
+/* HAS_SETLOCALE_R:
+ *     This symbol, if defined, indicates that the setlocale_r routine
+ *     is available to setlocale re-entrantly.
+ */
+/* SETLOCALE_R_PROTO:
+ *     This symbol encodes the prototype of setlocale_r.
+ *     It is zero if d_setlocale_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_setlocale_r
+ *     is defined.
+ */
+/*#define HAS_SETLOCALE_R         / **/
+#define SETLOCALE_R_PROTO 0       /**/
+
+/* HAS_SETNETENT_R:
+ *     This symbol, if defined, indicates that the setnetent_r routine
+ *     is available to setnetent re-entrantly.
+ */
+/* SETNETENT_R_PROTO:
+ *     This symbol encodes the prototype of setnetent_r.
+ *     It is zero if d_setnetent_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_setnetent_r
+ *     is defined.
+ */
+/*#define HAS_SETNETENT_R         / **/
+#define SETNETENT_R_PROTO 0       /**/
+
+/* HAS_SETPROTOENT_R:
+ *     This symbol, if defined, indicates that the setprotoent_r routine
+ *     is available to setprotoent re-entrantly.
+ */
+/* SETPROTOENT_R_PROTO:
+ *     This symbol encodes the prototype of setprotoent_r.
+ *     It is zero if d_setprotoent_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_setprotoent_r
+ *     is defined.
+ */
+/*#define HAS_SETPROTOENT_R       / **/
+#define SETPROTOENT_R_PROTO 0     /**/
+
+/* HAS_SETPWENT_R:
+ *     This symbol, if defined, indicates that the setpwent_r routine
+ *     is available to setpwent re-entrantly.
+ */
+/* SETPWENT_R_PROTO:
+ *     This symbol encodes the prototype of setpwent_r.
+ *     It is zero if d_setpwent_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_setpwent_r
+ *     is defined.
+ */
+/*#define HAS_SETPWENT_R          / **/
+#define SETPWENT_R_PROTO 0        /**/
+
+/* HAS_SETSERVENT_R:
+ *     This symbol, if defined, indicates that the setservent_r routine
+ *     is available to setservent re-entrantly.
+ */
+/* SETSERVENT_R_PROTO:
+ *     This symbol encodes the prototype of setservent_r.
+ *     It is zero if d_setservent_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_setservent_r
+ *     is defined.
+ */
+/*#define HAS_SETSERVENT_R        / **/
+#define SETSERVENT_R_PROTO 0      /**/
+
+/* HAS_SRAND48_R:
+ *     This symbol, if defined, indicates that the srand48_r routine
+ *     is available to srand48 re-entrantly.
+ */
+/* SRAND48_R_PROTO:
+ *     This symbol encodes the prototype of srand48_r.
+ *     It is zero if d_srand48_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_srand48_r
+ *     is defined.
+ */
+/*#define HAS_SRAND48_R           / **/
+#define SRAND48_R_PROTO 0         /**/
+
+/* HAS_SRANDOM_R:
+ *     This symbol, if defined, indicates that the srandom_r routine
+ *     is available to srandom re-entrantly.
+ */
+/* SRANDOM_R_PROTO:
+ *     This symbol encodes the prototype of srandom_r.
+ *     It is zero if d_srandom_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_srandom_r
+ *     is defined.
+ */
+/*#define HAS_SRANDOM_R           / **/
+#define SRANDOM_R_PROTO 0         /**/
+
+/* HAS_STRERROR_R:
+ *     This symbol, if defined, indicates that the strerror_r routine
+ *     is available to strerror re-entrantly.
+ */
+/* STRERROR_R_PROTO:
+ *     This symbol encodes the prototype of strerror_r.
+ *     It is zero if d_strerror_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_strerror_r
+ *     is defined.
+ */
+/*#define HAS_STRERROR_R          / **/
+#define STRERROR_R_PROTO 0        /**/
+
+/* HAS_TMPNAM_R:
+ *     This symbol, if defined, indicates that the tmpnam_r routine
+ *     is available to tmpnam re-entrantly.
+ */
+/* TMPNAM_R_PROTO:
+ *     This symbol encodes the prototype of tmpnam_r.
+ *     It is zero if d_tmpnam_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_tmpnam_r
+ *     is defined.
+ */
+/*#define HAS_TMPNAM_R    / **/
+#define TMPNAM_R_PROTO 0          /**/
+
+/* HAS_TTYNAME_R:
+ *     This symbol, if defined, indicates that the ttyname_r routine
+ *     is available to ttyname re-entrantly.
  */
-/* ST_INO_SIGN:
- *     This symbol holds the signedness of struct stat's st_ino.
- *     1 for unsigned, -1 for signed.
+/* TTYNAME_R_PROTO:
+ *     This symbol encodes the prototype of ttyname_r.
+ *     It is zero if d_ttyname_r is undef, and one of the
+ *     REENTRANT_PROTO_T_ABC macros of reentr.h if d_ttyname_r
+ *     is defined.
  */
-#define ST_INO_SIGN 1  /* st_ino sign */
-#define ST_INO_SIZE 4  /* st_ino size */
+/*#define HAS_TTYNAME_R           / **/
+#define TTYNAME_R_PROTO 0         /**/
 
-/* STARTPERL:
- *     This variable contains the string to put in front of a perl
- *     script to make sure (one hopes) that it runs with perl and not
- *     some shell.
+/* I_MACH_CTHREADS:
+ *     This symbol, if defined, indicates to the C program that it should
+ *     include <mach/cthreads.h>.
  */
-#define STARTPERL "#!perl"             /**/
+/*#define   I_MACH_CTHREADS    / **/
 
-/* HAS_STDIO_STREAM_ARRAY:
- *     This symbol, if defined, tells that there is an array
- *     holding the stdio streams.
+/* I_PTHREAD:
+ *     This symbol, if defined, indicates to the C program that it should
+ *     include <pthread.h>.
  */
-/* STDIO_STREAM_ARRAY:
- *     This symbol tells the name of the array holding the stdio streams.
- *     Usual values include _iob, __iob, and __sF.
+/*#define   I_PTHREAD  / **/
+
+/* USE_ITHREADS:
+ *     This symbol, if defined, indicates that Perl should be built to
+ *     use the interpreter-based threading implementation.
  */
-/*#define      HAS_STDIO_STREAM_ARRAY  / **/
-#ifdef HAS_STDIO_STREAM_ARRAY
-#define STDIO_STREAM_ARRAY     
+/* USE_5005THREADS:
+ *     This symbol, if defined, indicates that Perl should be built to
+ *     use the 5.005-based threading implementation.
+ *     Only valid up to 5.8.x.
+ */
+/* OLD_PTHREADS_API:
+ *     This symbol, if defined, indicates that Perl should
+ *     be built to use the old draft POSIX threads API.
+ */
+/* USE_REENTRANT_API:
+ *     This symbol, if defined, indicates that Perl should
+ *     try to use the various _r versions of library functions.
+ *     This is extremely experimental.
+ */
+/*#define      USE_5005THREADS         / **/
+/*#define      USE_ITHREADS            / **/
+#if defined(USE_5005THREADS) && !defined(USE_ITHREADS)
+#define                USE_THREADS             /* until src is revised*/
 #endif
+/*#define      OLD_PTHREADS_API                / **/
+/*#define      USE_REENTRANT_API       / **/
 
-/* GMTIME_MAX:
- *     This symbol contains the maximum value for the time_t offset that
- *     the system function gmtime () accepts, and defaults to 0
- */
-/* GMTIME_MIN:
- *     This symbol contains the minimum value for the time_t offset that
- *     the system function gmtime () accepts, and defaults to 0
+/* HAS_TIME:
+ *     This symbol, if defined, indicates that the time() routine exists.
  */
-/* LOCALTIME_MAX:
- *     This symbol contains the maximum value for the time_t offset that
- *     the system function localtime () accepts, and defaults to 0
+/* Time_t:
+ *     This symbol holds the type returned by time(). It can be long,
+ *     or time_t on BSD sites (in which case <sys/types.h> should be
+ *     included).
  */
-/* LOCALTIME_MIN:
- *     This symbol contains the minimum value for the time_t offset that
- *     the system function localtime () accepts, and defaults to 0
+#define HAS_TIME               /**/
+#define Time_t time_t          /* Time type */
+
+/* HAS_TIMES:
+ *     This symbol, if defined, indicates that the times() routine exists.
+ *     Note that this became obsolete on some systems (SUNOS), which now
+ * use getrusage(). It may be necessary to include <sys/times.h>.
  */
-#define GMTIME_MAX             2147483647      /**/
-#define GMTIME_MIN             0       /**/
-#define LOCALTIME_MAX  2147483647      /**/
-#define LOCALTIME_MIN  0       /**/
+/*#define HAS_TIMES            / **/
 
-/* USE_64_BIT_INT:
- *     This symbol, if defined, indicates that 64-bit integers should
- *     be used when available.  If not defined, the native integers
- *     will be employed (be they 32 or 64 bits).  The minimal possible
- *     64-bitness is used, just enough to get 64-bit integers into Perl.
- *     This may mean using for example "long longs", while your memory
- *     may still be limited to 2 gigabytes.
+/* Fpos_t:
+ *     This symbol holds the type used to declare file positions in libc.
+ *     It can be fpos_t, long, uint, etc... It may be necessary to include
+ *     <sys/types.h> to get any typedef'ed information.
  */
-/* USE_64_BIT_ALL:
- *     This symbol, if defined, indicates that 64-bit integers should
- *     be used when available.  If not defined, the native integers
- *     will be used (be they 32 or 64 bits).  The maximal possible
- *     64-bitness is employed: LP64 or ILP64, meaning that you will
- *     be able to use more than 2 gigabytes of memory.  This mode is
- *     even more binary incompatible than USE_64_BIT_INT. You may not
- *     be able to run the resulting executable in a 32-bit CPU at all or
- *     you may need at least to reboot your OS to 64-bit mode.
+#define Fpos_t int             /* File position type */
+
+/* Gid_t_f:
+ *     This symbol defines the format string used for printing a Gid_t.
  */
-#ifndef USE_64_BIT_INT
-/*#define      USE_64_BIT_INT          / **/
-#endif
-#ifndef USE_64_BIT_ALL
-/*#define      USE_64_BIT_ALL          / **/
-#endif
+#define        Gid_t_f         "lu"            /**/
 
-/* USE_CBACKTRACE:
- *     This symbol, if defined, indicates that Perl should
- *     be built with support for backtrace.
+/* Gid_t_sign:
+ *     This symbol holds the signedness of a Gid_t.
+ *     1 for unsigned, -1 for signed.
  */
-/*#define USE_CBACKTRACE               / **/
+#define Gid_t_sign     1               /* GID sign */
 
-/* USE_DTRACE:
- *     This symbol, if defined, indicates that Perl should
- *     be built with support for DTrace.
+/* Gid_t_size:
+ *     This symbol holds the size of a Gid_t in bytes.
  */
-/*#define USE_DTRACE           / **/
+#define Gid_t_size 4           /* GID size */
 
-/* USE_FAST_STDIO:
- *     This symbol, if defined, indicates that Perl should
- *     be built to use 'fast stdio'.
- *     Defaults to define in Perls 5.8 and earlier, to undef later.
+/* Gid_t:
+ *     This symbol holds the return type of getgid() and the type of
+ *     argument to setrgid() and related functions.  Typically,
+ *     it is the type of group ids in the kernel. It can be int, ushort,
+ *     gid_t, etc... It may be necessary to include <sys/types.h> to get
+ *     any typedef'ed information.
  */
-#ifndef USE_FAST_STDIO
-/*#define      USE_FAST_STDIO          / **/
-#endif
+#define Gid_t int              /* Type for getgid(), etc... */
 
-/* USE_KERN_PROC_PATHNAME:
- *     This symbol, if defined, indicates that we can use sysctl with
- *     KERN_PROC_PATHNAME to get a full path for the executable, and hence
- *     convert $^X to an absolute path.
+/* Off_t:
+ *     This symbol holds the type used to declare offsets in the kernel.
+ *     It can be int, long, off_t, etc... It may be necessary to include
+ *     <sys/types.h> to get any typedef'ed information.
  */
-/*#define USE_KERN_PROC_PATHNAME       / **/
+/* LSEEKSIZE:
+ *     This symbol holds the number of bytes used by the Off_t.
+ */
+/* Off_t_size:
+ *     This symbol holds the number of bytes used by the Off_t.
+ */
+#define Off_t int              /* <offset> type */
+#define LSEEKSIZE 4            /* <offset> size */
+#define Off_t_size 4   /* <offset> size */
 
-/* USE_LARGE_FILES:
- *     This symbol, if defined, indicates that large file support
- *     should be used when available.
+/* Mode_t:
+ *     This symbol holds the type used to declare file modes
+ *     for systems calls.  It is usually mode_t, but may be
+ *     int or unsigned short.  It may be necessary to include <sys/types.h>
+ *     to get any typedef'ed information.
  */
-#ifndef USE_LARGE_FILES
-/*#define      USE_LARGE_FILES         / **/
-#endif
+#define Mode_t int      /* file mode parameter for system calls */
 
-/* USE_LONG_DOUBLE:
- *     This symbol, if defined, indicates that long doubles should
- *     be used when available.
+/* Pid_t:
+ *     This symbol holds the type used to declare process ids in the kernel.
+ *     It can be int, uint, pid_t, etc... It may be necessary to include
+ *     <sys/types.h> to get any typedef'ed information.
  */
-#ifndef USE_LONG_DOUBLE
-/*#define      USE_LONG_DOUBLE         / **/
-#endif
+#define Pid_t int              /* PID type */
 
-/* USE_MORE_BITS:
- *     This symbol, if defined, indicates that 64-bit interfaces and
- *     long doubles should be used when available.
+/* Size_t_size:
+ *     This symbol holds the size of a Size_t in bytes.
  */
-#ifndef USE_MORE_BITS
-/*#define      USE_MORE_BITS           / **/
-#endif
+#define Size_t_size 4          /**/
 
-/* MULTIPLICITY:
- *     This symbol, if defined, indicates that Perl should
- *     be built to use multiplicity.
+/* Size_t:
+ *     This symbol holds the type used to declare length parameters
+ *     for string functions.  It is usually size_t, but may be
+ *     unsigned long, int, etc.  It may be necessary to include
+ *     <sys/types.h> to get any typedef'ed information.
  */
-#ifndef MULTIPLICITY
-/*#define      MULTIPLICITY            / **/
-#endif
+#define Size_t size_t   /* length parameter for string functions */
 
-/* USE_NSGETEXECUTABLEPATH:
- *     This symbol, if defined, indicates that we can use _NSGetExecutablePath
- *     and realpath to get a full path for the executable, and hence convert
- *     $^X to an absolute path.
+/* Uid_t_f:
+ *     This symbol defines the format string used for printing a Uid_t.
  */
-/*#define USE_NSGETEXECUTABLEPATH      / **/
+#define        Uid_t_f         "lu"            /**/
 
-/* USE_PERLIO:
- *     This symbol, if defined, indicates that the PerlIO abstraction should
- *     be used throughout.  If not defined, stdio should be
- *     used in a fully backward compatible manner.
+/* Uid_t_sign:
+ *     This symbol holds the signedness of a Uid_t.
+ *     1 for unsigned, -1 for signed.
  */
-#ifndef USE_PERLIO
-/*#define      USE_PERLIO              / **/
-#endif
+#define Uid_t_sign     1               /* UID sign */
 
-/* USE_QUADMATH:
- *     This symbol, if defined, indicates that the quadmath library should
- *     be used when available.
+/* Uid_t_size:
+ *     This symbol holds the size of a Uid_t in bytes.
  */
-#ifndef USE_QUADMATH
-/*#define      USE_QUADMATH            / **/
-#endif
+#define Uid_t_size 4           /* UID size */
 
-/* USE_SOCKS:
- *     This symbol, if defined, indicates that Perl should
- *     be built to use socks.
+/* Uid_t:
+ *     This symbol holds the type used to declare user ids in the kernel.
+ *     It can be int, ushort, uid_t, etc... It may be necessary to include
+ *     <sys/types.h> to get any typedef'ed information.
  */
-#ifndef USE_SOCKS
-/*#define      USE_SOCKS               / **/
-#endif
+#define Uid_t int              /* UID type */
 
 #endif
 
 /* Generated from:
- * 01a33ec4d20289fa524203757339606daef1a014ff6b693d38234495023ac9e7 config_h.SH
- * d2f05caf5dc56031d3338c8f42e9e317ae1e53faa7b51285d0d6ebc343f8a333 uconfig.sh
+ * ce61c4f18e82f6356cdae44c5336ceac1d3253033d7449651927f5633be5c3c2 config_h.SH
+ * fc611849cb5b1e14ec1687b255dac15414cc5e2e11b192d94e08136cfe277f75 uconfig.sh
  * ex: set ro: */
index 12bbfd1..93a2ee3 100644 (file)
@@ -6,8 +6,8 @@ afs='false'
 afsroot='/afs'
 alignbytes='4'
 aphostname='/bin/hostname'
-archlib='/usr/local/lib/perl5/5.23/unknown'
-archlibexp='/usr/local/lib/perl5/5.23/unknown'
+archlib='/usr/local/lib/perl5/5.24/unknown'
+archlibexp='/usr/local/lib/perl5/5.24/unknown'
 archname='unknown'
 asctime_r_proto='0'
 bin='/usr/local/bin'
@@ -301,6 +301,7 @@ d_mbtowc='undef'
 d_memchr='define'
 d_memcmp='define'
 d_memcpy='define'
+d_memmem='undef'
 d_memmove='undef'
 d_memset='define'
 d_mkdir='undef'
@@ -763,8 +764,8 @@ package='perl5'
 perl_static_inline='static'
 phostname='hostname'
 pidtype=int
-privlib='/usr/local/lib/perl5/5.23'
-privlibexp='/usr/local/lib/perl5/5.23'
+privlib='/usr/local/lib/perl5/5.24'
+privlibexp='/usr/local/lib/perl5/5.24'
 procselfexe=''
 prototype='undef'
 ptrsize='4'
@@ -814,11 +815,11 @@ sig_name_init='0'
 sig_num_init='0'
 sig_size='1'
 signal_t=int
-sitearch='/usr/local/lib/perl5/5.23/unknown'
-sitearchexp='/usr/local/lib/perl5/5.23/unknown'
-sitelib='/usr/local/lib/perl5/5.23'
+sitearch='/usr/local/lib/perl5/5.24/unknown'
+sitearchexp='/usr/local/lib/perl5/5.24/unknown'
+sitelib='/usr/local/lib/perl5/5.24'
 sitelib_stem='/usr/local/lib/perl5'
-sitelibexp='/usr/local/lib/perl5/5.23'
+sitelibexp='/usr/local/lib/perl5/5.24'
 sizesize=4
 sizetype='size_t'
 socksizetype='int'
index 4b8c3ac..0b12147 100644 (file)
@@ -7,8 +7,8 @@ afsroot='/afs'
 alignbytes='8'
 ansi2knr=''
 aphostname='/bin/hostname'
-archlib='/usr/local/lib/perl5/5.23/unknown'
-archlibexp='/usr/local/lib/perl5/5.23/unknown'
+archlib='/usr/local/lib/perl5/5.24/unknown'
+archlibexp='/usr/local/lib/perl5/5.24/unknown'
 archname='unknown64'
 asctime_r_proto='0'
 bin='/usr/local/bin'
@@ -302,6 +302,7 @@ d_mbtowc='undef'
 d_memchr='define'
 d_memcmp='define'
 d_memcpy='define'
+d_memmem='undef'
 d_memmove='undef'
 d_memset='define'
 d_mkdir='undef'
@@ -764,8 +765,8 @@ package='perl5'
 perl_static_inline='static'
 phostname='hostname'
 pidtype=int
-privlib='/usr/local/lib/perl5/5.23'
-privlibexp='/usr/local/lib/perl5/5.23'
+privlib='/usr/local/lib/perl5/5.24'
+privlibexp='/usr/local/lib/perl5/5.24'
 procselfexe=''
 prototype='undef'
 ptrsize='8'
@@ -815,11 +816,11 @@ sig_name_init='0'
 sig_num_init='0'
 sig_size='1'
 signal_t=int
-sitearch='/usr/local/lib/perl5/5.23/unknown'
-sitearchexp='/usr/local/lib/perl5/5.23/unknown'
-sitelib='/usr/local/lib/perl5/5.23'
+sitearch='/usr/local/lib/perl5/5.24/unknown'
+sitearchexp='/usr/local/lib/perl5/5.24/unknown'
+sitelib='/usr/local/lib/perl5/5.24'
 sitelib_stem='/usr/local/lib/perl5'
-sitelibexp='/usr/local/lib/perl5/5.23'
+sitelibexp='/usr/local/lib/perl5/5.24'
 sizesize=4
 sizetype='size_t'
 socksizetype='int'
index 5b57138..e05cb6a 100644 (file)
--- a/unixish.h
+++ b/unixish.h
@@ -138,9 +138,10 @@ int afstat(int fd, struct stat *statb);
 #if defined(__amigaos4__)
 #  define PERL_SYS_INIT_BODY(c,v)                                      \
        MALLOC_CHECK_TAINT2(*c,*v) PERL_FPU_INIT; PERLIO_INIT; MALLOC_INIT; amigaos4_init_fork_array(); amigaos4_init_environ_sema();
-#  define PERL_SYS_TERM_BODY() \
-    HINTS_REFCNT_TERM; OP_CHECK_MUTEX_TERM; \
-    OP_REFCNT_TERM; PERLIO_TERM; MALLOC_TERM; amigaos4_dispose_fork_array(); 
+#  define PERL_SYS_TERM_BODY()                              \
+    HINTS_REFCNT_TERM; OP_CHECK_MUTEX_TERM;                 \
+    OP_REFCNT_TERM; PERLIO_TERM; MALLOC_TERM; LOCALE_TERM;  \
+    amigaos4_dispose_fork_array();
 #endif
 
 #ifndef PERL_SYS_INIT_BODY
@@ -149,9 +150,10 @@ int afstat(int fd, struct stat *statb);
 #endif
 
 #ifndef PERL_SYS_TERM_BODY
-#  define PERL_SYS_TERM_BODY() \
-    HINTS_REFCNT_TERM; OP_CHECK_MUTEX_TERM; \
-    OP_REFCNT_TERM; PERLIO_TERM; MALLOC_TERM;
+#  define PERL_SYS_TERM_BODY()                      \
+    HINTS_REFCNT_TERM; OP_CHECK_MUTEX_TERM;         \
+    OP_REFCNT_TERM; PERLIO_TERM; MALLOC_TERM;       \
+    LOCALE_TERM;
 
 #endif
 
diff --git a/utf8.c b/utf8.c
index 6249ea5..56d3322 100644 (file)
--- a/utf8.c
+++ b/utf8.c
@@ -1118,7 +1118,7 @@ on the first byte of character or just after the last byte of a character.
 */
 
 U8 *
-Perl_utf8_hop(const U8 *s, I32 off)
+Perl_utf8_hop(const U8 *s, SSize_t off)
 {
     PERL_ARGS_ASSERT_UTF8_HOP;
 
diff --git a/util.c b/util.c
index fa27ecb..89c44e7 100644 (file)
--- a/util.c
+++ b/util.c
@@ -5018,6 +5018,8 @@ Perl_mem_log_alloc(const UV n, const UV typesize, const char *type_name,
                   const char *filename, const int linenumber,
                   const char *funcname)
 {
+    PERL_ARGS_ASSERT_MEM_LOG_ALLOC;
+
     mem_log_common_if(MLT_ALLOC, n, typesize, type_name,
                      NULL, NULL, newalloc,
                      filename, linenumber, funcname);
@@ -5030,6 +5032,8 @@ Perl_mem_log_realloc(const UV n, const UV typesize, const char *type_name,
                     const char *filename, const int linenumber, 
                     const char *funcname)
 {
+    PERL_ARGS_ASSERT_MEM_LOG_REALLOC;
+
     mem_log_common_if(MLT_REALLOC, n, typesize, type_name,
                      NULL, oldalloc, newalloc, 
                      filename, linenumber, funcname);
@@ -5041,6 +5045,8 @@ Perl_mem_log_free(Malloc_t oldalloc,
                  const char *filename, const int linenumber, 
                  const char *funcname)
 {
+    PERL_ARGS_ASSERT_MEM_LOG_FREE;
+
     mem_log_common_if(MLT_FREE, 0, 0, "", NULL, oldalloc, NULL, 
                      filename, linenumber, funcname);
     return oldalloc;
@@ -6185,7 +6191,7 @@ static const char* atos_parse(const char* p,
     *source_name_size = source_name_end - p;
     if (grok_atoUV(source_number_start, &uv,  &source_line_end)
         && source_line_end == close_paren
-        && uv <= MAX_STRLEN
+        && uv <= PERL_INT_MAX
     ) {
         *source_line = (STRLEN)uv;
         return p;
@@ -6252,14 +6258,14 @@ static void atos_symbolize(atos_context* ctx,
             char out[1024];
             UV cnt = fread(out, 1, sizeof(out), fp);
             if (cnt < sizeof(out)) {
-                const char* p = atos_parse(out + cnt, out,
+                const char* p = atos_parse(out + cnt - 1, out,
                                            source_name_size,
                                            source_line);
                 if (p) {
                     Newx(*source_name,
-                         *source_name_size + 1, char);
+                         *source_name_size, char);
                     Copy(p, *source_name,
-                         *source_name_size + 1,  char);
+                         *source_name_size,  char);
                 }
             }
             pclose(fp);
@@ -6384,14 +6390,15 @@ Perl_get_c_backtrace(pTHX_ int depth, int skip)
         for (i = skip; i < try_depth; i++) {
             Dl_info* dl_info = &dl_infos[i];
 
-            total_bytes += sizeof(Perl_c_backtrace_frame);
-
+            object_name_sizes[i] = 0;
             source_names[i] = NULL;
             source_name_sizes[i] = 0;
             source_lines[i] = 0;
 
             /* Yes, zero from dladdr() is failure. */
             if (dladdr(raw_frames[i], dl_info)) {
+                total_bytes += sizeof(Perl_c_backtrace_frame);
+
                 object_name_sizes[i] =
                     dl_info->dli_fname ? strlen(dl_info->dli_fname) : 0;
                 symbol_name_sizes[i] =
diff --git a/util.h b/util.h
index 3a74bd0..3310b11 100644 (file)
--- a/util.h
+++ b/util.h
@@ -229,8 +229,6 @@ means arg not present, 1 is empty string/null byte */
 #  define HS_CXT cv
 #endif
 
-#define instr(haystack, needle) strstr(haystack, needle)
-
 /*
  * ex: set ts=8 sts=4 sw=4 et:
  */
index e465e77..620eec9 100644 (file)
@@ -307,7 +307,7 @@ utils : $(utils1) $(utils2) $(utils3) $(utils4) $(utils5)
 extra.pods : miniperl
        @ @extra_pods.com
 
-PERLDELTA_CURRENT = [.pod]perl5239delta.pod
+PERLDELTA_CURRENT = [.pod]perl5240delta.pod
 
 $(PERLDELTA_CURRENT) : [.pod]perldelta.pod
        Copy/NoConfirm/Log $(MMS$SOURCE) $(PERLDELTA_CURRENT)
index cf1c9a8..1aea829 100644 (file)
@@ -315,7 +315,8 @@ struct interp_intern {
 
 #define BIT_BUCKET "/dev/null"
 #define PERL_SYS_INIT_BODY(c,v)        MALLOC_CHECK_TAINT2(*c,*v) vms_image_init((c),(v)); PERLIO_INIT; MALLOC_INIT
-#define PERL_SYS_TERM_BODY()           HINTS_REFCNT_TERM; OP_REFCNT_TERM; PERLIO_TERM; MALLOC_TERM
+#define PERL_SYS_TERM_BODY()    HINTS_REFCNT_TERM; OP_REFCNT_TERM;      \
+                                PERLIO_TERM; MALLOC_TERM; LOCALE_TERM
 #define dXSUB_SYS
 #define HAS_KILL
 #define HAS_WAIT
index 4ab2d1d..337bef3 100644 (file)
 #define WARN_ALLstring                  "\125\125\125\125\125\125\125\125\125\125\125\125\125\125\125\125\125"
 #define WARN_NONEstring                         "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
 
-#define isLEXWARN_on   (PL_curcop->cop_warnings != pWARN_STD)
-#define isLEXWARN_off  (PL_curcop->cop_warnings == pWARN_STD)
+#define isLEXWARN_on   cBOOL(PL_curcop->cop_warnings != pWARN_STD)
+#define isLEXWARN_off  cBOOL(PL_curcop->cop_warnings == pWARN_STD)
 #define isWARN_ONCE    (PL_dowarn & (G_WARN_ON|G_WARN_ONCE))
 #define isWARN_on(c,x) (IsSet((U8 *)(c + 1), 2*(x)))
 #define isWARNf_on(c,x)        (IsSet((U8 *)(c + 1), 2*(x)+1))
index 9461bd8..05d811e 100644 (file)
@@ -6,7 +6,7 @@
 #      Windows SDK 64-bit compiler and tools
 #
 # This is set up to build a perl.exe that runs off a shared library
-# (perl523.dll).  Also makes individual DLLs for the XS extensions.
+# (perl524.dll).  Also makes individual DLLs for the XS extensions.
 #
 # The easiest way to customize the build process is to use parameters like this:
 #
@@ -67,7 +67,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.23.9
+#INST_VER      := \5.24.0
 
 #
 # Comment this out if you DON'T want your perl installation to have
@@ -221,7 +221,7 @@ CCTYPE              := GCC
 # set this to additionally provide a statically linked perl-static.exe.
 # Note that dynamic loading will not work with this perl, so you must
 # include required modules statically using the STATIC_EXT or ALL_STATIC
-# variables below. A static library perl523s.lib will also be created.
+# variables below. A static library perl524s.lib will also be created.
 # Ordinary perl.exe is not affected by this option.
 #
 #BUILD_STATIC  := define
@@ -860,9 +860,9 @@ ifeq ($(CCTYPE),GCC)
 
 CFGSH_TMPL     = config.gc
 CFGH_TMPL      = config_H.gc
-PERLIMPLIB     = $(COREDIR)\libperl523$(a)
-PERLIMPLIBBASE = libperl523$(a)
-PERLSTATICLIB  = ..\libperl523s$(a)
+PERLIMPLIB     = $(COREDIR)\libperl524$(a)
+PERLIMPLIBBASE = libperl524$(a)
+PERLSTATICLIB  = ..\libperl524s$(a)
 INT64          = long long
 
 else
@@ -875,11 +875,11 @@ endif
 
 # makedef.pl must be updated if this changes, and this should normally
 # only change when there is an incompatible revision of the public API.
-PERLIMPLIB     ?= $(COREDIR)\perl523$(a)
-PERLIMPLIBBASE ?= perl523$(a)
-PERLEXPLIB     ?= $(COREDIR)\perl523.exp
-PERLSTATICLIB  ?= ..\perl523s$(a)
-PERLDLL                = ..\perl523.dll
+PERLIMPLIB     ?= $(COREDIR)\perl524$(a)
+PERLIMPLIBBASE ?= perl524$(a)
+PERLEXPLIB     ?= $(COREDIR)\perl524.exp
+PERLSTATICLIB  ?= ..\perl524s$(a)
+PERLDLL                = ..\perl524.dll
 
 # don't let "gmake -n all" try to run "miniperl.exe make_ext.pl"
 PLMAKE         = gmake
@@ -1544,7 +1544,7 @@ utils: $(HAVEMINIPERL) ..\utils\Makefile
        copy ..\README.tw       ..\pod\perltw.pod
        copy ..\README.vos      ..\pod\perlvos.pod
        copy ..\README.win32    ..\pod\perlwin32.pod
-       copy ..\pod\perldelta.pod ..\pod\perl5239delta.pod
+       copy ..\pod\perldelta.pod ..\pod\perl5240delta.pod
        $(MINIPERL) -I..\lib $(PL2BAT) $(UTILS)
        $(MINIPERL) -I..\lib ..\autodoc.pl ..
        $(MINIPERL) -I..\lib ..\pod\perlmodlib.PL -q ..
@@ -1640,7 +1640,7 @@ distclean: realclean
        -if exist $(LIBDIR)\Win32API rmdir /s /q $(LIBDIR)\Win32API
        -if exist $(LIBDIR)\XS rmdir /s /q $(LIBDIR)\XS
        -cd $(PODDIR) && del /f *.html *.bat roffitall \
-           perl5239delta.pod perlaix.pod perlamiga.pod perlandroid.pod \
+           perl5240delta.pod perlaix.pod perlamiga.pod perlandroid.pod \
            perlapi.pod perlbs2000.pod perlce.pod perlcn.pod perlcygwin.pod \
            perldos.pod perlfreebsd.pod perlhaiku.pod perlhpux.pod \
            perlhurd.pod perlintern.pod perlirix.pod perljp.pod perlko.pod \
index c73087a..9594c4d 100644 (file)
@@ -5,7 +5,7 @@
 #      Windows SDK 64-bit compiler and tools
 #
 # This is set up to build a perl.exe that runs off a shared library
-# (perl523.dll).  Also makes individual DLLs for the XS extensions.
+# (perl524.dll).  Also makes individual DLLs for the XS extensions.
 #
 
 ##
@@ -38,7 +38,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.23.9
+#INST_VER      = \5.24.0
 
 #
 # Comment this out if you DON'T want your perl installation to have
@@ -192,7 +192,7 @@ CCTYPE              = MSVC60
 # set this to additionally provide a statically linked perl-static.exe.
 # Note that dynamic loading will not work with this perl, so you must
 # include required modules statically using the STATIC_EXT or ALL_STATIC
-# variables below. A static library perl523s.lib will also be created.
+# variables below. A static library perl524s.lib will also be created.
 # Ordinary perl.exe is not affected by this option.
 #
 #BUILD_STATIC  = define
@@ -630,9 +630,9 @@ $(o).dll:
 
 # makedef.pl must be updated if this changes, and this should normally
 # only change when there is an incompatible revision of the public API.
-PERLIMPLIB     = ..\perl523.lib
-PERLSTATICLIB  = ..\perl523s.lib
-PERLDLL                = ..\perl523.dll
+PERLIMPLIB     = ..\perl524.lib
+PERLSTATICLIB  = ..\perl524s.lib
+PERLDLL                = ..\perl524.dll
 
 MINIPERL       = ..\miniperl.exe
 MINIDIR                = .\mini
@@ -1215,7 +1215,7 @@ utils: $(PERLEXE) ..\utils\Makefile
        copy ..\README.tw       ..\pod\perltw.pod
        copy ..\README.vos      ..\pod\perlvos.pod
        copy ..\README.win32    ..\pod\perlwin32.pod
-       copy ..\pod\perldelta.pod ..\pod\perl5239delta.pod
+       copy ..\pod\perldelta.pod ..\pod\perl5240delta.pod
        cd ..\win32
        $(PERLEXE) $(PL2BAT) $(UTILS)
        $(MINIPERL) -I..\lib ..\autodoc.pl ..
@@ -1313,7 +1313,7 @@ distclean: realclean
        -if exist $(LIBDIR)\Win32API rmdir /s /q $(LIBDIR)\Win32API
        -if exist $(LIBDIR)\XS rmdir /s /q $(LIBDIR)\XS
        -cd $(PODDIR) && del /f *.html *.bat roffitall \
-           perl5239delta.pod perlaix.pod perlamiga.pod perlandroid.pod \
+           perl5240delta.pod perlaix.pod perlamiga.pod perlandroid.pod \
            perlapi.pod perlbs2000.pod perlce.pod perlcn.pod perlcygwin.pod \
            perldos.pod perlfreebsd.pod perlhaiku.pod perlhpux.pod \
            perlhurd.pod perlintern.pod perlirix.pod perljp.pod perlko.pod \
index b9a979c..1886be2 100644 (file)
@@ -5,7 +5,7 @@
 #
 
 SRCDIR     = ..
-PV         = 523
+PV         = 524
 
 # INSTALL_ROOT specifies a path where this perl will be installed on CE device
 INSTALL_ROOT=/netzwerk/sprache/perl
index 7e6fe40..a5ee737 100644 (file)
@@ -349,6 +349,7 @@ d_mbtowc='define'
 d_memchr='define'
 d_memcmp='define'
 d_memcpy='define'
+d_memmem='undef'
 d_memmove='define'
 d_memset='define'
 d_mkdir='define'
index e8179cc..e9cf4ed 100644 (file)
@@ -349,6 +349,7 @@ d_mbtowc='define'
 d_memchr='define'
 d_memcmp='define'
 d_memcpy='define'
+d_memmem='undef'
 d_memmove='define'
 d_memset='define'
 d_mkdir='define'
index 4972db8..2fc37b0 100644 (file)
@@ -349,6 +349,7 @@ d_mbtowc='define'
 d_memchr='define'
 d_memcmp='define'
 d_memcpy='define'
+d_memmem='undef'
 d_memmove='define'
 d_memset='define'
 d_mkdir='define'
index f74ad98..8b9a29d 100644 (file)
@@ -6,7 +6,7 @@
 #      Windows SDK 64-bit compiler and tools
 #
 # This is set up to build a perl.exe that runs off a shared library
-# (perl523.dll).  Also makes individual DLLs for the XS extensions.
+# (perl524.dll).  Also makes individual DLLs for the XS extensions.
 #
 
 ##
@@ -44,7 +44,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.23.9
+#INST_VER      *= \5.24.0
 
 #
 # Comment this out if you DON'T want your perl installation to have
@@ -212,7 +212,7 @@ CCTYPE              *= GCC
 # set this to additionally provide a statically linked perl-static.exe.
 # Note that dynamic loading will not work with this perl, so you must
 # include required modules statically using the STATIC_EXT or ALL_STATIC
-# variables below. A static library perl523s.lib will also be created.
+# variables below. A static library perl524s.lib will also be created.
 # Ordinary perl.exe is not affected by this option.
 #
 #BUILD_STATIC  *= define
@@ -846,8 +846,8 @@ UTILS               =                       \
 
 CFGSH_TMPL     = config.gc
 CFGH_TMPL      = config_H.gc
-PERLIMPLIB     = $(COREDIR)\libperl523$(a)
-PERLSTATICLIB  = ..\libperl523s$(a)
+PERLIMPLIB     = $(COREDIR)\libperl524$(a)
+PERLSTATICLIB  = ..\libperl524s$(a)
 INT64          = long long
 
 .ELSE
@@ -860,10 +860,10 @@ INT64             = __int64
 
 # makedef.pl must be updated if this changes, and this should normally
 # only change when there is an incompatible revision of the public API.
-PERLIMPLIB     *= $(COREDIR)\perl523$(a)
-PERLEXPLIB     *= $(COREDIR)\perl523.exp
-PERLSTATICLIB  *= ..\perl523s$(a)
-PERLDLL                = ..\perl523.dll
+PERLIMPLIB     *= $(COREDIR)\perl524$(a)
+PERLEXPLIB     *= $(COREDIR)\perl524.exp
+PERLSTATICLIB  *= ..\perl524s$(a)
+PERLDLL                = ..\perl524.dll
 
 #EUMM on Win32 isn't ready for parallel make, so only allow this file to be parallel
 #$(MAKE) will contain the -P that this makefile was called with, which is bad for
@@ -1511,7 +1511,7 @@ utils: $(HAVEMINIPERL) ..\utils\Makefile
        copy ..\README.tw       ..\pod\perltw.pod
        copy ..\README.vos      ..\pod\perlvos.pod
        copy ..\README.win32    ..\pod\perlwin32.pod
-       copy ..\pod\perldelta.pod ..\pod\perl5239delta.pod
+       copy ..\pod\perldelta.pod ..\pod\perl5240delta.pod
        $(MINIPERL) -I..\lib $(PL2BAT) $(UTILS)
        $(MINIPERL) -I..\lib ..\autodoc.pl ..
        $(MINIPERL) -I..\lib ..\pod\perlmodlib.PL -q ..
@@ -1608,7 +1608,7 @@ distclean: realclean
        -if exist $(LIBDIR)\Win32API rmdir /s /q $(LIBDIR)\Win32API
        -if exist $(LIBDIR)\XS rmdir /s /q $(LIBDIR)\XS
        -cd $(PODDIR) && del /f *.html *.bat roffitall \
-           perl5239delta.pod perlaix.pod perlamiga.pod perlandroid.pod \
+           perl5240delta.pod perlaix.pod perlamiga.pod perlandroid.pod \
            perlapi.pod perlbs2000.pod perlce.pod perlcn.pod perlcygwin.pod \
            perldos.pod perlfreebsd.pod perlhaiku.pod perlhpux.pod \
            perlhurd.pod perlintern.pod perlirix.pod perljp.pod perlko.pod \
index dafb4dc..d143a52 100644 (file)
@@ -42,16 +42,8 @@ POD = perl.pod       \
        perl5203delta.pod       \
        perl5220delta.pod       \
        perl5221delta.pod       \
-       perl5230delta.pod       \
-       perl5231delta.pod       \
-       perl5232delta.pod       \
-       perl5233delta.pod       \
-       perl5234delta.pod       \
-       perl5235delta.pod       \
-       perl5236delta.pod       \
-       perl5237delta.pod       \
-       perl5238delta.pod       \
-       perl5239delta.pod       \
+       perl5222delta.pod       \
+       perl5240delta.pod       \
        perl561delta.pod        \
        perl56delta.pod \
        perl581delta.pod        \
@@ -188,16 +180,8 @@ MAN = perl.man     \
        perl5203delta.man       \
        perl5220delta.man       \
        perl5221delta.man       \
-       perl5230delta.man       \
-       perl5231delta.man       \
-       perl5232delta.man       \
-       perl5233delta.man       \
-       perl5234delta.man       \
-       perl5235delta.man       \
-       perl5236delta.man       \
-       perl5237delta.man       \
-       perl5238delta.man       \
-       perl5239delta.man       \
+       perl5222delta.man       \
+       perl5240delta.man       \
        perl561delta.man        \
        perl56delta.man \
        perl581delta.man        \
@@ -334,16 +318,8 @@ HTML = perl.html   \
        perl5203delta.html      \
        perl5220delta.html      \
        perl5221delta.html      \
-       perl5230delta.html      \
-       perl5231delta.html      \
-       perl5232delta.html      \
-       perl5233delta.html      \
-       perl5234delta.html      \
-       perl5235delta.html      \
-       perl5236delta.html      \
-       perl5237delta.html      \
-       perl5238delta.html      \
-       perl5239delta.html      \
+       perl5222delta.html      \
+       perl5240delta.html      \
        perl561delta.html       \
        perl56delta.html        \
        perl581delta.html       \
@@ -480,16 +456,8 @@ TEX = perl.tex     \
        perl5203delta.tex       \
        perl5220delta.tex       \
        perl5221delta.tex       \
-       perl5230delta.tex       \
-       perl5231delta.tex       \
-       perl5232delta.tex       \
-       perl5233delta.tex       \
-       perl5234delta.tex       \
-       perl5235delta.tex       \
-       perl5236delta.tex       \
-       perl5237delta.tex       \
-       perl5238delta.tex       \
-       perl5239delta.tex       \
+       perl5222delta.tex       \
+       perl5240delta.tex       \
        perl561delta.tex        \
        perl56delta.tex \
        perl581delta.tex        \
index 651b97b..6ac73e2 100644 (file)
@@ -4529,6 +4529,7 @@ Perl_win32_term(void)
     OP_REFCNT_TERM;
     PERLIO_TERM;
     MALLOC_TERM;
+    LOCALE_TERM;
 #ifndef WIN32_NO_REGISTRY
     /* handles might be NULL, RegCloseKey then returns ERROR_INVALID_HANDLE
        but no point of checking and we can't die() at this point */
index bcc66c8..ce06481 100644 (file)
@@ -2705,6 +2705,7 @@ Perl_win32_term(void)
     OP_REFCNT_TERM;
     PERLIO_TERM;
     MALLOC_TERM;
+    LOCALE_TERM;
 }
 
 void