Branch: refs/heads/smoke-me/khw-tr
  Home:   https://github.com/Perl/perl5
  Commit: 90c3fd0d9c17a53238a4fa4c2e4c4726c5994346
      
https://github.com/Perl/perl5/commit/90c3fd0d9c17a53238a4fa4c2e4c4726c5994346
  Author: Karl Williamson <[email protected]>
  Date:   2019-11-03 (Sun, 03 Nov 2019)

  Changed paths:
    M Configure

  Log Message:
  -----------
  XXX Configure backtrace


  Commit: d3136afb428f9e70cc578c73e55ad7a8dad695cd
      
https://github.com/Perl/perl5/commit/d3136afb428f9e70cc578c73e55ad7a8dad695cd
  Author: James E Keenan <[email protected]>
  Date:   2019-11-06 (Wed, 06 Nov 2019)

  Changed paths:
    M pod/perldiag.pod

  Log Message:
  -----------
  Corrections: one grammatical; one POD formatting


  Commit: 452f93d63888990215e233caacc2f0ea132ab216
      
https://github.com/Perl/perl5/commit/452f93d63888990215e233caacc2f0ea132ab216
  Author: Sergey Aleynikov <[email protected]>
  Date:   2019-11-06 (Wed, 06 Nov 2019)

  Changed paths:
    M embed.fnc
    M embed.h
    M gv.c
    M proto.h
    M universal.c

  Log Message:
  -----------
  Factor out common code from sv_derived_from_* subs family
into one that takes both SV*/char*+len arguments, like hv_common,
to be able to use speedups from SV* stash lookup API.


  Commit: fde441936503770a37c9bc902f924b02a8ff0d60
      
https://github.com/Perl/perl5/commit/fde441936503770a37c9bc902f924b02a8ff0d60
  Author: Matt Turner <[email protected]>
  Date:   2019-11-06 (Wed, 06 Nov 2019)

  Changed paths:
    M hv_macro.h

  Log Message:
  -----------
  Fix copy-and-paste mistake in U8TO64_LE

Fixes: https://github.com/Perl/perl5/issues/17244
Fixes: https://github.com/Perl/perl5/issues/17247
Fixes: https://rt.cpan.org/Ticket/Display.html?id=130890


  Commit: 334998f9770788fcb6208c464199e1f2f0c043d7
      
https://github.com/Perl/perl5/commit/334998f9770788fcb6208c464199e1f2f0c043d7
  Author: Aaron Crane <[email protected]>
  Date:   2019-11-06 (Wed, 06 Nov 2019)

  Changed paths:
    M toke.c

  Log Message:
  -----------
  toke.c: factor out static yyl_fake_eof()


  Commit: 6799b2f152cb1328f34acd574fb0fa5f7dce8bf7
      
https://github.com/Perl/perl5/commit/6799b2f152cb1328f34acd574fb0fa5f7dce8bf7
  Author: Aaron Crane <[email protected]>
  Date:   2019-11-06 (Wed, 06 Nov 2019)

  Changed paths:
    M toke.c

  Log Message:
  -----------
  toke.c: factor out static yyl_fatcomma()

This removes a goto label.


  Commit: 642c998622b8b10b85c725f8363fb52ea99890f4
      
https://github.com/Perl/perl5/commit/642c998622b8b10b85c725f8363fb52ea99890f4
  Author: Aaron Crane <[email protected]>
  Date:   2019-11-06 (Wed, 06 Nov 2019)

  Changed paths:
    M toke.c

  Log Message:
  -----------
  toke.c: fold some initialisations into the corresponding declarations


  Commit: 3b0c6f7473b791e4719030300f951a681ba532a8
      
https://github.com/Perl/perl5/commit/3b0c6f7473b791e4719030300f951a681ba532a8
  Author: Aaron Crane <[email protected]>
  Date:   2019-11-06 (Wed, 06 Nov 2019)

  Changed paths:
    M toke.c

  Log Message:
  -----------
  toke.c: factor out static yyl_safe_bareword()


  Commit: e3c6e6a6428a7c7d3cc7a0349a176c2b7391ac8e
      
https://github.com/Perl/perl5/commit/e3c6e6a6428a7c7d3cc7a0349a176c2b7391ac8e
  Author: Aaron Crane <[email protected]>
  Date:   2019-11-06 (Wed, 06 Nov 2019)

  Changed paths:
    M toke.c

  Log Message:
  -----------
  toke.c: factor out static yyl_constant_op()

With the removal of another goto label!


  Commit: a46483dc36f563ad8c4aee334b009e9192ea429c
      
https://github.com/Perl/perl5/commit/a46483dc36f563ad8c4aee334b009e9192ea429c
  Author: Aaron Crane <[email protected]>
  Date:   2019-11-06 (Wed, 06 Nov 2019)

  Changed paths:
    M toke.c

  Log Message:
  -----------
  toke.c: remove the really_sub goto label

This permits some additional pleasing simplifications.


  Commit: 8f8a7cd436a10971eda2e44a40d01f6e597b7fd8
      
https://github.com/Perl/perl5/commit/8f8a7cd436a10971eda2e44a40d01f6e597b7fd8
  Author: Aaron Crane <[email protected]>
  Date:   2019-11-06 (Wed, 06 Nov 2019)

  Changed paths:
    M toke.c

  Log Message:
  -----------
  toke.c: factor out static yyl_strictwarn_bareword()


  Commit: 8274363d019b1a4f46b0e8a8f41212d14e40d489
      
