This is a live mirror of the Perl 5 development currently hosted at
2 years agoregcomp.c: Simplify
Karl Williamson [Tue, 1 May 2018 22:42:29 +0000 (16:42 -0600)]
regcomp.c: Simplify

Under /a pattern matching, the matches of the [:posix:] classes are
restricted to the ASCII range.  Previously, in a time/space trade-off
that favored space, we created the list of matching characters at
pattern compilation time by ANDing the full-range Posix class with the
set of ASCII characters.

But now, the tables for just the ASCII-range classes are generated
anyway, so there's no need to do that compilation-time intersection.
This slightly simplifies the code.

2 years agomktables: Add guard against Unicode breakage
Karl Williamson [Tue, 1 May 2018 21:47:11 +0000 (15:47 -0600)]
mktables: Add guard against Unicode breakage

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.

2 years agoAdd tests for qr/\p{}/
Karl Williamson [Tue, 1 May 2018 21:24:19 +0000 (15:24 -0600)]
Add tests for qr/\p{}/

This adds tests for nv=integer, where 'integer' is expressed in %e.

2 years agoutf8.c: Handle qr!\p{nv=6/8}!
Karl Williamson [Tue, 1 May 2018 01:05:54 +0000 (19:05 -0600)]
utf8.c: Handle qr!\p{nv=6/8}!

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

2 years agoutf8.c: Use \p{nv=float}
Karl Williamson [Mon, 30 Apr 2018 16:39:46 +0000 (10:39 -0600)]
utf8.c: Use \p{nv=float}

Now that the float data is available to us (in the previous commit), we
can take advantage of it, and avoid swash creation.

We just use the perl atof() to convert the input string to an NV, and
then convert back to a string, but in guaranteed canonical form.  Then
we look that up.

2 years agoregen/ Add \p{nv=float} data
Karl Williamson [Thu, 26 Apr 2018 18:29:54 +0000 (12:29 -0600)]
regen/ Add \p{nv=float} data

The previous commit revised how nv=float is handled.  This commit adds
data for handling that to charclass_invlists.h, so that the next commit
can use that and avoid swash creation.

2 years agoRevise \p{nv=float} lookup
Karl Williamson [Mon, 30 Apr 2018 03:08:37 +0000 (21:08 -0600)]
Revise \p{nv=float} lookup

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 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.

2 years agoregen/ Add to list of props to keep together
Karl Williamson [Thu, 26 Apr 2018 03:18:59 +0000 (21:18 -0600)]
regen/ Add to list of props to keep together

Using the same idea as pp_hot.c, the Unicode properties actually used by
perl are attempted to be kept together so that paging in one is likely
to page in others.  A few were omitted prior to this commit.

2 years agoregen/ Create synonyms for perl props
Karl Williamson [Thu, 26 Apr 2018 08:08:53 +0000 (02:08 -0600)]
regen/ Create synonyms for perl props

This allows our code to not have to be so precise as to which alias for
a property it uses.

2 years agoregen/ Prefer certain property names
Karl Williamson [Thu, 26 Apr 2018 08:02:05 +0000 (02:02 -0600)]
regen/ Prefer certain property names

This sorts various properties to be first, so that there names will be
used instead of others.  This gives more stability to the core using
particular names: a new version of the Unicode standard is less likely
to come up with a different name, which, if it did, the core would have
to change to use it.

The preferred names are available in all Unicode versions

2 years agoregen/ Add comment
Karl Williamson [Thu, 26 Apr 2018 07:55:34 +0000 (01:55 -0600)]
regen/ Add comment

2 years agoregen/ Remove some unnecessary #if's
Karl Williamson [Thu, 26 Apr 2018 02:58:47 +0000 (20:58 -0600)]
regen/ Remove some unnecessary #if's

Things aren't actually getting switched here, so no need for them.

2 years agoregen/ Change die into warning
Karl Williamson [Wed, 25 Apr 2018 22:53:07 +0000 (16:53 -0600)]
regen/ Change die into warning

I found an instance in compiling early Unicode releases where this
circumstance is legitimate

2 years agoutf8.c: Use menominic variable name
Karl Williamson [Mon, 30 Apr 2018 16:06:14 +0000 (10:06 -0600)]
utf8.c: Use menominic variable name

