This is a live mirror of the Perl 5 development currently hosted at
5 months Adjust max permissible line length
Karl Williamson [Mon, 14 Dec 2020 20:38:47 +0000 (13:38 -0700)] Adjust max permissible line length

perldoc takes up 4 column indent, not 7.

5 months agopodcheck.t: Combine duplicated code into a sub
Karl Williamson [Mon, 14 Dec 2020 20:33:37 +0000 (13:33 -0700)]
podcheck.t: Combine duplicated code into a sub

5 months agopodcheck.t: perldoc standard indent is 4.
Karl Williamson [Mon, 14 Dec 2020 20:29:19 +0000 (13:29 -0700)]
podcheck.t: perldoc standard indent is 4.

Before, it was using an expected nroff indent of 7.  But current perldoc
places the =head1 lines at the left margin, and the text within them
indented by 4.

5 months agoperlapi: 'ie' should be 'i.e.', and italicized
Karl Williamson [Mon, 14 Dec 2020 20:41:07 +0000 (13:41 -0700)]
perlapi: 'ie' should be 'i.e.', and italicized

5 months agobump $XS::APItest::VERSION
Tony Cook [Mon, 14 Dec 2020 05:00:33 +0000 (16:00 +1100)]
bump $XS::APItest::VERSION

5 months agoconsistently parenthesise the RW lock macro arguments
Tony Cook [Mon, 14 Dec 2020 04:54:25 +0000 (15:54 +1100)]
consistently parenthesise the RW lock macro arguments

and fix the mixed up pointer vs non-pointer use of the mutex

Without the parentheses (or without the new tests in the previous
commit) for code like;


the MUTEX_LOCK(mutex.lock) in that code would expand to:


and happen to work,  even though the next line has:

  if ((mutex)->readers_count)

treating the mutex parameter as a pointer.

With the parentheses the MUTEX_LOCK(mutex.lock) becomes:


which as expected fails to compile in a similar way to the pointer
test code in the previous commit.

5 months agobuild test for the read/write mutex macros
Tony Cook [Mon, 14 Dec 2020 04:20:17 +0000 (15:20 +1100)]
build test for the read/write mutex macros

This fails to compile

6 months agoperl.h: White-space only
Karl Williamson [Thu, 27 Aug 2020 13:47:02 +0000 (07:47 -0600)]
perl.h: White-space only

Properly indent some nested #defines

6 months agoperlapi: Remove duplicate text
Karl Williamson [Sun, 6 Sep 2020 16:55:28 +0000 (10:55 -0600)]
perlapi: Remove duplicate text

This came about in a rebasing error

6 months agoDocument and consolidate SvPV..force functions
Karl Williamson [Mon, 14 Sep 2020 16:21:49 +0000 (10:21 -0600)]
Document and consolidate SvPV..force functions

6 months agoConsolidate and document all get_cvFOO() variants
Karl Williamson [Wed, 22 Jul 2020 22:47:53 +0000 (16:47 -0600)]
Consolidate and document all get_cvFOO() variants

6 months agomany-reader mutexes: Change structure element name
Karl Williamson [Thu, 10 Dec 2020 17:11:34 +0000 (10:11 -0700)]
many-reader mutexes: Change structure element name

The old name did not encompass all the possible reasons for the
mutex signal condition to be invoked

6 months agoPERL_WRITE_UNLOCK: add missing condition signal
Karl Williamson [Thu, 10 Dec 2020 18:07:15 +0000 (11:07 -0700)]
PERL_WRITE_UNLOCK: add missing condition signal

The mutex is locked, and any contenders are awaiting a signal, which
until this commit was missing.

6 months agodist/threads/t/libc.t: Add timer to avoid deadlock
Karl Williamson [Thu, 10 Dec 2020 15:58:53 +0000 (08:58 -0700)]
dist/threads/t/libc.t: Add timer to avoid deadlock

This test file can deadlock if there are bugs.  Add a timeout to keep
the test from hanging indefinitely.

6 months agolocale.c: Work around a z/OS limitation/feature
Karl Williamson [Fri, 11 Dec 2020 21:59:28 +0000 (14:59 -0700)]
locale.c: Work around a z/OS limitation/feature