https://github.com/Perl/perl5/commit/8274363d019b1a4f46b0e8a8f41212d14e40d489
  Author: Aaron Crane <[email protected]>
  Date:   2019-11-06 (Wed, 06 Nov 2019)

  Changed paths:
    M toke.c

  Log Message:
  -----------
  toke.c: stop passing around several needless local variables

I introduced these parameters as part of mechanically refactoring goto-heavy
logic into subroutines. However, they aren't actually needed through most of
the code. Even in the recursive case (in which yyl_try() or one of its
callees will call itself), we can reset the variables to zero.


  Commit: 87badb84104f63292b8f241c6ec2cf10b1e115db
      
https://github.com/Perl/perl5/commit/87badb84104f63292b8f241c6ec2cf10b1e115db
  Author: Aaron Crane <[email protected]>
  Date:   2019-11-06 (Wed, 06 Nov 2019)

  Changed paths:
    M toke.c

  Log Message:
  -----------
  toke.c: factor out static yyl_just_a_word()


  Commit: c18a072be510099334453cbf96b060fd8a56a684
      
https://github.com/Perl/perl5/commit/c18a072be510099334453cbf96b060fd8a56a684
  Author: Aaron Crane <[email protected]>
  Date:   2019-11-06 (Wed, 06 Nov 2019)

  Changed paths:
    M toke.c

  Log Message:
  -----------
  toke.c: bundle some yyl_just_a_word() params into a struct

This makes calls to it much easier to understand.


  Commit: ddabca0cf0f771454c64af4b0238c2a1aaac7013
      
https://github.com/Perl/perl5/commit/ddabca0cf0f771454c64af4b0238c2a1aaac7013
  Author: Aaron Crane <[email protected]>
  Date:   2019-11-06 (Wed, 06 Nov 2019)

  Changed paths:
    M toke.c

  Log Message:
  -----------
  toke.c: factor out static yyl_key_core() and yyl_word_or_keyword()


  Commit: 94ee9588274568b0905361dda6ba3b7d179ea09e
      
https://github.com/Perl/perl5/commit/94ee9588274568b0905361dda6ba3b7d179ea09e
  Author: Aaron Crane <[email protected]>
  Date:   2019-11-06 (Wed, 06 Nov 2019)

  Changed paths:
    M toke.c

  Log Message:
  -----------
  toke.c: factor out static yyl_keylookup()


  Commit: d5dec4cf3329124e6f766a64d3cb567837a09d10
      
https://github.com/Perl/perl5/commit/d5dec4cf3329124e6f766a64d3cb567837a09d10
  Author: Aaron Crane <[email protected]>
  Date:   2019-11-06 (Wed, 06 Nov 2019)

  Changed paths:
    M toke.c

  Log Message:
  -----------
  toke.c: delete weird initial_state arg to yyl_try()

I thought I was going to end up using this for more stuff, but I've
found better approaches.

This commit also removes two more goto targets.


  Commit: e7bfb65724618434f12d2c5f0a789bfc7fe53adf
      
https://github.com/Perl/perl5/commit/e7bfb65724618434f12d2c5f0a789bfc7fe53adf
  Author: Aaron Crane <[email protected]>
  Date:   2019-11-06 (Wed, 06 Nov 2019)

  Changed paths:
    M toke.c

  Log Message:
  -----------
  toke.c: remove formbrack argument from yyl_try()

With this commit, yyl_try() has few enough arguments that the RETRY()
macro no longer serves any useful purpose; delete it too.


  Commit: 542b3bfd38a40a133690b7b600cca01b89d9a027
      
https://github.com/Perl/perl5/commit/542b3bfd38a40a133690b7b600cca01b89d9a027
  Author: Aaron Crane <[email protected]>
  Date:   2019-11-06 (Wed, 06 Nov 2019)

  Changed paths:
    M toke.c

  Log Message:
  -----------
  toke.c: remove some spurious orig_keyword uses


  Commit: 2046ec1aa78069fd7fcae39822bb77665febdde3
      
https://github.com/Perl/perl5/commit/2046ec1aa78069fd7fcae39822bb77665febdde3
  Author: Aaron Crane <[email protected]>
  Date:   2019-11-06 (Wed, 06 Nov 2019)

  Changed paths:
    M toke.c

  Log Message:
  -----------
  toke.c: don't pass around a copy of PL_parser->saw_infix_sigil

There's exactly one place where we need to consult it (and that only for
producing good error messages in a specific group of term-after-term
situations).

The reason for passing it around was so that it could be reset to false
early on in the process of lexing a token, while then allowing the three
separate cases that might need to set it true to do so independently.

Instead, centralise the logic of determining when it needs to be true.


  Commit: 5bfa5ad74e55b5fe0f0d355f61d4600f7844dd8a
      
https://github.com/Perl/perl5/commit/5bfa5ad74e55b5fe0f0d355f61d4600f7844dd8a
  Author: Aaron Crane <[email protected]>
  Date:   2019-11-06 (Wed, 06 Nov 2019)

  Changed paths:
    M toke.c

  Log Message:
  -----------
  toke.c: delete unused bof parameters


  Commit: 9f6c41298cd0aeaf68dab80361cd245cf7c785e1
      