2 years agoutf8.c: Fix typo in comment
Karl Williamson [Wed, 25 Apr 2018 22:51:22 +0000 (16:51 -0600)]
utf8.c: Fix typo in comment

2 years agoregen/ Slight speed up
Karl Williamson [Wed, 25 Apr 2018 22:36:09 +0000 (16:36 -0600)]
regen/ Slight speed up

Instead of checking each time if an element already exists in an array
before adding it, just add it, and afterwards remove all redundant ones.

2 years agoutf8.c: Use variable instead of repeating expression
Karl Williamson [Mon, 30 Apr 2018 03:14:48 +0000 (21:14 -0600)]
utf8.c: Use variable instead of repeating expression

Set a variable to the result of this expression which is used in
multiple places.

2 years agoRemove support for qr/\p{_CanonDCIJ}
Karl Williamson [Wed, 25 Apr 2018 22:20:50 +0000 (16:20 -0600)]
Remove support for qr/\p{_CanonDCIJ}

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.

2 years agoRemove support for qr/\p{_Comb_Above}/
Karl Williamson [Wed, 25 Apr 2018 20:21:04 +0000 (14:21 -0600)]
Remove support for qr/\p{_Comb_Above}/

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.

2 years agoRemove qr/\p{_Case_Ignorable}/
Karl Williamson [Wed, 25 Apr 2018 21:07:14 +0000 (15:07 -0600)]
Remove qr/\p{_Case_Ignorable}/

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

2 years agoqr/\p{...}/: Rmv redundant text from warning msg detail
Karl Williamson [Wed, 25 Apr 2018 19:27:34 +0000 (13:27 -0600)]
qr/\p{...}/: Rmv redundant text from warning msg detail

