This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perl5.git
2 years agoUnicode::UCD: Don't depend on a file current syntax
Karl Williamson [Sat, 21 Aug 2021 15:44:37 +0000 (09:44 -0600)]
Unicode::UCD: Don't depend on a file current syntax

This generated file will be changed in a future commit.  This shouldn't
have been relying on its syntax anyway, but the value it returns.

2 years agoUCD.t: Add test
Karl Williamson [Sat, 21 Aug 2021 15:42:34 +0000 (09:42 -0600)]
UCD.t: Add test

2 years agoUnicode::UCD: Fix typo in pod
Karl Williamson [Sat, 28 Aug 2021 01:41:47 +0000 (19:41 -0600)]
Unicode::UCD: Fix typo in pod

2 years agodetect struct stat.st_dev's size and signedness, and return it safely
Tony Cook [Fri, 9 Jul 2021 00:22:40 +0000 (10:22 +1000)]
detect struct stat.st_dev's size and signedness, and return it safely

On FreeBSD dev_t (and hence the st_dev member of struct stat) is an
unsigned 64-bit integer, and the previous simple PUSHi() corrupted
that.

A previous version of this reflected the st_ino code and implemented
our own number to string conversion, but a system with such a large
st_dev should be assumed to have inttypes.h, and an intmax_t which is
no smaller than st_dev.

The st_ino code could probably be changed similarly, but 64-bit inode
numbers are not a new thing, so it may be riskier.

2 years agoRemove deprecated Unicode files
Karl Williamson [Fri, 27 Aug 2021 12:48:01 +0000 (06:48 -0600)]
Remove deprecated Unicode files

These files were once apparently intended for use by modules to
supplement the core Unicode handling.  They contain tables suitable for
use by Perl code of the portions of the Unicode character database
about changing the case of characters and finding the numeric value of a
given \d character, in a form suitable for use by perl code.  In
particular, they were designed for fast access using the swash mechanism
that has since been removed.

Now, Unicode::UCD now contains more convenient methods of accessing
the data these contain, and the use of these files has been deprecated
since 5.16.  I could not figure out a way to force a message should
someone open and read one of these files, but each of their texts say
that the file may be removed without notice at any time.  I did not find
any uses on cpan of them.

Unicode is adding new properties that the format of these files will
not be able to handle.  Consequently I'm coming up with a new format.
Though these files don't contain the new properties, their existence
means having the burden of having to maintain two separate mechanisms.
Better to have just one mechanism, suitable for going forward.

2 years agoReword discussion of /d regexp modifier.
Felipe Gasper [Fri, 27 Aug 2021 20:05:45 +0000 (16:05 -0400)]
Reword discussion of /d regexp modifier.

The phrasing as it stood confused UTF8-flagged strings with
“UTF-8 encoded”. The latter term should refer to strings that the
Perl application has actually encode()d, which probably *won’t*
be UTF8-flagged and thus won’t, per /d modifier rules, get the Unicode
treatment.

This also removes an incorrect statement about only ASCII characters
matching in the absence of (the UTF8 flag). This is trivially false
given that "\xff" =~ /\xff/ is truthy.

This also reorders and rewords some parts in an attempt to clarify that
new code should avoid this flag, including use of the 'unicode_strings'
feature to avoid implicit use.

2 years agoRelease Storable 3.25
Nicholas Clark [Mon, 30 Aug 2021 08:03:51 +0000 (08:03 +0000)]
Release Storable 3.25

2 years agoUpdate Storable's ChangeLog.
Nicholas Clark [Wed, 25 Aug 2021 08:09:48 +0000 (08:09 +0000)]
Update Storable's ChangeLog.

There hasn't been a CPAN release for a couple of years, and so it hasn't
been kept up to date.

2 years agostore_hentry() now takes the key as HEK *, instead of the entry's HE *.
Nicholas Clark [Sat, 17 Jul 2021 20:01:59 +0000 (20:01 +0000)]
store_hentry() now takes the key as HEK *, instead of the entry's HE *.

The only action it took on the HE * it was passed was to call HeKEY_key()
to get the key (directly, or indirectly via HeKEY_sv()), so this change
removes one dependency on HE*.

2 years agoFix a bug in the recursion depth check in store_lhash().
Nicholas Clark [Mon, 19 Jul 2021 07:41:46 +0000 (07:41 +0000)]
Fix a bug in the recursion depth check in store_lhash().

The recursion depth check was not being cleaned up correctly, causing an
assertion failure in testing. This suggests that this routine likely wasn't
well tested.

