| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
These are in a generated structure.
|
|
|
|
|
|
|
|
|
|
|
| |
This removes the most obvious and easy things that are no longer needed
since regexes no longer use swashes at all.
tr/// continues, for the time being, to use swashes, so not all swash
handling is removable now. But tr/// doesn't use inversion lists, and
so a bunch of code is ripped out here. Other code could have been, but
I did only the relatively easy stuff. The rest can be ripped out all at
once when tr/// is stops using swashes.
|
|
|
|
|
|
|
|
|
|
|
|
| |
In a Turkic locale, these are problematic because their mappings
cross the 255/256 boundary.
This change has the side effect of causing U+307 to be added to the
problematic list, and it normally really isn't problematic, because in
those locales where U+130 and U+131 are problematic, U+307 isn't used.
But applications could switch in and out of Turkic locales, so it's best
to leave it be considered problematic. The consequences of making this
mark problematic are simply slightly less optimized regex pattern code.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
RT #133789
In the path taken through pp_multiconcat() when one or more args have
side-effects such tieing or overloading, multiconcat has to decide
whether to just return the result of all the concatting as-is, or to
first assign it to an expression or variable if the op includes an
implicit assign (such as $lex = x.y.z or $a[0] = x.y.z).
The code was getting this right for those two cases, and was also
getting it right for the append cases ($lex .= x.y.z and $a[0] .= x.y.z),
which don't need assigns. But for the bare case (x.y.z) it was assigning
to the op's targ as well as returning the value. Hence leaking a
reference until destruction of the sub and its pad.
This commit stops the assign in that last case.
|
| |
|
|
|
|
|
|
|
|
|
| |
These 2 Unicode-like property definitions used internally by the regular
expression compiler are moved by this commit from regen/mk_invlists.pl
to lib/unicore/mktables.
By placing all these in the same place, maintainers only have to learn
one bit of code, instead of two.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
For: RT # 133683
pod/perlmodlib.pod is a file generated by pod/perlmodlib.PL, which is
run by 'miniperl' during 'make'. That program parses the 'NAME' header
of .pod files and fragments of POD found in 'regen/opcode.pl'. The POD
for B::Op_private is one such fragment. Correcting a superfluous
whitespace in that fragment did not suffice to prevent the downstream
formatting error reported in the RT -- an error visible with 'pod2text'
and 'pod2html' as well. We also had to make the regex which
perlmodlib.PL uses to parse the 'NAME' header more flexible.
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
Adapt tests in various files to removal of these variables. Add
t/lib/croak/gv to test fatalizations of $# and $* -- tests therein
adapted from tests formerly in t/lib/warnings/gv.
Per: RT # 133583
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
sigtrap defines a signal handler apparently intended to be called
under unsafe signals, since a) the code was written before safe
signals were implemented and b) it uses syswrite() for output and
avoid creating new SVs where it can.
Unfortunately syswrite() doesn't handle PerlIO layers, *and* with
syswrite() being disallowed for :utf8 handlers, throws an exception.
This causes the sigtrap tests to fail if PERL_UNICODE is set and the
current locale is a UTF-8 locale.
I want to avoid allocating new SVs until the point where the code
originally did so, so the code now attempts a syswrite() under
eval, falling back to print, and then at the point where the original
code started allocating SVs uses PerlIO::get_layers() to check if
any layers might make a difference to the output.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This includes removing the :utf8 logic from pp_syswrite. pp_sysread
retains it, since it's also used for read().
Tests that are specifically testing the behaviour against :utf8
handles have been removed (eg in lib/open.t), several other tests
that incidentally used those functions on :utf8 handles have been
adapted to use :raw handles instead (eg. op/readline.t).
Test lib/sigtrap.t fails if STDERR is :utf8, in code from the
original 5.000 commit, which is intended to run in a signal handler
|
|
|
|
|
|
|
|
| |
Committer: For porting tests: Update $VERSION in 4 files.
Run:
./perl -Ilib regen/mk_invlists.pl
./perl -Ilib regen/regcharclass.pl
|
| |
|
|
|
|
| |
This removes arybase and all its surrounding machinery.
|
|
|
|
| |
This could remove non-vars strictness from the caller.
|
|
|
|
|
|
|
|
|
|
| |
It continues to exist as a CPAN distribution.
Increment $B::Terse::VERSION and $B::Concise::VERSION due to changes in POD.
Remove internal links to B::Debug within two .pod files.
For: RT #130410
|
| |
|
|
|
|
|
|
|
|
|
| |
Documentation should refer to getgr(), per report from Elizabeth
Mattijsen.
Increment $VERSION.
For: RT 133217
|
|
|
|
|
|
| |
Per recommendation by Elizabeth Mattijsen.
For: RT 133217
|
|
|
|
| |
For: RT 133217
|
| |
|
|
|
|
|
|
|
| |
C99 says there shouldn't be more than 2 digits in an exponent unless
needed. But Windows uses three. This messes some stuff up that is
expecting two. Change to remove leading zeros so that only two digits
are used. This allows mktables to properly operate on Windows.
|
|
|
|
| |
The previous commit now has these respect locale
|
|
|
|
|
| |
These tests have been wrongly passing. A future commit will change
that.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The pod/perlmodlib.pod file is generated at build time by pod/perlmodlib.PL,
which looks at the POD of library and pragma files to find "=head1 NAME"
directives. It reads each file a paragraph at a time ($/ = ""), and considers
each individual paragraph as potentially containing POD.
However, if it finds no "=head1 NAME" entry in a module, it silently ignores
it. That's reasonable for dual-life modules — there's often a good reason
why a particular file has no POD — but for single-life modules, this could
well indicate an issue.
In particular, commit effd17dc012719d584aa712c6c7bd5dc142885b6, as part of
rearranging the contents of lib/warnings.pm, inadvertently changed the
context of its "=head1 NAME" line so that it's no longer the start of a
paragraph. This had the effect of removing warnings.pm from perlmodlib; that
gap was pointed out by pink_mist++ on IRC.
The fix for that is trivial: add a blank in the appropriate place in
regen/warnings.pl, and regen.
The change to pod/perlmodlib.PL to die on missing "=head1 NAME" lines has
also yielded a second module (Config::Extensions) that was missing from
perlmodlib for the same reason; that's also fixed in this commit.
|
|
|
|
| |
This completes the process of upgrading to Unicode 11.0.
|
|
|
|
|
|
|
|
|
| |
Unicode 11 has some new data files needed for it, and some changes in
the boundary rules that need to be accounted for. This does all that
can be done without causing tests to fail. The LB algorithm has
changed, and tests would fail if we included the code changes needed for
that change in this commit. Instead those few lines will come as part
of the Unicode 11.0 commit.
|
| |
|
|
|
|
|
| |
By simply removing a special case, we can avoid having to work around it
later.
|
|
|
|
|
|
|
| |
I forgot that mktables (until told that things have been updated) makes
all failing boundary condition tests pass and hence I got confused.
It's a simple matter to remind the user that this is happening, to
prevent the confusion
|
|
|
|
| |
(including regen\opcode.pl)
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
This property is not normally compiled by perl, but an installation may
choose to use it. It was failing some tests because this is a special
property that is like a perl dual-var. It is both binary, and
non-binary, and commit 346f9bfbe12 forgot that.
|
|
|
|
|
|
|
| |
This adds a check that a new Unicode version doesn't create a rational
number that is too close to a current rational for our existing
floating point precision. Should this happen, we can increase the
precision we use.
|
|
|
|
| |
This adds tests for nv=integer, where 'integer' is expressed in %e.
|
|
|
|
|
|
|
|
| |
I thought this worked before, but it turns out it never did. This
commit allows the rational number specified in looking up the Numeric
Value property to not be in lowest possible terms. Unicode even
furnishes some of its data in non-lowest form, so we should accept
this.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The Numeric Value property allows one to find all code points that have
a certain numeric value. An example would be to match against any
character in any of the world's scripts which is effectively equivalent
to the digit zero.
It is documented that we accept either integers (like \p{nv=9}) or
rationals (like \p{nv=1/2}). But we also accept floating point
representations in case a conversion to numeric has happened. I think
it is right that we not document these and their vagaries. One reason
is that Unicode might someday create a new rational number that, to the
precision we currently accept, is indistinguishable from an existing
one, so that we would have to increase the precision.
But there was a bug I introduced years ago. I thought that in order for
a float to be considered to match a close rational, that 3 significant
digits of precision would be needed, like .667 to match 2/3. That still
seems reasonable. But I didn't implement that concept. Instead, prior
to this commit, it was 3 (not necessarily significant) digits, so that
for 1/160, it would match .001.
This commit corrects that, and makes the lookup simpler. mktables will
use sprintf %e to get the number normalized and having the 3 signicant
digits required. At runtime, a floating number is normalized using the
same format, and the result looked up in a hash. This eliminates the
need to worry about matching within some epsilon.
Further simplifications in utf8_heavy.pl are achieved by making a more
precise definition as to what an acceptable number looks like, so we
don't have to check later to see if what matched really was one.
|
|
|
|
|
|
|
| |
This is the third and final obsolete property that is being removed in 3
sequential commits. The property is not used in cpan, and is being
removed as part of the cleanup instigated because another of the 3 would
require extra code to handle if we were to keep it around.
|
|
|
|
|
|
|
|
|
|
|
|
| |
This property is no longer used in the core, nor in cpan, and is marked
as for core use only, not necessarily stable. I have kept it around
because it was work to remove it, but now the revamping of the property
lookup scheme was causing failures with a similar property, and the
previous commit removed that one.
There are just three of these properties, and I think it's time to
remove support for all three. The next commit will do the same for the
third one.
|
|
|
|
|
|
|
|
|
|
| |
This property is no longer used in the core, nor in cpan, and is marked
as for core use only, not necessarily stable. I have kept it around
because it was work to remove it, but now the revamping of the property
lookup scheme was causing failures with it, when compiling on early
Unicode releases. That could be fixed with extra work, but simply
removing it also fixes the problem and avoids future maintenance
costs.
|