This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perl5.git
8 years agoAdd more -DL debugging info
Karl Williamson [Fri, 8 May 2015 21:19:56 +0000 (15:19 -0600)]
Add more -DL debugging info

This adds more stuff that gets dumped when debugging locale handling.
And it adds even more when the v modifier appears.

8 years agoAdd code for debugging locale initialization
Karl Williamson [Tue, 8 Sep 2015 15:53:48 +0000 (09:53 -0600)]
Add code for debugging locale initialization

This initialization is done before the processing of command line
arguments, so that it has to be handled specially.  This commit changes
the initialization code to output debugging information if the
environment variable PERL_DEBUG_LOCALE_INIT is set.

I don't see the need to document this outside the source, as anyone who
is using it would be reading the source anyway; it's of highly
specialized use.

8 years agolocale.c: Add clarifying comments
Karl Williamson [Tue, 8 Sep 2015 15:52:57 +0000 (09:52 -0600)]
locale.c: Add clarifying comments

8 years agoreport missing authors to stderr
Tony Cook [Tue, 8 Sep 2015 01:03:16 +0000 (11:03 +1000)]
report missing authors to stderr

So if authors.t fails the cause is obvious from the test output
*without* having to perform a verbose run.

8 years agoembed.fnc: Add comment
Karl Williamson [Sun, 6 Sep 2015 17:06:32 +0000 (11:06 -0600)]
embed.fnc: Add comment

8 years agoTest-Test.pm: Pedantic pod fixes
Karl Williamson [Mon, 7 Sep 2015 03:44:54 +0000 (21:44 -0600)]
Test-Test.pm: Pedantic pod fixes

8 years agoTest::Test.pm: EBCDIC fixes
Karl Williamson [Thu, 4 Apr 2013 01:06:52 +0000 (19:06 -0600)]
Test::Test.pm: EBCDIC fixes

We are getting Perl working again for EBCDIC in v5.22.  The changes here
are necessary to work for these platforms.  For modern Perls, there is
one code path for both ASCII and EBCDIC platforms; this wasn't possible
to do for earlier versions.

One perhaps not obvious change is that [^:ascii:] doesn't include \177
which the earlier version does.  However \177 was changed in the
substitute in the line above, so this change has no practical effect.

8 years agoRmv trailing ';' on #endif
Karl Williamson [Tue, 8 Sep 2015 02:06:40 +0000 (20:06 -0600)]
Rmv trailing ';' on #endif

This creates a compiler warning on AIX

8 years agoSkip aassign.t test under -DDEBUGGING on VMS.
Craig A. Berry [Mon, 7 Sep 2015 18:49:14 +0000 (13:49 -0500)]
Skip aassign.t test under -DDEBUGGING on VMS.

-DDEBUGGING has never gone in $Config{ccflags} on VMS, so the
existing skip check failed to skip.  There is, however, the
VMS-only $Config{usedebugging_perl} that is set to Y when DEBUGGING
is enabled.  As likely as not, writing this variable to config.sh
was an ancient accident, and it's not mentioned in Porting/Glossary.
However, it's there and seems to be a reliable indicator of what
we've got, so in the absence of anything else reliable, use it.

8 years agoSkip Amiga extensions on VMS.
Craig A. Berry [Mon, 7 Sep 2015 17:16:12 +0000 (12:16 -0500)]
Skip Amiga extensions on VMS.

We can't build them so don't try.

8 years agoDon't add -shared when the compiler is clang++
Chris 'BinGOs' Williams [Thu, 27 Aug 2015 14:30:10 +0000 (15:30 +0100)]
Don't add -shared when the compiler is clang++

8 years agoSupport parallel builds on Win32 with dmake
Tony Cook [Mon, 7 Sep 2015 04:14:00 +0000 (14:14 +1000)]
Support parallel builds on Win32 with dmake

8 years agoadd parallel support 4 Win32 dmake-uudmap+no 2nd run of config_h.PL part 3
Daniel Dragan [Sat, 15 Aug 2015 09:39:55 +0000 (05:39 -0400)]
add parallel support 4 Win32 dmake-uudmap+no 2nd run of config_h.PL part 3

-in $(CONFIGPM) target, remove config_h.PL running dmake again to rebuild
 $(CONFIGPM) target, configpm the script does not use config.h as input.
 The $(CONFIGPM) target is a choke/serialization point for parallel
 building, so it is high value to make it as fast as possible.
 Maybe a long time ago, configpm read config.h but it doesn't anymore.
 Nearly all the dynamic config vars are determined in config_sh.PL script
 and ..\config.sh target. config_h.PL contains very little logic, and this
 logic is only for config.h, and only when you want a var to be different
 in config.h than it is in Config.pm/Config_heavy.pl. Putting a breakpoint
 ("system 'pause';") in config_h.PL, copying Config.pm/Config_heavy.pl to
 ".old" versions, continuing execution in config_h.PL, then diffing the
 2 new Configs with the old 2 Configs before pre-config_h.PL and
 "$(PLMAKE) $(MAKEMACROS) $(CONFIGPM) $(MAKEFILE)" shows no differece.
 When dmake runs needlessly a 2nd time it emits a warning that nothing
 changed. This is intentional, since configpm doesn't update the timestamps
 /update the files if the Config files are identical to the old ones to
 prevent mass clean+rebuild of all modules when nothing global changed.