2 years agoMove the call to hv_iterval() out of store_hentry().
Nicholas Clark [Sat, 17 Jul 2021 15:44:13 +0000 (15:44 +0000)]
Move the call to hv_iterval() out of store_hentry().

Previously the regular hash store code had been calling hv_iterval() twice
for each hash entry. This probably isn't going to generate incorrect results,
but is inefficient. This performance regression was added as part of commit
1cb8a344aa3ff4a6:
    Storable 3.00: u64 strings, arrays and hashes >2G

2 years agoRefactor Storable's store_lhash() to remove some code duplication.
Nicholas Clark [Sat, 17 Jul 2021 15:03:59 +0000 (15:03 +0000)]
Refactor Storable's store_lhash() to remove some code duplication.

2 years agoRemove code in Storable.xs "commented" out with #if 0
Nicholas Clark [Sat, 17 Jul 2021 14:49:06 +0000 (14:49 +0000)]
Remove code in Storable.xs "commented" out with #if 0

This code was "moved" to store_hentry() as part of commit 1cb8a344aa3ff4a6:
    Storable 3.00: u64 strings, arrays and hashes >2G

    ...

Propagate two comments within the code removed into store_hentry(), where
they are still relevant.

2 years agoStorable doesn't actually #include ppport.h on blead, so don't generate it.
Nicholas Clark [Tue, 25 May 2021 05:52:42 +0000 (05:52 +0000)]
Storable doesn't actually #include ppport.h on blead, so don't generate it.

The header is conditionally included for 5.10.1 or earlier, so don't go to
the effort of copying the file into the directory.

2 years agoppport.h now provides SvPVCLEAR, so no need to roll our own emulation.
Nicholas Clark [Wed, 28 Jul 2021 14:41:07 +0000 (14:41 +0000)]
ppport.h now provides SvPVCLEAR, so no need to roll our own emulation.

2 years agoRemove code in Storable that isn't actually needed for v5.6.1 or later.
Nicholas Clark [Tue, 25 May 2021 05:21:37 +0000 (05:21 +0000)]
Remove code in Storable that isn't actually needed for v5.6.1 or later.

The definitions inside USE_PERLIO,PERLIO_IS_STDIO are for pre-5.004
HvSHAREKEYS_off has been defined since 5.004
SvUTF8_on has been defined since v5.6.0
bytes_from_utf8 is defined since v5.6.1 (so the linker will be happy)
(but SvUTF8(key) will always be false prior to v5.8.0, so we now generate
some unreachable code for v5.6.1 and v5.6.2. Probably zero users of this.)

2 years agoRemove code in Storable's tests that handles perl < v5.6.1
Nicholas Clark [Mon, 24 May 2021 19:29:24 +0000 (19:29 +0000)]
Remove code in Storable's tests that handles perl < v5.6.1

2 years agoStorable implicitly needs >= v5.6.1, so remove code for earlier versions.
Nicholas Clark [Mon, 24 May 2021 18:51:45 +0000 (18:51 +0000)]
Storable implicitly needs >= v5.6.1, so remove code for earlier versions.

The perl code has 3-arg open and our, meaning at least v5.6.0, but the XS
code needs bytes_from_utf8 which is only in v5.6.1 and not in ppport.h

2 years agoTest that mg_copy is called only when expected. 19089/head
Nicholas Clark [Fri, 27 Aug 2021 13:38:17 +0000 (13:38 +0000)]
Test that mg_copy is called only when expected.

mg_copy is called for most operations on tied hashes, but not for `keys`.
This is externally observable behaviour, and Variable::Magic on CPAN has
a regression test that expects the current behaviour.

However, until this commit we had no tests in core that verified that the
current behaviour has not changed. Hence this new test.

Add the `static` keyword that was missing on several related variables and
functions in APItest.xs

2 years agoUnicode tests should be in XS::APItest, not XS::APItest::Magic.
Nicholas Clark [Fri, 27 Aug 2021 11:48:41 +0000 (11:48 +0000)]
Unicode tests should be in XS::APItest, not XS::APItest::Magic.

Add a `PACKAGE =` line to reset xsubpp's idea of the current package.

This didn't actually matter, as XS::APItest "imports" all symbols from its
subpackages into the top level package, but it seems cleaner to have the
symbols in the correct package. It also makes the generated code slightly
smaller, but this doesn't really matter as it's never installed.

Remove two #if/#endif pairs related to 5.8.x/5.9.x differences, that haven't
been need for over a decade, and fix a typo in an #endif.

2 years agoMove the tied hash FETCH count tests to t/op/tiehash.t
Nicholas Clark [Wed, 18 Aug 2021 07:45:10 +0000 (07:45 +0000)]
Move the tied hash FETCH count tests to t/op/tiehash.t

