perl.git
6 years agoReplace $compile_ok by $compile for two probes that can fail.
Andy Dougherty [Wed, 6 Jun 2012 13:07:11 +0000 (09:07 -0400)] 
Replace $compile_ok by $compile for two probes that can fail.

The probes for _NSGetExecutablePath and KERN_PROC_PATHNAME
will fail on systems where they are not available.  This is
normal, so use $compile to throw away the error messages.

6 years agopending-author.t: Skip for lack of config
Father Chrysostomos [Wed, 6 Jun 2012 03:13:21 +0000 (20:13 -0700)] 
pending-author.t: Skip for lack of config

That ‘git config --get user.email’ will output something is a big
assumption.

6 years agoMake B::COP::stashpv respect utf8 and embedded nulls
Father Chrysostomos [Tue, 5 Jun 2012 23:31:31 +0000 (16:31 -0700)] 
Make B::COP::stashpv respect utf8 and embedded nulls

This was mentioned in ticket #113060.

This commit also adds another stashoff test.

The diff looks a bit complicated, because it stops ->file and
->stashpv from being XS aliases.

6 years agostash.t: 2 TODO tests I missed
Father Chrysostomos [Tue, 5 Jun 2012 23:06:34 +0000 (16:06 -0700)] 
stash.t: 2 TODO tests I missed

6 years agoFix version logic in B.xs
Father Chrysostomos [Tue, 5 Jun 2012 23:03:47 +0000 (16:03 -0700)] 
Fix version logic in B.xs

6 years agoChange B::COP::stashlen to stashoff
Father Chrysostomos [Tue, 5 Jun 2012 21:41:25 +0000 (14:41 -0700)] 
Change B::COP::stashlen to stashoff

This was brought up in ticket #78742.

The stashlen method has never been in a stable release, and no longer
exists, as of d4d03940c, since it is dependent on a define that
d4d03940c removed.

So this commit removes stashlen from B.xs and adds stashoff in its
place, since this is what B::C needs.

It also adds a few basic tests for the stash and stashpv methods.

6 years agoMerge improvements to make_ext.pl
Nicholas Clark [Tue, 5 Jun 2012 18:59:50 +0000 (20:59 +0200)] 
Merge improvements to make_ext.pl

6 years agoIn make_ext.pl, inline _macroify_passthrough() into its only caller.
Nicholas Clark [Sun, 3 Jun 2012 20:05:58 +0000 (22:05 +0200)] 
In make_ext.pl, inline _macroify_passthrough() into its only caller.

6 years agoIn make_ext.pl, only fudge the Makefile.PL timestamp when generating it.
Nicholas Clark [Sat, 2 Jun 2012 10:17:29 +0000 (12:17 +0200)] 
In make_ext.pl, only fudge the Makefile.PL timestamp when generating it.

The expedient fudge added by commit 23525070d6c0e51f was actually after the
closing } for the if block that auto-generated a Makefile.PL. Hence it was
*always* changing the timestamp on every Makefile.PL just before running it,
even the ones checked out from the repository. That seems a bit wrong.

6 years agomake_ext.pl need not manipulate @INC, as buildcustomize.pl already does it.
Nicholas Clark [Fri, 27 Apr 2012 10:05:38 +0000 (12:05 +0200)] 
make_ext.pl need not manipulate @INC, as buildcustomize.pl already does it.

Remove from make_ext.pl code that predates the introduction of
buildcustomize.pl, as that now sets up @INC correctly before make_ext.pl even
runs. During the build process make_ext.pl is only run by miniperl.

6 years agoIn make_ext.pl, move loading FindExt and Cwd into the Win32-only code.
Nicholas Clark [Fri, 27 Apr 2012 11:05:26 +0000 (13:05 +0200)] 
In make_ext.pl, move loading FindExt and Cwd into the Win32-only code.

As Cwd is now required instead of used and hence doesn't export, qualify
the calls to getcwd() with the package name.

6 years agoCheck for linuxthreads with POSIX semantics
Dominic Hargreaves [Mon, 4 Jun 2012 14:09:00 +0000 (15:09 +0100)] 
Check for linuxthreads with POSIX semantics

In newer versions of GNU/kFreeBSD, linuxthreads supports POSIX semantics;
include a version check in t/op/getpid.t accordingly.

6 years agomake TRIE nodes "absorb" NOTHING->EXACT sequences
Yves Orton [Tue, 20 Mar 2012 01:01:16 +0000 (02:01 +0100)] 
make TRIE nodes "absorb" NOTHING->EXACT sequences

Patterns like /(?:)foo|(?:)bar/ are not optimised into TRIE nodes
as the "NOTHING" gets in the way. This patch handles this properly.