Without per-thread locales, a multi-thread application is inherently
unsafe.  IBM solves that by allowing you to set up the locale any way
you want, but after you've created a thread, all future locale changes
are ignored, and return failure.

But Perl itself changes the locale in a couple of cases.  Recent changes
have surfaced this issue in one case, leading to a panic.  And this
commit works around it, so that messages will be displayed in the locale
in effect before the threads were created.

The remaining case requires further investigation.  Nothing in our suite
is failing.

6 months agoperlapi: Add markup
Karl Williamson [Thu, 10 Dec 2020 23:09:31 +0000 (16:09 -0700)]
perlapi: Add markup

6 months agoCombine the two separate smoke test sections
Tom Hukins [Wed, 2 Dec 2020 20:01:58 +0000 (20:01 +0000)]
Combine the two separate smoke test sections

6 months agoSimplify the release management instructions
Tom Hukins [Tue, 17 Nov 2020 16:43:29 +0000 (16:43 +0000)]
Simplify the release management instructions

Getting access to GitHub issues and commit privileges takes one action,
not two, so merge the separate sections.

6 months agodromedary no longer has a public_html directory
Tom Hukins [Tue, 17 Nov 2020 13:58:40 +0000 (13:58 +0000)]
dromedary no longer has a public_html directory

The old machine has been offline for some time.
A replacement exists at, but this does not provide
per-user public_html directories for sharing files.

6 months agoSynch with CPAN distribution libnet-3.12
Steve Hay [Thu, 10 Dec 2020 14:15:51 +0000 (09:15 -0500)]
Synch with CPAN distribution libnet-3.12

6 months agoCorrect POD formatting error
James E Keenan [Thu, 10 Dec 2020 14:01:03 +0000 (09:01 -0500)]
Correct POD formatting error

6 months agoImplement SAVEt_STRLEN_SMALL
Paul "LeoNerd" Evans [Sat, 27 Jun 2020 17:10:47 +0000 (18:10 +0100)]

Most uses of SAVEt_STRLEN actually store small values; often zero.
Rather than using an entire U64-sized element for these values, it saves
space to use the same "SMALL" mechanism as other numerical values, like

6 months agoFix freebsd/netbsd builds
Karl Williamson [Wed, 9 Dec 2020 00:09:04 +0000 (17:09 -0700)]
Fix freebsd/netbsd builds

These have an inconsistent configuration in which several functions exist
for thread-safe locales, but the crucial one doesn't show up in our
Configure probe.  The code this commit fixes assumed that all or nothing
would be present.

6 months agoFix cygwin build
Karl Williamson [Wed, 9 Dec 2020 00:07:17 +0000 (17:07 -0700)]
Fix cygwin build

A macro name changed, and I didn't see it in the grep

6 months agobump's $VERSION
Tony Cook [Tue, 8 Dec 2020 23:43:12 +0000 (10:43 +1100)]
bump's $VERSION

6 months agojkahrman is now a perl author
Tony Cook [Tue, 8 Dec 2020 23:42:59 +0000 (10:42 +1100)]
jkahrman is now a perl author

6 months agotest - and . at beginning of debugger alias name
Tony Cook [Tue, 8 Dec 2020 23:19:26 +0000 (10:19 +1100)]
test - and . at beginning of debugger alias name

6 months agoAllow debugger aliases that start with '-' and '.'
jkahrman [Thu, 16 Apr 2020 06:00:04 +0000 (02:00 -0400)]
Allow debugger aliases that start with '-' and '.'

Since the '.' and '-' commands don't take any arguments and don't run if any are provided, don't treat commands starting with these characters as the single commands '.' and '-'. Restores behavior that existed prior to (v5.27) at least back to v5.8.8

6 months agolocale.c: Remove some unnecessary mutex locks
Karl Williamson [Tue, 8 Dec 2020 20:25:36 +0000 (13:25 -0700)]
locale.c: Remove some unnecessary mutex locks

These aren't necessary as the called function has its own lock until
done copying into the local structure.

And these were breaking blead on Windows, as they are no longer defined.
The smoke I ran included more commits beyond the breaking one, so I
didn't catch it.

6 months agolocale.c: Unlock mutex before croaking
Karl Williamson [Sun, 6 Dec 2020 23:29:11 +0000 (16:29 -0700)]
locale.c: Unlock mutex before croaking