This file is a better fit for them than t/op/tie.t

2 years agoav.h: more apidoc tweaks
Richard Leach [Mon, 23 Aug 2021 22:24:01 +0000 (23:24 +0100)]
av.h: more apidoc tweaks

2 years agoav.h: apidoc updates for khw comments
Richard Leach [Thu, 19 Aug 2021 21:19:10 +0000 (22:19 +0100)]
av.h: apidoc updates for khw comments

2 years agoav.h - addressing comments
Richard Leach [Fri, 13 Aug 2021 21:50:38 +0000 (22:50 +0100)]
av.h - addressing comments

2 years agoav.h - better document newAV_alloc_x/newAV_alloc_xz
Richard Leach [Sun, 8 Aug 2021 20:53:33 +0000 (21:53 +0100)]
av.h - better document newAV_alloc_x/newAV_alloc_xz

2 years agoav.h: document that backrefs lists are fake AVs
Richard Leach [Mon, 23 Aug 2021 22:14:04 +0000 (23:14 +0100)]
av.h: document that backrefs lists are fake AVs

2 years agoav.h: additional comments regarding real/fake AVs
Richard Leach [Thu, 19 Aug 2021 22:00:01 +0000 (23:00 +0100)]
av.h: additional comments regarding real/fake AVs

2 years agoDelete the macro XHvTOTALKEYS() which is unused and not in the API.
Nicholas Clark [Thu, 26 Aug 2021 10:34:59 +0000 (10:34 +0000)]
Delete the macro XHvTOTALKEYS() which is unused and not in the API.

XHvTOTALKEYS() was added in Dec 2001 as part of commit 8aacddc1ea3837f8:
    Tidied version of Jeffrey Friedl's <jfriedl@yahoo.com> restricted hashes
     - added delete of READONLY value inhibit & test for same
     - re-tabbed

It's not part of the API, and not used by any code on CPAN. The last (and
only) direct use was in Perl_hv_clear_placeholders(), and that was converted
to HvTOTALKEYS() in May 2005 as part of commit 5d88ecd7e75b7174:

    Various HvPLACEHOLDERS() that should be HvPLACEHOLDERS_get()

Hence "inline" the macro XHvTOTALKEYS() into the macro HvTOTALKEYS(),
eliminating the only use of XHvTOTALKEYS().

2 years agoChange HvUSEDKEYS(hv) to HvTOTALKEYS(hv) in Perl_do_sv_dump(). 19083/head
Nicholas Clark [Tue, 27 Jul 2021 15:45:24 +0000 (15:45 +0000)]
Change HvUSEDKEYS(hv) to HvTOTALKEYS(hv) in Perl_do_sv_dump().

The logic doesn't account for skipping placeholders, and the calculations
actually make more sense when done in terms of total keys.

2 years agoUse newRV_inc() in threads::shared instead of direct juggling with SvRV_set()
Paul "LeoNerd" Evans [Sun, 22 Aug 2021 21:11:17 +0000 (22:11 +0100)]
Use newRV_inc() in threads::shared instead of direct juggling with SvRV_set()

2 years agoUse new sv_setrv_noinc() in Devel::Peek
Paul "LeoNerd" Evans [Sun, 22 Aug 2021 21:14:36 +0000 (22:14 +0100)]
Use new sv_setrv_noinc() in Devel::Peek

2 years agoConvert some existing uses of SvRV_set() to use the new sv_setrv* family of functions
Paul "LeoNerd" Evans [Sun, 22 Aug 2021 20:51:13 +0000 (21:51 +0100)]
Convert some existing uses of SvRV_set() to use the new sv_setrv* family of functions

2 years agoAdd _mg() versions of the sv_setrv* family
Paul "LeoNerd" Evans [Sun, 22 Aug 2021 20:37:43 +0000 (21:37 +0100)]
Add _mg() versions of the sv_setrv* family

2 years agoAdd sv_setrv_inc()
Paul "LeoNerd" Evans [Sun, 22 Aug 2021 18:42:15 +0000 (19:42 +0100)]
Add sv_setrv_inc()

2 years agoAdd sv_setrv_noinc()
Paul "LeoNerd" Evans [Sun, 22 Aug 2021 17:58:17 +0000 (18:58 +0100)]
Add sv_setrv_noinc()

2 years agopodcheck db: exporter fixed pod problem
Karl Williamson [Wed, 25 Aug 2021 17:15:33 +0000 (11:15 -0600)]
podcheck db: exporter fixed pod problem