This text is emitted when compiling a pattern using a deprecated
property.  The text is added detail to the main text of the message
(which isn't changing), and is redundant because it just says it's
deprecated, and the main message already says that.

2 years agoUnicode::UCD: Avoid uninit message
Karl Williamson [Wed, 25 Apr 2018 18:49:19 +0000 (12:49 -0600)]
Unicode::UCD: Avoid uninit message

I found a case where this array can be empty, so add a test for that to
avoid trying to look at the first (non-existent) element.

2 years agoregen/ Add comment to generated code
Karl Williamson [Wed, 25 Apr 2018 04:02:21 +0000 (22:02 -0600)]
regen/ Add comment to generated code

That code is uni_keywords.h

2 years agoregen/ #if indent is 2 spaces
Karl Williamson [Fri, 20 Apr 2018 17:37:20 +0000 (11:37 -0600)]
regen/ #if indent is 2 spaces

It was instead making it 3,7,11...

2 years agoMake the SCX enums public
Karl Williamson [Fri, 20 Apr 2018 17:26:27 +0000 (11:26 -0600)]
Make the SCX enums public

These enums are scheduled to be used outside the files that they now are
defined in.

2 years agoregen/ Omit unnecessary #if's
Karl Williamson [Tue, 24 Apr 2018 23:46:03 +0000 (17:46 -0600)]
regen/ Omit unnecessary #if's

In places, #endifs were unconditionally added followed by the
same #ifdef they just ended.

2 years agoregen/ uni_keywords.c no longer exists
Karl Williamson [Fri, 20 Apr 2018 16:59:40 +0000 (10:59 -0600)]
regen/ uni_keywords.c no longer exists

So no need to do an #ifdef for it.

2 years agoregen/ depends on
Karl Williamson [Tue, 24 Apr 2018 23:00:13 +0000 (17:00 -0600)]
regen/ depends on

The previous 2 commits show that this script is subtly dependent on  Make that explicit.

2 years agoregen/ White-space only
Karl Williamson [Tue, 24 Apr 2018 22:55:40 +0000 (16:55 -0600)]
regen/ White-space only

Outdent code that had its surrounding block removed

2 years agoregen/ Revamp
Karl Williamson [Tue, 24 Apr 2018 22:47:58 +0000 (16:47 -0600)]
regen/ Revamp

The change in 5.28 to having precompiled Unicode properties leaves this
program with a chicken-and-egg problem.  Prior to this commit, it used
those properties to construct its output, relying on them to be using
the latest Unicode data, but the code that generates the tables from
that data uses the output of this program, with potentially disastrous

This commit changes to use the data itself, through Unicode::UCD.

2 years agoregen/ sort output table
Karl Williamson [Tue, 24 Apr 2018 21:30:05 +0000 (15:30 -0600)]
regen/ sort output table

This makes it easier to verify that future commits don't change

2 years agonumeric.c: White-space only
Karl Williamson [Tue, 1 May 2018 22:11:39 +0000 (16:11 -0600)]
numeric.c: White-space only

Outdent after the previous commit removed an enclosing block

2 years agogrok_atoUV: allow non-C strings and document
Karl Williamson [Tue, 1 May 2018 20:23:23 +0000 (14:23 -0600)]
grok_atoUV: allow non-C strings and document

This changes the internal function grok_atoUV() to not require its input
to be NUL-terminated.  That means the existing calls to it must be
changed to set the ending position before calling it, as some did

This function is recommended to use in a couple of pods, but it wasn't
documented in perlintern.  This commit does that as well.

2 years agoCreate my_atof3()
Karl Williamson [Mon, 30 Apr 2018 16:46:01 +0000 (10:46 -0600)]
Create my_atof3()

This is like my_atof2(), but with an extra argument signifying the
length of the input string to parse.  If that length is 0, it uses
strlen() to determine it.

Then my_atof2() just calls my_atof3() with a zero final parameter.
And this commit just uses the bulk of the current my_atof2() as the core
of my_atof3().  Changes were needed however, because it relied on
NUL-termination in a number of places.

This allows one to convert a string that isn't necessarily
NUL-terminated to an NV.

2 years agoembed.fnc: Fix my_atof2() entry
Karl Williamson [Mon, 30 Apr 2018 17:48:46 +0000 (11:48 -0600)]
embed.fnc: Fix my_atof2() entry

This was using the incorrect formal parameter name.  It did not generate
an error because the function declares a variable with the incorrect
name, so that this was actually asserting on the wrong thing.

2 years agoBump version to 5.29.0 and regenerate everything
Sawyer X [Sat, 23 Jun 2018 23:52:23 +0000 (01:52 +0200)]
Bump version to 5.29.0 and regenerate everything

2 years agonew perldelta for 5.29.0
Sawyer X [Sat, 23 Jun 2018 23:07:02 +0000 (01:07 +0200)]
new perldelta for 5.29.0

2 years agoAdd per5280delta.pod to MANIFEST
Sawyer X [Sat, 23 Jun 2018 02:19:08 +0000 (20:19 -0600)]
Add per5280delta.pod to MANIFEST

2 years agoUpdate release schedule
Sawyer X [Sat, 23 Jun 2018 02:13:37 +0000 (20:13 -0600)]
Update release schedule

2 years agoUpdate epigraph
Sawyer X [Sat, 23 Jun 2018 02:10:54 +0000 (20:10 -0600)]
Update epigraph

2 years agoRevise inclusion of name and email in Git history v5.28.0
Sawyer X [Fri, 22 Jun 2018 22:55:13 +0000 (16:55 -0600)]
Revise inclusion of name and email in Git history

2 years agotrailing spaces drive me nuts
Sawyer X [Fri, 22 Jun 2018 22:43:28 +0000 (16:43 -0600)]
trailing spaces drive me nuts

2 years agoadd new release to perlhist
Sawyer X [Fri, 22 Jun 2018 22:14:22 +0000 (16:14 -0600)]
add new release to perlhist

2 years agoUpdated perldelta
Sawyer X [Fri, 22 Jun 2018 22:00:12 +0000 (16:00 -0600)]
Updated perldelta

2 years agoBump Module-CoreList
Sawyer X [Fri, 22 Jun 2018 21:47:21 +0000 (15:47 -0600)]
Bump Module-CoreList

2 years agoNeed to add email address in Porting/
James E Keenan [Thu, 21 Jun 2018 02:22:50 +0000 (20:22 -0600)]
Need to add email address in Porting/

For author who requested removal from AUTHORS.

2 years agoClarify your name and email *will* appear in AUTHORS unless asked:
Sawyer X [Wed, 20 Jun 2018 20:50:18 +0000 (14:50 -0600)]
Clarify your name and email *will* appear in AUTHORS unless asked:

Neil Bowers and Andreas Koenig spotted that, based on GDPR, we should
clarify to people that their name and email will appear in AUTHORS when
submitting a patch and that it can be removed when asked.

Neil contributed the phrasing.

2 years agoRemoval from AUTHORS based on author's request
Sawyer X [Wed, 20 Jun 2018 20:46:25 +0000 (14:46 -0600)]
Removal from AUTHORS based on author's request

2 years agoFix lack of closing ] in link.
James E Keenan [Wed, 20 Jun 2018 16:43:12 +0000 (10:43 -0600)]
Fix lack of closing ] in link.