These cases aren't supposed to happen, but unlock the mutex first;
we could get into deadlock in trying to output the death message.

6 months agoName individual locale locks
Karl Williamson [Mon, 30 Nov 2020 17:11:01 +0000 (10:11 -0700)]
Name individual locale locks

These locks for different functions all use the same underlying mutex;
but that may not always be the case.  By creating separate names
used only when we think they will be necessary, the compiler will
complain if the conditions in the code that actually use them are the
same.  Doing this showed a misspelling in an #ifdef, fixed in

6 months agoRefactor locale mutex setup
Karl Williamson [Mon, 30 Nov 2020 16:46:34 +0000 (09:46 -0700)]
Refactor locale mutex setup

This was prompted by my realization that even on a locale thread-safe
platform, there are functions we call that may not be thread-safe in
that they return their results in an internal static buffer, which may
be process-wide instead of per-thread.  Tomasz Konojacki++ briefly
looked at Windows source code for localeconv() and this indeed did
appear to be the case.

If we thought a platform was thread-safe, no locale mutexes were set up,
and instead the calls in the code to lock were no-oops.  This would lead
to potential races, the most likely candidate being localeconv().  None
have been reported, at least as far as we know.  Likely that function
isn't called frequently.  This would be true on both Posix 2008 and
Windows platforms, except possibly for FreeBSD, which may be the only
platform that we support that has a localeconv_l() function, which is
supposed to be immune from this issue..

The solution adopted here is to test for all the possible functions that
the Perl core uses that may be susceptible to this, and to set up the
mutex if any are found.  Thus there won't be no-ops where there should
be a lock.

6 months agoChange name of mutex macro.
Karl Williamson [Mon, 30 Nov 2020 00:05:13 +0000 (17:05 -0700)]
Change name of mutex macro.

This macro is for localeconv(); the new name is clearer as to the
meaning, and this preps for further changes.

6 months agolocale.c: Add debugging info to panic message
Karl Williamson [Sun, 6 Dec 2020 22:45:20 +0000 (15:45 -0700)]
locale.c: Add debugging info to panic message

6 months agoduplocale() is part of Posix 2008 locales
Karl Williamson [Sun, 6 Dec 2020 22:43:45 +0000 (15:43 -0700)]
duplocale() is part of Posix 2008 locales

Thus if we know we have the Posix versions, we have duplocale(), and
hence don't need to test separately for it.

6 months agoFix up many-reader mutex typedef
Karl Williamson [Sun, 6 Dec 2020 22:16:41 +0000 (15:16 -0700)]
Fix up many-reader mutex typedef

This previously worked on some compilers, but not others.

6 months agoAdd author name in alphabetically correct place
Jae Bradley [Sat, 5 Dec 2020 20:57:16 +0000 (15:57 -0500)]
Add author name in alphabetically correct place

6 months agoUpdate the Xcode version in the testsuite.yml workflow
Jae Bradley [Wed, 2 Dec 2020 00:35:30 +0000 (19:35 -0500)]
Update the Xcode version in the testsuite.yml workflow

Xcode v12 is now the default Xcode version:

6 months agoUse macOS-10.15 explicitly
Jae Bradley [Tue, 1 Dec 2020 23:48:55 +0000 (18:48 -0500)]
Use macOS-10.15 explicitly

6 months agoAdd Jae Bradley as an Author
Jae Bradley [Tue, 1 Dec 2020 23:40:12 +0000 (18:40 -0500)]
Add Jae Bradley as an Author

6 months agoExplicitly use Catalina when running the test with Xcode 11
Jae Bradley [Tue, 1 Dec 2020 20:04:51 +0000 (15:04 -0500)]
Explicitly use Catalina when running the test with Xcode 11

6 months agoRemove empty "#ifdef"s
Tom Hukins [Wed, 2 Dec 2020 17:00:09 +0000 (17:00 +0000)]
Remove empty "#ifdef"s

6 months agoHere be camels
Chris 'BinGOs' Williams [Tue, 8 Dec 2020 11:58:44 +0000 (11:58 +0000)]
Here be camels