https://github.com/Perl/perl5/commit/9f6c41298cd0aeaf68dab80361cd245cf7c785e1
  Author: Aaron Crane <[email protected]>
  Date:   2019-11-06 (Wed, 06 Nov 2019)

  Changed paths:
    M toke.c

  Log Message:
  -----------
  toke.c: replace recursive calls to yyl_try() with goto

The downside of writing these calls recursively is that not all compilers
will compile the tail-position calls as jumps; that's especially true in
earlier versions of this refactoring process (where yyl_try() took a large
number of arguments), but it's not in general something we can expect to
happen — especially in the presence of `-O0` or similar compiler options.
This can lead to call-stack overflow in some circumstances.

Most recursive calls to yyl_try() occur within yyl_try() itself, so we can
easily replace them with an explicit `goto` (which is what most compilers
would use for the recursive calls anyway, now that yyl_try() takes ≤3
parameters).

There are only two other recursive-call cases. One is yyl_fake_eof(), which
as far as I can tell is never called repeatedly within a single file; this
seems safe.

The other is yyl_eol(). It has exactly two distinct return paths, so this
commit moves the retry logic into its yyl_try() caller.

With this change, we no longer seem to trigger call-stack overflow.

Closes #17220


  Commit: 74d1b76f0e214ec4a15604efd622ff7ad0ca63fc
      
https://github.com/Perl/perl5/commit/74d1b76f0e214ec4a15604efd622ff7ad0ca63fc
  Author: Aaron Crane <[email protected]>
  Date:   2019-11-06 (Wed, 06 Nov 2019)

  Changed paths:
    M toke.c

  Log Message:
  -----------
  toke.c: const-ify formbrack parameters


  Commit: d3a68a7c3f7c1a788f5e8f96407f7e90dbdc5700
      
https://github.com/Perl/perl5/commit/d3a68a7c3f7c1a788f5e8f96407f7e90dbdc5700
  Author: Aaron Crane <[email protected]>
  Date:   2019-11-06 (Wed, 06 Nov 2019)

  Changed paths:
    M pod/perldelta.pod

  Log Message:
  -----------
  perldelta for recent toke.c refactoring


  Commit: f110a4ba019a39dbec28659dcab56a485d5d433a
      
https://github.com/Perl/perl5/commit/f110a4ba019a39dbec28659dcab56a485d5d433a
  Author: Nicolas R <[email protected]>
  Date:   2019-11-06 (Wed, 06 Nov 2019)

  Changed paths:
    M gv.c

  Log Message:
  -----------
  S_gv_fetchmeth_internal fix STRLEN warning

Fixes #17250

cast STRLEN to int

Fix warnings from recent change GH #17222
We could also consider casting it using '
x & PERL_INT_MAX'


  Commit: 9c81dd740b1143d136d75a42dcebfe1355e6d9fc
      
https://github.com/Perl/perl5/commit/9c81dd740b1143d136d75a42dcebfe1355e6d9fc
  Author: Sergey Aleynikov <[email protected]>
  Date:   2019-11-06 (Wed, 06 Nov 2019)

  Changed paths:
    M embed.fnc

  Log Message:
  -----------
  Doc: fix sv_setsv_cow reference

It's no more present in pp_hot.c


  Commit: 56680b4ad1c756bdff0e77a89117e8a895fc5206
      
https://github.com/Perl/perl5/commit/56680b4ad1c756bdff0e77a89117e8a895fc5206
  Author: Tony Cook <[email protected]>
  Date:   2019-11-06 (Wed, 06 Nov 2019)

  Changed paths:
    M op.c
    M t/lib/strict/subs

  Log Message:
  -----------
  enforce strict for barewords in multiconcat

gh #17254


  Commit: c77dd28d8afec79c47a3b934a28fa81709f3749b
      
https://github.com/Perl/perl5/commit/c77dd28d8afec79c47a3b934a28fa81709f3749b
  Author: David Mitchell <[email protected]>
  Date:   2019-11-06 (Wed, 06 Nov 2019)

  Changed paths:
    M t/re/speed.t

  Log Message:
  -----------
  t/re/speed.t: increase timeout

Test 58 is supposed to finish in milliseconds, or take 10s of seconds
if it hits the bug. It currently tests for <= 1s and is failing
occasionally in smokes. Increase the timeout to 2s and see if the issue
goes away. Also add a diag() to display the elapsed time on failure.


  Commit: f11c1e046e3885f62edb8744f5b9619cfc50c7d4
      
https://github.com/Perl/perl5/commit/f11c1e046e3885f62edb8744f5b9619cfc50c7d4
  Author: Dagfinn Ilmari Mannsåker <[email protected]>
  Date:   2019-11-06 (Wed, 06 Nov 2019)

  Changed paths:
    M toke.c

  Log Message:
  -----------
  Remove unused `key` parameter from `yyl_just_a_word`


  Commit: 2c9de506b5ca816cde32481a5d04090dde0bd025
      
https://github.com/Perl/perl5/commit/2c9de506b5ca816cde32481a5d04090dde0bd025
  Author: Dagfinn Ilmari Mannsåker <[email protected]>
  Date:   2019-11-06 (Wed, 06 Nov 2019)

  Changed paths:
    M toke.c

  Log Message:
  -----------
  Rename `tmp` local to `key` in `yyl_keylookup`