Per afresh1 on #p5p.

2 years agoDocumenting epigraph
Sawyer X [Tue, 19 Jun 2018 21:16:50 +0000 (15:16 -0600)]
Documenting epigraph

2 years agoUpdate META files
Sawyer X [Tue, 19 Jun 2018 21:15:04 +0000 (15:15 -0600)]
Update META files

2 years agodisarm RC4 bump
Sawyer X [Tue, 19 Jun 2018 20:51:28 +0000 (14:51 -0600)]
disarm RC4 bump

2 years agoUpdate META files v5.28.0-RC4
Sawyer X [Tue, 19 Jun 2018 17:12:28 +0000 (11:12 -0600)]
Update META files

2 years agobump version to RC4
Sawyer X [Tue, 19 Jun 2018 17:12:16 +0000 (11:12 -0600)]
bump version to RC4

2 years agoAdd new release to perlhist
Sawyer X [Tue, 19 Jun 2018 17:11:27 +0000 (11:11 -0600)]
Add new release to perlhist

2 years agoUpdate perldelta for Archive::Tar 2.30
Sawyer X [Tue, 19 Jun 2018 15:41:03 +0000 (09:41 -0600)]
Update perldelta for Archive::Tar 2.30

2 years agoMerge remote-tracking branch 'origin/smoke-me/jkeenan/archive-tar-2.30' into release...
Sawyer X [Tue, 19 Jun 2018 15:36:48 +0000 (09:36 -0600)]
Merge remote-tracking branch 'origin/smoke-me/jkeenan/archive-tar-2.30' into release-5.28.0-RC4

2 years agoBump Module::CoreList
Sawyer X [Tue, 19 Jun 2018 15:34:18 +0000 (09:34 -0600)]
Bump Module::CoreList

2 years agoAdding epigraph for v5.28.0-RC3
Sawyer X [Tue, 19 Jun 2018 15:06:35 +0000 (09:06 -0600)]
Adding epigraph for v5.28.0-RC3

2 years agoSynch with CPAN: Archive::Tar v2.30.
Chris 'BinGOs' Williams [Tue, 19 Jun 2018 14:31:16 +0000 (08:31 -0600)]
Synch with CPAN: Archive::Tar v2.30.

From upstream commit message:

"Skip white_space test on Windows

"Windows will report that 'white_space ' and 'white_space' both
exist, which is obviously a 'feature'"

2 years agoMerge branch 'blead' of ssh:// into blead
Sawyer X [Tue, 19 Jun 2018 03:43:16 +0000 (21:43 -0600)]
Merge branch 'blead' of ssh:// into blead

2 years agoUpdate META files
Sawyer X [Tue, 19 Jun 2018 03:42:22 +0000 (21:42 -0600)]
Update META files

2 years agoStorable: check PERL_TEST_MEMORY before trying to allocate 2GB of memory
Tony Cook [Thu, 24 May 2018 05:07:00 +0000 (15:07 +1000)]
Storable: check PERL_TEST_MEMORY before trying to allocate 2GB of memory

2 years agodisarm RC3 bump
Sawyer X [Mon, 18 Jun 2018 22:48:29 +0000 (16:48 -0600)]
disarm RC3 bump

2 years agobump in perldelta too v5.28.0-RC3
Sawyer X [Mon, 18 Jun 2018 21:08:10 +0000 (15:08 -0600)]
bump in perldelta too

2 years agoBump Module::CoreList
Sawyer X [Mon, 18 Jun 2018 21:06:28 +0000 (15:06 -0600)]
Bump Module::CoreList

2 years agoUpdate META files
Sawyer X [Mon, 18 Jun 2018 20:29:38 +0000 (14:29 -0600)]
Update META files