6 months agoperly.y: avoid <0 test on unsigned value
David Mitchell [Tue, 8 Dec 2020 09:50:47 +0000 (09:50 +0000)]
perly.y: avoid <0 test on unsigned value

Coverity CID 313707

Moving to a newer version of Bison has changed how the YYTRANSLATE()
macro is defined: in particular it now has a <0 test, which
Coverity is complaining about, since the arg is an unsigned value.

This commit just casts the arg back to a signed value. In more detail:
we formerly had:

    yytoken = YYTRANSLATE(NATIVE_TO_UNI(parser->yychar));

yychar is of type int, but NATIVE_TO_UNI returns a UV. So just cast the
result back to an int:

    yytoken = YYTRANSLATE((int)NATIVE_TO_UNI(parser->yychar));

6 months agoperldelta.pod: Document new "0o" octal syntax.
TAKAI Kousuke [Tue, 1 Dec 2020 00:50:35 +0000 (09:50 +0900)]
perldelta.pod: Document new "0o" octal syntax.

6 months agoperlfunc.pod: add a description for octal strings for oct()
TAKAI Kousuke [Sat, 31 Oct 2020 05:15:27 +0000 (14:15 +0900)]
perlfunc.pod: add a description for octal strings for oct()

These sentences are borrowed from the description for hex().

6 months agoperldata.pod: mention new octal integer format (0o12_345).
TAKAI Kousuke [Fri, 30 Oct 2020 12:55:03 +0000 (21:55 +0900)]
perldata.pod: mention new octal integer format (0o12_345).

6 months agopp.c: oct() now skips "0o" and "o" prefix.
TAKAI Kousuke [Thu, 22 Oct 2020 17:14:57 +0000 (02:14 +0900)]
pp.c: oct() now skips "0o" and "o" prefix.

t/op/oct.t: Add test for oct() with 0o and o prefix.

6 months agotoke.c: Eliminate temporary variables base, Base and max.
TAKAI Kousuke [Thu, 22 Oct 2020 16:07:16 +0000 (01:07 +0900)]
toke.c: Eliminate temporary variables base, Base and max.

These variables are only used on emitting diagnostic messages.
Calculating them on-demand will make the code slightly faster
on normal cases.

Note: previously bases[], Bases[] and maxima[] may be completely
optimized out by fusing array accesses into if-brances.
Now they become real arrays, and will slightly increase the number
of dynamic relocations on PIC build.

6 months agotoke.c: Preserve "0o" prefix on warnings and strings passed to overload hook.
TAKAI Kousuke [Thu, 22 Oct 2020 14:56:58 +0000 (23:56 +0900)]
toke.c: Preserve "0o" prefix on warnings and strings passed to overload hook.

6 months agotoke.c: Recognize "0odddd" octal literals.
TAKAI Kousuke [Thu, 22 Oct 2020 14:23:57 +0000 (23:23 +0900)]
toke.c: Recognize "0odddd" octal literals.

t/base/num.t: Add some test for "0odddd" octals.

6 months agoUse GNU Bison's named references
Branislav Zahradník [Thu, 6 Aug 2020 07:18:15 +0000 (09:18 +0200)]
Use GNU Bison's named references

Usage of Bison's named references makes actions little bit easier
to read and maintain.

6 months agoRaise minimal supported GNU Bison version to 2.5
Branislav Zahradník [Thu, 6 Aug 2020 17:42:08 +0000 (19:42 +0200)]
Raise minimal supported GNU Bison version to 2.5

which added support for named references

6 months agoAdd start-up/tear-down for many-reader mutexes
Karl Williamson [Mon, 30 Nov 2020 19:18:30 +0000 (12:18 -0700)]
Add start-up/tear-down for many-reader mutexes

These were missed in 5640a370e8b19af74b8ca0b4694464c21a87916b.

6 months agoChange many-reader mutex API for consistency
Karl Williamson [Tue, 1 Dec 2020 00:09:56 +0000 (17:09 -0700)]
Change many-reader mutex API for consistency

The API for other mutexes passes the address of the lock, instead of the
lock itself.  It is less confusing to have the APIs be the same.

6 months agoHiRes.xs: Remove unused macro defns
Karl Williamson [Mon, 30 Nov 2020 18:16:16 +0000 (11:16 -0700)]
HiRes.xs: Remove unused macro defns