2 years agohandy.h: Skip non-ptr assertion on old gcc's
Karl Williamson [Thu, 15 Apr 2021 18:02:04 +0000 (12:02 -0600)]
handy.h: Skip non-ptr assertion on old gcc's

See https://github.com/Perl/perl5/issues/18655, which this fixes.

2 years agoMake paradigm into a macro
Karl Williamson [Thu, 15 Apr 2021 16:55:32 +0000 (10:55 -0600)]
Make paradigm into a macro

These macros use

    (x) | 0

to get a compiler error if x is a pointer rather than a value.  This was
instituted because there was confusion in them as to what they were
called with.

But the purpose of the paradigm wasn't obvious to even some experts; it
was documented in every file in which it was used, but not at every
occurrence.  And, not every compiler can cope with them, it turns out.

Making the paradigm into a macro, which this commit does, makes the uses
self-documenting, albeit at the expense of cluttering up the macro
definition somewhat; and allows the mechanism to be turned off if
necessary for some compilers.  Since it will be enabled for the majority
of compilers, the potential bugs will be caught anyway.

2 years agoCreate `defer` syntax and `OP_PUSHDEFER` opcode
Paul "LeoNerd" Evans [Tue, 27 Jul 2021 13:55:14 +0000 (14:55 +0100)]
Create `defer` syntax and `OP_PUSHDEFER` opcode

Adds syntax `defer { BLOCK }` to create a deferred block; code that is
deferred until the scope exits. This syntax is guarded by

  use feature 'defer';

Adds a new opcode, `OP_PUSHDEFER`, which is a LOGOP whose `op_other` field
gives the start of an optree to be deferred until scope exit. That op
pointer will be stored on the save stack and invoked as part of scope
unwind.

Included is support for `B::Deparse` to deparse the optree back into
syntax.

2 years agoAdd comment about hard-coded commit ID in cmpVERSION.pl
Dagfinn Ilmari Mannsåker [Wed, 25 Aug 2021 11:12:32 +0000 (12:12 +0100)]
Add comment about hard-coded commit ID in cmpVERSION.pl

2 years agocmpVERSION.pl and test.pl now handle checkouts from git-worktree. 19082/head
Nicholas Clark [Wed, 25 Aug 2021 07:44:49 +0000 (07:44 +0000)]
cmpVERSION.pl and test.pl now handle checkouts from git-worktree.

2 years agopp_tie should completely reset the underlying hash's iterator state.
Nicholas Clark [Mon, 23 Aug 2021 15:48:49 +0000 (15:48 +0000)]
pp_tie should completely reset the underlying hash's iterator state.

Previously it would mangle it, resetting EITER but not RITER, meaning that
after untie continuing iteration would be inconsistent - normally it would
carry on exactly where it left off, but if iteration had been in the middle
of a chain of HEs, it would skip the rest of the chain.

Fixes GH #19077

2 years agoTests for tied hashes using test.pl
Nicholas Clark [Mon, 23 Aug 2021 15:07:39 +0000 (15:07 +0000)]
Tests for tied hashes using test.pl

t/op/tie.t uses run_multiple_progs() to run each test in an individual perl
interpreter. This is robust, but slow and doesn't give much flexibility in
test diagnostics.

Hence this test file, for test cases that can safely run in the same
interpreter, and where we'd can use like() etc for better diagnostics.

2 years agoDon't call HvHASKFLAGS_on() in S_hv_delete_common(). 19080/head
Nicholas Clark [Mon, 26 Jul 2021 13:10:30 +0000 (13:10 +0000)]
Don't call HvHASKFLAGS_on() in S_hv_delete_common().

We're not changing any keys on the hash, so if it didn't have any keys with
flags before the delete, it won't have any afterwards either.

I added this line in Nov 2003 as part of commit cd6d36ac47e47079:
    Move the negative key -> utf8 flag conversion out to hv_delete

I don't think that it was correct then, and I don't think that it's correct
now.

2 years agopp_tie should use HvEITER_get() instead of HvEITER(). 19079/head
Nicholas Clark [Sat, 31 Jul 2021 08:11:27 +0000 (08:11 +0000)]
pp_tie should use HvEITER_get() instead of HvEITER().

The former doesn't make a function call.

2 years agoAdd /^vgcore.*/ to the list of podcheck.t filename exclusions.
Nicholas Clark [Sun, 1 Aug 2021 09:01:44 +0000 (09:01 +0000)]
Add /^vgcore.*/ to the list of podcheck.t filename exclusions.

Regularly named core files were in the list, but valgrind's variant were not.