dmake:  Warning: -- Target [..\lib\Config.pm] was made but the time stamp
has not been updated.

-reduce number of steps to build generate_uudmap.exe.
 Compiling (140 ms on GCC 4.8.3) and linking (561 ms) is heavy weight
 compared to running generate_uudmap.exe (31 ms) and compiling globals.c
 (483 ms). dmake's algo for doing parallel is poor. On the main parallel
 pass with all the mini core .c files compiling ("MINI_OBJ"),
 only generate_uudmap.o will be generated as part of the chain of deps
 hanging off globals.o, after the 1st tier of MINI_OBJ has compiled in
 parallel, dmake will do another sweep of MINI_OBJ, this time it will find
 generate_uudmap.exe node and run linking, at this 2nd tier nothing ran
 except linking generate_uudmap. No parallel anything. This is a
 chokepoint. Then dmake does a 3rd sweep and runs the 3rd tier, which is
 run generate_uudmap.exe, again nothing parallel happens here. By
 combining compiling and linking in 1 target, the time spent serially
 linking generate_uudmap.exe, is moved into parallel time when the rest of
 MINI_OBJ compiles. Also a little bit of CPU and IO is saved by launching
 less processes (less cmd.exe shells, gcc/g++ process ran only once
 (gcc/g++ still run many standalone procs internally but now only 1 gcc
 was started not 2)).

-suppress warnings from dmake with .UPDATEALL, the 3 generated headers
 are made at the same time in real life, in the makefile it was written
 as if they weren't
dmake: Warning:--Found file corresponding to virtual target [..\uudmap.h].
dmake: Warning:--Found file corresponding to virtual target [..\mg_data.h].

-move generating the headers to the target that generates
 generate_uudmap.exe, this moves some serialization time, albeit small
 (30 ms) from right before miniperl link, to parallel time during 1st
 pass of MINI_OBJ

-collapse 3 shell runs of xcopy into 1 run of shell

"timeit cmd /c "cmd /c xcopy /f /r /i /d /y ..\perl.exe ..\t\ && cmd /c
xcopy /f /r /i /d /y ..\perl523.dll ..\t\
&& cmd /c xcopy /f /r /i /d /y ..\perlglob.exe ..\t\"" takes 140 ms

"timeit cmd /c "xcopy /f /r /i /d /y ..\perl.exe ..\t\
&& xcopy /f /r /i /d /y ..\perl523.dll ..\t\
&& xcopy /f /r /i /d /y ..\perlglob.exe ..\t\"" takes 78 ms on my machine

8 years agoadd parallel support 4 Win32 dmake-COREDIR parallelism part 2
Daniel Dragan [Sat, 15 Aug 2015 09:24:06 +0000 (05:24 -0400)]
add parallel support 4 Win32 dmake-COREDIR parallelism part 2

-defer the mass copy of headers to COREDIR until XS build time
 and dont use COREDIR for building miniperl interp or perl interp, more
 thing to do in parallel this way and 1 less path to search by the CC
-config_h.PL requires config.h to be in COREDIR, this XCOPY in CONFIGPM
 targ is where COREDIR is created if it doesnt exist already
-remove a bunch of XCOPY'es, copy the headers in 1 place only, and dont
 copy them unless they change based on timestamps
-the DYNALOADER dep already contains
 "..\make_ext.pl ..\lib\buildcustomize.pl $(CONFIGPM) $(HAVE_COREDIR)" dont
 specify them again in Extensions and Extensions_reonly, this probably
 reduces the size of dep graph in dmake, since dmake explodes the graph and
 checks the outline of the graph/tree very inefficiently in parallel mode
 (architectural problem with dmake)
-delete pdb files in root, otherwise switching VC version will make the
 next cl.exe error out that it can't write to the pdb file due to version
 numbers in the pdb file
-reorder core .c files in a blend of VC and GCC time order, this reduces
 a 1:08 mins time to do "dmake -P9 ../perl522.dll" to 0:54 mins on 8 core
 with GCC, see details in #123867

8 years agoadd parallel support 4 Win32 dmake building part 1
Daniel Dragan [Sat, 15 Aug 2015 20:03:49 +0000 (16:03 -0400)]
add parallel support 4 Win32 dmake building part 1