6 months agoperllocale: Remove stray markup
Karl Williamson [Tue, 1 Dec 2020 19:37:52 +0000 (12:37 -0700)]
perllocale: Remove stray markup

6 months agoNot all Win32 compilers have a small macro buffer
Karl Williamson [Fri, 4 Dec 2020 15:01:31 +0000 (08:01 -0700)]
Not all Win32 compilers have a small macro buffer

Commit e7ae132ec78 consolidated PERL_SMALL_MACRO_BUFFER usages, but it
omitted the _MSC_VER number at which the buffer became large enough.
Apparently it did this because Windows compilations were failing with
the error "string too long", which doesn't happen if __ASSERT_ expands
to nothing, which it does under PERL_SMALL_MACRO_BUFFER.

However,  commits 92a0bb2 and 88086fd shortened the offending strings
so later Windows compilers don't have to be considered as having small
macro buffers.

6 months agoRevert "Don't test for 16-bit inputs in inRANGE()"
Karl Williamson [Fri, 4 Dec 2020 14:40:54 +0000 (07:40 -0700)]
Revert "Don't test for 16-bit inputs in inRANGE()"

This effectively reverts commit

That commit removed checking for 16 bit inputs because an assert in a
macro was making compilations fail in some compilers that couldn't
handle the complexity.  This inadvertently broke systems which use C
language shorts in certain places, such Mingw and Win32 with their use
of UTF16, not typically found on other platforms.  At the time, we
weren't smoking Mingw so we didn't know about it there, but the Win32
failures on Win32 were "fixed" by another commit which disabled
assertions of this type completely.  It turns out the issue was passing
too long a string to assert().   Commits 92a0bb2 and 88086fd removed a
bunch of unnecessary and/or duplicate asserts, bringing the size down,
so that the 16 bit checks can be added back in without breaking these

The reverted commit mentioned HP compilers as having problems.  The only
such box we currently have available for testing is HP-31, and the
reversion works fine on it, even before 92a0bb2 and 88086fd.

This fixes GH #18364

6 months agoperl.h: Move some code around
Karl Williamson [Sun, 5 Jul 2020 04:01:16 +0000 (22:01 -0600)]
perl.h: Move some code around

This is in preparation for future commits where things will be needed
earlier/later than currently.

6 months agoregen/ Use smaller inRANGE version
Karl Williamson [Sat, 5 Dec 2020 23:35:17 +0000 (16:35 -0700)]
regen/ Use smaller inRANGE version

The previous commit split inRANGE up so that code that was known to have
valid inputs to it could use a component that didn't have all the
compile-time checks (often duplicates) that otherwise are made.

This commit changes to use that component.  The reason the compile-time
checks are unnecessary here, is this is machine-generated code known to
meet the inRANGE input requirements.

All those compile-time checks added up to being too large for some
compilers to handle.

6 months agoinRANGE, withinCOUNT: Split so can avoid asserts
Karl Williamson [Sat, 5 Dec 2020 23:21:52 +0000 (16:21 -0700)]
inRANGE, withinCOUNT: Split so can avoid asserts

This commit splits these macros up into components that are separately
callable.  The components are considered internal core only, and the
purpose is to avoid duplicate assert() calls that were causing some
compilers to crash from not being able to handle the size.

In particular, this commit refactors inRANGE so that the asserts are
done only once, shortening what it expands to.

6 months agohandy.h: Fix typo in comment
Karl Williamson [Sat, 5 Dec 2020 23:20:41 +0000 (16:20 -0700)]
handy.h: Fix typo in comment

6 months agoRemove my_l?stat from public API
Karl Williamson [Sat, 29 Aug 2020 20:07:45 +0000 (14:07 -0600)]
Remove my_l?stat from public API

They are not documented, and if you try to use them, you get a compile

6 months agoperlapi: Consolidate SvSET-ish entries
Karl Williamson [Sun, 6 Sep 2020 17:04:52 +0000 (11:04 -0600)]
perlapi: Consolidate SvSET-ish entries

These should also be in the SV section instead of Magic