2 years agoDisplay the completion ETA once we've done at least 20%
Paul "LeoNerd" Evans [Sun, 22 Aug 2021 16:39:26 +0000 (17:39 +0100)]
Display the completion ETA once we've done at least 20%

2 years agoPrint count of done vs. total tests and percentage from Porting/bench.pl
Paul "LeoNerd" Evans [Sun, 22 Aug 2021 14:41:46 +0000 (15:41 +0100)]
Print count of done vs. total tests and percentage from Porting/bench.pl

2 years agoop.h: define missing BASEOP fields (op_sibparent,op_targ)
Richard Leach [Sun, 25 Apr 2021 20:00:43 +0000 (21:00 +0100)]
op.h: define missing BASEOP fields (op_sibparent,op_targ)

2 years agosv.c: Removed a redundant SvNV_nomg call in sv_vcatpvfn_flags.
TAKAI Kousuke [Thu, 19 Aug 2021 17:37:22 +0000 (02:37 +0900)]
sv.c: Removed a redundant SvNV_nomg call in sv_vcatpvfn_flags.

SvNV_nomg(argsv) is redundant here because its NV is already loaded
to the local variable "nv".

2 years agoExporter: Document non-inheriting as default mechanism
Dan Book [Thu, 19 Aug 2021 15:52:27 +0000 (11:52 -0400)]
Exporter: Document non-inheriting as default mechanism

2 years agoutf8.c: Make new static fcn more flexible 19055/head
Karl Williamson [Mon, 10 May 2021 16:41:28 +0000 (10:41 -0600)]
utf8.c: Make new static fcn more flexible

This commit allows this function to be called with NULL parameters when
the result of these is not needed.

2 years agoutf8.c: White-space, comment only
Karl Williamson [Mon, 16 Aug 2021 02:22:44 +0000 (20:22 -0600)]
utf8.c: White-space, comment only

2 years agoutf8.c: Rmv no longer needed speed-up code
Karl Williamson [Sun, 9 May 2021 21:46:01 +0000 (15:46 -0600)]
utf8.c: Rmv no longer needed speed-up code

The code this commit removes made sense when we were using swashes, and
we had to go out to files on disk to find the answers.  It used
knowledge of the Unicode character database to skip swaths of scripts
which are caseless.

But now, all that information is stored in C arrays that will be paged
in when accessed, which is done by a binary search.  The information
about those swaths is in those arrays.  The conditionals removed here
are better spent in executing iterations of the search in L1 cache.

2 years agoutf8.c: Split a static fcn
Karl Williamson [Sun, 9 May 2021 21:14:11 +0000 (15:14 -0600)]
utf8.c: Split a static fcn

This adds a new function for changing the case of an input code point.
The difference between this and the existing function is that the new
one returns an array of UVs instead of a combination of the first code
point and UTF-8 of the whole thing, a somewhat awkward API that made
more sense when we used swashes.  That function is retained for now, at
least, but most of the work is done in the new function.

2 years agoutf8.c: Use porcelain libc case changing fcn
Karl Williamson [Fri, 14 May 2021 14:53:56 +0000 (08:53 -0600)]
utf8.c: Use porcelain libc case changing fcn

The fancy wrapper macro that does extra things was being used, when all
that is needed is the bare libc function.  This is because the code
calling it already wraps it, so avoids calling it unless the bare
version is what is appropriate.

2 years agoregexec.c: White-space/comment only 19056/head
Karl Williamson [Mon, 16 Aug 2021 11:22:54 +0000 (05:22 -0600)]
regexec.c: White-space/comment only

2 years agoregexec.c: regrepeat() switch() on target utf8ness
Karl Williamson [Thu, 6 May 2021 16:55:48 +0000 (10:55 -0600)]
regexec.c: regrepeat() switch() on target utf8ness

Many of the cases in the main switch() statement in regrepeat() begin
with

    if (utf8_target)

or similar.  These branches can be saved, and the code easier to
understand by including the utf8ness in the case statements, as this
commit does; taking advantage of the changes in the previous commit.

2 years agoregnodes.h: Add new set of defines
Karl Williamson [Thu, 6 May 2021 15:59:06 +0000 (09:59 -0600)]
regnodes.h: Add new set of defines

There currently is a set of defines for switching on the op code of the
regnode, and another set for switching on that plus the utf8ness of both
the target and pattern.  This latter set is useful in one routine in
regexec.c where all three are important.  It allows fewer branches to
have to be done by encoding where to go into the case: value.

There are other similar switches in regexec.  The one in regrepeat()
doesn't care very much about the utf8ness of the pattern.

This commit adds a third set of defines for use by that switch, which
will be used by the next commit.

