Branch: refs/heads/smoke-me/khw-env
Home: https://github.com/Perl/perl5
Commit: 1d08b717b25ddb68a7edee6c632b371579cefa74
https://github.com/Perl/perl5/commit/1d08b717b25ddb68a7edee6c632b371579cefa74
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M dosish.h
M unixish.h
Log Message:
-----------
XXX craig Unixish.h, doshish.h: Reorder terminations; simplify
The IO and memory terminations need to be after other things. Add a
comment so that future maintainers won't make the mistakes I did.
Also refactor to that amiga os doesn't have a separate list to get out
of sync
I suspect that the amiga termination should be moved to earlier in
the sequence, but absent any evidence; I'm leaving it unchanged.
Commit: 9555cc2e060f2673ca112abc5ad045460010979b
https://github.com/Perl/perl5/commit/9555cc2e060f2673ca112abc5ad045460010979b
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M locale.c
Log Message:
-----------
locale.c: Win32: Don't check folds validity
This code will check, when warnings are on, that the libc functions
return valid values. But Windows platforms will always fail because
they have multiple divergences from the Posix standard. The macros that
implement the case changing/folding in handy.h take extra steps to bring
Windows code more into alignment with Posix. Those are too complicated
to easily duplicate the logic here. The result of these checks is
looked at by our test suite, which has long, without anyone noticing,
skipped portions on Windows, even though handy.h should correct for
this. So simply, don't do the checking under Windows, and find out what
handy.h has failed to fully correct for.
Commit: 0fcd0ac7caa9135c10af21868758eb4f5c7ecc97
https://github.com/Perl/perl5/commit/0fcd0ac7caa9135c10af21868758eb4f5c7ecc97
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M lib/locale_threads.t
Log Message:
-----------
XXX locale_threads
Commit: 55ca84e737d29071d5769cf3c7bf2de5ea4731ca
https://github.com/Perl/perl5/commit/55ca84e737d29071d5769cf3c7bf2de5ea4731ca
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M locale.c
M perl.h
Log Message:
-----------
DEBUG_L now also looks at environment variable
Because locale initialization happens before command line processing,
one can't pass a -DL argument to enable debugging of locale
initialization. Instead, an environment variable is read then, and is
used to enable debugging or not. In the past, code specifically had to
test for this being set. This commit changes that so that debugging can
automatically be enabled without having to write special code. Future
commits will strip out those special checks.
Commit: e72cff609f62b960b9dc0bc41548fb3cf0e5d866
https://github.com/Perl/perl5/commit/e72cff609f62b960b9dc0bc41548fb3cf0e5d866
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M locale.c
Log Message:
-----------
locale.c: Replace most #ifdef DEBUGGING lines
THe previous commit enhanced the DEBUG macros so that they contain the
logic that previously had to be done with conditional compilation
statements. Removing them makes the code easier to read.
Commit: 887610654d809d93438c08cd6986325cc2157ae6
https://github.com/Perl/perl5/commit/887610654d809d93438c08cd6986325cc2157ae6
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M handy.h
M numeric.c
M regcomp.c
M regexec.c
M utfebcdic.h
Log Message:
-----------
Change handy.h macro names to be C standard conformant
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.
Commit: 45f080c0745a5f6a9fe3b154de2ce26a3040fb24
https://github.com/Perl/perl5/commit/45f080c0745a5f6a9fe3b154de2ce26a3040fb24
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M handy.h
Log Message:
-----------
handy.h: Remove only 2 calls to an internal macro
Replace isIDFIRST_LC and isWORD_CHAR_LC isIDFIRST_LC with slightly
faster implementations.
Commit: 202b7d81617935528acd0eede915abc01d8439da
https://github.com/Perl/perl5/commit/202b7d81617935528acd0eede915abc01d8439da
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M handy.h
Log Message:
-----------
handy.h: Refactor some #ifdef's for commonality
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.
Commit: 367fb471065bd3335f61587e47e8c0d3a7c16dd2
https://github.com/Perl/perl5/commit/367fb471065bd3335f61587e47e8c0d3a7c16dd2
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M handy.h
Log Message:
-----------
handy.h: Add some branch predictions
Commit: 73a88faa909f91265a6a5fafce309909c6c66d1a
https://github.com/Perl/perl5/commit/73a88faa909f91265a6a5fafce309909c6c66d1a
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M handy.h
Log Message:
-----------
handy.h: White-space, comment only
Commit: 3f0b1eff2ee898e8e195dd7084d506b829e2910b
https://github.com/Perl/perl5/commit/3f0b1eff2ee898e8e195dd7084d506b829e2910b
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M handy.h
Log Message:
-----------
handy.h: Don't use char class if no LC_CTYPE
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.
Commit: 537ffc08c78d566c3b1618b0db56a8162d68bbfe
https://github.com/Perl/perl5/commit/537ffc08c78d566c3b1618b0db56a8162d68bbfe
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M charclass_invlists.h
M handy.h
M l1_char_class_tab.h
M lib/unicore/uni_keywords.pl
M perl.c
M perl.h
M regcomp.c
M regcomp.h
M regen/mk_PL_charclass.pl
M regexec.c
M sv.c
M uni_keywords.h
M utfebcdic.h
Log Message:
-----------
Change handy.h macro names to be C standard conformant
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.
Commit: 059b892e9686f35a78985f8e118ab2e765b2a279
https://github.com/Perl/perl5/commit/059b892e9686f35a78985f8e118ab2e765b2a279
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M handy.h
Log Message:
-----------
handy.h: Rmv internal macro
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.
Commit: b8464e1f5d19e2c4f6aa84f7db09e7d73d0dfdd9
https://github.com/Perl/perl5/commit/b8464e1f5d19e2c4f6aa84f7db09e7d73d0dfdd9
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M handy.h
Log Message:
-----------
handy.h: Refactor some internal macros
This changes the parameters etc, in preparation for further changes
Commit: da87a402066554027c81ede88278c078c4a24c3b
https://github.com/Perl/perl5/commit/da87a402066554027c81ede88278c078c4a24c3b
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M handy.h
Log Message:
-----------
handy.h: Rmv unnecessary parameter to internal macros
The cast is required to be U8 by the POSIX standard. There is no need
to have this added generality.
Commit: 7e4c311f684b0a09d822ba1454e6682eec735309
https://github.com/Perl/perl5/commit/7e4c311f684b0a09d822ba1454e6682eec735309
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M handy.h
Log Message:
-----------
handy.h: #define one macro in terms of another
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.
Commit: 51a398eed7d6d48cc163aa0c562f4973d264dab4
https://github.com/Perl/perl5/commit/51a398eed7d6d48cc163aa0c562f4973d264dab4
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M handy.h
Log Message:
-----------
No locales => don't use isspace(), toLower() etc.
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
Commit: 65e1a84ac69409f2691655639e2819ce6a1d3890
https://github.com/Perl/perl5/commit/65e1a84ac69409f2691655639e2819ce6a1d3890
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M handy.h
Log Message:
-----------
handy.h: Collapse two sets of macros
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.
Commit: 4e6e7e6b144e4563d2ce6c74bbf149aaf9e0af05
https://github.com/Perl/perl5/commit/4e6e7e6b144e4563d2ce6c74bbf149aaf9e0af05
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M handy.h
Log Message:
-----------
handy.h: Move some macro defns around
This is to make the difference listing in future commits smaller.
This change includes some comment changes, and some extra parens around
some subexpressions
Commit: 7a86b55ff9e6f481cf6a6ff8f8829102513967df
https://github.com/Perl/perl5/commit/7a86b55ff9e6f481cf6a6ff8f8829102513967df
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M handy.h
Log Message:
-----------
handy.h: Collapse some macros
These 3 sets of macros can be collapsed trivially into 3 macros.
Commit: 90c840d6b30f7f349a3d62c23e759194c7e1f438
https://github.com/Perl/perl5/commit/90c840d6b30f7f349a3d62c23e759194c7e1f438
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M handy.h
Log Message:
-----------
handy.h: Add wrapper layer macros for isalnum() ...
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. Previously that was achieved at the higher
level, with the result that lower level calls were broken. This
resulted in parts of the test suite being skipped on Windows.
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.
I thought about calling these macros is_porcelain_isalnum or something
similar to emphaisze that they are close to the bare libc version, but
thought isU8_alnum() is shorter and conveys another truth, that being
the input is assumed to be a byte, without checking.
Commit: 3fb63ee83d10d723fec3ca33f42798a6b9f72081
https://github.com/Perl/perl5/commit/3fb63ee83d10d723fec3ca33f42798a6b9f72081
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M locale.c
M vms/vms.c
Log Message:
-----------
locale.c: Use new macros from the prev commit
This should result in Windows boxes now passing the locale sanity
checks. Previously that failure would cause the test suite tests to be
skipped, and warnings generated to Windows users that actually were
invalid, as the flaws were actually compensated for in other code.
Commit: dc46174b1c7703b599278cd3041a30182a69c379
https://github.com/Perl/perl5/commit/dc46174b1c7703b599278cd3041a30182a69c379
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M handy.h
Log Message:
-----------
XXX SEE IF WORKS handy.h: Change Windows macros
Commit: 0bc80a555453614d1a2da8d6d24e8a58e6aa209b
https://github.com/Perl/perl5/commit/0bc80a555453614d1a2da8d6d24e8a58e6aa209b
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M handy.h
Log Message:
-----------
handy.h: Add isCASED_LC
As a convenience to other code.
Commit: 7582765aa2047befed6b795b15f665d79d66c944
https://github.com/Perl/perl5/commit/7582765aa2047befed6b795b15f665d79d66c944
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M regexec.c
Log Message:
-----------
regexec.c: Improve code
These case statements in a switch all had the same prelude for checking
if the locale is UTF-8 and handling that case separately. A few commits
ago created macros closer to the base level. This commit factors out
the common UTF-8 handling, and then puts the lower lever things in the
switch(). Perhaps the C optimizer will be smart enough to do this too,
but we might as well do it ourselves, now that it is convenient.
Commit: 31aeffa0b5789f40d156138ebb0c1f7835f4fc85
https://github.com/Perl/perl5/commit/31aeffa0b5789f40d156138ebb0c1f7835f4fc85
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M regexec.c
Log Message:
-----------
regexec.c: Refactor switch default()
It seems clearer to me to have the panic at the end of the routine
instead of as the default: of a switch().
Commit: 2110a6b1c264125d6e5fac4890858227168989f8
https://github.com/Perl/perl5/commit/2110a6b1c264125d6e5fac4890858227168989f8
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M locale.c
Log Message:
-----------
locale.c: Declare three static arrays to be so.
Commit: 1ebb591e682ed270c03a93d817cd5f6bd8799fce
https://github.com/Perl/perl5/commit/1ebb591e682ed270c03a93d817cd5f6bd8799fce
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M locale.c
M perl.h
Log Message:
-----------
Move some locale.c #defines to perl.h
This is in preparation for them to be used in macros from outside
locale.c
Commit: d46118d73d8b70a9adbfc4e97041a2d0823bdaf8
https://github.com/Perl/perl5/commit/d46118d73d8b70a9adbfc4e97041a2d0823bdaf8
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M locale.c
M perl.h
Log Message:
-----------
Mark newly moved symbols as private
The previous commit made certain symbols that previously were local to
locale.c now available everywhere. Add a trailing underscore to their
names to mark them as private.
Commit: 18b88a7d1bfe812953565f4073d93d0081a6905a
https://github.com/Perl/perl5/commit/18b88a7d1bfe812953565f4073d93d0081a6905a
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M locale.c
M makedef.pl
M perl.h
Log Message:
-----------
Add USE_LOCALE_THREADS #define
This is in preparation for supporting configurations where there threads
are available, but the locale handling code should ignore that fact.
This stems from the unusual locale handling of z/OS, where any attempt
is ignored to change locales after the first thread is created.
Commit: 58599b46518d1210317c5a0b2b1201b4b0f76b0c
https://github.com/Perl/perl5/commit/58599b46518d1210317c5a0b2b1201b4b0f76b0c
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M ext/POSIX/POSIX.xs
M ext/POSIX/lib/POSIX.pm
M intrpvar.h
M locale.c
M makedef.pl
M perl.c
M perl.h
M sv.c
Log Message:
-----------
Regularize HAS_POSIX_2008_LOCALE, USE_POSIX_2008_LOCALE
A platform shouldn't be required to use the Posix 2008 locale handling
functions if they are present. Perhaps they are buggy. So, a separate
define for using them was introduced, USE_POSIX_2008_LOCALE. But until
this commit there were cases that were looking at the underlying
availability of the functions, not if the Configuration called for their
use.
Commit: 8b276d077707c60e209155c9ee616e8ba40b9996
https://github.com/Perl/perl5/commit/8b276d077707c60e209155c9ee616e8ba40b9996
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M locale.c
Log Message:
-----------
locale.c: Change macro name
Adopt the git convention of 'porcelain' meaning without special
handling. This makes it clear that porcelain_setlocale() is the base
level.
Commit: 75fea71a0b3dd754803dfcb0b6a9f833d546c30c
https://github.com/Perl/perl5/commit/75fea71a0b3dd754803dfcb0b6a9f833d546c30c
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M locale.c
Log Message:
-----------
locale.c: Cast return of setlocale() to const
If they had it to do over again, the libc makers would have made the
return of this function 'const char *'. We can cast it that way
internally to catch erroneous uses at compile time.
Commit: fb335e62c2d4cd6d44aa3333213183308257e52b
https://github.com/Perl/perl5/commit/fb335e62c2d4cd6d44aa3333213183308257e52b
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M embed.fnc
M embed.h
M locale.c
M proto.h
Log Message:
-----------
locale.c: Create S_get_category_index()
libc locale categories, like LC_NUMERIC, are opaque integers. This
makes it inconvenient to have table-driven code. Instead, we have
tables that are indexed by small positive integers, which are a
compile-time mapping from the libc values.
This commit creates a run-time function to also do that mapping. It
will first be used in the next commit.
The function does a loop through the available categories, looking for a
match. It could be replaced by some sort of quick hash lookup, but the
largest arrays in the field have a max of 12 elements, with almost all
searches finding their quarry in the first 6. It doesn't seem
worthwhile to me to replace a linear search of 6 elements by something
more complicated. The design intent is this search will be used only at
the edges of the locale-handling code; once found the index is used in
future bits of the current operation.
Commit: 708f5d6446d67349b24ff03f953487b1fc7faf20
https://github.com/Perl/perl5/commit/708f5d6446d67349b24ff03f953487b1fc7faf20
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M embed.fnc
M embed.h
M locale.c
M proto.h
Log Message:
-----------
locale.c: Use get_category_index()
This creates the first uses of the function added in the previous commit.
It changes the name of a function that now takes an index to have the
suffix _i to indicate its calling parameter is a category index rather
than a category. This will become a common paradigm in this file in
later commits.
Two macros are also created to call that function; they have suffixes _c
(to indicate the parameter is a category known at compile time, and _r
(to indicate it needs to be computed at runtime). This is in keeping
with the already existing paradigm in this file.
Commit: 2515e5e2b28d08d928fc189e6d344be6cbe60d17
https://github.com/Perl/perl5/commit/2515e5e2b28d08d928fc189e6d344be6cbe60d17
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M embed.fnc
M embed.h
M locale.c
M proto.h
Log Message:
-----------
locale.c: Change S_emulate_setlocale name and sig
It turns out this function is called only from places where we have the
category index already computed; so change the signature to use the
index and remove the re-calculation.
It renames it to emulate_setlocale_i() to indicate that the category
parameter is an index.
This also means, that it's very unlikely that it will be called with an
out-of-bounds value. Remove the debugging statement for that case (but
retain the error return value).
Commit: 7b3d65e0b6a351e4c19bd34e44065459a6c81ff3
https://github.com/Perl/perl5/commit/7b3d65e0b6a351e4c19bd34e44065459a6c81ff3
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M locale.c
M pod/perldelta.pod
M pod/perldiag.pod
Log Message:
-----------
locale.c: Simplify S_category_name
We can use the new function S_get_category_index() to simplify this.
Also, when I wrote it I didn't know about Perl_form(), and had
reimplemented a portion of it here; which is yanked as well.
Commit: 29c69fc0b6181c8a80d5ae30b076c8a8110be32f
https://github.com/Perl/perl5/commit/29c69fc0b6181c8a80d5ae30b076c8a8110be32f
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M locale.c
Log Message:
-----------
locale.c: Move unreachable code
It turns out this code, setting errno, is unreachable. Move it to the
place where it would do some good, removing an extraneous, unreachable
return;
Commit: 27a99cea1b494bd56e86e9a872bb18b862bd7be0
https://github.com/Perl/perl5/commit/27a99cea1b494bd56e86e9a872bb18b862bd7be0
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M locale.c
Log Message:
-----------
locale.c: Comment clarifications, white space
Some of these are to make future difference listings shorter
Some of the changes look like incorrect indentation here, but anticipate
future commits.
Commit: 164ba12f32adccc2312307bfcc847b57d0194d56
https://github.com/Perl/perl5/commit/164ba12f32adccc2312307bfcc847b57d0194d56
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M locale.c
Log Message:
-----------
locale.c: Move fcn within file
This is for later commits which will change it to rely on new defines
that won't occur until later in the file than its current position
Commit: 716f9b7ff23f1b11a42bcc7c00db0eb5fbada9ab
https://github.com/Perl/perl5/commit/716f9b7ff23f1b11a42bcc7c00db0eb5fbada9ab
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M embed.fnc
M embed.h
M locale.c
M proto.h
Log Message:
-----------
locale.c: Separate query part of emulate_setlocale()
This splits a large function so that it is easier to comprehend, and is
in preparation for them to be separately callable.
Commit: 31a6761146d0b134b7f5b36b7fb059490f0abec1
https://github.com/Perl/perl5/commit/31a6761146d0b134b7f5b36b7fb059490f0abec1
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M locale.c
Log Message:
-----------
locale.c: Outdent previous commit
The previous commit kept the indentation level the same as it moved code
to a new function, even though an outer block was stripped off in the
process. This was to minimize diff output. This commit is white space
only.
Commit: efb4bce0d0d1df737194fb1431c7e8ded20ab743
https://github.com/Perl/perl5/commit/efb4bce0d0d1df737194fb1431c7e8ded20ab743
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M locale.c
Log Message:
-----------
locale.c: Remove spaces around a '##' preprocessor directive
It turns out that at least my gcc preprocessor gets confused in some
contexts if spaces surround the ##. CAT2() doesn't work for these.
It is working in this context, but future commits will introduce ones
where it won't, so this commit will help make things consistent within
this file
What seems to fail is #define f(x) (..., g(x ## y), ...) where 'x' is a
an already #defined symbol. I want 'xy', but instead, for example if
'x' has been defined to be 1, I get '1y'
Commit: c42c36ded45774d878bdc4f5641eb6dc00e2ff7a
https://github.com/Perl/perl5/commit/c42c36ded45774d878bdc4f5641eb6dc00e2ff7a
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M locale.c
Log Message:
-----------
locale.c: #define some macros in terms of a base one
This is so changes to the lowest level automatically propagate to the
others
Commit: 3eadd20c39c77f7095eece2156f7ffa2c4848261
https://github.com/Perl/perl5/commit/3eadd20c39c77f7095eece2156f7ffa2c4848261
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M locale.c
Log Message:
-----------
locale.c: Create new macros for just querying locale
There are two sets of names, which immediately indicate if the result
can be relied on to be thread level or must be assumed to be global to
the whole process. At the moment they all expand to the same thing,
since on a threadless perl, it's a don't care; and on a threaded perl,
they are all already thread-level, in the Configurations we support.
Future commits will cause the macros to diverge, and comments will be
added then.
For POSIX 2008, this commit causes queries to go directly to the query
function, avoiding S_emulate_setlocale_i() completely.
Commit: 50a1d1957c0722810e610a527138c18410ea8b17
https://github.com/Perl/perl5/commit/50a1d1957c0722810e610a527138c18410ea8b17
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M locale.c
Log Message:
-----------
locale.c: Generalize certain Win32 calls
The old versions were windows-specific; the changes use a more generic
macro that currently expands to the same thing, but future commits will
change that.
Commit: eda95ac527b166808a2dc5f43c0741c014057c13
https://github.com/Perl/perl5/commit/eda95ac527b166808a2dc5f43c0741c014057c13
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M locale.c
Log Message:
-----------
locale.c: Add a convenience #define
This makes it clear if we are using an array that currently only happens
on non-querylocale systems, but that will change in future commits.
Commit: 32fe7262d2e8bdbdd88d07c4aa6f3bfcf0beb3bd
https://github.com/Perl/perl5/commit/32fe7262d2e8bdbdd88d07c4aa6f3bfcf0beb3bd
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M locale.c
Log Message:
-----------
locale.c: Add setlocale() return context macros
Future commits will benefit from knowing if the return value of
setlocale is to be ignored, just checked for if it worked, or the full
value is needed and can be relied on (or not) to be per-thread.
Commit: 9e6f41a58f5e75d392d3d335393d09493cff4251
https://github.com/Perl/perl5/commit/9e6f41a58f5e75d392d3d335393d09493cff4251
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M embed.fnc
M embed.h
M locale.c
M proto.h
Log Message:
-----------
locale.c: Add panic check/message
This panic is done when a setlocale unexpectedly fails.
Commit: 647058ad796385bce70183c7b7eb654d1b4c9fca
https://github.com/Perl/perl5/commit/647058ad796385bce70183c7b7eb654d1b4c9fca
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M embed.fnc
M embed.h
M locale.c
M proto.h
Log Message:
-----------
locale.c: Use a function table to simplify code
Some locale categories require extra steps when they are changed. This
moves that logic to a table, which gets rid of some code
Commit: 181649c3d01e2ecba7b18fef731c0f2e8f3180a1
https://github.com/Perl/perl5/commit/181649c3d01e2ecba7b18fef731c0f2e8f3180a1
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M locale.c
Log Message:
-----------
Perl_setlocale(): Same code for all param2 == NULL
Calling Perl_setlocale() with a NULL 2nd parameter returns the current
locale, rather than changing it. Previously LC_NUMERIC and LC_ALL were
treated specially; other categories were lumped in with the code that
changes the locale.
Changing some categories involves a non-trivial amount of work. This
commit avoids that by moving all queries to the same 'if' branch.
LC_NUMERIC and LC_ALL still have to be treated specially, but now it's
all within the same outer 'if', and the unnecessarily executing code
for when the locale changes is avoided.
Commit: ccc0242f6217544de6cc3935cd3160533f5d0bbf
https://github.com/Perl/perl5/commit/ccc0242f6217544de6cc3935cd3160533f5d0bbf
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M locale.c
Log Message:
-----------
locale.c: Use low level macros at low level
Implementing Perl_setlocale, we can safely use the internal macros that
the public ones expand to call, without the overhead those public macros
impose (which they do to be more immune from improper calls from outside
code).
Commit: 1c4aebc8def9fe2373f79de168e979e8af9998b5
https://github.com/Perl/perl5/commit/1c4aebc8def9fe2373f79de168e979e8af9998b5
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M locale.c
Log Message:
-----------
locale.c: Remove exploratory code
This code was to find out, in debugging builds, if an undocumented glibc
feature worked. There were no reports that it didn't, and so, after,
several releases, it has served its purpose. A future commit will allow
enabling this feature as a Configuration option.
Commit: 909ff1115e5a65eaa6a7c060c5ecde9af3d3059f
https://github.com/Perl/perl5/commit/909ff1115e5a65eaa6a7c060c5ecde9af3d3059f
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M perl.h
Log Message:
-----------
perl.h: Expand scope of cpp conditional
This just doesn't bother with checking some locale-related stuff if not
paying attention to locales.
Commit: 917ef615dedb62e48147382b41949424aca1b441
https://github.com/Perl/perl5/commit/917ef615dedb62e48147382b41949424aca1b441
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M locale.c
M perl.h
Log Message:
-----------
locale.c: Create new convenience macro
glibc doesn't have the querylocale() function, available on some other
platforms, such as Darwin and *BSD. However, it instead has the
equivalent functionality available through an undocumented feature.
This commit allows someone in the know to compile perl to use that
feature, and wraps its API with a macro so that the calling code doesn't
have to be aware of the different APIs of the two methods.
That macro's definition is now done in perl.h, as future commits will
use it in other files.
Since this is an undocumented feature, I am not currently documenting
this wrapper availability. However, it has been used in the field
without complaint for a couple of releases, as follows: A more
cumbersome substitute method continues to be used to get what it does.
But in the past both methods were tried and the program died if they
yielded different results. Since no one has complained, I'm fairly
confident it works. But sill I'm deferring its more general use.
Commit: da0bd20f5916ac2ad78bcc53c8a785ab62dfbb05
https://github.com/Perl/perl5/commit/da0bd20f5916ac2ad78bcc53c8a785ab62dfbb05
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M embed.fnc
M embed.h
M intrpvar.h
M locale.c
M proto.h
Log Message:
-----------
locale.c: querylocale() doesn't work on LC_ALL
I had misread the man pages. This bug has been in the field for several
releases now, but most likely hasn't shown up because it's almost always
the case that the locale categories will be set to the same locale. And
so most implementations of querylocale() would return the correct
result.
This commit works by splitting the calculation of the value of LC_ALL
from S_emulate_setlocale_i() into a separate function, and extending it
to work on querylocale() systems. This has the added benefit of
removing tangential code from the main line, making
S_emulate_setlocale_i easier to read.
calculate_LC_ALL() is the new function, and is now called from two
places. As part of this commit, constness is added to PL_curlocales[]
Part of this change is to keep our records of LC_ALL on non-querylocale
systems always up-to-date, which is better practice
And part of this change is temporary, marked as such, to be removed a
few commits later.
Commit: 0dbe1da1c3c6c37047c741e7c4139350605a9113
https://github.com/Perl/perl5/commit/0dbe1da1c3c6c37047c741e7c4139350605a9113
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M embed.fnc
M intrpvar.h
M locale.c
M proto.h
Log Message:
-----------
Make three locale PL_ strings const char*
This adds some compile safety to these.
Commit: 2b4d490c7522b40fc2203ad26d73682050c2da42
https://github.com/Perl/perl5/commit/2b4d490c7522b40fc2203ad26d73682050c2da42
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M embed.fnc
M embed.h
M locale.c
M proto.h
Log Message:
-----------
locale.c: Generalize stdsize_locale()
This function is rewritten to handle LC_ALL, and to handle certain buggy
Win32 locale names. This commit also calls it in appropriate places
where those buggy names could be returned.
setlocale() on Windows may return a locale that cannot be used as input
to a future setlocale(). This is contrary to the C89 standard, and
appears to have been an oversight corrected in the most recent Windows
version(s).
This commit solves the problem (as far as I know) by looking for the
problematic syntax and adjusting it.
I also rewrote the function to handle LC_ALL, which fixes that deficiency.
And, a change in that that I think is an improvement is that everything
starting with a \n is trimmed, instead of just a trailing \n being
chomped.
Commit: 8dd601cb4c63a1b8fe86b2d827a82e02bce15178
https://github.com/Perl/perl5/commit/8dd601cb4c63a1b8fe86b2d827a82e02bce15178
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M locale.c
Log Message:
-----------
XXX drop stdize_locale: #if 0, enabled even for emulate
Commit: 4284fddaf45e2086a149ac8ba6919ced219f4819
https://github.com/Perl/perl5/commit/4284fddaf45e2086a149ac8ba6919ced219f4819
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M locale.c
Log Message:
-----------
XXX debug stdized
Commit: 325e253519372feeea945c94fd484a845c2ddf49
https://github.com/Perl/perl5/commit/325e253519372feeea945c94fd484a845c2ddf49
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M locale.c
Log Message:
-----------
locale.c: Refactor some derived #defines
The _c suffix is supposed to mean the category is known at compile time.
In some configurations this does not matter, and so I had named things
carelessly, so this might be confusing. This commit fixes that.
Commit: b747c92a9fb5d2f9a6194f3498d73c16ae2f1865
https://github.com/Perl/perl5/commit/b747c92a9fb5d2f9a6194f3498d73c16ae2f1865
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M locale.c
Log Message:
-----------
locale.c: Use setlocale() for init, not P2008
We have found bugs in the POSIX 2008 libc implementations on various
platforms. This code, which does the initialization of locale handling
has always been very conservative, expecting possible failures due to
bugs in it our the libc implementations, and backing out if necessary to
a crippled, but workable state, if something goes wrong.
I think we should use the oldest, most stable locale implementation in
these circumstances
Commit: 7934d0ef035d3a9b3a5c60f6f0cfa5968cd9151f
https://github.com/Perl/perl5/commit/7934d0ef035d3a9b3a5c60f6f0cfa5968cd9151f
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M embed.fnc
M embed.h
M locale.c
M proto.h
Log Message:
-----------
locale.c: Split aggregate LC_ALL from emulate_setlocale
This splits into a separate function the code necessary in some
Configurations to calculate LC_ALL from a potentially disparate
aggregate of categories having different locales.
This is being done just for readability, as this extensive code in the
middle of something else distracts from the main point.
A goto is hence replaced by a recursive call.
Commit: 2b68c8950c205fc335c7ed82b7aa85457017b656
https://github.com/Perl/perl5/commit/2b68c8950c205fc335c7ed82b7aa85457017b656
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M embed.fnc
M locale.c
M proto.h
Log Message:
-----------
locale.c: Change internal variable name
The new name better reflects its purpose, so is less confusing
Commit: 7db277f6c550843bce0c9e9016133bbf4676a007
https://github.com/Perl/perl5/commit/7db277f6c550843bce0c9e9016133bbf4676a007
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M locale.c
Log Message:
-----------
locale.c: Clean up handling of a glibc bug
This commit moves all mention of this bug to just the code that requires
it, and inlines a macro, making it easier to comprehend
Commit: 8a77e9acaf8cb4115d03ffb8b5594de79fe7b23a
https://github.com/Perl/perl5/commit/8a77e9acaf8cb4115d03ffb8b5594de79fe7b23a
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M embed.fnc
M embed.h
M locale.c
M proto.h
Log Message:
-----------
locale.c: Split ancillary from S_emulate_setlocale
This takes the code to update LC_ALL, used only in some Configurations,
out of the main line, making the main line more readable.
It also allows the removal of temporary code added a few commits back
Commit: 4662a1e83e0d9f4ebd11215158ab5a515a46f1a1
https://github.com/Perl/perl5/commit/4662a1e83e0d9f4ebd11215158ab5a515a46f1a1
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M locale.c
Log Message:
-----------
locale.c: locale "" can be disparate
Setting a locale "" means to get the value from environment variables.
These can set locale categories to different locales, and this needs to
be handled. The logic before this commit only handled the disparate
case when the locale wasn't ""; but this was compensated for elsewhere.
A future commit will remove that compensation.
Commit: 3dcff830d2dd80ccd8953113dc633eca9dcc2f8f
https://github.com/Perl/perl5/commit/3dcff830d2dd80ccd8953113dc633eca9dcc2f8f
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M embed.fnc
M embed.h
M locale.c
M proto.h
Log Message:
-----------
Split off setting locale to "" from S_emulate_setlocale
This is done for readability, to move the special casing of setting a
locale to the empty string (hence getting it from the environment) out
of the main line code.
Commit: d27279bb54082c0db2c9dc2cbcbda4e6319b24a2
https://github.com/Perl/perl5/commit/d27279bb54082c0db2c9dc2cbcbda4e6319b24a2
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M sv.c
Log Message:
-----------
sv.c: Duplicate more variables during cloning
These locale-related ones should be getting initialized in the new
thread, but be certain.
Commit: 88878e052750a2bd66624343877b6dd3d5a6496e
https://github.com/Perl/perl5/commit/88878e052750a2bd66624343877b6dd3d5a6496e
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M embed.fnc
M embed.h
M embedvar.h
M intrpvar.h
M locale.c
M makedef.pl
M perl.c
M proto.h
M sv.c
Log Message:
-----------
locale.c: Add fcn to hide edge case undefined behavior
The POSIX 2008 API has an edge case in that the result of most of the
functions when called with a global (as opposed to a per-thread) locale
is undefined.
The duplocale() function is the exception which will create a per-thread
locale containing the values copied from the global one.
This commit just calls duplocale, if needed, and the caller need not
concern itself with this possibility
Commit: bbf4de2e1cff799954077c9e0bbf6a787e960347
https://github.com/Perl/perl5/commit/bbf4de2e1cff799954077c9e0bbf6a787e960347
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M embed.fnc
M embed.h
M locale.c
M proto.h
Log Message:
-----------
locale.c: Add DEBUGGING information
These functions are called as expansions of macros. It may be useful to
know where in the file the macro occurred.
Commit: 55cbca4075ecb43effbaf8b3d5447d4be060d628
https://github.com/Perl/perl5/commit/55cbca4075ecb43effbaf8b3d5447d4be060d628
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M locale.c
Log Message:
-----------
locale.c: Separate out two Win fcns from a larger one
This makes the larger one easier to understand, and prepares for
possible independent calls to the two, which are potentially useful on
their own.
Commit: 002c83d87a145be2186a8e75c8986d555fecdf45
https://github.com/Perl/perl5/commit/002c83d87a145be2186a8e75c8986d555fecdf45
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M ext/POSIX/POSIX.xs
Log Message:
-----------
POSIX.xs: Use macro to reduce complexity
This #defines a macro and uses it to populate a structure, so that
strings don't have to be typed twice.
Commit: 3b27863382fd0d04f6c89e7412e5788995544c29
https://github.com/Perl/perl5/commit/3b27863382fd0d04f6c89e7412e5788995544c29
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M ext/POSIX/POSIX.xs
Log Message:
-----------
POSIX.xs: White-space only
Properly indent some nested preprocessor directives
Commit: abb75a3f931c9ef29b6e0011687c67234cd401a5
https://github.com/Perl/perl5/commit/abb75a3f931c9ef29b6e0011687c67234cd401a5
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M embed.fnc
M embed.h
M ext/POSIX/POSIX.xs
M locale.c
M proto.h
Log Message:
-----------
Move code from POSIX.xs to locale.c
This avoids duplicated logic.
Commit: f5a16c6902cf002fefaa387550a1bac6d6fe9f1c
https://github.com/Perl/perl5/commit/f5a16c6902cf002fefaa387550a1bac6d6fe9f1c
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M locale.c
Log Message:
-----------
locale.c: Reorder cases in a switch
This moves handling the CODESET to the end, as future commits will make
its handling more complicated. The cases are now ordered so the
simplest (based on the direction of future commits) are first
Commit: 72333325093bddddd0360c3ef5fc1d9c10d32f0c
https://github.com/Perl/perl5/commit/72333325093bddddd0360c3ef5fc1d9c10d32f0c
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M locale.c
Log Message:
-----------
locale.c: Make statics of repeated string constants
These strings are (or soon will be) used in multiple places; so have
just one definition for them.
Commit: 2dedc54c4b1111413d9953065609e34365a00f7a
https://github.com/Perl/perl5/commit/2dedc54c4b1111413d9953065609e34365a00f7a
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M locale.c
Log Message:
-----------
locale.c: Add two #defines
This makes sure that we handle having any variant of nl_langinfo() or
localeconv().
Commit: 5c0a86bf6254fe03a0912b1f716daabfe54110fb
https://github.com/Perl/perl5/commit/5c0a86bf6254fe03a0912b1f716daabfe54110fb
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M embed.fnc
M embed.h
M locale.c
M proto.h
Log Message:
-----------
locale.c: Return defaults for uncomputable langinfo items
Return the values from the C locale for nl_langinfo() items that aren't
computable on this platform. If the platform has nl_langinfo(), then
all of them are computable, but if not, some can't be computed, and
others can be, but only if there are alternative methods available on
the platform.
As part of this commit, S_my_nl_langinfo() and S_save_to_buffer() are no
longer used when USE_LOCALE is not defined, so don't compile them.
Commit: 437ad821b13292059834b27ac275884e6e00dc03
https://github.com/Perl/perl5/commit/437ad821b13292059834b27ac275884e6e00dc03
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M locale.c
Log Message:
-----------
locale.c: Rmv reimplementation of my_strftime()
Prior to this commit, there was a near duplicate copy of the code from
util.c that implements my_strftime(). This was done because the util.c
version zaps the wday field, which made it incompatible.
But it dawned on me that if the arbitrary date we use to do our
calculations were such that it was for a year in which January 1 falls
on a Sunday, then the util.c version automatically works.
Commit: 6ed198d78ca25d69b4870d1a854375d7ccafed25
https://github.com/Perl/perl5/commit/6ed198d78ca25d69b4870d1a854375d7ccafed25
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M embed.fnc
M embed.h
M locale.c
M proto.h
Log Message:
-----------
locale.c: Shorten static function name
The extra syllable(s) are unnecessary noise
Commit: 937a842fb176aad169c90262d17b755923a9aafe
https://github.com/Perl/perl5/commit/937a842fb176aad169c90262d17b755923a9aafe
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M embed.fnc
M locale.c
M proto.h
Log Message:
-----------
locale.c: Extend a static function
This will allow it to be used in situations where the buffer it controls
is single use, and we don't need to keep track of the size for future
calls.
Commit: d30f9afef6629aa144b433f576c3dd6ccb66720a
https://github.com/Perl/perl5/commit/d30f9afef6629aa144b433f576c3dd6ccb66720a
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M locale.c
Log Message:
-----------
locale.c: Use typedef to simplify
This allows some preprocessor conditionals to be removed
Commit: eebbb4ae4e5056c1c53fdea83bb3990767ec39fb
https://github.com/Perl/perl5/commit/eebbb4ae4e5056c1c53fdea83bb3990767ec39fb
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M locale.c
Log Message:
-----------
locale.c: Rmv redundant cBOOL()
strEQ and && already return booleans
Commit: 56223823b4042f622e52e05fc0abf6ac873e5d53
https://github.com/Perl/perl5/commit/56223823b4042f622e52e05fc0abf6ac873e5d53
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M locale.c
Log Message:
-----------
locale.c: Fix currency symbol derivation
On platforms without nl_langinfo(), we derive the currency symbol from
localeconv(). The symbol must be tweaked to conform to nl_langinfo()
standards. Prior to this commit, it guessed at how to tweak a rare
circumstance. I found evidence this guess was wrong, so looked around,
and copied the way cygwin does it.
This also no longer returns just an empty string in certain cases.
nl_langinfo() itself doesn't, so conform to that.
Commit: 01d28f0c3b5b9fca9fabd606b596c5b7cc6e22cc
https://github.com/Perl/perl5/commit/01d28f0c3b5b9fca9fabd606b596c5b7cc6e22cc
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M locale.c
Log Message:
-----------
locale.c: Don't add CP to Windows code page names
The actual name appears to be just the number for purposes of
nl_langinfo()-ish things.
Commit: 88970b09b1b3b36b447cc61ea935eefc4138610e
https://github.com/Perl/perl5/commit/88970b09b1b3b36b447cc61ea935eefc4138610e
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M embed.fnc
M locale.c
M proto.h
Log Message:
-----------
locale.c: Don't ask a static fcn to be inlined
It's too complicated to really be inlined, and the compiler can figure
things out itself given it is a static function
Commit: 8ab3fff506f75b80350b18d507df8deef485fae7
https://github.com/Perl/perl5/commit/8ab3fff506f75b80350b18d507df8deef485fae7
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M embed.fnc
M locale.c
M proto.h
Log Message:
-----------
locale.c: Rmv no longer used param from static fnc
Previous commits have gotten rid of this parameter to S_save_to_buffer
Commit: 96718a645429afa4c9abd9104cc55445d1afd4eb
https://github.com/Perl/perl5/commit/96718a645429afa4c9abd9104cc55445d1afd4eb
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M locale.c
Log Message:
-----------
locale.c: Don't change locale if already there
Changing the locale is cheap for some categories, but expensive for
others. Changing LC_COLLATE is most expensive, requiring recalculation
of the collation transformation mapping.
This commit checks that we aren't already in the desired locale before
changing locales. and does nothing if no change is needed.
Commit: a28b52813bb5575737944bebe85af18930c9c945
https://github.com/Perl/perl5/commit/a28b52813bb5575737944bebe85af18930c9c945
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M locale.c
Log Message:
-----------
locale.c: Use a scratch buf; instead of reusing old
This is in preparation for the next commit
Commit: ecec1d12786a6b1de597d8847a1297c6b319dbc1
https://github.com/Perl/perl5/commit/ecec1d12786a6b1de597d8847a1297c6b319dbc1
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M embed.fnc
M embed.h
M locale.c
M proto.h
Log Message:
-----------
locale.c: Make static fcn reentrant
This makes my_langinfo() reentrant by adding parameters specifying where
to store the result.
This prepares for future commits, and fixes some minor bugs for XS
writers, in that the claim was that the buffer in calling
Perl_langinfo() was safe from getting zapped until the next call to it
in the same thread. It turns out there were cases where, because of
internal calls, the buffer did get zapped.
Commit: d5149f9d161d3389477b87da432a2e0f353094db
https://github.com/Perl/perl5/commit/d5149f9d161d3389477b87da432a2e0f353094db
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M locale.c
Log Message:
-----------
locale.c: langinfo: Use Windows fcn to find CODESET
There is a Windows function, available for quite a long time, that will
return the current code page. Use this for the nl_langinfo() CODESET,
as that libc function isn't implemented on Windows.
Commit: f133dc260170aab524d5b110c44ea8d69dc1643b
https://github.com/Perl/perl5/commit/f133dc260170aab524d5b110c44ea8d69dc1643b
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M embed.fnc
M embed.h
M locale.c
M proto.h
Log Message:
-----------
locale.c: Add static fcn to analyze locale codeset
It determines if the name indicates it is UTF-8 or not. There are
several variant spellings in use, and this hides that from the the
callers.
It won't be actually used until the next commit
Commit: 5d5b9787325cb4bc1a374ae35cebcd6f52ffa38f
https://github.com/Perl/perl5/commit/5d5b9787325cb4bc1a374ae35cebcd6f52ffa38f
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M ext/I18N-Langinfo/Langinfo.pm
M locale.c
Log Message:
-----------
locale.c: Improve non-nl_langinfo() CODESET calc
Prior to this commit, on non-Windows platforms that don't have a
nl_langinfo() libc function, the code completely punted computation of
the CODESET item. I have not been able to figure out how to do this,
even going to the locale definition files on disk (which may vary
anyway), but we can do a lot better than punting.
This commit adds three checks:
1) If the locale name is C or POSIX, we know the codeset
2) We can detect if a locale is UTF-8. If it is, that is the codeset.
Many modern locales are of this ilk.
3) Failing that, some locales have the codeset appear in the name,
following a dot.
It isn't perfect, but it's a lot better than completely punting.
Commit: 25382d659452ef81d661b3c923e8aceb88d8c274
https://github.com/Perl/perl5/commit/25382d659452ef81d661b3c923e8aceb88d8c274
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M embed.fnc
M embed.h
M locale.c
M proto.h
Log Message:
-----------
New signature for static fcn my_langinfo()
This commit changes the calling sequence for my_langinfo to add the
desired locale (or a sentinel to indicate to use the current locale),
and the locale category of the desired item.
This allows the function to be able to return the desired value for any
locale, avoiding some locale changes that would happen until this
commit, and hiding the need for locale changes from outside functions,
though a couple continue to do so to avoid potential multiple changes.
Commit: 9fa79508173013dd007e7f7e261638050a607cf7
https://github.com/Perl/perl5/commit/9fa79508173013dd007e7f7e261638050a607cf7
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M embed.fnc
M embed.h
M locale.c
M proto.h
Log Message:
-----------
locale.c: Add is_locale_utf8()
Previous commits have added the infrastructure to be able to determine
if a locale is UTF-8. This will prove useful, and this commit adds
a function to encapsulate this information, and uses it in a couple of
places, with more to come in future commits.
This uses as a final fallback, mbtowc(), which some sources view was a
late adder to C89, and others as not really being available until C99.
Future commits will add heuristics when that function isn't available.
Commit: 87487d6a645cdff078e10b1ebefd82108fe7a4de
https://github.com/Perl/perl5/commit/87487d6a645cdff078e10b1ebefd82108fe7a4de
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M embed.fnc
M embed.h
M locale.c
M proto.h
Log Message:
-----------
locale.c: Add fcn for UTF8ness determination
get_locale_string_utf8ness_i() will determine if the string it is passed
in the locale it is passed is to be treated as UTF-8, or not.
Commit: f51259b32c561071494fbc69b650bd4bae007afc
https://github.com/Perl/perl5/commit/f51259b32c561071494fbc69b650bd4bae007afc
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M embed.fnc
M embed.h
M ext/POSIX/POSIX.xs
M locale.c
M proto.h
Log Message:
-----------
XXX perldelta Move POSIX::localeconv() logic to locale.c
The code currently in POSIX.xs is moved to locale.c, and reworked some
to fit in that scheme, and the logic for the workaround for the Windows
broken localeconv() is made more robust.
This is in preparation for the next commit which will use this logic
instead of (imperfectly) duplicating it.
This also creates Perl_localeconv() for direct XS calls of this
functionality.
Commit: 9c8343ada4b1a5d8bf2e6ba7b3ecdac74ab1e2b7
https://github.com/Perl/perl5/commit/9c8343ada4b1a5d8bf2e6ba7b3ecdac74ab1e2b7
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M embed.fnc
M embed.h
M locale.c
M proto.h
Log Message:
-----------
locale.c: Collapse duplicate logic into one instance
The previous commit move the logic for localeconv() into locale.c. This
commit takes advantage of that to use it instead of repeating the logic.
On Windows, there is alternative way of finding the radix character for
systems that have a localeconv() that could cause a race. Prior to this
commit, if that failed to find something that looked like the radix, it
returned a '?'. Now it will drop down to using this new code, as the
likelihood of the race is small.
Notably, this commit removes the inconsistent duplicate logic that had
been used to deal with the Windows broken localeconv() bug.
Commit: fb4ccc89c382c10654575b7f04b00afe2fba290a
https://github.com/Perl/perl5/commit/fb4ccc89c382c10654575b7f04b00afe2fba290a
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M locale.c
Log Message:
-----------
locale.c: Fix windows bug with broken localeconv()
localeconv() was broken on Windows until VS 2015. As a workaround, this
was using my_snprintf() to find what the decimal point character is,
trying to avoid our workaround for localeconv(), which has a (slight)
chance of a race condition.
The problem is that my_snprintf() might not end up calling snprintf at
all; I didn't trace all possibilities in Windows. So it doesn't make
for a reliable sentinel.
This commit now specifically uses libc snprintf(), and if it fails, drops
down to try localeconv().
Commit: 6af22e9c4a2f733f7e0dc007751b4dbbd6f777fd
https://github.com/Perl/perl5/commit/6af22e9c4a2f733f7e0dc007751b4dbbd6f777fd
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M embed.fnc
M embed.h
M ext/POSIX/POSIX.xs
M locale.c
M proto.h
Log Message:
-----------
XXXdelta Add my_strftime8()
This is like plain my_strftime(), but additionally returns an indication
of the UTF-8ness of the returned string
Commit: f1ef80182d3a9aa62aac62890241cc4c57f7deaa
https://github.com/Perl/perl5/commit/f1ef80182d3a9aa62aac62890241cc4c57f7deaa
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M embed.fnc
M embed.h
M locale.c
M proto.h
Log Message:
-----------
locale.c: Add utf8ness return param to static fcn
my_langinfo_i() now will additionally return the UTF-8ness of the
returned string.
Commit: 25c7887b00ebd0994579fbe90185fb3f4d0d51c7
https://github.com/Perl/perl5/commit/25c7887b00ebd0994579fbe90185fb3f4d0d51c7
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M embed.fnc
M ext/I18N-Langinfo/Langinfo.xs
M locale.c
M proto.h
Log Message:
-----------
XXXdelta Add Perl_langinfo8()
This is like Perl_langinfo() but additionally returns information about
the UTF-8ness of the returned string.
Commit: 3118098942e6355942c046a94aabc440b77c0298
https://github.com/Perl/perl5/commit/3118098942e6355942c046a94aabc440b77c0298
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M locale.c
Log Message:
-----------
locale.c: Add fallbacks if no mbtowc()
This add heuristics that work well for non-English locales to determine
if a locale is UTF-8 or not when mbtowc() isn't available. It would be
a very rare compiler that didn't have that these days, but this covers
that case as best as I have been able to figure out.
Commit: 2c1b2e08b7a3446a181c1a525b3d8ed7b3f7330f
https://github.com/Perl/perl5/commit/2c1b2e08b7a3446a181c1a525b3d8ed7b3f7330f
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M locale.c
Log Message:
-----------
locale.c: Use Strerror(), not strerror()
Commit: 0dacaf99255debdd66b4d2de785674ce8f84e12d
https://github.com/Perl/perl5/commit/0dacaf99255debdd66b4d2de785674ce8f84e12d
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M embed.fnc
M embed.h
M locale.c
M proto.h
Log Message:
-----------
locale.c: Refactor #ifdef's for clarity
The my_strerror() function has effectively 5 different implementations
depending on the capabilities of the platform. Only a few lines are
common to all, the set-up and the return. The #ifdefs obscure the
underlying logic. So this commit separates them out into 5 different
functions, with the result that it's clear what is going on in each.
Commit: e473d2951fd566999f1a7aa6b95b7604f0f9c8ae
https://github.com/Perl/perl5/commit/e473d2951fd566999f1a7aa6b95b7604f0f9c8ae
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M locale.c
Log Message:
-----------
Avoid mojibake in "$!"
In stress testing, I discovered that the LC_CTYPE and LC_MESSAGES
locales need to be the same locale, or strerror() can return
question marks or mojibake instead of the proper message.
This commit refactors the handling of stringifying "$!" to make the
locales of both categories the same during the stringification.
Actually, I suspect it isn't the locale, but the codeset of the locale
that needs to be the same. I suspect that if the categories were both
in different UTF-8 locales, or both in single-byte locales, that things
would work fine. But it's cheaper to find the locale rather than the
locale's codeset, so that is what is done.
Commit: f52171591c846f64d7f5a2ff3d4bed2045738f21
https://github.com/Perl/perl5/commit/f52171591c846f64d7f5a2ff3d4bed2045738f21
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M embed.fnc
M embed.h
M locale.c
M makedef.pl
M mg.c
M proto.h
Log Message:
-----------
Move utf8ness calc for $! into locale.c from mg.c
locale.c has the infrastructure to handle this, so remove repeated
logic.
The removed code tried to discern better based on using script runs, but
this actually doesn't help, so is removed.
Commit: 00d4095eed9e15c9f7048661bc56ff204cee5e9b
https://github.com/Perl/perl5/commit/00d4095eed9e15c9f7048661bc56ff204cee5e9b
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M mg.c
Log Message:
-----------
mg.c: White-space only
Indent newly formed block from the previous commit.
Commit: 49dff38d48c4684967408e474170c3f811b6163c
https://github.com/Perl/perl5/commit/49dff38d48c4684967408e474170c3f811b6163c
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M embed.fnc
M embed.h
M embedvar.h
M intrpvar.h
M locale.c
M proto.h
M sv.c
Log Message:
-----------
locale.c: Rmv no longer used code; UTF8ness cache
What these functions do has been subsumed by code introduced in previous
commits, and in a more straight forward manner.
Also removed in this commit is the cache of the knowing what locales are
UTF-8 or not. This data is now cheaper to calculate when needed, and
there is now a single entry cache, so I don't think the complexity
warrants keeping it.
It could be added back if necessary, split off from the remainder of
this commit.
Commit: f17eac39c8cd08af11b618b4b8b6f5c001500549
https://github.com/Perl/perl5/commit/f17eac39c8cd08af11b618b4b8b6f5c001500549
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M locale.c
Log Message:
-----------
Don't discard locale info in starting P2008
The program is started in the global locale, and then is converted to
the POSIX 2008 per-thread locale API. Prior to this commit the startup
locale was discarded. It really should be the foundation for the 2008
locales. I don't know of any current paths through the code that this
makes a difference for, but it is a potential hole that is easy to plug.
Commit: 98451cfb3387916dbfe98041b81276fd61f5b7d6
https://github.com/Perl/perl5/commit/98451cfb3387916dbfe98041b81276fd61f5b7d6
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M embed.fnc
M embed.h
M locale.c
M perl.h
M proto.h
Log Message:
-----------
Add a common locale panic macro and functions
This will make sure that all the necessary clean up gets done.
Commit: 1f07440f30917eecd777634bbf806abc4c992bba
https://github.com/Perl/perl5/commit/1f07440f30917eecd777634bbf806abc4c992bba
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M locale.c
Log Message:
-----------
locale.c: Revamp sync_locale()
This rarely used function was actually failing to do what it purported
in some Configurations.
Commit: a38651a93f4393c9799e39a872cdbed243b3ee97
https://github.com/Perl/perl5/commit/a38651a93f4393c9799e39a872cdbed243b3ee97
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M locale.c
Log Message:
-----------
locale.c: Clean up thread_locale_init()
We can use internal functions to this file instead of the API ones here.
This commit also calls sync_locale() to avoid repeated logic.
Commit: e2e603524fd90b402292ed23cd8cac3ae06f71d3
https://github.com/Perl/perl5/commit/e2e603524fd90b402292ed23cd8cac3ae06f71d3
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M locale.c
Log Message:
-----------
Revamp switch_to_global_locale()
Prior to this commit, the global locale was not always getting populated
with the values from the thread being switched.
Commit: 04507cf529aec51c348e9fd0858853627af3852d
https://github.com/Perl/perl5/commit/04507cf529aec51c348e9fd0858853627af3852d
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M locale.c
Log Message:
-----------
locale.c: Omit an extra copy
In this case in Perl_setlocale(), we can just return the plain result
from setlocale(), as, if something further needs to be done that would
destroy it, that is taken care of already at the time.
On per-thread locale platforms, the result already is in a per-category
buffer.
Commit: 6568489b444f0f83fc65cf9e85be12b36a01e583
https://github.com/Perl/perl5/commit/6568489b444f0f83fc65cf9e85be12b36a01e583
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M embedvar.h
M intrpvar.h
M locale.c
M makedef.pl
M perl.c
M sv.c
Log Message:
-----------
locale.c: Cache the current LC_CTYPE locale name
This is now used as a cache of length 1 to avoid having to lookup up the
UTF-8ness as often.
There was a complicated cache previously, but changes to the logic
caused that to be much less necessary, and it is no longer actually
used, and will be removed in a later commit.
But it's pretty easy to keep this single value around to cut further
down the new scheme's need to look it up
Commit: 4f7db90de41847190fabc183409c7de2f397f32f
https://github.com/Perl/perl5/commit/4f7db90de41847190fabc183409c7de2f397f32f
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M intrpvar.h
Log Message:
-----------
intrpvar.h: Initialize a variable
I don't believe there is a bug with this PL_numeric_name being
uninitialized, but this is an easy precaution.
Commit: c86708bc1fc5e8edc3f466f03910a669cfa77661
https://github.com/Perl/perl5/commit/c86708bc1fc5e8edc3f466f03910a669cfa77661
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M locale.c
M perl.h
Log Message:
-----------
Swap the ordering of two locale category indices
Perl internally uses a mapping of locale category values into a
consecutive sequence of indices starting at 0. These are used as
indexes into arrays. The reason is that the category numbers are
opaque, vary by platform, aren't necessarily sequential, and hence are
hard to make table driven code for.
This commit makes the LC_CTYPE index 0, and LC_NUMERIC equal to 1;
swapping them. The reason is to cause LC_CTYPE to get done first in the
many loops through the categories. The UTF8ness of categories is an
often needed value, and most of the time the categories will have the
same locale. LC_CTYPE is needed to calculate the UTF8ness, and by doing
it first and caching the result, the other categories likely
automatically will use the same value, without having to recalculate.
Commit: 9d35b0d1497c3d48f699309b1bbc5d67eca3ff46
https://github.com/Perl/perl5/commit/9d35b0d1497c3d48f699309b1bbc5d67eca3ff46
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M locale.c
Log Message:
-----------
locale.c: Use new mechanism to save/restore errno
Instead of explicitly saving the errno around debugging statements, the
new more general mechanism is used.
Commit: efad080a619ef94c11bd5ca9892d3bbc83f43879
https://github.com/Perl/perl5/commit/efad080a619ef94c11bd5ca9892d3bbc83f43879
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M locale.c
Log Message:
-----------
XXX PORCELAIN_SET not yet defined locale.c: Move DEBUG location info
This commit takes advantage of the new mechanism to add common DEBUGGING
code to print the __FILE__ and __LINE__ of every debugging statement.
This allows those to be removed from each statement, and have them
implicitly added.
This make things consistent, and easier to read and add new statements.
Commit: ac2dfe55ccc16f2231ba9ecf23030dd0baddcb09
https://github.com/Perl/perl5/commit/ac2dfe55ccc16f2231ba9ecf23030dd0baddcb09
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M locale.c
Log Message:
-----------
locale.c: Add some asserts
Commit: e17094cf12ae979b13a329aa3085cb090501661b
https://github.com/Perl/perl5/commit/e17094cf12ae979b13a329aa3085cb090501661b
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M locale.c
Log Message:
-----------
locale.c: Reorder code, rmv unneeded conditional
Previous commits have made the conditional about being able to find the
radix character unnecessary. The called function my_langinfo_c()
handles the case properly.
This commit also makes the trivial case first in a conditional, as that
is easier to comprehend.
Commit: 0e005a2d22cae9a189eba69847c73ffa4239d00f
https://github.com/Perl/perl5/commit/0e005a2d22cae9a189eba69847c73ffa4239d00f
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M locale.c
Log Message:
-----------
locale.c: Reorder 'if' branches
It's better for understandability to have positive tests than negative
ones
Commit: 57dd867a73b18ea7b9b84b8b920f8ad8626fbc4c
https://github.com/Perl/perl5/commit/57dd867a73b18ea7b9b84b8b920f8ad8626fbc4c
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M locale.c
Log Message:
-----------
locale.c: Refactor a static function
S_new_numeric() is called after the LC_NUMERIC category is changed, to
update various ancillary information Perl keeps.
This reorders the function so that on POSIX 2008 platforms, the numeric
object is created earlier. This allows for fewer operations on those
platforms, as we already have the correct value in place for querying
what the radix and thousands separator characters are.
Explanatory comments are also added.
Commit: e35f385f908ddb4f200f1e99c2e4c7099e561627
https://github.com/Perl/perl5/commit/e35f385f908ddb4f200f1e99c2e4c7099e561627
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M locale.c
Log Message:
-----------
locale.c: Change assert() into STATIC_ASSERT()
Commit: 6454a4bd350b51e9ed13af8b04fd0afef73e8106
https://github.com/Perl/perl5/commit/6454a4bd350b51e9ed13af8b04fd0afef73e8106
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M locale.c
Log Message:
-----------
locale.c: Use standard fold table for C locale
Copy the standard compiled-in ASCII fold table when the locale is C or
POSIX, instead of looping through all 256 characters and computing them.
This saves some time as well as ensures that any platform bugs become
irrelevant.
Commit: 64fc510119d1fbe16f1549dfdb668f5936b82aa8
https://github.com/Perl/perl5/commit/64fc510119d1fbe16f1549dfdb668f5936b82aa8
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M locale.c
Log Message:
-----------
locale.c: Add check that strxfrm didn't fail
The code failed to take into account that strxfrm() can fail for reasons
besides buffer length. It does not return errors, and the only way to
check is to set errno to 0 beforehand, and check that it is still 0
afterwards.
Commit: 8f6c60003bf77b5c183a78c945b906b09b207778
https://github.com/Perl/perl5/commit/8f6c60003bf77b5c183a78c945b906b09b207778
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M locale.c
Log Message:
-----------
locale.c: Don't assume LC_CTYPE, LC_COLLATE are same
This code is using isCNTRL_LC which depends on LC_CTYPE to verify that
something in the LC_COLLATE locale is a control. That only works
properly if the two locales are the same. This commit adds code to
ensure they are.
Commit: 0227dfaf3fe10a700e708b65510ae5174aa0bad6
https://github.com/Perl/perl5/commit/0227dfaf3fe10a700e708b65510ae5174aa0bad6
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M locale.c
Log Message:
-----------
locale.c: strxfrm() requires LC_CTYPE eq LC_COLLATE
The libc functions strxfrm() on some platforms requires the LC_CTYPE
locale to be the same as the LC_COLLATE locale (or rather, probably that
they have the same code set, but checking for locale is cheaper).
Otherwise mojibake would result, or more likely the function will fail,
setting errno.
This commit brings the locales into alignment if necessary
Commit: 5b98231db666b09ff7592ed170dbe65082b5570a
https://github.com/Perl/perl5/commit/5b98231db666b09ff7592ed170dbe65082b5570a
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M Configure
M Cross/config.sh-arm-linux
M Cross/config.sh-arm-linux-n770
M NetWare/config.wc
M Porting/config.sh
M config_h.SH
M configure.com
M metaconfig.h
M plan9/config_sh.sample
M uconfig.h
M uconfig.sh
M uconfig64.sh
M win32/config.gc
M win32/config.vc
Log Message:
-----------
Configure: strxfrm_l
Commit: b81e3fe0beed9acd9ae4ab3d0a72966bc15faf52
https://github.com/Perl/perl5/commit/b81e3fe0beed9acd9ae4ab3d0a72966bc15faf52
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M lib/locale.t
Log Message:
-----------
XXX temp: Windows debug
Commit: 95e6283ba2299ec8187fda87fd55a92f021ee3b0
https://github.com/Perl/perl5/commit/95e6283ba2299ec8187fda87fd55a92f021ee3b0
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M locale.c
Log Message:
-----------
locale.c: Use strxfrm_l() if available
This more modern version of the function doesn't require us to change
locales.
Commit: fb44c418281743d94fc62d89944f9a54dfbdba11
https://github.com/Perl/perl5/commit/fb44c418281743d94fc62d89944f9a54dfbdba11
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M embed.fnc
M embed.h
M locale.c
M mathoms.c
M proto.h
M sv.c
Log Message:
-----------
Change name of internal function
This is in preparation for working on it; the new name, mem_collxfrm_ is
in compliance with the C Standard; the old was not.
Commit: 9469bcf29b5acc316d568924171d5c397d7c321d
https://github.com/Perl/perl5/commit/9469bcf29b5acc316d568924171d5c397d7c321d
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M embed.fnc
M ext/POSIX/POSIX.xs
M ext/POSIX/lib/POSIX.pod
M locale.c
M proto.h
Log Message:
-----------
XXXdelta Fix POSIX::strxfrm()
This function takes an SV containing a PV. The encoding of that PV is
based on the locale of the LC_CTYPE locale. It really doesn't make
sense to collate based off of the sequencing of a different locale, which
prior to this commit it would do if the LC_COLLATION locale were
different.
Commit: f2c25045c8bbaeca30d67f53b77719cfa169895d
https://github.com/Perl/perl5/commit/f2c25045c8bbaeca30d67f53b77719cfa169895d
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M embed.fnc
M embed.h
M locale.c
M proto.h
Log Message:
-----------
locale.c: Improve debugging for mem_collxfrm()
This prints out more information, better organized.
It also moves up the info from -DLv to plain -DL
Commit: 1e2acb3419b4a7a5458aa4db47383b0beb383327
https://github.com/Perl/perl5/commit/1e2acb3419b4a7a5458aa4db47383b0beb383327
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M locale.c
Log Message:
-----------
locale.c: Add debug statement for collation failure
Perhaps this should be a warning to the user that we couldn't calculate
collation info for the locale, but at least there should be a way to
get that info from a DEBUG statement
Commit: b6d1c7a909034ad24a56c2ddc2e3ad37a08adb03
https://github.com/Perl/perl5/commit/b6d1c7a909034ad24a56c2ddc2e3ad37a08adb03
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M locale.c
Log Message:
-----------
locale.c: Print code point in hex, not decimal
Hex is the more familiar form
Commit: 0d11494d7e15ab366f2923adac331b3ac1318b80
https://github.com/Perl/perl5/commit/0d11494d7e15ab366f2923adac331b3ac1318b80
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M ext/POSIX/POSIX.xs
M locale.c
M perl.h
Log Message:
-----------
Mark certain mutex lock macros as private
mbtowc() mblen(), and wctomb() should not be directly used by XS
writers; instead use the POSIX versions. Don't encourage the direct use
by having public macros to aid in their use.
Commit: e182f598a82349bef7e2ff5908deeb2c5c046893
https://github.com/Perl/perl5/commit/e182f598a82349bef7e2ff5908deeb2c5c046893
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M perl.h
Log Message:
-----------
perl.h: Move some code around
This is purely to make future commits have smaller real difference
listings, and involves a temporary (complemented) copy of a preprocessor
conditional.
Commit: abbcb93fd7c7878a9c4840037bcf69852f1798fb
https://github.com/Perl/perl5/commit/abbcb93fd7c7878a9c4840037bcf69852f1798fb
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M perl.h
Log Message:
-----------
perl.h: Reorder cpp branches
Disposing of the trivial case first makes things easier to read.
Commit: dfceb5e1f99609a8fb9a8014d8fb8bdd01e7da11
https://github.com/Perl/perl5/commit/dfceb5e1f99609a8fb9a8014d8fb8bdd01e7da11
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M embedvar.h
M intrpvar.h
M locale.c
M makedef.pl
M perl.h
M sv.c
Log Message:
-----------
Make the locale mutex a general semaphore
Future commits will use this new capability, and in Configurations where
no locale locking is currently necessary.
Commit: f2d404d3c00dfc5e581bfea35c53191478d56d3f
https://github.com/Perl/perl5/commit/f2d404d3c00dfc5e581bfea35c53191478d56d3f
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M embedvar.h
M intrpvar.h
M makedef.pl
M perl.h
M perlvars.h
M sv.c
Log Message:
-----------
Use general locale mutex for numeric operations
This commit removes the separate mutex for locking locale-related
numeric operations on threaded perls; instead using the general locale
one. The previous commit made that a general semaphore, so now suitable
for use for this purpose as well.
This means that the locale can be locked for the duration of some
sprintf operations, longer than before this commit. But on most modern
platforms, thread-safe locales cause this lock to expand just to a
no-op; so there is no effect on these. And on the impacted platforms,
one is not supposed to be using locales and threads in combination, as
races can occur. This lock is used on those perls to keep Perl's
manipulation of LC_NUMERIC thread-safe. And for those there is also no
effect, as they already lock around those sprintf's.
Commit: 3dbb3e601f5e9410b108e33413c18125ebf5126d
https://github.com/Perl/perl5/commit/3dbb3e601f5e9410b108e33413c18125ebf5126d
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M perl.h
Log Message:
-----------
Add locale macro to wrap static-space-using fncs
Some functions return a result in a global-to-the-program buffer, or
they have an internal global buffer. Other threads must be kept from
simultaneously using that function. This macro is to be used for all
such ones dealing with locales. Ideally, there would be a separate mutex
for each such buffer space. But these functions also have to lock the
locale from changing during their execution, and there aren't that many
such functions, and they actually are rarely executed. So a single lock
will do.
This will allow future commits to have more targeted locking for
functions that don't affect the global locale.
Commit: fc27fc73c3ca4b17ee847d7c1d955eddda96bda3
https://github.com/Perl/perl5/commit/fc27fc73c3ca4b17ee847d7c1d955eddda96bda3
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M perl.h
Log Message:
-----------
Redefine the POSIX.xs locale macros using prev commit
This commit uses the new macro introduced in the previous commit to
define the internal locale mutex macros in POSIX.xs
Commit: 9fe86740c192c609762201c1ac27dab2bf9f27d3
https://github.com/Perl/perl5/commit/9fe86740c192c609762201c1ac27dab2bf9f27d3
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M locale.c
M perl.h
Log Message:
-----------
perl.h: Remove NL_LANGINFO_LOCK
This is needed in precisely one place in the code, so move it to there.
Commit: 1629b8dbf6f7e729d987b27271d52e480a2dc13d
https://github.com/Perl/perl5/commit/1629b8dbf6f7e729d987b27271d52e480a2dc13d
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M locale.c
M perl.h
Log Message:
-----------
perl.h: Remove LOCALECONV_LOCK
This is needed in just one function, in locale.c, so more it there.
Commit: 0d197e21c0ec587425582d1eca2bfad413fc1c37
https://github.com/Perl/perl5/commit/0d197e21c0ec587425582d1eca2bfad413fc1c37
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M locale.c
M perl.h
Log Message:
-----------
XXX perlembed Add PORCELAIN_SETLOCALE_LOCK/UNLOCK
This macro is used to surround raw setlocale() calls so that the return
value in a global static buffer can be saved without interference with
other threads.
There are a few very rarely occurring instances in locale.c that are
converted to use this. These previously could have been races.
The raw setlocales in the initialization function are not guarded, as
these happen early in the Perl process initialization, before threading
is enabled.
This is buggy if there are multiple embedded perls. It can't be helped.
perlembed is being updated to indicate this.
Commit: d1dbf0278ed981474e034251bf1e56778744a2a3
https://github.com/Perl/perl5/commit/d1dbf0278ed981474e034251bf1e56778744a2a3
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M perl.h
Log Message:
-----------
perl.h: Move #defining SETLOCALE_LOCK
This simplifies slightly, and will allow further simplification
Commit: 3fbc13c6e4d3eb4a9d5eb79ceb178766d3060011
https://github.com/Perl/perl5/commit/3fbc13c6e4d3eb4a9d5eb79ceb178766d3060011
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M perl.h
Log Message:
-----------
perl.h: Move LOCALE_READ_LOCK #definition
To enable future simplifications
Commit: 67f7e9e5ab7bb17d8c9a7f06062fca4b4ebfa67a
https://github.com/Perl/perl5/commit/67f7e9e5ab7bb17d8c9a7f06062fca4b4ebfa67a
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M intrpvar.h
M locale.c
M makedef.pl
M perl.c
M perl.h
M sv.c
Log Message:
-----------
locale.c: Move #define to perl.h; use it elsewhere
Rather than recalculate this combined conditional, do it once in
perl.h.
Commit: 57c5e3995679382ff86c5973b6b31c927cf3e52d
https://github.com/Perl/perl5/commit/57c5e3995679382ff86c5973b6b31c927cf3e52d
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M embed.fnc
M embed.h
M locale.c
M proto.h
Log Message:
-----------
locale.c: Mitigate unsafe threaded locales
This a new set of macros and functions to do locale changing and
querying for platforms where perl is compiled with threads, but the
platform doesn't have thread-safe locale handling.
All it does is:
1) The return of setlocale() is always safely saved in a per-thread
buffer, and
2) setlocale() is protected by a mutex from other threads which are
using perl's locale functions.
This isn't much, but it might be enough to get some programs to work on
such platforms which rarely change or query the locale.
Commit: 2af2b66760073d2cafdff0dd42b0ec86b7d7bb38
https://github.com/Perl/perl5/commit/2af2b66760073d2cafdff0dd42b0ec86b7d7bb38
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M perl.h
Log Message:
-----------
XXX make sure comments get moved appropriately perl.h: Remove now empty block
Previous commits have left this empty except for comments.
Commit: dfd7cce1d1fc9c57a9f3423b1f98c2350fe0c030
https://github.com/Perl/perl5/commit/dfd7cce1d1fc9c57a9f3423b1f98c2350fe0c030
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M pp.c
Log Message:
-----------
XXX pp.c: do %g print under mutex,
Commit: 388f626f4a2ed7810241fad61aee608469cc9b60
https://github.com/Perl/perl5/commit/388f626f4a2ed7810241fad61aee608469cc9b60
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M ebcdic_tables.h
M embedvar.h
M globvar.sym
M inline.h
M intrpvar.h
M perl.h
M regen/ebcdic.pl
M sv.c
Log Message:
-----------
Make fc(), /i thread-safe on participating platforms
A long standing bug in Perl that has gone undetected is that the array
is global that is created when changing locales and tells fc() and qr//i
matching what the folds are in the new locale.
What this means is that any program only has one set of fold definitions
that apply to all threads within it, even if we claim that the locales
are thread-safe on the given platform. One possibility for this going
undetected so long is that no one is using locales on multi-threaded
systems much. Another possibility is that modern UTF-8 locales have the
same set of folds as any other one.
It is a simple matter to make the fold array per-thread instead of
per-process, and that solves the problem transparently to other code.
I discovered this stress-testing locale handling under threads. That
test will be added in a future commit.
Commit: cd4b65dfe2ef41751431e386a4ee94e6286d0a41
https://github.com/Perl/perl5/commit/cd4b65dfe2ef41751431e386a4ee94e6286d0a41
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M inline.h
M locale.c
Log Message:
-----------
XXX temp debug? locale.c, inline.h:foldEQ_locale
Commit: 39807a8528d83ee31ff9cfa104126b79ab77f4c3
https://github.com/Perl/perl5/commit/39807a8528d83ee31ff9cfa104126b79ab77f4c3
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M locale.c
Log Message:
-----------
locale.c comments
Commit: 2b4b78b889d94bc4e17c159e93d694e985751bfc
https://github.com/Perl/perl5/commit/2b4b78b889d94bc4e17c159e93d694e985751bfc
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M locale.c
Log Message:
-----------
XXX prob drop; done before anything so no races
Commit: ab15f493b0dad3d1006e0771959f8cb8f649a30f
https://github.com/Perl/perl5/commit/ab15f493b0dad3d1006e0771959f8cb8f649a30f
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M perl.h
Log Message:
-----------
perl.h: Add #define for gwENVr_LOCALEr_UNLOCK
This is for functions that read the locale and environment and write to
some global space.
Commit: 37b3ee49f1a5761de477615ea04ef4995bbc4a5f
https://github.com/Perl/perl5/commit/37b3ee49f1a5761de477615ea04ef4995bbc4a5f
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M perl.h
M time64.c
Log Message:
-----------
Remove ENV_LOCALE_LOCK/UNLOCK macros
These are subsumed by gwENVr_LOCALEr_LOCK created in the previous
commit.
Commit: ab9bf33f3c44492cf50d9db6077d03506229d5ca
https://github.com/Perl/perl5/commit/ab9bf33f3c44492cf50d9db6077d03506229d5ca
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M perl.h
M time64.c
M util.c
Log Message:
-----------
Change ENV/LOCALE locking read macro names
The old name was confusing.
Commit: fe6163de3458354f8776ed2ad02f4a46d3b2001f
https://github.com/Perl/perl5/commit/fe6163de3458354f8776ed2ad02f4a46d3b2001f
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M perl.h
Log Message:
-----------
perl.h: Move some statements
So they are closer to related statements
Commit: 1c082abe29905f854765cd28efcdbcbd21664d61
https://github.com/Perl/perl5/commit/1c082abe29905f854765cd28efcdbcbd21664d61
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M perl.h
M util.c
Log Message:
-----------
perl.h: Finish implementing combo ENV/LOCALE mutexes
There are cases where an executing function is vulnerable to either the
locale or environment being changed by another thread. This commit
implements macros that use mutexes to protect these critical sections.
There are two cases that exist: one where the functions only read; and
one where they can also need exclusive control so that a competing
thread can't overwrite the returned static buffer before it is safely
copied.
5.32 had a placeholder for these, but didn't actually implement it.
Instead it locked just the ENV portion. On modern platforms with
thread-safe locales, the locale portion is a no-op anyway, so things
worked on them.
This new commit extends that safety to other platforms. This has long
been a vulnerability in Perl.
Commit: 17d1936aa9db0318cbb6ccc6c04b4aaaceda4987
https://github.com/Perl/perl5/commit/17d1936aa9db0318cbb6ccc6c04b4aaaceda4987
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M time64.c
Log Message:
-----------
time64.c: Remove no longer needed code
This code defined some macros; those are now defined by perl.h
Commit: 1e42c52b9a22af1de3b9257b76de2d5c4abb4251
https://github.com/Perl/perl5/commit/1e42c52b9a22af1de3b9257b76de2d5c4abb4251
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M pp_sys.c
Log Message:
-----------
XXX need to StructCopy pp_sys mutexes
Commit: 7cb74ff9f80bc7219a8ab788cf5f22c0c7a0ed0c
https://github.com/Perl/perl5/commit/7cb74ff9f80bc7219a8ab788cf5f22c0c7a0ed0c
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M win32/win32.c
Log Message:
-----------
win32.c: Add mutexes around some calls
These could have races.
Commit: 91af6a5af42278ac4f5191a503380aeea3085101
https://github.com/Perl/perl5/commit/91af6a5af42278ac4f5191a503380aeea3085101
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M ext/POSIX/POSIX.xs
Log Message:
-----------
POSIX.xs env locks, check file for more
Commit: 447429113cc117d64341ba3366b0f88976af4cb0
https://github.com/Perl/perl5/commit/447429113cc117d64341ba3366b0f88976af4cb0
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M util.c
Log Message:
-----------
util.c: mktime needs to run under a mutex
per the Posix standard
Commit: 5f3f4674dbe89e350d265f8d51faa81be9818535
https://github.com/Perl/perl5/commit/5f3f4674dbe89e350d265f8d51faa81be9818535
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M util.c
Log Message:
-----------
util.c: Add locks around strftime() calls
Commit: d45a6874250590013e5ed2bbb15abcf003e55707
https://github.com/Perl/perl5/commit/d45a6874250590013e5ed2bbb15abcf003e55707
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M cygwin/cygwin.c
Log Message:
-----------
cygwin
Commit: 3020b41ee6f32f1cb514b3d9d5b7ac45d0f1421f
https://github.com/Perl/perl5/commit/3020b41ee6f32f1cb514b3d9d5b7ac45d0f1421f
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M os2/os2.c
Log Message:
-----------
os2: Use many reader lock instead of exclusive
This is just reading the environment, not changing it, so a many readers
can be accessing it at the same time.
Commit: 70695b687d4caddf2a13bbfaed90009967e23972
https://github.com/Perl/perl5/commit/70695b687d4caddf2a13bbfaed90009967e23972
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M cpan/Time-Piece/Piece.pm
M cpan/Time-Piece/Piece.xs
Log Message:
-----------
XXX cpan PR Time-Piece: Add locks
This add mutex locking around some unsafe thread operations to make this
module thread-safe.
Commit: 89ebdbef865007b998df1b29e2a2cebdb7ac52b5
https://github.com/Perl/perl5/commit/89ebdbef865007b998df1b29e2a2cebdb7ac52b5
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M cpan/Time-Piece/Piece.xs
Log Message:
-----------
Time-Piece: Use foldEQ_locale() if available
This supported core function is thread-safe and knows about Perl
internals, so is preferable to the similar libc function, which is now
used only as a fallback. This commit also bomb proofs the code by
adding an additional fallback, specified in C89, which isn't a great
substituted, but far better than nothing.
Commit: 8350c571732339ba05b271a193c577e33712144b
https://github.com/Perl/perl5/commit/8350c571732339ba05b271a193c577e33712144b
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M cpan/Time-Piece/Piece.xs
Log Message:
-----------
Time-Piece: Use isSPACE, not isspace
The latter gives results that are dependent on the program's underlying
locale, and so may be inconsistent.
If locale dependence is actually desired, isSPACE_LC should be used, as
it knows about various things the module writer shouldn't have to
concern themselves with. It is supported since 5.004
Commit: 53812fc147e7e9880f12063c0e43e43f5219f4bf
https://github.com/Perl/perl5/commit/53812fc147e7e9880f12063c0e43e43f5219f4bf
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M cpan/Time-Piece/Piece.xs
Log Message:
-----------
Time-Piece: Use isDIGIT, not isdigit
The latter gives results that are dependent on the program's underlying
locale, and so may be inconsistent.
If locale dependence is actually desired, isDIGIT_LC should be used, as
it knows about various things the module writer shouldn't have to
concern themselves with. It is supported since 5.004
Commit: 8441fe8e6452def4af99c4d62152b6ed540fae55
https://github.com/Perl/perl5/commit/8441fe8e6452def4af99c4d62152b6ed540fae55
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M cpan/Time-Piece/Piece.xs
Log Message:
-----------
Time-Piece: Use isUPPER, not isupper
The latter gives results that are dependent on the program's underlying
locale, and so may be inconsistent.
If locale dependence is actually desired, isUPPER_LC should be used, as
it knows about various things the module writer shouldn't have to
concern themselves with. It is supported since 5.004
Commit: 7d33d3f92bbadaa242e09073bffb872e5d58a56b
https://github.com/Perl/perl5/commit/7d33d3f92bbadaa242e09073bffb872e5d58a56b
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M pod/perlhacktips.pod
Log Message:
-----------
XXX incomplete perlhacktips:
Commit: 945f69b9cbe876224bc803f46b86c81ca00e740f
https://github.com/Perl/perl5/commit/945f69b9cbe876224bc803f46b86c81ca00e740f
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M dist/IO/IO.pm
M dist/IO/IO.xs
Log Message:
-----------
XXX check if using ppport IO.xs: Remove fallback code furnished by ppport
Commit: 20c0dcf59fde2a0f6926192462d8e50b5262bf86
https://github.com/Perl/perl5/commit/20c0dcf59fde2a0f6926192462d8e50b5262bf86
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M hints/freebsd.sh
Log Message:
-----------
XXX check with freebsd: hints/freebsd.sh
Commit: 6bb70fedde02f1aaf6de266b80939a6e0ae6165d
https://github.com/Perl/perl5/commit/6bb70fedde02f1aaf6de266b80939a6e0ae6165d
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M thread.h
Log Message:
-----------
thread.h: White-space, braces only
Commit: d85a3092c2e9c40292d3b60bb73a00062b6816f7
https://github.com/Perl/perl5/commit/d85a3092c2e9c40292d3b60bb73a00062b6816f7
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M thread.h
Log Message:
-----------
XXX thread.h Save errno around lock/unlock
Commit: 10ab82e093720e8622085ae4f3338d09386e8c09
https://github.com/Perl/perl5/commit/10ab82e093720e8622085ae4f3338d09386e8c09
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M perl.h
Log Message:
-----------
XXX perl.h: Debugging mutex lock'
Commit: 702ad5d7d8a17f72f90a14b29a349f23b1272717
https://github.com/Perl/perl5/commit/702ad5d7d8a17f72f90a14b29a349f23b1272717
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M cpan/Time-Piece/Piece.xs
M handy.h
M iperlsys.h
M locale.c
M perl.h
M regen/reentr.pl
M regexec.c
M sv.c
M util.c
Log Message:
-----------
Notes
Commit: 9ecb361d1f0b87709543c52493b932c05c5b2c89
https://github.com/Perl/perl5/commit/9ecb361d1f0b87709543c52493b932c05c5b2c89
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M ext/POSIX/POSIX.xs
M locale.c
M perl.h
Log Message:
-----------
locks
Commit: 69a274a2d991562180016c1bd05a3aaee433d375
https://github.com/Perl/perl5/commit/69a274a2d991562180016c1bd05a3aaee433d375
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M locale.c
Log Message:
-----------
XXX locale.c: Kludge because C obj getting destroyed
Commit: 6b6df8fd0258fc2786ebc65c4303682a97db9318
https://github.com/Perl/perl5/commit/6b6df8fd0258fc2786ebc65c4303682a97db9318
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M .github/workflows/testsuite.yml
Log Message:
-----------
Make DEBUGGING the default on CI
Commit: 4c141e1db1254b094437037dbfbb182c9548729b
https://github.com/Perl/perl5/commit/4c141e1db1254b094437037dbfbb182c9548729b
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M t/run/locale.t
Log Message:
-----------
t/run/locale.t
Commit: 3985411b76cae0fe06fd50dd99d99d37eb5aacd8
https://github.com/Perl/perl5/commit/3985411b76cae0fe06fd50dd99d99d37eb5aacd8
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M t/run/locale.t
Log Message:
-----------
t/run/locale.t: Move init stmt
This makes it easier to add a line to turn on debugging temporarily
Commit: cb5c91e13b4c58fa10e0e178016a69f5e913cb05
https://github.com/Perl/perl5/commit/cb5c91e13b4c58fa10e0e178016a69f5e913cb05
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M t/run/locale.t
Log Message:
-----------
XXX run/locale.t temp win
Commit: f83f94500e0c99f3dd18c96232223218d1473f8e
https://github.com/Perl/perl5/commit/f83f94500e0c99f3dd18c96232223218d1473f8e
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M t/porting/customized.dat
M vutil.c
Log Message:
-----------
vutil.c: Clean up white space
Change tabs to blanks; Fix indentation; chomp trailing white space
Remove some blank lines that don't contribute to readability
Commit: 2b162039f017bbb2c0cfddf56606d05f03f58840
https://github.com/Perl/perl5/commit/2b162039f017bbb2c0cfddf56606d05f03f58840
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M t/porting/customized.dat
M vutil.c
Log Message:
-----------
vutil.c: Simplify locale handling
I read the code over and realized that there was a much simpler way to
do things.
Commit: bbdfc4dbbfb0204f8c88b5c54a6e8813997af807
https://github.com/Perl/perl5/commit/bbdfc4dbbfb0204f8c88b5c54a6e8813997af807
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M locale.c
Log Message:
-----------
locale.c: Change a branch into an assert
This code should no longer be necessary; but verify
Commit: 1ecee24f68921a589f26055e20cfef8f8270cc56
https://github.com/Perl/perl5/commit/1ecee24f68921a589f26055e20cfef8f8270cc56
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M t/loc_tools.pl
Log Message:
-----------
XXX loc_tools: debug, white space
Commit: b20d97ddb4e203c86cca85fe201738cb14ad2b40
https://github.com/Perl/perl5/commit/b20d97ddb4e203c86cca85fe201738cb14ad2b40
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M embed.fnc
M embed.h
M locale.c
M proto.h
Log Message:
-----------
Add pTHX to locale_thread_init()
Commit: 0b517a10417a5209f5ca69345902d93cf06e9ae9
https://github.com/Perl/perl5/commit/0b517a10417a5209f5ca69345902d93cf06e9ae9
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M locale.c
Log Message:
-----------
l
Commit: bc370b14807101ce3f3c3e7135974ff13dea72a3
https://github.com/Perl/perl5/commit/bc370b14807101ce3f3c3e7135974ff13dea72a3
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M embedvar.h
M intrpvar.h
M locale.c
M sv.c
Log Message:
-----------
PLcurlocales
Commit: 86a19190acb31dd7432aeab8961dcff611149779
https://github.com/Perl/perl5/commit/86a19190acb31dd7432aeab8961dcff611149779
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M lib/locale.t
Log Message:
-----------
lib/locale.t FILE debug
Commit: 960114cd7ce1799ed937e76e9bae3b3480787f26
https://github.com/Perl/perl5/commit/960114cd7ce1799ed937e76e9bae3b3480787f26
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M locale.c
Log Message:
-----------
locale.c: windows DEBUG stmts
Commit: 821b828cfefb213c818386344bad1e1e2adf2196
https://github.com/Perl/perl5/commit/821b828cfefb213c818386344bad1e1e2adf2196
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M embed.fnc
M proto.h
Log Message:
-----------
f save_to_buffer ignore return
Commit: 381afc10361388122c6eabfb1cac26089a55924b
https://github.com/Perl/perl5/commit/381afc10361388122c6eabfb1cac26089a55924b
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M handy.h
Log Message:
-----------
handy.h: Add layer for char classification/case change
This layer currently expands to just the layer below it, but that will
be changed in a future commit.
Commit: 574f261b9f00b39e44fa6501e632f892ea876ad0
https://github.com/Perl/perl5/commit/574f261b9f00b39e44fa6501e632f892ea876ad0
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M dist/ExtUtils-ParseXS/lib/perlxs.pod
M t/porting/known_pod_issues.dat
Log Message:
-----------
perlxs
Commit: d9a6dd04c9636de2eeb6839ba192baee3664b0d3
https://github.com/Perl/perl5/commit/d9a6dd04c9636de2eeb6839ba192baee3664b0d3
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M perl.h
Log Message:
-----------
XXX Temp dont use querylocale()
Commit: 04a140888a1b3d8ec52148df541176ecd900d3b9
https://github.com/Perl/perl5/commit/04a140888a1b3d8ec52148df541176ecd900d3b9
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M locale.c
Log Message:
-----------
l
Commit: bde069c8580471196f86967d2a7e759bc55c85bc
https://github.com/Perl/perl5/commit/bde069c8580471196f86967d2a7e759bc55c85bc
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M embedvar.h
M intrpvar.h
M locale.c
M sv.c
Log Message:
-----------
Revert "PLcurlocales"
This reverts commit cd1fd76eac05b9ca866bb6f1dae6151767aa3d76.
Commit: c30cc4a4ce3fc077795f79ffec178b5de97a4fe7
https://github.com/Perl/perl5/commit/c30cc4a4ce3fc077795f79ffec178b5de97a4fe7
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M embed.fnc
M locale.c
M proto.h
Log Message:
-----------
locale.c: Rmv unused code
The code to handle changing LC_NUMERIC and LC_COLLATION handled the
possibility of being passed a NULL locale name. But we're not changing
things unless we have a new locale, and know its name, so a name is
always passed
Commit: ab042f010061e0fed9c0b6506ef17f5b8d102359
https://github.com/Perl/perl5/commit/ab042f010061e0fed9c0b6506ef17f5b8d102359
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M intrpvar.h
Log Message:
-----------
intrpvar.h: Swap position of two defns; add comment
Commit: eacf5ed970965e820c80098cfb77cbda01958235
https://github.com/Perl/perl5/commit/eacf5ed970965e820c80098cfb77cbda01958235
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M intrpvar.h
M locale.c
Log Message:
-----------
locale.c: Add 'Lazy' location changing
When comparing two strings for order under 'use locale', one can call
strcoll() which creates hidden modified versions of the strings based on
the locale's collation ordering, does the comparison, and then throws
away the modified versions.
Or one can call strxfrm() to create a non-hidden modified version of
each string, and then do a straight comparison. The advantage here is
that you are in control of when to discard the modified version, and the
(expensive) transformation is done just once, no matter how many times a
comparison is done.
Perl assumes that a string will be compared multiple times, so the first
time it happens under 'use locale', strxfrm() is called, and the
modified string is attached via magic to the SV. The modified string is
discarded if the string changes, or is recomputed if the locale has
changed since the computation was done.
The transformation generally occupies some multiple of size of the
original string. Memory must be allocated to hold it. For any given
locale, the amount is predictable for all strings, roughly via a linear
equation "mx+b", where x is the size of the original string. By
computing 'm' and 'b' once, Perl can allocate enough memory to hold the
transformation, but not too much. (m and b are adjusted up as necessary
as more strings get transformed.) This minimizes mallocs.
But the calculation of m and b is somewhat expensive, and only necessary
if the program actually does a string compare under 'use locale'.
This commit defers the calculation until needed. It does the bare
minimum of changes accomplish this. The next commit will rearrange
things.
Commit: 1b9ee3cfe7c0e40a91c27a960970832045d43f7e
https://github.com/Perl/perl5/commit/1b9ee3cfe7c0e40a91c27a960970832045d43f7e
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M locale.c
Log Message:
-----------
locale.c: Move code, white-space, comment only
This moves the function created in the previous commit to a more logical
place in the file; just before its only call. It also removes nested
blocks that are no longer necessary.
Commit: b7f608b85dffe4ce50bc219de5447a952f45f19d
https://github.com/Perl/perl5/commit/b7f608b85dffe4ce50bc219de5447a952f45f19d
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M locale.c
M util.c
Log Message:
-----------
XXX Configure strftime() is C89
We can assume it exists
Commit: 709e4259015498e0fe13ebc2d73479364edd5b8d
https://github.com/Perl/perl5/commit/709e4259015498e0fe13ebc2d73479364edd5b8d
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M perl.h
M sv.c
Log Message:
-----------
perl.h: Change macro name to be C conformant
Leading underscores in names are undefined
Commit: de864e321514a29f8366ba430156beb59e15239f
https://github.com/Perl/perl5/commit/de864e321514a29f8366ba430156beb59e15239f
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M patchlevel.h
Log Message:
-----------
patchlevel.h: White-space only: properly indent
Commit: 8f68bbb95b08b508ad12e02c6dbce28cb68c5a7d
https://github.com/Perl/perl5/commit/8f68bbb95b08b508ad12e02c6dbce28cb68c5a7d
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M patchlevel.h
Log Message:
-----------
Kludge to get cygwin to compile
Commit: 7662f4f33f2a6a37ae77ab7e16410cd560917177
https://github.com/Perl/perl5/commit/7662f4f33f2a6a37ae77ab7e16410cd560917177
Author: Karl Williamson <[email protected]>
Date: 2021-04-05 (Mon, 05 Apr 2021)
Changed paths:
M cygwin/cygwin.c
M embed.fnc
M embed.h
M ext/XS-APItest/t/locale.t
M handy.h
M intrpvar.h
M lib/locale.t
M lib/locale_threads.t
M locale.c
M perl.h
M pod/perldiag.pod
M proto.h
M sv.c
M t/loc_tools.pl
M t/run/locale.t
Log Message:
-----------
more16
Compare: https://github.com/Perl/perl5/compare/1d08b717b25d%5E...7662f4f33f2a