-if building a 32 bit Perl, with a 64bit dmake, force
 PROCESSOR_ARCHITECTURE to x86, otherwise the next couple macros will
 try to build a 64 bit perl with 32 bit CCs
-PDBOUT is required to run multiple VC cl.exe processes, otherwise all
 VC cl.exe processes will error out trying to lock and write to a
 file called "vc*0.pdb", PDBOUT is empty for GCC builds since they dont
 have PDB files
-to reduce excess IO calls checking for miniperl.exe plus remove a
 "Found file corresponding to virtual target" warning that dmake emits,
 make this makefile unaware that miniperl.exe exists. dmake has a very bad
 exponential number of IO/stat() calls for every target that is yet
 unbuilt, see procmon logs in [perl #123854], so instead of a stat on
 ../miniperl.exe, then ../lib/buildcustomize.pl, it will be just a stat on
 ../lib/buildcustomize.pl
-remove makefile awareness of ..\lib\Config_heavy.pl,
 if ..\lib\Config_heavy.pl is ever updated, so is ..\lib\Config.pm
 less IO calls for dmake, see also commit 962e59f394
-to break up the sequential nature of this makefile, allow (XS) Extensions
 to build, before (AKA parallel with) perl5**.dll and perl.exe are built.
 This is achieved by running makedef.pl very early, and generating
 perl5**.lib/libperl5**.a from the def file, and NOT generating
 perl5**.lib/libperl5**.a from perl5**.dll at link time of perl5**.dll.
 The conquence of this is, declspec(dllexport) is now unusable, but exports
 should be centrally managed anyways (embed.fnc/etc) so this isn't a big
 issue.
-EUMM makefiles shouldn't be subject to parallelism, untested and disable
 for now, plus creating PLMAKE allows "dmake -n" to work for diagnosing
 this makefile
-slim down all target. Extensions* and UNIDATAFILES now know how to build
 themselves, the parallel nature says you can't rely on left to right
 execution of deps in a parent node to make a child (dep) node build
-miniperl.exe used to be unbuildable from a clean tree except from all
 target, since miniperl.exe didn't depend on mini config.h. Also mini dir
 can't be a target, since each .obj built will dirty the mini dir's time
 stamp and infinite loop happens, instead use a .exists file
-dmake rescans for all outstanding targets, at each recipe line to run,
 this early in the build process, there are an enormous amount of files to
 test for, so the echos are very slow, 350ms each, so combine as many of
 the lines of mini/.exists AKA mini config.h together as possible.  ".IF"
 can't be put inside "one line", so not all lines were merged. Shell "if"
 could be used to further group the echos but this enough to make the pause
 /cpu spining not really noticable. USE_CPLUSPLUS contains an unrolled line
 (the #endif) on both sides. See also procmon logs in [perl #123854]
-perllib.obj/.o needs perllibst.h which is built by miniperl+a script,
 perllibst.h target doesn't need any Extensions*, so perllib.obj is still
 quick to build
-perldll.def doesn't need perllibst.h since makedef.pl uses
 $Config{static_ext} to find boot xsubs to export, makedef.pl does not
 read perllibst.h, remove perllibst.h for more parallelism/less things to
 build before perldll.def runs, and therefore Extensions (XS) starts to
 run quicker, and Extensions (XS) is the longest target to build
-perlmain and perlmainst .obj/.o needs full perl headers to compile, they
 aren't like generate_uudmap.exe and perlglob.exe which are perlapi unaware
-perl.exe doesn't need perl5**.dll to build, just the imp lib to
 perl5**.dll, perl.exe is in the same category as XS modules, more
 parallelism
-ppport.h isn't needed in blead perl, since blead is the newest perl in the
 world, this allows Extensions (XS) to run sooner, ppport.h is replaced by
 a dummy empty file, delete ppport.h from final installed CORE dir during
 installation so the dummy ppport.h doesn't wind up in installed perl and isnt
 seen by CPAN XS modules during their building by the perl user after perl
 was build and installed, note mkppport script and mkppport.lst are unused
 in makefile.mk now
-break up the dependencies of all the Extensions* targets, static
 (just Win32CORE normally), dynamic XS and non-XS, these 3 run in parallel
 now, non-XS doesn't need perl5**.lib/.a or any C headers, just PP
 Config.pm
-DLL XS requires PP DynaLoader.pm for dl_findfile() otherwise
 Mkbootstrap.pm fatally errors, Mkbootstrap.pm could be revised to not load
 DynaLoader on Win32, since "    if ($Config{'dlsrc'} =~ /^dl_dld/){" is
 false, but this is the easier path right now
-DynaLoader requires module lib to build itself, but Extensions_nonxs
 happens to not need mod lib, so move where mod lib is built
-in utils target, change it so it can run with miniperl, more parallelism,
 pl2bat doesn't require full perl, the full perl stuff is from
 commit 3fe9a6f19e from 5.003 and no ML archive is available to explain why
 full perl was used instead of mini perl

-add 4 modules to buildcustomize so nonxs and xs build simultaneously

-remove ancient cruft from commit 26618a56da from 1997 from README.w32
 dmake is automatically set inside CFG_VARS today. OSRELEASE is irrelavent
 today, Perl doesn't use any of the defaults (like name of CC) from the
 maketool.

-Reduce 21 calls of "cmd.exe /x/d/c cd" by miniperl to just 1 by saving and
 reusing cwd. This reduced the amount of time to run
 "..\miniperl.exe -I..\lib -f ..\write_buildcustomize.pl .." from 312 ms
 to 62 ms elapsed time using timeit.exe for me.

8 years agomove Test dist from ./cpan to ./dist
Ricardo Signes [Sun, 6 Sep 2015 19:45:12 +0000 (15:45 -0400)]
move Test dist from ./cpan to ./dist

8 years agoMETA.* regen for moved Math-* dists
Ricardo Signes [Sun, 6 Sep 2015 19:41:46 +0000 (15:41 -0400)]
META.* regen for moved Math-* dists

8 years agomove Math-Big* from ./dist to ./cpan
Ricardo Signes [Sat, 5 Sep 2015 14:20:42 +0000 (10:20 -0400)]
move Math-Big* from ./dist to ./cpan

8 years agobump versions of perl modules updated in AmigaOS branch
Ricardo Signes [Sun, 6 Sep 2015 16:48:14 +0000 (12:48 -0400)]
bump versions of perl modules updated in AmigaOS branch

8 years agore/speed.t: increase watchdog timeout
David Mitchell [Sun, 6 Sep 2015 09:43:18 +0000 (10:43 +0100)]
re/speed.t: increase watchdog timeout

49bc8c204e5 added more tests to this file, increasing its execution time
threefold under ASAN. Increase the watchdog timeout proportionally,
to stop occasional smoke failures.

8 years agoRegenerated podcheck db: AmigaOS pedantic failures
Karl Williamson [Sat, 5 Sep 2015 17:24:20 +0000 (11:24 -0600)]
Regenerated podcheck db: AmigaOS pedantic failures

8 years agoFix a couple of pod issues
Karl Williamson [Sat, 5 Sep 2015 17:12:01 +0000 (11:12 -0600)]
Fix a couple of pod issues

8 years agoFix broken link in pod for Hash::Util::FieldHash
Karl Williamson [Sat, 5 Sep 2015 17:10:53 +0000 (11:10 -0600)]
Fix broken link in pod for Hash::Util::FieldHash

8 years agoMerge commit for amigos branch
Ricardo Signes [Sat, 5 Sep 2015 15:19:57 +0000 (11:19 -0400)]
Merge commit for amigos branch

8 years agoamigaos4: README.amiga
Andy Broad [Fri, 28 Aug 2015 00:47:25 +0000 (20:47 -0400)]
amigaos4: README.amiga

Complete rewrite since the old port was old.

8 years agoamigaos4: install scripts
Andy Broad [Fri, 14 Aug 2015 00:53:49 +0000 (20:53 -0400)]
amigaos4: install scripts

- needs different mode for shared objects (libraries)
- needs running the os-specific utility
- no hard links but symlinks

8 years agoamigaos4: no FD_CLOEXEC, no test
Andy Broad [Fri, 28 Aug 2015 12:38:27 +0000 (08:38 -0400)]
amigaos4: no FD_CLOEXEC, no test

8 years agoamigaos4: customized Socket Socket.xs
Andy Broad [Mon, 31 Aug 2015 23:14:21 +0000 (19:14 -0400)]
amigaos4: customized Socket Socket.xs

8 years agoamigaos4: customized Pod::Perldoc lib/Perldoc.pm
Andy Broad [Mon, 31 Aug 2015 23:14:07 +0000 (19:14 -0400)]
amigaos4: customized Pod::Perldoc lib/Perldoc.pm

8 years agoamigaos4: customized Compress-Raw-Zlib Zlib.xs
Andy Broad [Mon, 31 Aug 2015 23:13:38 +0000 (19:13 -0400)]
amigaos4: customized Compress-Raw-Zlib Zlib.xs

8 years agoamigaos4: cpan/Socket: needs INET_ADDRSTRLEN
Andy Broad [Fri, 14 Aug 2015 01:13:29 +0000 (21:13 -0400)]
amigaos4: cpan/Socket: needs INET_ADDRSTRLEN

Upstreamed: https://rt.cpan.org/Ticket/Display.html?id=106797

8 years agoamigaos4: cpan/Pod-Perldoc: different paging
Andy Broad [Fri, 14 Aug 2015 01:12:16 +0000 (21:12 -0400)]
amigaos4: cpan/Pod-Perldoc: different paging

Upstreamed: https://rt.cpan.org/Ticket/Display.html?id=106798

8 years agoamigaos4: cpan/Compress-Raw-Zlib: also __amigaos4__
Andy Broad [Sat, 22 Aug 2015 13:28:37 +0000 (09:28 -0400)]
amigaos4: cpan/Compress-Raw-Zlib: also __amigaos4__

Upstreamed: https://rt.cpan.org/Ticket/Display.html?id=106799

8 years agoamigaos4: dist/threads: no thread signal blocking
Andy Broad [Fri, 21 Aug 2015 21:09:15 +0000 (17:09 -0400)]
amigaos4: dist/threads: no thread signal blocking

8 years agoamigaos4: dist/PathTools/lib/File/Spec: add AmigaOS.pm
Andy Broad [Fri, 14 Aug 2015 01:17:44 +0000 (21:17 -0400)]
amigaos4: dist/PathTools/lib/File/Spec: add AmigaOS.pm

8 years agoamigaos4: dist/PathTools/Cwd: special env handling
Andy Broad [Fri, 14 Aug 2015 01:15:10 +0000 (21:15 -0400)]
amigaos4: dist/PathTools/Cwd: special env handling

8 years agoamigaos4: ext/POSIX: no fancy signals
Andy Broad [Tue, 1 Sep 2015 00:19:25 +0000 (20:19 -0400)]
amigaos4: ext/POSIX: no fancy signals

8 years agoamigaos4: ext/POSIX: no mkfifo
Andy Broad [Tue, 1 Sep 2015 00:19:10 +0000 (20:19 -0400)]
amigaos4: ext/POSIX: no mkfifo

8 years agoamigaos4: translate $^X to unix style
Andy Broad [Tue, 1 Sep 2015 22:39:42 +0000 (18:39 -0400)]
amigaos4: translate $^X to unix style

8 years agoamigaos4: neither sched_yield nor pthread_yield
Andy Broad [Fri, 21 Aug 2015 21:07:54 +0000 (17:07 -0400)]
amigaos4: neither sched_yield nor pthread_yield

Emulate using sleep(0).

8 years agoamigaos4: use afstat for fstat
Andy Broad [Thu, 20 Aug 2015 00:03:03 +0000 (20:03 -0400)]
amigaos4: use afstat for fstat

8 years agoamigaos4: random device name
Andy Broad [Sat, 15 Aug 2015 23:15:56 +0000 (19:15 -0400)]
amigaos4: random device name

8 years agoamigaos4: unlink of open/locked files will fail
Andy Broad [Mon, 31 Aug 2015 16:20:52 +0000 (12:20 -0400)]
amigaos4: unlink of open/locked files will fail

8 years agoamigaos4: avoid my_pclose
Andy Broad [Sat, 15 Aug 2015 22:31:49 +0000 (18:31 -0400)]
amigaos4: avoid my_pclose

8 years agoamigaos4: use my_popen from amigaos.c
Andy Broad [Sat, 22 Aug 2015 13:24:56 +0000 (09:24 -0400)]
amigaos4: use my_popen from amigaos.c

8 years agoamigaos4: avoid my_popen_list
Andy Broad [Sat, 22 Aug 2015 13:22:45 +0000 (09:22 -0400)]
amigaos4: avoid my_popen_list

8 years agoamigaos4: needs inplace edit backup file
Andy Broad [Sat, 22 Aug 2015 13:05:21 +0000 (09:05 -0400)]
amigaos4: needs inplace edit backup file

Use __amigaos4__ define instead of AMIGAOS.

8 years agoamigaos4: setenv magic should work with __amigaos4__
Andy Broad [Sat, 22 Aug 2015 13:08:30 +0000 (09:08 -0400)]
amigaos4: setenv magic should work with __amigaos4__

The code was protected with AMIGAOS which was AmigaOS 3.

8 years agoamigaos4: no env in main()
Andy Broad [Fri, 14 Aug 2015 02:09:41 +0000 (22:09 -0400)]
amigaos4: no env in main()

8 years agoamigaos4: unistd.h needs netinet/in.h
Andy Broad [Fri, 14 Aug 2015 02:08:12 +0000 (22:08 -0400)]
amigaos4: unistd.h needs netinet/in.h

8 years agoamigaos4: fork child handling
Andy Broad [Wed, 19 Aug 2015 16:39:24 +0000 (12:39 -0400)]
amigaos4: fork child handling

8 years agoamigaos4: use our own environ implementation
Andy Broad [Thu, 27 Aug 2015 13:31:34 +0000 (09:31 -0400)]
amigaos4: use our own environ implementation

8 years agoamigaos4: PERL_SYS_INIT_BODY and PERL_SYS_TERM_BODY
Andy Broad [Thu, 20 Aug 2015 00:06:06 +0000 (20:06 -0400)]
amigaos4: PERL_SYS_INIT_BODY and PERL_SYS_TERM_BODY

8 years agoamigaos4: use amigaos glue for exec(), system(), waitpid()
Andy Broad [Tue, 25 Aug 2015 23:56:51 +0000 (19:56 -0400)]
amigaos4: use amigaos glue for exec(), system(), waitpid()

8 years agoamigaos4: save and restore stdio handles around exec
Andy Broad [Tue, 25 Aug 2015 23:53:13 +0000 (19:53 -0400)]
amigaos4: save and restore stdio handles around exec

8 years agoamigaos4: clone differently
Andy Broad [Wed, 19 Aug 2015 16:29:54 +0000 (12:29 -0400)]
amigaos4: clone differently

8 years agoamigaos4: special post-exec trick needed
Andy Broad [Tue, 25 Aug 2015 23:55:42 +0000 (19:55 -0400)]
amigaos4: special post-exec trick needed

8 years agoamigaos4: exec returns I32
Andy Broad [Wed, 19 Aug 2015 16:35:24 +0000 (12:35 -0400)]
amigaos4: exec returns I32

Unlike UNIXish fork-exec, in amigaos forking is more like
starting a thread, the return code is more than a boolean.

8 years agoamigaos4: FD_CLOEXEC is defined but not implemented
Andy Broad [Wed, 26 Aug 2015 21:26:38 +0000 (17:26 -0400)]
amigaos4: FD_CLOEXEC is defined but not implemented

8 years agoamigaos4: WORD defined in exec/types.h
Andy Broad [Wed, 19 Aug 2015 16:31:16 +0000 (12:31 -0400)]
amigaos4: WORD defined in exec/types.h

8 years agoamigaos4: check that the errno indicates an error
Andy Broad [Wed, 19 Aug 2015 16:28:21 +0000 (12:28 -0400)]
amigaos4: check that the errno indicates an error

8 years agoamigaos4: copy the amigaos glue files to the top
Andy Broad [Sun, 16 Aug 2015 02:14:32 +0000 (22:14 -0400)]
amigaos4: copy the amigaos glue files to the top

Makes build process simpler.

8 years agoamigaos4: add amigaos the glue code
Andy Broad [Wed, 19 Aug 2015 14:01:39 +0000 (10:01 -0400)]
amigaos4: add amigaos the glue code

amigaos.c: pure amigaos code
amigaio.c: bridge code between perl and amigaos

8 years agoamigaos4: Makefile.SH workaround for shell bug
Andy Broad [Thu, 27 Aug 2015 22:32:35 +0000 (18:32 -0400)]
amigaos4: Makefile.SH workaround for shell bug

8 years agoamigaos4: flock unimplemented
Andy Broad [Thu, 20 Aug 2015 21:56:05 +0000 (17:56 -0400)]
amigaos4: flock unimplemented

The semantics of locking are very different: first you lock,
then you open.  (And for semaphore-like uses of files, you
use ... semaphores.)

8 years agoamigaos4: the Perl executable needs to be linked with -ldl
Andy Broad [Thu, 13 Aug 2015 23:19:31 +0000 (19:19 -0400)]
amigaos4: the Perl executable needs to be linked with -ldl

(but none of the other executables should be)

8 years agoamigaos4: do not build Amiga extensions in Win32
Andy Broad [Sat, 5 Sep 2015 00:56:23 +0000 (20:56 -0400)]
amigaos4: do not build Amiga extensions in Win32

Really.

8 years agoamigaos4: lib/.gitignore for the Amiga extensions
Andy Broad [Fri, 28 Aug 2015 11:54:31 +0000 (07:54 -0400)]
amigaos4: lib/.gitignore for the Amiga extensions

8 years agoamigaos4: Amiga extensions maintenance
Andy Broad [Thu, 27 Aug 2015 23:19:45 +0000 (19:19 -0400)]
amigaos4: Amiga extensions maintenance

8 years agoamigaos4: ppport.h for the AmigaOS extensions
Andy Broad [Fri, 28 Aug 2015 10:22:38 +0000 (06:22 -0400)]
amigaos4: ppport.h for the AmigaOS extensions

8 years agoamigaos4: detect the Amiga extensions
Andy Broad [Thu, 13 Aug 2015 23:12:23 +0000 (19:12 -0400)]
amigaos4: detect the Amiga extensions

8 years agoamigaos4: add Amiga::ARexx and Amiga::Exec
Andy Broad [Fri, 14 Aug 2015 01:04:20 +0000 (21:04 -0400)]
amigaos4: add Amiga::ARexx and Amiga::Exec

ext seems more natural than dist since these are low-level OS glue
modules (cf the VMS::* and Win32CORE), and these are not in CPAN.

8 years agoamigaos4: there is no /dev/tty but there is CONSOLE:
Andy Broad [Tue, 25 Aug 2015 02:06:14 +0000 (22:06 -0400)]
amigaos4: there is no /dev/tty but there is CONSOLE:

8 years agoamigaos4: config.sh, and new hints using the config
Andy Broad [Sun, 16 Aug 2015 02:27:47 +0000 (22:27 -0400)]
amigaos4: config.sh, and new hints using the config

8 years agoamigaos4: Configure: allow hinting sig_num_init
Andy Broad [Thu, 13 Aug 2015 23:11:27 +0000 (19:11 -0400)]
amigaos4: Configure: allow hinting sig_num_init

(And assumedly providing all the other related sig* values.)

8 years agoamigaos4: Configure: allow hinting d_procselfexe
Andy Broad [Thu, 13 Aug 2015 23:09:25 +0000 (19:09 -0400)]
amigaos4: Configure: allow hinting d_procselfexe

Trying to access /proc causes the system to try to mount such a thing.
(And there is no process file system in AmigaOS, anyway.)

8 years agoamigaos4: Configure: this test needs also alarm()
Andy Broad [Thu, 13 Aug 2015 23:08:31 +0000 (19:08 -0400)]
amigaos4: Configure: this test needs also alarm()

... which amigaos does not have.

8 years agoamigaos4: Configure: -fstack-protector* compiles but does not link
Andy Broad [Mon, 17 Aug 2015 11:18:04 +0000 (07:18 -0400)]
amigaos4: Configure: -fstack-protector* compiles but does not link

Now an explicit test, a more portable fix would test compile + link.
Trickier, though, because e.g. with AmigaOS 4 a particular option
is required for the failure to happen (-use-dynld).

8 years agoamigaos4: Configure; abc/pdksh bug workaround, hardwire the fieldn
Andy Broad [Thu, 13 Aug 2015 23:07:28 +0000 (19:07 -0400)]
amigaos4: Configure; abc/pdksh bug workaround, hardwire the fieldn

8 years agoamigaos4: Configure; the abc/pdksh shell evaluates \n in arguments
Andy Broad [Thu, 13 Aug 2015 23:03:39 +0000 (19:03 -0400)]
amigaos4: Configure; the abc/pdksh shell evaluates \n in arguments

For example, echo "a\bn" becomes

a
b

as opposed to

a\nb

causing broken shell commands with ``, but these \n are not really
needed, so we can remove them.

8 years agoamigaos4: Configure: the multiview is a good amigaos indicator
Andy Broad [Thu, 13 Aug 2015 23:02:39 +0000 (19:02 -0400)]
amigaos4: Configure: the multiview is a good amigaos indicator

8 years agoamigaos4: Configure: tr extra sanity check
Andy Broad [Sat, 15 Aug 2015 23:40:18 +0000 (19:40 -0400)]
amigaos4: Configure: tr extra sanity check

8 years agoamigaos4: Configure: /dev/null works, but test -c doesn't
Andy Broad [Thu, 13 Aug 2015 23:00:55 +0000 (19:00 -0400)]
amigaos4: Configure: /dev/null works, but test -c doesn't

8 years agot/op/utf8decode.t: Update tests from new source material
Karl Williamson [Fri, 4 Sep 2015 16:57:44 +0000 (10:57 -0600)]
t/op/utf8decode.t: Update tests from new source material

The website that these tests were based on has been updated, so the
tests here are updated to correspond.  The tests supplied are now for
every non-character.  He suggests that decoders not accept these, but
Perl currently does by default.

8 years agoFix potential flaw in 2 EBCDIC macros.
Karl Williamson [Wed, 26 Aug 2015 21:38:39 +0000 (15:38 -0600)]
Fix potential flaw in 2 EBCDIC macros.

It occurred to me in code reading that it was possible for these macros
to not give the correct result if passed a signed argument.

An earlier version of this commit was buggy.  Thanks to Yaroslav Kuzmin
for spotting that.

8 years agoutf8.h, utfebcdic.h: Add some assertions
Karl Williamson [Wed, 26 Aug 2015 21:35:05 +0000 (15:35 -0600)]
utf8.h, utfebcdic.h: Add some assertions

These will detect a array bounds error that occurs on EBCDIC machines,
and by including the assert on non-EBCDIC, we verify that the code
wouldn't fail when built on EBCDIC.

8 years agoutf8.h: Add comment; white space changes
Karl Williamson [Sat, 15 Aug 2015 18:53:17 +0000 (12:53 -0600)]
utf8.h: Add comment; white space changes

8 years agoSkip some code in a common case
Karl Williamson [Thu, 3 Sep 2015 00:24:38 +0000 (18:24 -0600)]
Skip some code in a common case

It's common to call this function to convert a code point to UTF-8 with
the flags parameter being 0, which means no checking of problematic code
points (above-Unicode etc) is done.  Add a check for flags being
non-zero before doing any such checking.

8 years agoporting/maintainers.t: Skip on EBCDIC
Karl Williamson [Fri, 4 Sep 2015 15:10:58 +0000 (09:10 -0600)]
porting/maintainers.t: Skip on EBCDIC

8 years agoutf8.h: Change definition of UTF8_IS_INVARIANT
Karl Williamson [Mon, 3 Aug 2015 03:21:25 +0000 (21:21 -0600)]
utf8.h: Change definition of UTF8_IS_INVARIANT

The new definition is simpler to read.

8 years agoChange EBCDIC macro definition
Karl Williamson [Sun, 2 Aug 2015 04:15:18 +0000 (22:15 -0600)]
Change EBCDIC macro definition

This changes the definition of isUTF8_POSSIBLY_PROBLEMATIC() on EBCDIC
platforms to use PL_charclass[] instead of PL_e2a[].  The new array is
more likely to be in the memory cache.

8 years agoChange EBCDIC macro definition
Karl Williamson [Sun, 2 Aug 2015 15:02:51 +0000 (09:02 -0600)]
Change EBCDIC macro definition

Prior to this commit UVCHR_SKIP() was defined the same in both ASCII and
EBCDIC, but they expanded to different things.  Now, they are defined
separately  -- to what they expand to, and the EBCDIC version is changed
when all expanded out to use PL_charclass[] instead of PL_e2a[].  The
new array is more likely to be in the memory cache.

8 years agoChange EBCDIC macro definition
Karl Williamson [Sat, 16 May 2015 16:43:40 +0000 (10:43 -0600)]
Change EBCDIC macro definition

Prior to this commit UVCHR_IS_INVARIANT() was defined the same in both
ASCII and EBCDIC, but they expanded to different things.  Now, they are
defined separately to what they expand to, and the EBCDIC version is
changed when all expanded out to use PL_charclass[] instead of PL_e2a[].
The new array is more likely to be in the memory cache.

8 years agoutf8.h: Change defn of UNI_IS_INVARIANT
Karl Williamson [Sat, 16 May 2015 16:31:19 +0000 (10:31 -0600)]
utf8.h: Change defn of UNI_IS_INVARIANT

This changes it to be isASCII(), instead of repeating the "special"
number 0x80.

8 years agoChange some UTF-EBCDIC macro handling defns
Karl Williamson [Fri, 4 Sep 2015 15:57:11 +0000 (09:57 -0600)]
Change some UTF-EBCDIC macro handling defns

This commit changes the definitions of some macros for UTF-8 handling on
EBCDIC platforms.  The previous definitions transformed the bytes into
I8 and did tests on the transformed values.  The change is to use
previously unused bits in l1_char_class_tab.h so the transform isn't
needed, and generally only one branch is.  These macros are called from
the inner loops of, for example, regex backtracking.

8 years agol1_char_class_tab.h: Add comments
Karl Williamson [Fri, 4 Sep 2015 15:55:33 +0000 (09:55 -0600)]
l1_char_class_tab.h: Add comments

This adds the I8 value (used for generating UTF-EBCDIC) for bytes where
it differs from the regular value on the EBCDIC portions of this header.
This value is useful in debugging.

8 years agol1_char_class_tab.h: Add bits for UTF-EBCDIC
Karl Williamson [Fri, 15 May 2015 20:23:12 +0000 (14:23 -0600)]
l1_char_class_tab.h: Add bits for UTF-EBCDIC

This is for the next commit.

8 years agoregen/mk_PL_charclass.pl: Refactor a print
Karl Williamson [Fri, 15 May 2015 20:21:25 +0000 (14:21 -0600)]
regen/mk_PL_charclass.pl: Refactor a print

This is in preparation for the next commits.

8 years agoRemove no longer used #define
Karl Williamson [Fri, 15 May 2015 20:49:21 +0000 (14:49 -0600)]
Remove no longer used #define

The previous commit removed all uses of this non-public #define.

8 years agoChange filter of problematic code points for EBCDIC
Karl Williamson [Fri, 15 May 2015 20:48:23 +0000 (14:48 -0600)]
Change filter of problematic code points for EBCDIC

There are three classes of problematic Unicode code points that may
require special handling.  Which code points are problematic is fairly
complicated, requiring lots of branches.  However, the smallest of them
is 0xD800, which means that most code points in modern use are below
them all, and a single test can be used to exclude just about everything
likely to be encountered.  The problem was that the way this test was
done on EBCDIC caused way too many things to pass and have to be checked
with the more complicated branches.  The digits 0-9 and some capital
letters were not filtered out, for example.  This commit changes the
EBCDIC test to transform into I8 (an array lookup), and this fixes it to
exclude things that shouldn't have passed before.