6 months agoEvaluate arg once in all forms of SvTRUE
Karl Williamson [Sun, 29 Nov 2020 15:54:43 +0000 (08:54 -0700)]
Evaluate arg once in all forms of SvTRUE

5.32 did this for one form; now all do.

6 months agoAlways define dMY_CXT_SV, and to dNOOP
Karl Williamson [Wed, 22 Jul 2020 22:59:03 +0000 (16:59 -0600)]
Always define dMY_CXT_SV, and to dNOOP

6 months agoUse a more suitable test method
Tom Hukins [Wed, 2 Dec 2020 18:04:13 +0000 (18:04 +0000)]
Use a more suitable test method

like() provides better errors on failure thank ok().  This reduces the
usefulness of the removed printf() diagnostic.

6 months agoAvoid unnecessarily skipping a test to set $0
Tom Hukins [Wed, 2 Dec 2020 17:39:35 +0000 (17:39 +0000)]
Avoid unnecessarily skipping a test to set $0

The absence of /proc/$$/cmdline doesn't mean running ps(1) won't work.

6 months agoTest setting $0 on Dragonfly BSD
Tom Hukins [Wed, 2 Dec 2020 17:26:09 +0000 (17:26 +0000)]
Test setting $0 on Dragonfly BSD

Support for this began in Perl 5.26.0 with commit 38626956885060503.

6 months agoutf8.h: Fix syntax error only found on EBCDIC builds
Karl Williamson [Fri, 4 Dec 2020 23:39:02 +0000 (16:39 -0700)]
utf8.h: Fix syntax error only found on EBCDIC builds

6 months agoperl.h: Remove ';' from 'NOOP;'
Karl Williamson [Tue, 1 Dec 2020 14:28:13 +0000 (07:28 -0700)]
perl.h: Remove ';' from 'NOOP;'

These are useless here

6 months agotime64_config.h: #include reentr.h
Karl Williamson [Tue, 1 Dec 2020 04:27:44 +0000 (21:27 -0700)]
time64_config.h: #include reentr.h

This is so it will get any reentrant versions automatically

6 months agoperlvars.h: Fix comment
Karl Williamson [Mon, 30 Nov 2020 16:39:34 +0000 (09:39 -0700)]
perlvars.h: Fix comment

6 months agoPOSIX.xs: White-space only
Karl Williamson [Mon, 30 Nov 2020 16:33:42 +0000 (09:33 -0700)]
POSIX.xs: White-space only

Indent to standards

6 months agoPOSIX.xs: Use alternative functions if avail
Karl Williamson [Mon, 30 Nov 2020 16:30:52 +0000 (09:30 -0700)]
POSIX.xs: Use alternative functions if avail

These preprocessor directives failed to account for the existence of
common alternative functions (which the implementation knows about) if
the plain function is not available on the platform.

I doubt that this makes any difference, but it makes these conditionals
consistent with the others nearby.

6 months agolocale.c: Fix typo in #ifdef
Karl Williamson [Mon, 30 Nov 2020 16:25:52 +0000 (09:25 -0700)]
locale.c: Fix typo in #ifdef

This misspelling led to the code assuming that the platform didn't have
a feature that, if used, would result in faster execution.

6 months agoFix and update documentation of memEQ, memNE, ...
Karl Williamson [Fri, 4 Dec 2020 00:56:21 +0000 (17:56 -0700)]
Fix and update documentation of memEQ, memNE, ...

This fixes GH #18379

6 months agotime64.c: avoid 'uninit' compiler warning
David Mitchell [Thu, 3 Dec 2020 10:36:42 +0000 (10:36 +0000)]
time64.c: avoid 'uninit' compiler warning

clang isn't smart enough to recognise the pattern:

    if (foo) { ...} { else orig_year = ... }
    if (!foo) { ... use orig_year .. }

So just unconditionally initialise orig_year.

6 months agoperldelta for the Win32 symlink()/readlink()/stat() changes
Tony Cook [Thu, 3 Dec 2020 04:24:44 +0000 (15:24 +1100)]
perldelta for the Win32 symlink()/readlink()/stat() changes

6 months agoDocument PERL_TEST_HARNESS_ASAP
Karl Williamson [Thu, 3 Dec 2020 03:54:07 +0000 (20:54 -0700)]