2 years agoReplace FIXME in the MANIFEST with the correct description for the file.
Nicholas Clark [Mon, 23 Aug 2021 11:36:38 +0000 (11:36 +0000)]
Replace FIXME in the MANIFEST with the correct description for the file.

We have 117 instances of the text FIXME in the core source code - it's not
actually good choice of text for a placeholder meaning "fix this before
pushing", as it's easy to miss the one that was added with this intent.

My mistake, spotted by ilmari.

2 years agoPre-extend hashes in list assignment before assigning to them.
Nicholas Clark [Sun, 22 Aug 2021 08:35:30 +0000 (08:35 +0000)]
Pre-extend hashes in list assignment before assigning to them.

We know how many pairs of keys/values are on the stack, so pre-extend the
hash to the appropriate size, instead of letting the hash needlessly re-size
one or more times during the assignment loop.

2 years agoPre-extend new anonymous hashes before assigning to them.
Nicholas Clark [Sat, 21 Aug 2021 15:04:09 +0000 (15:04 +0000)]
Pre-extend new anonymous hashes before assigning to them.

We know how many pairs of keys/values are on the stack, so pre-extend the
hash to the appropriate size, instead of letting the hash needlessly
re-size one or more times during the assignment loop.

2 years agoUse sv_inc() for the env de-dup hash in S_init_postdump_symbols().
Nicholas Clark [Sat, 21 Aug 2021 19:13:13 +0000 (19:13 +0000)]
Use sv_inc() for the env de-dup hash in S_init_postdump_symbols().

This replaces an hv_exists/hv_store pair with a single LVALUE hv_fetch.

2 years agoComment about some subtleties in S_init_postdump_symbols().
Nicholas Clark [Sat, 21 Aug 2021 18:49:59 +0000 (18:49 +0000)]
Comment about some subtleties in S_init_postdump_symbols().

2 years agoMove some variables in S_init_postdump_symbols() to a tighter scope.
Nicholas Clark [Sat, 21 Aug 2021 17:09:59 +0000 (17:09 +0000)]
Move some variables in S_init_postdump_symbols() to a tighter scope.

2 years agoPre-size the %ENV hash before populating it from environ.
Nicholas Clark [Sat, 21 Aug 2021 16:41:31 +0000 (16:41 +0000)]
Pre-size the %ENV hash before populating it from environ.

Also use HvTOTALKEYS() instead of HvKEYS(), as the latter makes a check for
placeholders, which here cannot make a difference.

2 years agoHash::Util::FieldHash fix_trigger can pre-size the hash before use.
Nicholas Clark [Sat, 21 Aug 2021 10:03:25 +0000 (10:03 +0000)]
Hash::Util::FieldHash fix_trigger can pre-size the hash before use.

This is only called by CLONE (and hence only matters for ithreads), but it's
an improvement, and small and self-contained.

2 years agoPre-extend the ISA hash in Perl_mro_get_linear_isa().
Nicholas Clark [Sat, 21 Aug 2021 19:28:14 +0000 (19:28 +0000)]
Pre-extend the ISA hash in Perl_mro_get_linear_isa().

2 years agoS_mro_get_linear_isa_c3() now uses sv_inc_nomg().
Nicholas Clark [Sat, 21 Aug 2021 08:10:48 +0000 (08:10 +0000)]
S_mro_get_linear_isa_c3() now uses sv_inc_nomg().

Previously it was coding the increment "longhand", to avoid bugs in 5.6.x.
However, this XS code is now exclusively in the core, and 5.6.x is long
dead, so there's no need to work around it.

The "longhand" code might *seem* to be more efficient (due to inlining some
logic) but it still required at least one call to a function in sv.c
(so no real change in generated code size) and that call was for the
increment 0 => 1, so likely called a lot, so no significant change in total
calls made.

2 years agoUse an LVALUE hv_fetch() in S_sequence_num() instead of fetch/store.
Nicholas Clark [Sat, 21 Aug 2021 19:59:32 +0000 (19:59 +0000)]
Use an LVALUE hv_fetch() in S_sequence_num() instead of fetch/store.

2 years agoBetter put a date in it
Chris 'BinGOs' Williams [Mon, 23 Aug 2021 08:11:27 +0000 (09:11 +0100)]
Better put a date in it

2 years agoBump the perl version in various places for 5.35.4
Karen Etheridge [Mon, 23 Aug 2021 01:18:17 +0000 (18:18 -0700)]
Bump the perl version in various places for 5.35.4