Also only initialise it just before it's actually used.


  Commit: 2e7bad5ed2608850d5018ef4d244708d289efedb
      
https://github.com/Perl/perl5/commit/2e7bad5ed2608850d5018ef4d244708d289efedb
  Author: Dagfinn Ilmari Mannsåker <[email protected]>
  Date:   2019-11-06 (Wed, 06 Nov 2019)

  Changed paths:
    M toke.c

  Log Message:
  -----------
  Remove unused `key` and `orig_keyword` parameters from `yyl_key_core`

They were only ever passed as zeros, so just make them local to the
function.


  Commit: 8319681612d499dd520b906f9fc3c1198eeafaf0
      
https://github.com/Perl/perl5/commit/8319681612d499dd520b906f9fc3c1198eeafaf0
  Author: Karl Williamson <[email protected]>
  Date:   2019-11-06 (Wed, 06 Nov 2019)

  Changed paths:
    M gv.c

  Log Message:
  -----------
  gv.c: SVf needs to be surrounded by spaces

perl can be compiled with C++, and this is illegal there.


  Commit: 2ec2cd5667570cb28941bc12d32b17390e275d3a
      
https://github.com/Perl/perl5/commit/2ec2cd5667570cb28941bc12d32b17390e275d3a
  Author: Karl Williamson <[email protected]>
  Date:   2019-11-06 (Wed, 06 Nov 2019)

  Changed paths:
    M toke.c

  Log Message:
  -----------
  toke.c: comment changes

These should have been included in
0c311b7c345769239f38d0139ea7738feec5ca4d


  Commit: fd4d1ad01f92277ab5ceccbb715c308614fe1b1d
      
https://github.com/Perl/perl5/commit/fd4d1ad01f92277ab5ceccbb715c308614fe1b1d
  Author: Karl Williamson <[email protected]>
  Date:   2019-11-06 (Wed, 06 Nov 2019)

  Changed paths:
    M pod/perlop.pod

  Log Message:
  -----------
  perlop.pod: Slight clarification


  Commit: d2c7c4b444e6318f07480563dc8acb4f6c4d5360
      
https://github.com/Perl/perl5/commit/d2c7c4b444e6318f07480563dc8acb4f6c4d5360
  Author: Steve Peters <[email protected]>
  Date:   2019-11-06 (Wed, 06 Nov 2019)

  Changed paths:
    M .travis.yml

  Log Message:
  -----------
  Remove compiler  in .travis.yml

SInce `clang` was removed as a compiler option in the previous change to 
`.travis.yml`, no need to exclude Linux from using it.  Also, no need for the 
excludes for OS X since was removed.


  Commit: 73b16bed07e17e6e75dfe6c295ffa624847ec388
      
https://github.com/Perl/perl5/commit/73b16bed07e17e6e75dfe6c295ffa624847ec388
  Author: Matt Turner <[email protected]>
  Date:   2019-11-06 (Wed, 06 Nov 2019)

  Changed paths:
    M hv_macro.h

  Log Message:
  -----------
  Fix the UTO*_LE macros

Embarrassingly I got confused and swapped them (BYTEORDER == 0x1234 etc
is not great...). Somehow the perl test suite still passes with this,
but fortunately the test suite for modules like
Algorithm-MinPerfHashTwoLevel caught the problem.

Fixes: https://github.com/Perl/perl5/issues/17244
Fixes: https://github.com/Perl/perl5/issues/17247
Fixes: https://rt.cpan.org/Ticket/Display.html?id=130890


  Commit: 3fa3192232537d9302ee7e543f8c1c7caf1d3c23
      
https://github.com/Perl/perl5/commit/3fa3192232537d9302ee7e543f8c1c7caf1d3c23
  Author: Yves Orton <[email protected]>
  Date:   2019-11-06 (Wed, 06 Nov 2019)

  Changed paths:
    M hv_macro.h

  Log Message:
  -----------
  rework U8TOxx_LE macros to force unsigned access

This introduces a _shifted_octet() utility macro to make things
more clear, it also adds support for USE_UNALIGNED_PTR_DEREF for
little-endian platforms that allow unaligned access. This must
be manually defined and ONLY affects little endian builds currently,
and is there primarily for -g builds on x86 (eg for perl developers
themselves).


  Commit: ef3fac8eb92bc4ed71162c29511919fb6cfc19be
      
https://github.com/Perl/perl5/commit/ef3fac8eb92bc4ed71162c29511919fb6cfc19be
  Author: Yves Orton <[email protected]>
  Date:   2019-11-06 (Wed, 06 Nov 2019)

  Changed paths:
    M hv_macro.h

  Log Message:
  -----------
  add defensive parens


  Commit: 6011bc2870d1ff29b488188a13c11e290a25e12c
      
https://github.com/Perl/perl5/commit/6011bc2870d1ff29b488188a13c11e290a25e12c
  Author: Karl Williamson <[email protected]>
  Date:   2019-11-06 (Wed, 06 Nov 2019)

  Changed paths:
    M op.c

  Log Message:
  -----------
  op.c: Indent some code

This is in preparation for a future commit which will surround this with
an 'if'.


  Commit: ee143e31a257d8dc2b35e6cc4bf004b16d41bb5d
      