which can increase the CPU occupancy when running the test suite in
parallel on a many-core system, resulting in earlier completion.

6 months agoadd note on how to write NEXTKEY when you can't just wrap around each()
David Cantrell [Mon, 30 Nov 2020 22:50:00 +0000 (22:50 +0000)]
add note on how to write NEXTKEY when you can't just wrap around each()

6 months agoRevert "op.h: Restrict to core certain internal symbols"
Karl Williamson [Thu, 3 Dec 2020 01:56:27 +0000 (18:56 -0700)]
Revert "op.h: Restrict to core certain internal symbols"

This reverts commit 1d6cadf136bf2c85058a5359fb48b09b3ea9fe6f.

Due to cpan breakage: GH #18374 #18375 #18376

6 months agoadd more win32 stat tests
Tony Cook [Thu, 3 Dec 2020 00:00:43 +0000 (11:00 +1100)]
add more win32 stat tests

These tickets were suggested as fixed by the stat updates, some
were fixed, but some weren't.

Add tests (TODO for the unfixed) to help track them

6 months agocpan/Encode: sync with CPAN version 3.08
Dan Kogai [Wed, 2 Dec 2020 22:13:45 +0000 (17:13 -0500)]
cpan/Encode: sync with CPAN version 3.08

6 months agot/harness: Add option for faster test suite execution
Karl Williamson [Sun, 12 Apr 2020 21:13:25 +0000 (15:13 -0600)]
t/harness: Add option for faster test suite execution

This commit adds an environment variable, PERL_TEST_HARNESS_ASAP, which
if set to non-zero increases the parallelism in the execution of the
test suite, speeding it up on systems with multiple cores.

Normally, there are two main test sections, one for core and the second
for non-core tests, and the testing of the non-core one doesn't begin
until the core tests are complete.  Within each section, there are a
number of test categories, like 're' for regular expressions, and
'JSON::PP' for the pure perl implementation of JSON.

Within each category, there are various single .t test files.  Some
categories can have those be tested in parallel; some require them to be
done in a particular order, say because an earlier .t does setup for
subsequent ones.  We already have this capability.

Completion of all the tests in a category is not needed before those of
another category can be started.  This is how it already works.

However, the core section categories are ordered so that they begin in a
logical order for someone trying to get perl to work.  First to start
are the basic sanity tests, then by roughly decreasing order of
widespread use in perl programs in the wild, with the final two
categories, porting and perf, being mainly of use to perl5 porters.
These two categories aren't started until all the tests in the earlier
categories are started.  We have some long running tests in those two
categories, and generally they delay the start of the entire second

If those long running tests could be started sooner, shorter tests in
the first section could be run in parallel with them, increasing the
average CPU utilization, and the second section could begin (and hence
end) earlier, shortening the total elapsed execution time of the entire

The second section has some very long running tests.  JSON-PP is one of
them.  If it could run in parallel with tests from the first section,
that would also speed up the completion of the suite.

The environment variable added by this commit does both things.  The
basic sanity test categories in the first section continue to be started
before anything else.  But then all other tests are run in decreasing
order of elapsed time they take to run, removing the boundaries between
some categories, and between the two sections.

The gain from this increases as the number of jobs run in parallel does;
slower high core platforms have the highest increase.  On the old
dromedary with 24 cores, the gain is 20%, almost 2 minutes.  On my more
modern box with 12 cores, it is 8%.

6 months agoTAP::Harness: Move timer initialization
Karl Williamson [Sun, 12 Apr 2020 16:14:25 +0000 (10:14 -0600)]
TAP::Harness: Move timer initialization

This commit adds to blead the accepted PR
but the updated module has not been released.

This commit allows a many-core processor to run the Perl test suite more

Prior to this commit, the timers for counting elapsed time and CPU usage
were begun when a job's first output appears.  This yields inaccurate
results.  These results are saved in t/test_state for future runs so
that they can start the longest-running tests first, which leads to
using the available cores more efficiently.  (If you start a long running
test after everything else is nearly done, you have to wait for it to
finish before the suite as a whole is; if you start the long ones first,
and the shortest last, you don't have to wait very long for any
stragglers to complete.)  Inaccurate results here lead to this
situation, which we were often seeing in the podcheck.t test.