2 years agoMerge branch 'porting-core-cpan-diff-20210805' into blead
James E Keenan [Mon, 23 Aug 2021 02:02:57 +0000 (02:02 +0000)]
Merge branch 'porting-core-cpan-diff-20210805' into blead

2 years agoPorting/core-cpan-diff: Remove '--binary' on *BSDs 19027/head
James E Keenan [Sun, 22 Aug 2021 23:50:13 +0000 (23:50 +0000)]
Porting/core-cpan-diff: Remove '--binary' on *BSDs

Other things being equal, Porting/core-cpan-diff defaults to passing '-u
--binary' to the 'diff' command.  It turns out that, though '--binary'
is not a *documented* option for GNU diff, it is present in the source
code (rjbs research in
https://github.com/Perl/perl5/pull/19027#issuecomment-898901007).  The
'--binary' option clearly does *not* work on FreeBSD and probably
doesn't work on other *BSDs.  On those systems, running the program
spews more than 80,000 lines of error output.

Code revised to remove '--binary' on *BSDs.  Documentation adjusted.

For https://github.com/Perl/perl5/pull/19027

2 years agoMerge branch 'pod-html-refactoring-5-of-5' into blead
James E Keenan [Mon, 23 Aug 2021 01:48:14 +0000 (01:48 +0000)]
Merge branch 'pod-html-refactoring-5-of-5' into blead

2 years agoPod::Html: correct line dropped in 13f1edeb52 19050/head
James E Keenan [Sun, 15 Aug 2021 14:30:02 +0000 (14:30 +0000)]
Pod::Html: correct line dropped in 13f1edeb52

As noted by @Grinnz in
https://github.com/Perl/perl5/pull/19050#discussion_r688968921.

2 years agoPod::Html: remove debugging artifact
James E Keenan [Sun, 15 Aug 2021 14:20:32 +0000 (14:20 +0000)]
Pod::Html: remove debugging artifact

As noted by @Grinnz in https://github.com/Perl/perl5/pull/19050#discussion_r688969025.

2 years agoPod::Html: remove debugging artifact
James E Keenan [Sun, 15 Aug 2021 14:14:41 +0000 (14:14 +0000)]
Pod::Html: remove debugging artifact

As noted by @Grinnz in
https://github.com/Perl/perl5/pull/19050#discussion_r688969538.

2 years agoPod::Html: assign directly to array ref
James E Keenan [Sat, 14 Aug 2021 15:41:42 +0000 (15:41 +0000)]
Pod::Html: assign directly to array ref

This restores the thrust of c0ac28175b, which got zapped when resolving
merge conflicts.

2 years agoPod-Html: remove commented-out code
James E Keenan [Sun, 22 Aug 2021 23:22:45 +0000 (23:22 +0000)]
Pod-Html: remove commented-out code

Make use of Exporter consistent.

2 years agoIntroduce $self->{Pages}
James E Keenan [Thu, 18 Mar 2021 19:18:14 +0000 (19:18 +0000)]
Introduce $self->{Pages}

htmldir3.t: 3rd test unit is now expected to fail.  So now the test file
demonstrates that the unit fails whether it's placed before the second
unit or after.

Signed-off-by: James E Keenan <jkeenan@cpan.org>
2 years agoMove $output into the object
James E Keenan [Thu, 18 Mar 2021 18:57:02 +0000 (18:57 +0000)]
Move $output into the object

Correct dropped variable declaration.

Signed-off-by: James E Keenan <jkeenan@cpan.org>
2 years agoReplace _save_pages() with _transform()
James E Keenan [Thu, 18 Mar 2021 18:04:20 +0000 (18:04 +0000)]
Replace _save_pages() with _transform()

_save_pages() is a Pod::Simple::Search method which takes two specific
arguments.  From the point of view of making Pod-Html OO, it was
problematic because (a) it used a variable ($Podroot) defined outside of
its scope and (b) it assigned to a variable (%Pages) defined outside of
its scope.  It was therefore resistant to encapsulation.

Experimentation showed that if we use the return value of
Pod::Simple::Search::survey(), we could parse that hashref using what
was the guts of _save_pages() and assign explicitly to %Pages.

TODO:  Move %Pages within the Pod::Html object.  Handle $object
properly.

Signed-off-by: James E Keenan <jkeenan@cpan.org>
Remove merge conflict marks, commented-out code, as noted by rjbs in
https://github.com/Perl/perl5/pull/19050#discussion_r693559914.

2 years agoConvert 3 more subroutines to method calls
James E Keenan [Thu, 18 Mar 2021 12:21:55 +0000 (12:21 +0000)]
Convert 3 more subroutines to method calls

refine_parser(); feed_tree_to_parser(); write_file()

Signed-off-by: James E Keenan <jkeenan@cpan.org>
2 years agoTurn 3 more internal subroutines into method calls
James E Keenan [Thu, 18 Mar 2021 12:14:33 +0000 (12:14 +0000)]
Turn 3 more internal subroutines into method calls

identify_input(); parse_input_for_podtree(); set_Title_from_podtree();

Signed-off-by: James E Keenan <jkeenan@cpan.org>
2 years agoHave generate_cache() use object
James E Keenan [Thu, 18 Mar 2021 12:04:00 +0000 (12:04 +0000)]
Have generate_cache() use object

Still have to deal with %Pages being outside the object.

Signed-off-by: James E Keenan <jkeenan@cpan.org>
2 years agoMake get_cache(), cache_key() and load_cache() use object
James E Keenan [Thu, 18 Mar 2021 12:01:39 +0000 (12:01 +0000)]
Make get_cache(), cache_key() and load_cache() use object

Signed-off-by: James E Keenan <jkeenan@cpan.org>
2 years agoFile::Spec::Unix is not needed within package Pod::Html
James E Keenan [Thu, 18 Mar 2021 11:53:11 +0000 (11:53 +0000)]
File::Spec::Unix is not needed within package Pod::Html

It's only needed within Pod::Simple::XHTML::LocalPodLinks, so let's
remove it from the first package.

Signed-off-by: James E Keenan <jkeenan@cpan.org>
2 years agoStart to make Pod::Html object-oriented.
James E Keenan [Thu, 18 Mar 2021 00:05:33 +0000 (00:05 +0000)]
Start to make Pod::Html object-oriented.

For the time being, at least, we'll have pod2html() call a constructor.
All subs up through refine_globals have been turned into method calls.

Signed-off-by: James E Keenan <jkeenan@cpan.org>
2 years agoIncrement $VERSION to 1.33 in all .pm files
James E Keenan [Mon, 12 Jul 2021 12:14:36 +0000 (12:14 +0000)]
Increment $VERSION to 1.33 in all .pm files

2 years agoperlfunc 'ref' and UNIVERSAL: document isa operator alternative
Dan Book [Wed, 4 Aug 2021 19:55:35 +0000 (15:55 -0400)]
perlfunc 'ref' and UNIVERSAL: document isa operator alternative

2 years agoisUTF8 DFA: change while {} to do {} while;
Karl Williamson [Sat, 14 Aug 2021 18:53:43 +0000 (12:53 -0600)]
isUTF8 DFA: change while {} to do {} while;

This saves a conditional in many cases.  Core Perl doesn't call this
on an empty string, so the first test that it is empty is redundant.

We can't guarantee this for non-core calls, so the conditional is made
explicit for them.

2 years agoupdate the range of versions we support and do not support
Karen Etheridge [Sat, 21 Aug 2021 17:33:07 +0000 (10:33 -0700)]
update the range of versions we support and do not support

2 years agoRmv redundant API info for isUTF8_char_flags
Karl Williamson [Sat, 21 Aug 2021 17:17:18 +0000 (11:17 -0600)]
Rmv redundant API info for isUTF8_char_flags

This resolves GH #19069

2 years agoadd epigraph for 5.35.3
Karen Etheridge [Sat, 21 Aug 2021 16:20:49 +0000 (09:20 -0700)]
add epigraph for 5.35.3

2 years agoText-Tabs+Wrap: Sync with CPAN version 2021.0814
Aristotle Pagaltzis [Sat, 21 Aug 2021 11:30:36 +0000 (13:30 +0200)]
Text-Tabs+Wrap: Sync with CPAN version 2021.0814

2 years agoHere be corelist
Chris 'BinGOs' Williams [Sat, 21 Aug 2021 10:06:12 +0000 (11:06 +0100)]
Here be corelist

2 years agoBefore filling the lookup hash for opcode names, pre-expand it.
Nicholas Clark [Sat, 21 Aug 2021 06:48:25 +0000 (06:48 +0000)]
Before filling the lookup hash for opcode names, pre-expand it.

We know the size needed (about 400 entries), so doing this saves several
automatic resizes when populating it.

2 years agoDelete Perl_ptr_table_clear, marked as deprecated since v5.14.0
Nicholas Clark [Fri, 20 Aug 2021 20:31:24 +0000 (20:31 +0000)]
Delete Perl_ptr_table_clear, marked as deprecated since v5.14.0

2 years agomake way for 5.35.4
Karen Etheridge [Sat, 21 Aug 2021 03:38:24 +0000 (20:38 -0700)]
make way for 5.35.4