https://github.com/Perl/perl5/commit/ee143e31a257d8dc2b35e6cc4bf004b16d41bb5d
  Author: Karl Williamson <[email protected]>
  Date:   2019-11-06 (Wed, 06 Nov 2019)

  Changed paths:
    M doop.c
    M op.c

  Log Message:
  -----------
  doop.c, op.c: White-space only

Remove trailing blanks and outdent a doubly indented block


  Commit: dd5ebb9c3487165f458edf9b457baf279755f2ff
      
https://github.com/Perl/perl5/commit/dd5ebb9c3487165f458edf9b457baf279755f2ff
  Author: Karl Williamson <[email protected]>
  Date:   2019-11-06 (Wed, 06 Nov 2019)

  Changed paths:
    M op.c

  Log Message:
  -----------
  op.c: Comments only

Indent for clarity, and add a comment


  Commit: 872b6ea19bf469e4ca6e4383bd322589ec25345f
      
https://github.com/Perl/perl5/commit/872b6ea19bf469e4ca6e4383bd322589ec25345f
  Author: Karl Williamson <[email protected]>
  Date:   2019-11-06 (Wed, 06 Nov 2019)

  Changed paths:
    M invlist_inline.h

  Log Message:
  -----------
  invlist_inline.h: Restrict files symbols are in

These are only needed in regcomp.c, so restrict them to that file


  Commit: a972b4b0743e63f3b5149e26d7cf47888f638f8b
      
https://github.com/Perl/perl5/commit/a972b4b0743e63f3b5149e26d7cf47888f638f8b
  Author: Karl Williamson <[email protected]>
  Date:   2019-11-06 (Wed, 06 Nov 2019)

  Changed paths:
    M invlist_inline.h

  Log Message:
  -----------
  invlist_inline.h: White space only

Fold a too-long line


  Commit: d8d6335bdde7f47c599f5a826dc738181f6a0bd4
      
https://github.com/Perl/perl5/commit/d8d6335bdde7f47c599f5a826dc738181f6a0bd4
  Author: Karl Williamson <[email protected]>
  Date:   2019-11-06 (Wed, 06 Nov 2019)

  Changed paths:
    M embed.fnc
    M embed.h
    M proto.h
    M regcomp.c

  Log Message:
  -----------
  regcomp.c: Change name of static function.

This removes an unnecessary leading underscore


  Commit: 580c1d783770669723963844df85f6c5027ad386
      
https://github.com/Perl/perl5/commit/580c1d783770669723963844df85f6c5027ad386
  Author: Karl Williamson <[email protected]>
  Date:   2019-11-06 (Wed, 06 Nov 2019)

  Changed paths:
    M embed.fnc
    M embed.h
    M invlist_inline.h
    M proto.h
    M regcomp.c

  Log Message:
  -----------
  Move some static fcns from regcomp.c to invlist_inline.h

They are still only accessible from regcomp.c, but this is in
preparation for them to be usable from other core files as well.


  Commit: 6cd2f3b0a72713e9a9e7cfdffa3f81805e15e7d6
      
https://github.com/Perl/perl5/commit/6cd2f3b0a72713e9a9e7cfdffa3f81805e15e7d6
  Author: Karl Williamson <[email protected]>
  Date:   2019-11-06 (Wed, 06 Nov 2019)

  Changed paths:
    M op.c
    M op.h
    M toke.c

  Log Message:
  -----------
  Change macro name in tr/// code

This makes it more mnemonic.  Also add an explanation in toke.c


  Commit: 9709c1365cc3984f42b49e967fd47dabb9d5b92b
      
https://github.com/Perl/perl5/commit/9709c1365cc3984f42b49e967fd47dabb9d5b92b
  Author: Karl Williamson <[email protected]>
  Date:   2019-11-06 (Wed, 06 Nov 2019)

  Changed paths:
    M doop.c
    M embed.fnc
    M embed.h
    M proto.h

  Log Message:
  -----------
  doop.c: Add a parameter to a few fcns

instead of deriving it each time from inside the function.  This is in
preparation for future commits.


  Commit: e7c9af9e6c057acf9f277d4ed96b15bde47f6d70
      
https://github.com/Perl/perl5/commit/e7c9af9e6c057acf9f277d4ed96b15bde47f6d70
  Author: Karl Williamson <[email protected]>
  Date:   2019-11-06 (Wed, 06 Nov 2019)

  Changed paths:
    M doop.c
    M op.c
    M op.h

  Log Message:
  -----------
  op.c, doop.c Use mnemonics instead of numeric values

For legibility and maintainability


  Commit: 2653469d76ed778394b04509a6cb697149d65c5d
      
https://github.com/Perl/perl5/commit/2653469d76ed778394b04509a6cb697149d65c5d
  Author: Karl Williamson <[email protected]>
  Date:   2019-11-06 (Wed, 06 Nov 2019)

  Changed paths:
    M utf8.c
    M utf8.h

  Log Message:
  -----------
  Allow core to work with code points above IV_MAX

Higher has been reserved for core use, and a future commit will want to
finally do this.


  Commit: 2b2619a2ce590f3a98dc7989f4c631133003e75a
      
