| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
There are two warnings classes which account for a very large number of
the warnings produced when building on HPUX Itanium. We know the cause
of these warnings and we are ok with ignoring them.
One set comes from our memory wrap checks, where we end up doing a
comparison against constants in certain conditions. See the comments in
handy.h line 2723 related to PERL_MALLOC_WRAP.
The other set comes from our common "trick" of doing OO in C code with
casting. This is the foundation of how we manage SV types and how we
manage regular expression ops (regops).
If this logic really was a problem then we would have lots of test
failures and segfaults, and we do not, so we can silence them.
|
| |
|
|
|
|
| |
Also do not generate PERL_ARGS style macros for macros.
|
|
|
|
|
| |
This also fixes the version_downgrade to show the correct version that
version downgrades will be removed in.
|
|
|
|
|
| |
This category applies to attempts to goto the internals of a block
construct.
|
|
|
|
|
|
| |
This was part of MAD, which was removed in 2014 (commit
b5bbe64ad2ec51417ef02ac52304ed45fe37be3f), but the wrapper macro was
missed.
|
| |
|
| |
|
|
|
|
| |
a later commit will resplit this again
|
|
|
|
|
| |
None of these are used anymore. See c62fdeb784c7643c90d2ea8c2ec0f03a548da338
for more details.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This splits a bunch of the subcomponents of the regex engine into
smaller files.
regcomp_debug.c
regcomp_internal.h
regcomp_invlist.c
regcomp_study.c
regcomp_trie.c
The only real change besides to the build machine to achieve the split
is to also adds some new defines which can be used in embed.fnc to control
exports without having to enumerate /every/ regex engine file. For
instance all of regcomp*.c defines PERL_IN_REGCOMP_ANY, and this is used
in embed.fnc to manage exports.
|
|
|
|
|
|
|
|
|
|
|
| |
These internal macros were originaly called "porcelain" due to my
misperception of what that term means. Commit
cbc5b6f1526f9eb657d61241e54b383c2d053b44 changed that to 'base'. But I
realize now that the real purpose of these macros is to create an API
that returns a POSIX-compliant result. Most platforms return such a
value already, so the macros expand to just the platform's underlying
value. But on platforms that aren't compliant, these add logic to make
their results compliant. The better name then is 'posix'.
|
|
|
|
|
|
| |
These macros contain assert() calls to check that the `ref` SV really is
a reference (SvROK) and that the SvTYPE it points to is that which is
expected.
|
|
|
|
|
|
|
|
|
|
|
|
| |
It's unlikely that perl will be compiled with out the LC_CTYPE locale
category being enabled. But if it isn't, there is no sense in having
per-interpreter variables for various conditions in it, and no sense
having code that tests those variables.
This commit changes a macro to always yield 'false' when this is
disabled, adds a new similar macro, and changes some occurrences that
test for a variable to use the macros instead of the variables. That
way the compiler knows these to conditions can never be true.
|
|
|
|
|
| |
Also add SAFE_FUNCTION__ which ensures that the value
is "UNKNOWN" on platforms that dont support __func__.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This env var can be used to trigger a repeatable run of a script which
calls C<srand()> with no arguments, either explicitly or implicitly
via use of C<rand()> prior to calling srand(). This is implemented in
such a way that calling C<srand()> with no arguments in forks or
subthreads (again explicitly or implicitly) will receive their own seed
but the seeds they receive will be repeatable.
This is intended for debugging and perl development performance testing,
and for running the test suite consistently. It is documented that the
exact seeds used to initialize the random state are unspecified, and
that they may change between releases or even builds. The only guarantee
provided is that the same perl executable will produce the same results
twice all other things being equal. In practice and in core testing we
do expect consistency, but adding the tightest set of restrictions on
our commitments seemed sensible.
The env var is ignored when perl is run setuid or setgid similarly to
the C<PERL_INTERNAL_RAND_SEED> env var.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
These mathematical/RNG functions are handy for various
internal uses, so expose them in a way they can be reused.
These are Marsaglia RNG "permutation" XORSHIFT triplets, from the famous
article he wrote on fast random number generation. By modern standards
they are only mediocre as far as RNGs go, but they still aren't bad. But
they are very fast, and have a few useful properties which can be handy
in places where we want a cheap source of pseudo random bits, or where
we want to get a random(ish) sequence of positive integers.
This will be used in a follow up patch.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
I intended to convery in the names of these macros that they exist to
present a uniform api to the layers above, minimally processing the
layer below to achieve that. So for example, is_porcelain_BLANK hides
the fact that isblank() doesn't exist on all platforms, or
is_porcelain_DIGIT matches the same set of 0..9 on all platforms, fixing
the non-standard definition Windows has.
I thought this is what git had meant when it used 'porcelain', but Tony
Cook informed me that it actually means something else. So to avoid
confusing people who might be aware of the real git meaning, this commit
changes 'porcelain' to 'base', which, while not entirely satisfactory,
is the best short name I have been able to think of.
|
|
|
|
| |
This is so you can print them without having to know their length.
|
|
|
|
| |
Two files were included in that commit that shouldn't have been
|
|
|
|
|
|
|
| |
This is a relic from long ago. mktables creates lib/unicore/Name.pm.
And in that file which is for internal core use only, it was creating
the beginnings of some pod, but quite incomplete; this was confusing
buildtoc, which perhaps could be hardened against such inputs.
|
|
|
|
| |
Tony Cook and Leon Timmermans explained this to me.
|
|
|
|
|
| |
This was meant to be a part of the previous commit, but somehow got
omitted.
|
|
|
|
|
| |
The sorting order of perlapi is supposed to be dictionary order. These
synonyms were grouped with other names in a non-ordered way.
|
|
|
|
| |
These shouldn't be indented
|
|
|
|
|
|
|
|
| |
This appears to have been broken for a while, and became more broken
with 75acd14e, which made newSV_type() inline.
This will also prevent warnings about calls to undeclared functions
on systems that don't need symbols to be exported.
|
|
|
|
|
| |
This layer currently expands to just the layer below it, but that will
be changed in a future commit.
|
|
|
|
| |
As a convenience to other code.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This adds a new set of macros, forming a lower layer to what is currently
there, to wrap the character classification libc functions, isdigit()
etc, and case changing ones, tolower(), toupper().
On most platforms these expand simply to the libc function call. But on
Windows, they expand to something more complex, to bring the Windows
calls into POSIX compliance. Similarly, but not as extensive, IBM
products have some non-compliant behavior, and one macro is made more
comples to fix that. Previously compliance was achieved at a higher
level, with the result that lower level calls were broken. This
resulted in parts of the test suite being skipped on Windows and IBM,
which remain for now.
The current level is rewritten to use the new lower layer, with the
result that it is simpler, as the complexity is now done further down.
|
|
|
|
| |
These 3 sets of macros can be collapsed trivially into 3 macros.
|
|
|
|
|
|
|
| |
This is to make the difference listing in future commits smaller.
This change includes some comment changes, and some extra parens around
some subexpressions
|
|
|
|
|
|
| |
By redefining a wrapper macro used in one set based on compile-time
info; the other set can be defined in terms of it, and the separate
entries removed.
|
|
|
|
|
|
|
|
|
| |
This commit changes what happens on platforms without locale handling to
use our precomputed definitions of what the various character class
definitions and case changing operations are. Previously, it just
called the libc locale-dependent functions and made sure the result was
ASCII. I think this is a holdover from before we had the precomputed
definitions
|
|
|
|
|
|
| |
These two macros are equivalent as folding and lowercasing are the same
for this input domain. Better to say so rather than to replicate the
definitions.
|
|
|
|
|
| |
The cast is required to be U8 by the POSIX standard. There is no need
to have this added generality.
|
|
|
|
| |
This changes the parameters etc, in preparation for further changes
|
|
|
|
|
|
| |
LC_CAST_ was my attempt at generality, but I didn't realize that the
POSIX standard specifies the type that this was meant to generalize, so
there isn't any need for it.
|
|
|
|
|
|
|
| |
C reserves symbols beginning with underscores for its own use. This
commit moves the underscore so it is trailing, which is legal. The
symbols changed here are many of the ones in handy.h that have
significant uses outside it.
|
|
|
|
|
|
| |
It is possible to compile perl to not pay attention to LC_CTYPE. This
was testing for no locales at all; whereas the stricter requirement
should be used.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
This changes these compilation conditionals so that things in common
between Windows and other platforms are only defined once.
It changes the isIDFIRST_LC and isWORDCHAR_LC definitions for
non-Windows to match that platform superficially, though expanding to
what it previously did to.
|
|
|
|
|
| |
Replace isIDFIRST_LC and isWORD_CHAR_LC isIDFIRST_LC with slightly
faster implementations.
|
|
|
|
|
|
|
| |
C reserves symbols beginning with underscores for its own use. This
commit moves the underscore so it is trailing, which is legal. The
symbols changed here are most of the ones in handy.h that have few uses
outside it.
|
|
|
|
| |
No need to re-derive it
|
|
|
|
|
| |
This may cause problems when not used correctly; so continue to restrict
it.
|
|
|
|
| |
Add comment to that
|
|
|
|
|
| |
The text has been expanded to discuss what happens if the any of the
pointer parameters are NULL.
|
|
|
|
| |
Indent preprocessor directives to clarify that they are in #ifdef
|