The worst case is if there is heavy computation at the beginning of the
test being run.  podcheck, for example, examines all the pods in the
directory structure to find which links to other pods do or do not have
corresponding anchors.  Output doesn't happen until the analysis is
complete.  On my system, this takes over 30 seconds, but prior to this
commit, what was noted was just the time required to do the output,
about 200 milliseconds.  The result was that podcheck was viewed as
being one of the shortest tests run, so was started late in the process,
and generally held up the completion of it.

This commit by itself doesn't improve the test completion very much,
because, test tests are run a whole directory at a time, and the
directory podcheck is in, for example, is run last.  The next commit
addresses that.

6 months agofixup! Add Sevan Janiyan as author
Max Maischein [Wed, 2 Dec 2020 20:46:25 +0000 (21:46 +0100)]
fixup! Add Sevan Janiyan as author

6 months agoAdd Sevan Janiyan as author
Max Maischein [Wed, 2 Dec 2020 20:40:42 +0000 (21:40 +0100)]
Add Sevan Janiyan as author

6 months agoDetect GCC as compiler to use
Sevan Janiyan [Wed, 2 Dec 2020 19:50:37 +0000 (19:50 +0000)]
Detect GCC as compiler to use

On Illumos based distributions GCC is likely the compiler available on the system.
Change tested on SmartOS

6 months agoperlxs: Note that rpc.h is can be in different places
Karl Williamson [Mon, 2 Nov 2020 02:35:29 +0000 (19:35 -0700)]
perlxs: Note that rpc.h is can be in different places

This replaces PR #18247

6 months agofix the results of my stupidity
Tony Cook [Wed, 2 Dec 2020 00:43:16 +0000 (11:43 +1100)]
fix the results of my stupidity

I added these definitions late in the process, thinking I hadn't
already added them, but I had.

6 months agoStorable: t/canonical.t: avoid stderr noise
David Mitchell [Tue, 1 Dec 2020 16:45:58 +0000 (16:45 +0000)]
Storable: t/canonical.t: avoid stderr noise

informational text should to stdout, not stderr

6 months agoPOSIX: t/posix.t: avoid warning
David Mitchell [Tue, 1 Dec 2020 16:33:07 +0000 (16:33 +0000)]
POSIX: t/posix.t: avoid warning

Since warnings were enabled in this test file, skip one spurious warning
being generated. S_ISBLK() is being called purely to test run-time
loading; so it's being called without an arg, which now triggers an
'uninitialized value' warning.

6 months agoUnicode-Normalize/Makefile.PL: avoid stderr
David Mitchell [Tue, 1 Dec 2020 16:02:06 +0000 (16:02 +0000)]
Unicode-Normalize/Makefile.PL: avoid stderr

During build, output general progress information to stdout, not stderr.

6 months agoappend colon to USE_STRICT_BY_DEFAULT description
David Mitchell [Tue, 1 Dec 2020 15:26:06 +0000 (15:26 +0000)]
append colon to USE_STRICT_BY_DEFAULT description

This stops complaining that:

    USE_STRICT_BY_DEFAULT has no documentation

6 months agoODBM_File.xs: silence -Wc++-compat warning
David Mitchell [Tue, 1 Dec 2020 15:12:14 +0000 (15:12 +0000)]
ODBM_File.xs: silence -Wc++-compat warning

Under gcc -Wc++-compat, it warns that 'delete' is a keyword. Since this
is the name of the actual function in odbm, just temporarily disable
the warning.

6 months agoOpcode.xs: fix compiler warning
David Mitchell [Tue, 1 Dec 2020 11:07:59 +0000 (11:07 +0000)]
Opcode.xs: fix compiler warning

In some debugging code it was doing a SAVEDESTRUCTOR()
to do a warn() on scope exit, but it should have used the nocontext
version of warn().

6 months agoImplement symlink(), lstat() and readlink() on Win32
Tony Cook [Tue, 1 Dec 2020 04:29:45 +0000 (15:29 +1100)]
Implement symlink(), lstat() and readlink() on Win32

6 months agowin32 symlink: reindent
Tony Cook [Wed, 11 Nov 2020 00:46:15 +0000 (11:46 +1100)]
win32 symlink: reindent