https://github.com/Perl/perl5/commit/2b2619a2ce590f3a98dc7989f4c631133003e75a
  Author: Karl Williamson <[email protected]>
  Date:   2019-11-06 (Wed, 06 Nov 2019)

  Changed paths:
    M ebcdic_tables.h
    M regen/ebcdic.pl

  Log Message:
  -----------
  regen/ebcdic.pl: Add tables that partition by UTF-8 length

These will be used in a future commit.  This creates equivalence classes
of ranges of code points whose UTF-8 representations are the same length


  Commit: 2216394762e1c3f894a3d6f5b564c211c8e21847
      
https://github.com/Perl/perl5/commit/2216394762e1c3f894a3d6f5b564c211c8e21847
  Author: Karl Williamson <[email protected]>
  Date:   2019-11-06 (Wed, 06 Nov 2019)

  Changed paths:
    M op.c

  Log Message:
  -----------
  op.c: Simplify expression.

This also makes sure 'struct_size' has the correct value in it for any
future uses.


  Commit: 05073edc95243141cc83d4c9a3a8ea0dddcd5852
      
https://github.com/Perl/perl5/commit/05073edc95243141cc83d4c9a3a8ea0dddcd5852
  Author: Karl Williamson <[email protected]>
  Date:   2019-11-06 (Wed, 06 Nov 2019)

  Changed paths:
    M doop.c

  Log Message:
  -----------
  doop.c: Add, revise comments


  Commit: d31d99c41ef0bc5328a3051b4de25e88679e2425
      
https://github.com/Perl/perl5/commit/d31d99c41ef0bc5328a3051b4de25e88679e2425
  Author: Karl Williamson <[email protected]>
  Date:   2019-11-06 (Wed, 06 Nov 2019)

  Changed paths:
    M doop.c
    M op.h

  Log Message:
  -----------
  doop.c: Change out-of-bounds value

This currently uses 0xfeedface as a marker for something that isn't a
legal value.  But that could in fact become legal at same point.  This
defines a value TR_OOB that can be guaranteed not to become legal.


  Commit: 3ea73e66738846ddba8c95ea0293b688059b4d0c
      
https://github.com/Perl/perl5/commit/3ea73e66738846ddba8c95ea0293b688059b4d0c
  Author: Karl Williamson <[email protected]>
  Date:   2019-11-06 (Wed, 06 Nov 2019)

  Changed paths:
    M doop.c

  Log Message:
  -----------
  doop.c: Change name of variable

This helped me understand what was going on in this function


  Commit: 48e50ff51ba5995848a02485a3fefd329ed376b5
      
https://github.com/Perl/perl5/commit/48e50ff51ba5995848a02485a3fefd329ed376b5
  Author: Karl Williamson <[email protected]>
  Date:   2019-11-06 (Wed, 06 Nov 2019)

  Changed paths:
    M t/op/tr.t

  Log Message:
  -----------
  t/op/tr.t: Add tests, incl. a TODO

This adds a TODO test which demonstrates that the current tr/// is
broken, to be fixed by the next commit.

It adds other tests designed to stress the forthcoming revisions in the
implementation of tr///.


  Commit: 511eaeebe5512457444934b2b7de490288fd95ac
      
https://github.com/Perl/perl5/commit/511eaeebe5512457444934b2b7de490288fd95ac
  Author: Karl Williamson <[email protected]>
  Date:   2019-11-06 (Wed, 06 Nov 2019)

  Changed paths:
    M doop.c
    M t/op/tr.t

  Log Message:
  -----------
  doop.c: Refactor do_trans_complex()

I had trouble understanding how this uncommented routine worked.  And it
turned out to be broken, squeezing the pre-transliterated characters
instead of the post-transliterated ones.  This fixes the TODO test added
in the previous commit.


  Commit: 45133fcd3877cc878d5d4de56d9e7d94fe688a2b
      
https://github.com/Perl/perl5/commit/45133fcd3877cc878d5d4de56d9e7d94fe688a2b
  Author: Karl Williamson <[email protected]>
  Date:   2019-11-06 (Wed, 06 Nov 2019)

  Changed paths:
    M lib/B/Op_private.pm
    M op.h
    M opcode.h
    M regen/op_private

  Log Message:
  -----------
  Change names of some OPpTRANS flags

These two flags will shortly become obsolete, replaced by ones with
different meanings.  This flag makes the new ones the normal ones, and
makes the old names synonyms so that code that refers to them can
compile.


  Commit: 2ef0a681e4b669f55e6c3f52900ffd9a9fae7ff8
      
https://github.com/Perl/perl5/commit/2ef0a681e4b669f55e6c3f52900ffd9a9fae7ff8
  Author: Karl Williamson <[email protected]>
  Date:   2019-11-06 (Wed, 06 Nov 2019)

  Changed paths:
    M op.h

  Log Message:
  -----------
  op.h: Add synonyms for some tr/// values


  Commit: efd68e18326d72f48691c62e7df15defaaf90058
      
https://github.com/Perl/perl5/commit/efd68e18326d72f48691c62e7df15defaaf90058
  Author: Karl Williamson <[email protected]>
  Date:   2019-11-06 (Wed, 06 Nov 2019)

  Changed paths:
    M embed.fnc
    M embed.h
    M invlist_inline.h
    M op.c
    M proto.h

  Log Message:
  -----------
  op.c: Add debugging dump function