6 years agofix [perl #76546] regex engine slowdown bug
Yves Orton [Sun, 22 Apr 2012 13:58:32 +0000 (15:58 +0200)] 
fix [perl #76546] regex engine slowdown bug

An earlier version of this patch was reverted. This should resolve
that problem.

6 years ago[perl #113486] pp_ctl.c: Don’t assume CopSTASH is a hash
Father Chrysostomos [Tue, 5 Jun 2012 05:06:04 +0000 (22:06 -0700)] 
[perl #113486] pp_ctl.c: Don’t assume CopSTASH is a hash

Calling HvNAME_HEK on something that is not a hash will result in a
crash if it happens to have the SvOOK flag on, because then it tries
to read to the end of HvARRAY, which may not even be a valid pointer.

This can happen with this convoluted test case:

{ package foo; sub bar { main::bar() } }
sub bar {
    delete $::{"foo::"};
    my $x = \($1+2);
    my $y = \($1+2); # this is the one that reuses the mem addr, but
    my $z = \($1+2);  # try the others just in case
    s/2// for $$x, $$y, $$z; # now SvOOK
    warn scalar caller
};
foo::bar

This commit only partially fixes ticket #113486, by eliminating
the crash.  We still have the problem of an unrelated stash reus-
ing the SV.

6 years agoFix bad assertions in pp_ctl.c:pp_caller
Father Chrysostomos [Tue, 5 Jun 2012 03:36:39 +0000 (20:36 -0700)] 
Fix bad assertions in pp_ctl.c:pp_caller

If a stash is freed or undefined by code that it calls, then pp_caller
can encounter a freed stash or nameless stash.  HvNAME_HEK returns
null for a freed scalar and for a hash without a name.  So CopSTASHPV
will also be null in that case, which is expected.  If the hash is
undefined, it may not be SvOOK any more, and if it is freed it defi-
nitely won’t be.

The following code *does* assume, however that CopSTASH is non-null,
so assert that.

6 years agoDo away with stashpv_hvname_match
Father Chrysostomos [Tue, 5 Jun 2012 00:06:03 +0000 (17:06 -0700)] 
Do away with stashpv_hvname_match

For some reason this is listed in the API, even though it is not docu-
mented and is only available under ithreads.

It was added by commit ed221c5717, which doesn’t explain why it needed
to be part of the API.  (Presumably because a public macro used it,
even though there are better ways to solve that.)

It is unused on CPAN and (now) in core, so there is no reason
to keep it.

6 years agoSay goodbye to SAVECOPSTASH
Father Chrysostomos [Mon, 4 Jun 2012 23:57:23 +0000 (16:57 -0700)] 
Say goodbye to SAVECOPSTASH

This is undocumented and unused.

6 years agoObliterate CopSTASH_free
Father Chrysostomos [Mon, 4 Jun 2012 23:44:54 +0000 (16:44 -0700)] 
Obliterate CopSTASH_free

It is unused outside the core, defined as a no-op, and undocumented.

6 years agostash.t: Un-TODO passing tests
Father Chrysostomos [Mon, 4 Jun 2012 23:41:23 +0000 (16:41 -0700)] 
stash.t: Un-TODO passing tests

6 years ago[perl #78742] Store CopSTASH in a pad under threads
Father Chrysostomos [Mon, 4 Jun 2012 21:04:03 +0000 (14:04 -0700)] 
[perl #78742] Store CopSTASH in a pad under threads

Before this commit, a pointer to the cop’s stash was stored in
cop->cop_stash under non-threaded perls, and the name and name length
were stored in cop->cop_stashpv and cop->cop_stashlen under ithreads.

Consequently, eval "__PACKAGE__" would end up returning the
wrong package name under threads if the current package had been
assigned over.

This commit changes the way cops store their stash under threads.  Now
it is an offset (cop->cop_stashoff) into the new PL_stashpad array
(just a mallocked block), which holds pointers to all stashes that
have code compiled in them.

I didn’t use the lexical pads, because CopSTASH(cop) won’t work unless
PL_curpad is holding the right pad.  And things start to get very
hairy in pp_caller, since the correct pad isn’t anywhere easily
accessible on the context stack (oldcomppad actually referring to the
current comppad).  The approach I’ve followed uses far less code, too.

In addition to fixing the bug, this also saves memory.  Instead of
allocating a separate PV for every single statement (to hold the stash
name), now all lines of code in a package can share the same stashpad
slot.  So, on a 32-bit OS X, that’s 16 bytes less memory per COP for
short package names.  Since stashoff is the same size as stashpv,
there is no difference there.  Each package now needs just 4 bytes in
the stashpad for storing a pointer.

For speed’s sake PL_stashpadix stores the index of the last-used
stashpad offset.  So only when switching packages is there a linear
search through the stashpad.

6 years agoIncrease $B::VERSION to 1.36
Father Chrysostomos [Mon, 4 Jun 2012 20:10:28 +0000 (13:10 -0700)] 
Increase $B::VERSION to 1.36

6 years agopad.c: Remove obsolete comment
Father Chrysostomos [Sun, 3 Jun 2012 02:03:52 +0000 (19:03 -0700)] 
pad.c: Remove obsolete comment

We now store the UTF8-ness in the pad, as of 5.15.4 or so.

6 years agoDon’t localise CopSTASH(&PL_compiling) in newCONSTSUB
Father Chrysostomos [Fri, 1 Jun 2012 06:02:31 +0000 (23:02 -0700)] 
Don’t localise CopSTASH(&PL_compiling) in newCONSTSUB

When newCONSTSUB was added in commit 5476c433, it did not set
curcop temporarily to &compiling, and so gv_fetchpv would look at
curcop->cop_stash.  So cop_stash needed to be localised.

(Time passes.... curcop is now PL_curcop.  &compiling is
now &PL_compiling.  gv_fetchpv is now gv_fetchpvn_flags.
curcop->cop_stash is now CopSTASH(PL_curcop).)

Since commit 401667e9, newCONSTSUB has set PL_curcop to &PL_compiling
temporarily.  When that is the case, gv_fetchpvn_flags uses
PL_curstash and ignores CopSTASH(PL_curcop).

So this localisation is no longer necessary, as newCONSTSUB has always
set (PL_)curstash.

6 years agoadd details for doy and TonyC for July 20
Ricardo Signes [Tue, 5 Jun 2012 00:29:01 +0000 (20:29 -0400)] 
add details for doy and TonyC for July 20

6 years agoBump $Pod::Html::VERSION to reflect the changes of commit 978af2c644ee9abf.
Nicholas Clark [Mon, 4 Jun 2012 19:27:58 +0000 (21:27 +0200)] 
Bump $Pod::Html::VERSION to reflect the changes of commit 978af2c644ee9abf.

6 years agoMerge branch 'post-5.16' into blead
Steve Peters [Mon, 4 Jun 2012 14:52:17 +0000 (09:52 -0500)] 
Merge branch 'post-5.16' into blead

6 years agoVersion bump for POSIX.pm.
Craig A. Berry [Mon, 4 Jun 2012 01:31:31 +0000 (20:31 -0500)] 
Version bump for POSIX.pm.

6 years agoextern "C" for POSIX.xs.
Craig A. Berry [Sun, 3 Jun 2012 23:38:30 +0000 (18:38 -0500)] 
extern "C" for POSIX.xs.

We are repeating standard prototypes but we haven't been making
them compatible with the standard versions when compiling under
C++.  Now we do.

6 years agoextern "C" for sdbm.c.
Craig A. Berry [Sun, 3 Jun 2012 23:17:28 +0000 (18:17 -0500)] 
extern "C" for sdbm.c.

Whether we really need to be rolling our own prototypes for malloc
and free in this day and age is unclear, but since we do, we need
to keep them in the unmangled C namespace rather than in C++'s
std:: namespace.

6 years agoRemove commented-out debugging print statements from File:DosGlob
Nicholas Clark [Sun, 3 Jun 2012 20:50:57 +0000 (22:50 +0200)] 
Remove commented-out debugging print statements from File:DosGlob

None of these have been changed in over a decade, aside from re-indentation.
Leave in 3 commented-out print statements which are necessary to understand
a FIXME comment.

6 years agoRefactor File::DosGlob to avoid an unescaped { in a regex.
Nicholas Clark [Sun, 3 Jun 2012 20:39:50 +0000 (22:39 +0200)] 
Refactor File::DosGlob to avoid an unescaped { in a regex.

This avoids generating deprecation warnings.

6 years agomktables: Convert to BELL meaning U+1F514
Karl Williamson [Sat, 2 Jun 2012 18:05:34 +0000 (12:05 -0600)] 
mktables: Convert to BELL meaning U+1F514

As a result of the Unicode 6.0 mistake of using "BELL" to refer to
a different code point, Perl has deprecated use of this name for 2 major
release cycles, while not fully implementing Unicode in the interim, to
allow any affected code to migrate to the new name

This commit now switches to the new meaning of BELL.

6 years agomktables memory reduction
Nicholas Clark [Sat, 2 Jun 2012 15:32:44 +0000 (16:32 +0100)] 
mktables memory reduction

Does the attached patch make sense? It lowers RAM and CPU usage by about 10%
on Linux, and 6% on FreeBSD.

Nicholas Clark

>From fe46bd796c282f6a6e4793afaf847e04d3be3524 Mon Sep 17 00:00:00 2001
From: Nicholas Clark <nick@ccl4.org>
Date: Mon, 7 May 2012 09:58:13 +0200
Subject: [PATCH] In mktables, lazily compute the 'standard_form' for Ranges.

Instead of calculating the standard form up front, calculate it only when
needed and cache the result. There are 368676 non-special objects, but
the standard form is only requested for 22047 of them. For the systems I
tested on, this reduces RAM and CPU usage by about 10% on Linux, and 6% on
FreeBSD.

This is more significant than it may first seem, because mktables is the
largest RAM user of anything run during the build process, so this reduces
the build process peak RAM requirement.

6 years agopodcheck.t: white-space only: indent properly
Karl Williamson [Fri, 1 Jun 2012 19:31:31 +0000 (13:31 -0600)] 
podcheck.t: white-space only: indent properly

6 years agoperldelta entry for Perl working on all Unicode releases
Karl Williamson [Sat, 2 Jun 2012 15:54:14 +0000 (09:54 -0600)] 
perldelta entry for Perl working on all Unicode releases

6 years agoVMS --> __VMS in a2p.h.
Craig A. Berry [Sat, 2 Jun 2012 15:15:57 +0000 (10:15 -0500)] 
VMS --> __VMS in a2p.h.

C++ does not define VMS, only __VMS.  We define VMS in config.h
for C++, but here we're trying to figure out how to include config.h,
so we don't have it yet.

The only compiler that defined only VMS and not __VMS was VAX C,
which isn't C89-compliant and can't build Perls from the current
century.

6 years agoAllow Perl to use older Unicode releases
Karl Williamson [Sat, 2 Jun 2012 14:37:18 +0000 (08:37 -0600)] 
Allow Perl to use older Unicode releases

We have claimed for several releases now that Perl can handle any
release of Unicode so far.  It turns out that this was never entirely
true, and became less true in 5.16 due to the changes necessitated by
Unicode's publishing names for the control characters.  Enough work was
done in 5.16 so that Perl could continue to handle Unicode 6.0, which
meant that someone using Perl 5.14 and Unicode 6.0, and who didn't like
6.1 could still upgrade to Perl 5.16 while retaining 6.0.  By having
mktables able to compile old releases of Unicode, we can continue to
evolve Perl without having to write special code in the core for
backwards Unicode compatibility.

This series of commits is mostly about allowing Perl to work on any
Unicode release.  And, I have done a make test using these patches on
recent bleads for every Unicode release.  Tests fail which use code
points that have yet to be assigned in those earlier releases, as well
as tests that expect certain values that Unicode has since changed, but
Perl works as well as can be expected on all releases.  I changed a few
.t's so that they adapt more to the Unicode release they are run with.

The biggest outage is Unicode::Normalize.  Prior to Unicode 3.0, there
could be decompositions containing more than 2 code points.
Unicode::Normalize will not compile with those early versions.  However,
a trivial change to it (documented now in mktables) to use carp instead
of croak will cause it to compile and run, though all 3-or-more
character decompositions will be unknown to it.  I think that the
earliest release of Unicode that it makes sense to do serious work on is
3.2.

There is the issue as to how to prevent future changes to mktables from
breaking backwards compatibility.  I don't know how to fix that, except
that as long as I'm involved, I will test it on old releases some time
before code freeze.

6 years agomktables: Use for loop instead of each
Karl Williamson [Fri, 1 Jun 2012 02:22:26 +0000 (20:22 -0600)] 
mktables: Use for loop instead of each

I think the 'for' is easier to understand

6 years agomktables: Allow easy generation of Unicode-deprecated files
Karl Williamson [Fri, 1 Jun 2012 02:21:13 +0000 (20:21 -0600)] 
mktables: Allow easy generation of Unicode-deprecated files

Sometimes in debugging, etc, it is useful to have these files; this adds
a single scalar to control if they get generated.

6 years agomktables, README.perl: Add, fix comments
Karl Williamson [Fri, 1 Jun 2012 02:20:20 +0000 (20:20 -0600)] 
mktables, README.perl: Add, fix comments

6 years agoperl.pod: Remove reference to specific Unicode version
Karl Williamson [Fri, 1 Jun 2012 01:06:31 +0000 (19:06 -0600)] 
perl.pod: Remove reference to specific Unicode version

I forgot to update this from 6.1, and it really isn't necessary.  Also
update the instructions for new releases to omit reference to this.

6 years agoutf8.c: Use new internal properties for \X
Karl Williamson [Wed, 16 May 2012 17:31:50 +0000 (11:31 -0600)] 
utf8.c: Use new internal properties for \X

These new properties are generated for all Unicode releases, and so \X
can now work on all Unicodes, not just the ones where Unicode has
defined them.

6 years agomktables: White-space only
Karl Williamson [Wed, 16 May 2012 17:30:53 +0000 (11:30 -0600)] 
mktables: White-space only

This outdents code since the surrounding blocks have been removed

6 years agomktables: Use modern \X definition for early Unicodes
Karl Williamson [Wed, 16 May 2012 16:38:49 +0000 (10:38 -0600)] 
mktables: Use modern \X definition for early Unicodes

\X matches an extended grapheme cluster, and requires the Grapheme
Cluster Break Property, and the Hangul Syllable Type property for
complete proper functioning.  This concept was not introduced until
Unicode 5.1.  Prior to that was the basic "grapheme cluster", which was
introduced in Unicode series 3.  The extended version is only a slight
modification of the basic one, and so the basic one can be used for
adequate processing of most scripts.  That is, if we use the basic
definition in Unicode version that lack the extra information for the
extended version, things are degraded cleanly.  It would be possible to
add intelligence to mktables to generate the extended version for all
releases, but since the difference between the two isn't great, the
payoff isn't worth it.

Until commit 5edb45fb0350d27b109ca489724513b86f9cb7bc for Perl v5.12,
Perl used a simpler definition for \X: a non-mark character followed by
any number of marks.  Until the current commit, that definition was
clung to when run on early Unicodes that didn't furnish the definitions
of the properties needed to generate the grapheme cluster definition.

However, it turns out that it is fairly easy to generate those property
definitions, and this commit does that.  And, once those are done, the
special cases for early versions can be removed (except for the
distinction between extended and non- grapheme clusters).

This commit generates the needed tables into Perl internal properties.
A future commit will change the code that processes \X to use these; in
the meantime it uses the existing properties that are generated anyway
for Unicodes where they don't have to be calculated, and which are
identical to the new internal ones.  (Code elsewhere in mktables assures
that identical properties share the same file.)  By using internal
properties, application code only gains access to the official
properties in the releases they are officially defined.  For example, it
won't work for an application to use the Hangul Syllable Type property
unless it is in a release where Unicode has defined it.  To allow access
in earlier releases would be misrepresenting what the Standard says.

6 years agoperluniprops: Work correctly with PLACEHOLDER entries
Karl Williamson [Wed, 16 May 2012 16:27:36 +0000 (10:27 -0600)] 
perluniprops: Work correctly with PLACEHOLDER entries

mktables generates perluniprops.pod, but until this commit, PLACEHOLDER
entries could confuse it.

6 years agomktables: Create get accessor for object
Karl Williamson [Wed, 16 May 2012 16:22:18 +0000 (10:22 -0600)] 
mktables: Create get accessor for object

A future commit will want to get at the value of this object.

6 years agomktables: Make sure a \p{ID_Continue} is also \p{Word}
Karl Williamson [Wed, 16 May 2012 04:19:51 +0000 (22:19 -0600)] 
mktables: Make sure a \p{ID_Continue} is also \p{Word}

This is for consistency with ID_Start.  This property has yet to be used
in the Perl core.

6 years agomktables: Improve defn of xidc for early Unicodes
Karl Williamson [Wed, 16 May 2012 04:16:47 +0000 (22:16 -0600)] 
mktables: Improve defn of xidc for early Unicodes

6 years agomktables: Improve \p{xids} defn for early Unicodes
Karl Williamson [Wed, 16 May 2012 04:11:16 +0000 (22:11 -0600)] 
mktables: Improve \p{xids} defn for early Unicodes

6 years agomktables: Defined \p{AHex} and \p{ASCII_Hex_Digit} for early Unicodes
Karl Williamson [Wed, 16 May 2012 04:07:48 +0000 (22:07 -0600)] 
mktables: Defined \p{AHex} and \p{ASCII_Hex_Digit} for early Unicodes

A number of tests presume these are always defined; and probably a bunch
of real code as well.

6 years agomktables: Improve Lower, Upper defns in early Unicodes
Karl Williamson [Wed, 16 May 2012 03:59:55 +0000 (21:59 -0600)] 
mktables: Improve Lower, Upper defns in early Unicodes

This adds the missing code points to the existing definitions to make
them better for early Unicode releases

6 years agomktables: Remove early Unicode defective \p{Alpha=Y}
Karl Williamson [Wed, 16 May 2012 03:45:56 +0000 (21:45 -0600)] 
mktables: Remove early Unicode defective \p{Alpha=Y}

The \p{Alphabetic=y} property was not defined in all Unicode releases;
however in some of those early ones, there was a data file that
contained a definition for it, and prior to this patch, mktables used
that definition to construct a \p{Alphabetic=y} table.  However, it
turns out that the definition is quite defective in many of the releases
it occurred in.  So rather than mislead code into thinking there is a
good definition of that property for the early releases, this just
doesn't generate a table for it.

But, prior commits have created a good definition for the Perl
single-form extensions \p{Alpha} and \p{Alphabetic}, and most code uses
those anyway.

6 years agomktables: Improve \p{Alphabetic} definition for early Unicodes
Karl Williamson [Wed, 16 May 2012 03:39:54 +0000 (21:39 -0600)] 
mktables: Improve \p{Alphabetic} definition for early Unicodes

Prior to this patch, the definition of this property was admittedly
approximate.  This cleans that up.

6 years agoperluniprops: Omit mention of zero-length special tables
Karl Williamson [Wed, 16 May 2012 03:26:23 +0000 (21:26 -0600)] 
perluniprops: Omit mention of zero-length special tables

Some tables generated by mktables are special, not for external
consumption.  These should not be called out when they turn out to be
zero length, as they are in some Unicode versions

6 years agomktables: Reorder enum
Karl Williamson [Wed, 16 May 2012 02:49:33 +0000 (20:49 -0600)] 
mktables: Reorder enum

This will enable future commits to use '<' and '>' for some tests

6 years agomktables: White-space only change
Karl Williamson [Wed, 16 May 2012 02:01:31 +0000 (20:01 -0600)] 
mktables: White-space only change

6 years agoShorten a $variable name
Karl Williamson [Wed, 16 May 2012 01:18:30 +0000 (19:18 -0600)] 
Shorten a $variable name

6 years agoadd period to end of sentence in comment
Karl Williamson [Wed, 16 May 2012 01:11:32 +0000 (19:11 -0600)] 
add period to end of sentence in comment

6 years agofold_grind.t: DEBUG mode should automatically give full output results
Karl Williamson [Sun, 29 Apr 2012 16:01:02 +0000 (10:01 -0600)] 
fold_grind.t: DEBUG mode should automatically give full output results

We're debugging, so don't want abbreviated results

6 years agomktables: slight efficiency improvement
Karl Williamson [Thu, 19 Apr 2012 18:27:32 +0000 (12:27 -0600)] 
mktables: slight efficiency improvement

Instead of generating all 128 code points individually in this range, we
can just add a single range that includes all of them.

6 years agomktables: Improve warning messages and handling for overloads
Karl Williamson [Mon, 16 Apr 2012 17:25:45 +0000 (11:25 -0600)] 
mktables: Improve warning messages and handling for overloads

This commit gives clearer messages when an overloaded op has swapped
arguments and we can't handle them.  undef should be returned in this
case, as otherwise we are returning the swapped argument.

6 years agomktables: '.=' should be just '.'
Karl Williamson [Mon, 16 Apr 2012 16:32:28 +0000 (10:32 -0600)] 
mktables: '.=' should be just '.'

This fixes an unnecessary .=

6 years agomktables: Don't use turkic casefold rules for early Unicodes
Karl Williamson [Sat, 7 Apr 2012 16:13:46 +0000 (10:13 -0600)] 
mktables: Don't use turkic casefold rules for early Unicodes

This isn't done for later Unicodes version; shouldn't be done for early
ones either, as leads to wrong results.  The early ones used a different
marker than the later ones; this now recognizes both.

6 years agomktables: correct, clarify comments
Karl Williamson [Sat, 7 Apr 2012 15:45:21 +0000 (09:45 -0600)] 
mktables: correct, clarify comments

6 years agomktables: fix warning message
Karl Williamson [Sat, 7 Apr 2012 15:30:24 +0000 (09:30 -0600)] 
mktables: fix warning message

The dot operators show up as periods because this message is now a HERE
document

6 years agomktables: improve a tracing msg
Karl Williamson [Fri, 6 Apr 2012 15:32:48 +0000 (09:32 -0600)] 
mktables: improve a tracing msg

6 years agoUnicode::UCD: Cope with early Unicodes for casespec()
Karl Williamson [Thu, 5 Apr 2012 16:42:44 +0000 (10:42 -0600)] 
Unicode::UCD: Cope with early Unicodes for casespec()

6 years agouni/fold.t: Improve some handling of older Unicodes
Karl Williamson [Thu, 5 Apr 2012 16:19:11 +0000 (10:19 -0600)] 
uni/fold.t: Improve some handling of older Unicodes

In this loop, if a code point is unassigned, it means that the test is
being run on an early Unicode version which doesn't have this character
yet, or something is very wrong.  Instead of persisting with the tests
that aren't going to succeed, fail with an appropriate message.

This means that the .t will not pass, but it gives fewer and better
messages.  We want to mark the failure for the case where the problem
isn't an early Unicode version.

6 years agouni/fold.t: Add details to some test names
Karl Williamson [Thu, 5 Apr 2012 16:18:15 +0000 (10:18 -0600)] 
uni/fold.t: Add details to some test names

6 years agofold_grind.t: white-space, comments only
Karl Williamson [Thu, 5 Apr 2012 16:07:08 +0000 (10:07 -0600)] 
fold_grind.t: white-space, comments only

This adds and revises some commented out debugging code

6 years agomktables: white-space only
Karl Williamson [Wed, 4 Apr 2012 19:51:02 +0000 (13:51 -0600)] 
mktables: white-space only

This indents a newly-formed block, and reflows to fit into 80 columns

6 years agomktables: Enable -annotate arg on early Unicodes
Karl Williamson [Wed, 4 Apr 2012 18:35:54 +0000 (12:35 -0600)] 
mktables: Enable -annotate arg on early Unicodes

On early Unicode releases, there is no NChar property, and on V1.1.5, no
surrogates.  The code for -annotate previously assumed these existed,
so failed.  This moves the surrogates testing later, after new code that
specially handles the situation in 1.1.5, and has special handling for
the non-character code points, in that they may not exist in the current
version.

6 years agomktables: Move some code around for proximity
Karl Williamson [Sat, 31 Mar 2012 18:55:29 +0000 (12:55 -0600)] 
mktables: Move some code around for proximity

These variable definitions are moved closer to where they are used.

6 years agomktables: Rmv unnecessary $temporary
Karl Williamson [Sat, 31 Mar 2012 18:51:52 +0000 (12:51 -0600)] 
mktables: Rmv unnecessary $temporary

6 years agomktables: Give correct \X defn for earlier Unicode
Karl Williamson [Fri, 30 Mar 2012 03:59:15 +0000 (21:59 -0600)] 
mktables: Give correct \X defn for earlier Unicode

The comment removed in this commit was wrong.  It is possible to get
grapheme cluster boundaries without the extended ones.  And that is what
this commit does, for Unicode releases that have the GCB property, but
not the extended version, back to Unicode 4.0.

6 years agomktables: suppress placeholder in gen'd pod
Karl Williamson [Thu, 29 Mar 2012 16:16:46 +0000 (10:16 -0600)] 
mktables: suppress placeholder in gen'd pod

Placeholder tables should not be mentioned in the pod.  In particular,
a future commit will make early releases of Unicode have a placeholder
table generated that is the complement of Cased.  This would otherwise
be mentioned as what lowercase and uppercase are equivalent to under /i.

6 years agoUCD.t: Allow to test earlier Unicodes
Karl Williamson [Thu, 29 Mar 2012 03:06:30 +0000 (21:06 -0600)] 
UCD.t: Allow to test earlier Unicodes

In Unicode 6.1, the only property that is stored in hex format that
wasn't handled elsewhere is the bmg property, but earlier Unicodes had
some of the Unihan (if they are being compiled) ones stored that way
too.  So make it more general.

6 years agoreg_fold.t: Allow to work on early Unicodes
Karl Williamson [Tue, 27 Mar 2012 16:03:30 +0000 (10:03 -0600)] 
reg_fold.t: Allow to work on early Unicodes

If the version of Unicode being compiled doesn't have the modern
casefolding .txt file, get the values from Unicode::UCD.  Also for
EBCDIC, where otherwise the file would have to be translated.

6 years agoUCD.pm: Fix grammar in comment
Karl Williamson [Thu, 29 Mar 2012 03:04:34 +0000 (21:04 -0600)] 
UCD.pm: Fix grammar in comment

6 years agouni/fold.t: Use Unicode::UCD::casefolds() for inputs
Karl Williamson [Wed, 28 Mar 2012 14:00:10 +0000 (08:00 -0600)] 
uni/fold.t: Use Unicode::UCD::casefolds() for inputs

This allows this .t to work on early Unicodes.

6 years agoAdd all_casefolds()
Karl Williamson [Wed, 28 Mar 2012 13:50:12 +0000 (07:50 -0600)] 
Add all_casefolds()

This function returns the entire structure that casefold() builds.  It
is useful for a .t.

6 years agot/uni/case.pl: Allow to work on early Unicodes
Karl Williamson [Wed, 28 Mar 2012 02:51:09 +0000 (20:51 -0600)] 
t/uni/case.pl: Allow to work on early Unicodes

This changes case.pl to use Unicode::UCD instead of directly reading
the casing files.  This allows it to be used on Unicode releases that
don't have those files, as Unicode::UCD has the intelligence to cope
with that.  The EBCDIC code in it can be removed as Unicode::UCD should
cope with that as well.

As a result, the .t's that call it have a slightly different API.

6 years agot/uni/case.pl: Use warnings and strict
Karl Williamson [Wed, 28 Mar 2012 02:31:12 +0000 (20:31 -0600)] 
t/uni/case.pl: Use warnings and strict

6 years agoUnicode::UCD: Allow some fncs to work under minitest
Karl Williamson [Fri, 1 Jun 2012 16:47:47 +0000 (10:47 -0600)] 
Unicode::UCD: Allow some fncs to work under minitest

Some of the functions defined in this module are needed for minitest,
where dclone is not available.  This defines and uses a substitute
dclone when Storable::dclone is not available.

It also conditionally loads Unicode::Normalize.  The function that uses
that module is not executed in minitest.

6 years agoreg_fold.t: Fix test to work on EBCDIC platform
Karl Williamson [Tue, 27 Mar 2012 16:09:01 +0000 (10:09 -0600)] 
reg_fold.t: Fix test to work on EBCDIC platform

I noticed these constants won't work on EBCDIC.

6 years agoreg_fold.t: Allow to work on early Unicodes
Karl Williamson [Tue, 27 Mar 2012 16:03:30 +0000 (10:03 -0600)] 
reg_fold.t: Allow to work on early Unicodes

If the version of Unicode being compiled doesn't have the modern
casefolding .txt file, get the values from Unicode::UCD.  Also for
EBCDIC, where otherwise the file would have to be translated.

6 years agomk_PL_charclass.pl: Allow to work on early Unicodes
Karl Williamson [Tue, 27 Mar 2012 15:54:53 +0000 (09:54 -0600)] 
mk_PL_charclass.pl: Allow to work on early Unicodes

If the version of Unicode being compiled doesn't have the modern
casefolding .txt file, get the values from Unicode::UCD.  Also for
EBCDIC, where otherwise the file would have to be translated.

6 years agofold_grind.t: Allow to work on early Unicodes
Karl Williamson [Tue, 27 Mar 2012 14:52:02 +0000 (08:52 -0600)] 
fold_grind.t: Allow to work on early Unicodes

If the version of Unicode being tested doesn't have the modern
casefolding .txt file, get the values from Unicode::UCD.  Also for
EBCDIC, where otherwise the file would have to be translated.

6 years agofold_grind.t: read environment variable just once
Karl Williamson [Tue, 27 Mar 2012 13:26:47 +0000 (07:26 -0600)] 
fold_grind.t: read environment variable just once

Setting a lexical variable to the environment variable made it easier
for me to temporarily override things during a sequence of tests that
took place on many different occasions where I needed this set and kept
forgetting to set the environment variable.

6 years agomktables: Extend Name_Alias property to early Unicode releases
Karl Williamson [Sun, 25 Mar 2012 04:01:35 +0000 (22:01 -0600)] 
mktables: Extend Name_Alias property to early Unicode releases

This uses this property so that charnames can work on early Unicode
releases, by including all the aliases that were previously defined in
charnames until Unicode 6.1 started defining them itself.

6 years agocharnames.t: White-space only
Karl Williamson [Thu, 5 Apr 2012 15:36:52 +0000 (09:36 -0600)] 
charnames.t: White-space only

Indent newly formed block

6 years agocharnames.t: Fix to work on Unicodes without NameAliases
Karl Williamson [Tue, 27 Mar 2012 03:37:31 +0000 (21:37 -0600)] 
charnames.t: Fix to work on Unicodes without NameAliases

This is a recent addition.  Use alternate means if the file doesn't
exist in the Unicode release, or is for a non-ASCII platform (as the
alternate means should take care of the translation in that case).

6 years agocharnames.t: Skip hangul syllable testing for early Unicodes
Karl Williamson [Tue, 27 Mar 2012 03:23:45 +0000 (21:23 -0600)] 
charnames.t: Skip hangul syllable testing for early Unicodes

If the Unicode release doesn't contain hangul syllables, just skip those
tests

6 years agocharnames.t: Indent newly formed block
Karl Williamson [Tue, 27 Mar 2012 03:22:38 +0000 (21:22 -0600)] 
charnames.t: Indent newly formed block

6 years agocharnames.t: Skip testing named sequences if don't exist
Karl Williamson [Tue, 27 Mar 2012 03:19:14 +0000 (21:19 -0600)] 
charnames.t: Skip testing named sequences if don't exist

Instead of dying when applied to a Unicode version that doesn't have
named sequences, skip them.

6 years agoinstallperl: CaseFolding.txt no longer needed
Karl Williamson [Mon, 26 Mar 2012 18:35:04 +0000 (12:35 -0600)] 
installperl: CaseFolding.txt no longer needed

A previous commit has removed the dependency on this file.

6 years agoUnicode::UCD::casefold(): Don't use .txt file for source
Karl Williamson [Mon, 26 Mar 2012 18:31:20 +0000 (12:31 -0600)] 
Unicode::UCD::casefold(): Don't use .txt file for source

This converts this function to using the outputs of prop_invmap() to get
its casefolding definitions.  This allows it to work on versions of
Unicode which don't have this file, allows the file to not have to be
installed, and removes this function from having to be different on
EBCDIC platforms (which wasn't coded anyway).

6 years agoUCD.t: Don't use BEL for $/
Karl Williamson [Mon, 26 Mar 2012 18:16:08 +0000 (12:16 -0600)] 
UCD.t: Don't use BEL for $/

This causes failures on early Unicode releases, and is not necessary

6 years agoUCD.t: Skip PropValueAliases tests on early Unicodes
Karl Williamson [Mon, 26 Mar 2012 18:15:06 +0000 (12:15 -0600)] 
UCD.t: Skip PropValueAliases tests on early Unicodes