2 years agobump version to RC3
Sawyer X [Mon, 18 Jun 2018 20:29:15 +0000 (14:29 -0600)]
bump version to RC3

2 years agoadd new release to perlhist
Sawyer X [Mon, 18 Jun 2018 20:28:38 +0000 (14:28 -0600)]
add new release to perlhist

2 years agoAdd last comment to perldelta
Sawyer X [Mon, 18 Jun 2018 20:07:58 +0000 (14:07 -0600)]
Add last comment to perldelta

2 years agoUpdate Module::CoreList for 5.28.0-RC3
Sawyer X [Mon, 18 Jun 2018 17:46:07 +0000 (11:46 -0600)]
Update Module::CoreList for 5.28.0-RC3

2 years agoUpdate epigraph
Sawyer X [Wed, 6 Jun 2018 22:09:30 +0000 (00:09 +0200)]
Update epigraph

2 years agobump entry for Archive-Tar
David Mitchell [Mon, 18 Jun 2018 13:29:09 +0000 (14:29 +0100)]
bump entry for Archive-Tar

2.26 -> 2.28 after recent pull.

2 years agoperldelta headings without full stops
Smylers [Thu, 7 Jun 2018 15:26:12 +0000 (16:26 +0100)]
perldelta headings without full stops

Most of the headings don't end with full stops (even when they are
complete sentences), so remove the full stops from the few that do, so
they all follow the same style