This function dumps out an inversion map


  Commit: a4f7ac1743a1ca6f846ee56cfc16b0667aab8521
      
https://github.com/Perl/perl5/commit/a4f7ac1743a1ca6f846ee56cfc16b0667aab8521
  Author: Karl Williamson <[email protected]>
  Date:   2019-11-06 (Wed, 06 Nov 2019)

  Changed paths:
    M embedvar.h
    M intrpvar.h
    M perl.c

  Log Message:
  -----------
  intrpvar.h: Add variable for use in tr///

This is part of this branch of changes.


  Commit: 230a0a7b39865a851378f97026ad7b4b0ef0d503
      
https://github.com/Perl/perl5/commit/230a0a7b39865a851378f97026ad7b4b0ef0d503
  Author: Karl Williamson <[email protected]>
  Date:   2019-11-06 (Wed, 06 Nov 2019)

  Changed paths:
    M toke.c

  Log Message:
  -----------
  toke.c: comment, White-space only

Wrap a too-long line


  Commit: 13f9ef49c39c27b816cbe49371aee075e73723b3
      
https://github.com/Perl/perl5/commit/13f9ef49c39c27b816cbe49371aee075e73723b3
  Author: Karl Williamson <[email protected]>
  Date:   2019-11-06 (Wed, 06 Nov 2019)

  Changed paths:
    M doop.c
    M dump.c
    M embed.fnc
    M embed.h
    M invlist_inline.h
    M lib/B/Deparse.pm
    M op.c
    M op.h
    M proto.h
    M toke.c

  Log Message:
  -----------
  XXX Reimplement tr/// without swashes

This commit removes the last use of swashes from core.

It replaces swashes by inversion maps.  This data structure is already
in use for some Unicode properties, such as case changing.

The inversion map data structure leads to straight forward
implementation code, so I collapsed the two doop.c routines
do_trans_complex_utf8() and do_trans_simple_utf8() into one.  A few
conditionals could be avoided in the loop if this function were split so
that one version didn't have to test for, e.g., squashing, but I suspect
these are in the noise in the loop, which has to deal with UTF-8
conversions.  This should be faster than the previous implementation
anyway.  I measured the differences some releases back, and inversion
maps were faster than the equivalent swash for up to 512 or 1024
different ranges.  These numbers are unlikely to be exceeded in tr///
except possibly in machine-generated ones.

Inversion maps are capable of handling both UTF-8 and non-UTF-8 cases,
but I left in the existing non-UTF-8 implementation, which uses tables,
because I suspect it is faster.  This means that there is extra code,
purely for runtime performance.

An inversion map is always created from the input, and then if the table
implementation is to be used, the table is easily derived from the map.
Prior to this commit, the table implementation was used in certain edge
cases involving code points above 255.  Those cases are now handled by
the inversion map implementation, because it would have taken extra code
to detect them, and I didn't think it was worth it.  That could be
changed if I am wrong.

Creating an inversion map for all inputs essentially normalizes them,
and then the same logic is usable for all.  This fixes some false
negatives in the previous implementation.  It also allows for detecting
if the actual transliteration can be done in place.  Previously, the
code mostly punted on that detection for the UTF-8 case.

This also allows for accurate counting of the lengths of the two sides,
fixing some longstanding TODO warning tests.

A new flag is created, OPpTRANS_CAN_FORCE_UTF8, when the tr/// has a
below 256 character resolving to one that requires UTF-8.  If this isn't
set, the code knows that a non-UTF-8 input won't become UTF-8 in the
process, and so can take short cuts.  The bit representing this flag is
the same as OPpTRANS_FROM_UTF, which is no longer used.  That name is
left in so that the dozen-ish modules in cpan that refer to it can still
compile.  AFAICT none of them actually use the flag, as well they
shouldn't since it is private to the core.

Inversion maps are ideally suited for tr/// implementations.  An issue
with them in general is that for some pathological data, they can become
fragmented requiring more space than you would expect, to represent the
underlying data.  However, the typical tr/// would not have this issue,
requiring only very short inversion maps to represent, in some cases
shorter than the table implementation.

Inversion maps are also easier to deparse than swashes.  A deparse TODO
was also fixed. XXX

One could implement specialized data structures for specific types of
inputs.  For example, a common tr/// form is a single range, like
tr/A-Z/a-z/.  That could be implemented without a table and be quite
fast.  An intermediate step would be to use the inversion map
implementation always when the transliteration is a single range, and
then special case length=1 maps at execution time.

Thanks to Nicholas Rochemagne for his help on B


  Commit: 7cf0a75ae49db893d689338732197080bf9ff91d
      
https://github.com/Perl/perl5/commit/7cf0a75ae49db893d689338732197080bf9ff91d
  Author: Karl Williamson <[email protected]>
  Date:   2019-11-06 (Wed, 06 Nov 2019)

  Changed paths:
    M lib/B/Deparse.t
    M t/lib/warnings/op

  Log Message:
  -----------
  UnTODO some tests from the previous commit


  Commit: 7dce7a400248804d2d1a550bcb7fc701c6b6a4be
      