2 years agoClarify that /({...)/ is deprecated
Smylers [Thu, 7 Jun 2018 15:21:11 +0000 (16:21 +0100)]
Clarify that /({...)/ is deprecated

Previously this was just a noun phrase, describing the thing that is
deprecated. Turn that into a statement, explicitly saying it is

Admittedly, the noun phrase is in a section headed ‘Deprecations’, but
some of the items in the list are about changes to deprecations, and
everything else in the list is a full sentence, so make this be one too.

2 years agoDocument delete %hash{key} return value
Smylers [Thu, 7 Jun 2018 15:17:33 +0000 (16:17 +0100)]
Document delete %hash{key} return value

cc0776d64 introduced delete on key-value hash slices. That intuitively
returns a list of key- value pairs, which is two elements per specified
hash key. Update the docs to reflect this.

2 years agoPod fix: Escape / inside L</>
Smylers [Thu, 7 Jun 2018 15:06:28 +0000 (16:06 +0100)]
Pod fix: Escape / inside L</>

When linking to a section name that contains a literal slash, podchecker

In practice this isn't ambiguous (the first slash separates the page name
from the section name, and everything after that, including subsequent
slashes, must be the section name) and the link was working on MetaCpan.
But since podcheck complains, it seems safer to fix this.

2 years agoClarify key-value slices are of hashes
Smylers [Thu, 7 Jun 2018 15:05:40 +0000 (16:05 +0100)]
Clarify key-value slices are of hashes

For somebody reading the perldelta without context, make it clear that the
‘key/value’ slices that are mentioned are hash slices, with a link to
their documentation.

2 years agoUpdate Archive-Tar to CPAN version 2.28
David Mitchell [Mon, 18 Jun 2018 13:00:04 +0000 (14:00 +0100)]
Update Archive-Tar to CPAN version 2.28


+- fix creating file with trailing whitespace on filename - fixes 103279
+- allow archiving with absolute pathnames - fixes 97748
+- small POD fix
+- Speed up extract when archive contains lots of files
+- CVE-2018-12015 directory traversal vulnerability [RT#125523]

2 years agorun Porting/makemeta
David Mitchell [Wed, 6 Jun 2018 19:23:11 +0000 (20:23 +0100)]
run Porting/makemeta

Don't know why this needs doing, but t/porting/regen.t was failing:

not ok - Porting/makemeta META.json

and this seems to fix it.

2 years agodisarm RC2 bump
Sawyer X [Wed, 6 Jun 2018 12:35:11 +0000 (15:35 +0300)]
disarm RC2 bump

2 years agobump date v5.28.0-RC2
Sawyer X [Wed, 6 Jun 2018 06:24:34 +0000 (09:24 +0300)]
bump date

2 years agoRegen acknowledgement
Sawyer X [Wed, 6 Jun 2018 06:24:05 +0000 (09:24 +0300)]
Regen acknowledgement

2 years agoProperly bump Module::CoreList
Sawyer X [Wed, 6 Jun 2018 06:14:07 +0000 (09:14 +0300)]
Properly bump Module::CoreList

2 years agoCorrect date of release
Sawyer X [Wed, 6 Jun 2018 06:08:10 +0000 (09:08 +0300)]
Correct date of release

2 years agoBump again
Sawyer X [Wed, 6 Jun 2018 06:07:13 +0000 (09:07 +0300)]
Bump again

2 years agoFix new version in perlhist
Sawyer X [Tue, 5 Jun 2018 20:10:42 +0000 (23:10 +0300)]
Fix new version in perlhist

2 years agofix version numbers in perldelta's description
Vitali Peil [Tue, 5 Jun 2018 05:51:13 +0000 (07:51 +0200)]
fix version numbers in perldelta's description

2 years agoUpdate Module::CoreList for 5.28.0-RC2
Sawyer X [Tue, 5 Jun 2018 17:00:50 +0000 (20:00 +0300)]
Update Module::CoreList for 5.28.0-RC2

2 years agoUpdate META files
Sawyer X [Sat, 26 May 2018 14:10:13 +0000 (17:10 +0300)]
Update META files

2 years agobump version to RC2
Sawyer X [Sat, 26 May 2018 14:09:48 +0000 (17:09 +0300)]
bump version to RC2

2 years agoadd new release to perlhist
Sawyer X [Sat, 26 May 2018 14:05:43 +0000 (17:05 +0300)]
add new release to perlhist

2 years agoperldelta tweaks
David Mitchell [Tue, 29 May 2018 12:17:58 +0000 (13:17 +0100)]
perldelta tweaks

Improve some descriptions, eliminate some entries for changes which were
later reverted or for bugs which only appeared and were fixed within the
5.27.x development cycle; and wrap some long lines.

2 years agomore link to RT
SHIRAKATA Kentaro [Thu, 24 May 2018 19:49:16 +0000 (04:49 +0900)]
more link to RT

2 years agorevert perl_run() 0 -> 256 return mapping
David Mitchell [Mon, 28 May 2018 14:54:57 +0000 (15:54 +0100)]
revert perl_run() 0 -> 256 return mapping

RT #133220

This commit partially reverts v5.27.6-180-g0301e89953.

That commit changed the return values of perl_parse() and perl_run()
so that an exit(0) wouldn't return 0 (which indicates a normal finish)
and instead return 0x100, which a indicates non-normal return, but with
a value which if used as an 8-bit process exit value on UNIX, has the
modulo value of 0.

However, it turns out that perl_run() (via S_run_body()) does a my_exit(0)
rather than just running to completion. So it turns out that it's not
possible to distinguish between perl code finishing normally, and perl
code doing exit(0).

This broke code which embedded perl and expected perl_run() to return 0
on normal completion.

It may be possible to fix this by getting S_run_body() to not call
my_exit(0), but that's too unpredictable change while we're at -RC1.

So just revert the new perl_run() 0x100 behaviour for now.

2 years agoExcessively long line made t/porting/podcheck.t unhappy.
James E Keenan [Thu, 24 May 2018 19:42:35 +0000 (15:42 -0400)]
Excessively long line made t/porting/podcheck.t unhappy.

2 years agoUpdate information on which gcc versions are supported on Windows
Steve Hay [Thu, 24 May 2018 12:37:04 +0000 (13:37 +0100)]
Update information on which gcc versions are supported on Windows

See [perl #128631] (MinGW with runtimes >= 3.21 currently don't work) and
[perl #132955] (MinGW 3.4.5 and 4.7.2+ and MinGW64 x64 6.3.0+ currently
don't work in C++ mode).

2 years agofix Mingw GCC C++ build errors PL_inf/PL_nan
Daniel Dragan [Tue, 24 Apr 2018 18:12:46 +0000 (14:12 -0400)]
fix Mingw GCC C++ build errors PL_inf/PL_nan

Trying a USE_CPLUSPLUS=define build with dmake (USE_CPLUSPLUS not
implemented in GNUMakefile) causes the following error

gcc -c -xc++ -I.\include -I. -I.. -DWIN32 -DPERLDLL -DPERL_CORE -s -O2 -fwrapv -
fno-strict-aliasing -DPERL_EXTERNAL_GLOB -DPERL_IS_MINIPERL -omini\globals.o  ..
In file included from ..\globals.c:32:0:
..\perl.h:6754:50: error: too many initializers for 'U8 [8] {aka unsigned char [
..\perl.h:6790:50: error: too many initializers for 'U8 [8] {aka unsigned char [
dmake:  Error code 129, while making 'mini\globals.o'
in plain C mode builds, this error was just a warning and nobody paid
attention to it for a while
gcc -c  -I.\include -I. -I.. -DWIN32 -DPERLDLL -DPERL_CORE -s -O2 -fwrapv -fno-s
trict-aliasing -DPERL_EXTERNAL_GLOB -DPERL_IS_MINIPERL -omini\globals.o  ..\glob
In file included from ..\globals.c:32:0:
..\perl.h:5432:42: warning: excess elements in array initializer
 #define INFNAN_U8_NV_DECL EXTCONST union { U8 u8[NVSIZE]; NV nv; }
..\perl.h:6754:1: note: in expansion of macro 'INFNAN_U8_NV_DECL'
..\perl.h:5432:42: warning: (near initialization for 'PL_inf.u8')
 #define INFNAN_U8_NV_DECL EXTCONST union { U8 u8[NVSIZE]; NV nv; }
..\perl.h:6754:1: note: in expansion of macro 'INFNAN_U8_NV_DECL'
..\perl.h:5432:42: warning: excess elements in array initializer
 #define INFNAN_U8_NV_DECL EXTCONST union { U8 u8[NVSIZE]; NV nv; }

Now on VC C++ build, LONGDBLINFBYTES is 8 bytes, as defined in
LONGDBLINFBYTES macro in, and for VC, "long double" is always
typedefed by the CC to "double", so there was no warning, but on GCC,
"long double" is the 80 bit/10 byte type and in config_H.gc the 12 byte
version of INF is inside LONGDBLINFBYTES macro. Because LONG_DOUBLESIZE
define was previously "8" because of makefile logic regardless of CC,


was being hit on GCC, even though NVSIZE is 8 as it should be, but
LONGDBLINFBYTES was 12. Hence the warning. I didnt research why this
warning on GCC didn't cause test failures. Perhaps full perl recomputes
the correct initializer in config_sh.PL and doesn't rely on what was in the
miniperl initializer for PL_inf.

To fix things, always emit the correct value for LONG_DOUBLESIZE and dont
hardcode it at 8 for miniperl. 8 must stay for all VCs, and 12/16 is for
GCC. Although GNUMakefile doesn't support a USE_CPLUSPLUS build option,
it has provisons to support it one day. To keep things in sync, copy
miniperl config.h append changes from to GNUMakefile. Also
collapse 2 shell cmd lines in "ifeq ($(USE_LONG_DOUBLE),define)" to reduce
number of proc launches of cmd.exe by the maketool (perf issue).

Next C++ build issue.

APItest.xs: In function 'void XS_XS__APItest__Backrefs_Comctl32Version(Perl
Interpreter*, CV*)':
APItest.xs:6806:37: error: cast from 'LPSTR {aka char*}' to 'WORD {aka shor
t unsigned int}' loses precision [-fpermissive]
dmake:  Error code 129, while making 'APItest.o'

VS_FILE_INFO is internally "RT_VERSION" which is MAKEINTRESOURCE(16). The
output type of MAKEINTRESOURCE is a char *. GCC complains about casting
that char * back down to a WORD (aka short). Put in a size_t used for
pointer arithimitic to silence the error. Another option is to
remove the outer MAKEINTRESOURCE in APItest.xs since RT_VERSION has
MAKEINTRESOURCE internally, but that assumes implementation details of
headers so pick the less dependency on header design option.

2 years agoAdd link to release for epigraph
Sawyer X [Wed, 23 May 2018 13:47:46 +0000 (16:47 +0300)]
Add link to release for epigraph

2 years agoperldelta: Clarify we refer to perl -i in in-place editing
Sawyer X [Wed, 23 May 2018 13:37:37 +0000 (16:37 +0300)]
perldelta: Clarify we refer to perl -i in in-place editing