https://github.com/Perl/perl5/commit/7dce7a400248804d2d1a550bcb7fc701c6b6a4be
  Author: Karl Williamson <[email protected]>
  Date:   2019-11-06 (Wed, 06 Nov 2019)

  Changed paths:
    M Porting/todo.pod

  Log Message:
  -----------
  Porting/todo.pod: Rmv reference to fixing swashes


  Commit: 7399a270f137616dd43c506bcabb9f673e7e0005
      
https://github.com/Perl/perl5/commit/7399a270f137616dd43c506bcabb9f673e7e0005
  Author: Karl Williamson <[email protected]>
  Date:   2019-11-06 (Wed, 06 Nov 2019)

  Changed paths:
    M handy.h

  Log Message:
  -----------
  handy.h: Change references to swashes

As these are no longer used.


  Commit: b668b86ece242cc5f9897f2f862fe31eecd7371b
      
https://github.com/Perl/perl5/commit/b668b86ece242cc5f9897f2f862fe31eecd7371b
  Author: Karl Williamson <[email protected]>
  Date:   2019-11-06 (Wed, 06 Nov 2019)

  Changed paths:
    M op.c

  Log Message:
  -----------
  op.c: Remove no-longer used function


  Commit: 6837c7fa65299dd2a44d87a13f20434dd04850d3
      
https://github.com/Perl/perl5/commit/6837c7fa65299dd2a44d87a13f20434dd04850d3
  Author: Karl Williamson <[email protected]>
  Date:   2019-11-06 (Wed, 06 Nov 2019)

  Changed paths:
    M MANIFEST
    M charclass_invlists.h
    M doop.c
    M embed.fnc
    M embed.h
    M embedvar.h
    M intrpvar.h
    M lib/unicore/mktables
    M lib/unicore/uni_keywords.pl
    M lib/utf8_heavy.pl
    M pod/perldiag.pod
    M proto.h
    M regcharclass.h
    M sv.c
    R t/uni/cache.t
    M toke.c
    M uni_keywords.h
    M utf8.c

  Log Message:
  -----------
  Remove swashes from core

Also references to the term.


  Commit: bacabc871e40e1d1ab5123e6d86ecd4eff9af680
      
https://github.com/Perl/perl5/commit/bacabc871e40e1d1ab5123e6d86ecd4eff9af680
  Author: Karl Williamson <[email protected]>
  Date:   2019-11-06 (Wed, 06 Nov 2019)

  Changed paths:
    M MANIFEST
    M Porting/Maintainers.pl
    M charclass_invlists.h
    M lib/Unicode/UCD.pm
    M lib/Unicode/UCD.t
    M lib/unicore/mktables
    M lib/unicore/uni_keywords.pl
    R lib/utf8_heavy.pl
    M regcharclass.h
    M regcomp.c
    M t/re/pat.t
    M uni_keywords.h

  Log Message:
  -----------
  Remove utf8_heavy.pl

The only remaining user of this is Unicode::UCD, and so most of the code
from utf8_heavy.pl is moved into that UCD.pm.

It removes a no-longer relevant test (that had been changed into a skip
anyway), and it changes or removes the no-longer relevant references in
comments to utf8_heavy.pl

Later commits will do some simplification as not all the previous
functionality is needed.  This commit removed only the parts that were
preventing compilation and tests passing.


  Commit: b109d330d3def71a081cf831f55832e04591411e
      
https://github.com/Perl/perl5/commit/b109d330d3def71a081cf831f55832e04591411e
  Author: Karl Williamson <[email protected]>
  Date:   2019-11-06 (Wed, 06 Nov 2019)

  Changed paths:
    M lib/Unicode/UCD.pm

  Log Message:
  -----------
  UCD.pm: Remove 'none' from swash

This was only used by tr///, and hence is no longer relevant.  I never
really understood it.


  Commit: 123573b0aed8b1134700869e0c435f6d74d2e3b5
      
https://github.com/Perl/perl5/commit/123573b0aed8b1134700869e0c435f6d74d2e3b5
  Author: Karl Williamson <[email protected]>
  Date:   2019-11-06 (Wed, 06 Nov 2019)

  Changed paths:
    M .gitignore
    M charclass_invlists.h
    M lib/Unicode/UCD.pm
    M lib/Unicode/UCD.t
    M lib/unicore/mktables
    M lib/unicore/uni_keywords.pl
    M regcharclass.h
    M regen/mk_invlists.pl
    M regen/mph.pl
    M t/op/utftaint.t
    M t/re/regexp.t
    M t/re/rt122747.t
    M t/re/uniprops01.t
    M t/re/uniprops02.t
    M t/re/uniprops03.t
    M t/re/uniprops04.t
    M t/re/uniprops05.t
    M t/re/uniprops06.t
    M t/re/uniprops07.t
    M t/re/uniprops08.t
    M t/re/uniprops09.t
    M t/re/uniprops10.t
    M t/run/fresh_perl.t
    M t/test.pl
    M uni_keywords.h
    M vms/descrip_mms.template
    M win32/GNUmakefile
    M win32/makefile.mk

  Log Message:
  -----------
  Remove lib/unicore/Heavy.pl

This file was for the use of utf8_heavy.pl.  But now that that is
incorporated into Unicode::UCD, move the definitions from Heavy.pl to
lib/unicore/UCD.pl which is used by Unicode::UCD.  This allows removing
package names.


Compare: https://github.com/Perl/perl5/compare/90c3fd0d9c17%5E...123573b0aed8

Reply via email to