Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: 4a04bf00f0cd3fce8bdd48b0a8898a08c68fae33
      
https://github.com/Perl/perl5/commit/4a04bf00f0cd3fce8bdd48b0a8898a08c68fae33
  Author: Nicholas Clark <n...@ccl4.org>
  Date:   2021-10-15 (Fri, 15 Oct 2021)

  Changed paths:
    M MANIFEST
    A ext/B/t/optree_for.t

  Log Message:
  -----------
  Tests for existing for loop optrees.


  Commit: 525dc1e45d4c3a81deef4481ad38a8e49380b753
      
https://github.com/Perl/perl5/commit/525dc1e45d4c3a81deef4481ad38a8e49380b753
  Author: Nicholas Clark <n...@ccl4.org>
  Date:   2021-10-15 (Fri, 15 Oct 2021)

  Changed paths:
    M pp_hot.c

  Log Message:
  -----------
  Re-indent the case statement in pp_iter, ready for the next commit.

Add braces and indent a block that will become a `for` loop in the next
commit. With the exception of these and merging 3 opening braces onto the
`if` or `else` on the previous lines, this commit is purely a whitespace
change.


  Commit: c52d5e029a9e8dc660331b57193ea652aa0f2beb
      
https://github.com/Perl/perl5/commit/c52d5e029a9e8dc660331b57193ea652aa0f2beb
  Author: Nicholas Clark <n...@ccl4.org>
  Date:   2021-10-15 (Fri, 15 Oct 2021)

  Changed paths:
    M pp_hot.c

  Log Message:
  -----------
  Iterate for loops $n-at-a-time in PP_ITER.

This commit provides the runtime changes needed to iterate for loops over
two or more variables.


  Commit: 6ce22ce7e7abeb2ba69129f645e82f16d77fbd89
      
https://github.com/Perl/perl5/commit/6ce22ce7e7abeb2ba69129f645e82f16d77fbd89
  Author: Nicholas Clark <n...@ccl4.org>
  Date:   2021-10-15 (Fri, 15 Oct 2021)

  Changed paths:
    M op.c
    M pod/perldiag.pod

  Log Message:
  -----------
  Generate the optree for n-at-a-time for loops.

Perl_newFOROP can now also take an OP_LIST corresponding to two or more
lexicals to iterate over n-at-a-time, where those lexicals are all
declared in the for statement, and occupy consecutive pad slots.


  Commit: e92ce056f2022a3f96487b1b5a1862a3bf9c159c
      
https://github.com/Perl/perl5/commit/e92ce056f2022a3f96487b1b5a1862a3bf9c159c
  Author: Nicholas Clark <n...@ccl4.org>
  Date:   2021-10-15 (Fri, 15 Oct 2021)

  Changed paths:
    M perly.act
    M perly.h
    M perly.tab
    M perly.y
    M toke.c

  Log Message:
  -----------
  Implement n-at-a-time for loops.

For example, this now works:

    for my ($key, $value) (%hash) { ... }

Only for scalars declared with my as a list in the for loop statement.
As many as you want (unless you want more than 4294967296).


  Commit: 83c7d349662bf85048f317a6b23155733307f486
      
https://github.com/Perl/perl5/commit/83c7d349662bf85048f317a6b23155733307f486
  Author: Nicholas Clark <n...@ccl4.org>
  Date:   2021-10-15 (Fri, 15 Oct 2021)

  Changed paths:
    M MANIFEST
    M pod/perlsyn.pod
    A t/op/for-many.t

  Log Message:
  -----------
  Regression tests and documentation for n-at-a-time for.


  Commit: c386ecc10be9e73917fa6b819321f0cc47cacdb6
      
https://github.com/Perl/perl5/commit/c386ecc10be9e73917fa6b819321f0cc47cacdb6
  Author: Nicholas Clark <n...@ccl4.org>
  Date:   2021-10-15 (Fri, 15 Oct 2021)

  Changed paths:
    M ext/B/B/Concise.pm
    M ext/B/t/optree_for.t

  Log Message:
  -----------
  B::Concise now handles n-at-a-time for.


  Commit: bf6e71ff82686b1287ef59c1565cc669d5301cc5
      
https://github.com/Perl/perl5/commit/bf6e71ff82686b1287ef59c1565cc669d5301cc5
  Author: Nicholas Clark <n...@ccl4.org>
  Date:   2021-10-15 (Fri, 15 Oct 2021)

  Changed paths:
    M lib/B/Deparse.pm
    M lib/B/Deparse.t

  Log Message:
  -----------
  B::Deparse now handles n-at-a-time for.


  Commit: d9b6ecc18fa9d0af456180eceeef05148bcfdf9f
      
https://github.com/Perl/perl5/commit/d9b6ecc18fa9d0af456180eceeef05148bcfdf9f
  Author: Nicholas Clark <n...@ccl4.org>
  Date:   2021-10-15 (Fri, 15 Oct 2021)

  Changed paths:
    M pp_hot.c

  Log Message:
  -----------
  Move reading CxTYPE(cx) out of the loop, to be clear that it doesn't change.

Move some other variable declarations into a tighter scope, and initialise
variables at the point of declaration where possible.

With the recent changes, the function consists of a 4-way switch inside a
loop, where each iteration of the loop will take the same case in the
switch. This implies a branch taken on each iteration of the loop, which
is less efficient than the alternative structure of taking the branch once
and then looping.

However, the way the code is structured (particularly how two of the cases
share code, by jumping sideways), means that rewriting it to "switch first"
structure would not be clearer (and likely would also be hard to get
right). Hence it seems better to let a compiler optimiser choose what is
best. However, it might not realise that CxTYPE(cx) won't be changed, even
as a side effect of any function called by this code. Hence hoist it into a
constant variable to make this unequivocal.


  Commit: 3b54923c12732530d17e87f548066ceadc63daa4
      
https://github.com/Perl/perl5/commit/3b54923c12732530d17e87f548066ceadc63daa4
  Author: Nicholas Clark <n...@ccl4.org>
  Date:   2021-10-15 (Fri, 15 Oct 2021)

  Changed paths:
    M lib/warnings.pm
    M regen/warnings.pl
    M warnings.h

  Log Message:
  -----------
  Add a new warning experimental::for_list.


  Commit: 8f5631846920a7d1c689be27bd3e0da651809cc6
      
https://github.com/Perl/perl5/commit/8f5631846920a7d1c689be27bd3e0da651809cc6
  Author: Nicholas Clark <n...@ccl4.org>
  Date:   2021-10-15 (Fri, 15 Oct 2021)

  Changed paths:
    M lib/B/Deparse.t
    M pod/perldiag.pod
    M pod/perlsyn.pod
    M t/op/for-many.t
    M toke.c

  Log Message:
  -----------
  n-at-a-time for loops now warn by default (as 'experimental::for_list').


  Commit: 2f4c930aab14ce52a5a1ed9b40fac794085453a9
      
https://github.com/Perl/perl5/commit/2f4c930aab14ce52a5a1ed9b40fac794085453a9
  Author: Nicholas Clark <n...@ccl4.org>
  Date:   2021-10-15 (Fri, 15 Oct 2021)

  Changed paths:
    M pod/perldelta.pod

  Log Message:
  -----------
  perldelta for n-at-a-time for loops.


  Commit: 4d1a422685e560229d927421d45fd2dc84015eee
      
https://github.com/Perl/perl5/commit/4d1a422685e560229d927421d45fd2dc84015eee
  Author: Nicholas Clark <n...@ccl4.org>
  Date:   2021-10-15 (Fri, 15 Oct 2021)

  Changed paths:
    M pp_hot.c

  Log Message:
  -----------
  Note why this if block in pp_iter is empty


  Commit: b1ed63167c53cf3d3caefb49adc247668a47c12f
      
https://github.com/Perl/perl5/commit/b1ed63167c53cf3d3caefb49adc247668a47c12f
  Author: Nicholas Clark <n...@ccl4.org>
  Date:   2021-10-15 (Fri, 15 Oct 2021)

  Changed paths:
    M t/op/for-many.t

  Log Message:
  -----------
  Test next, continue and redo with n-at-a-time for loops


  Commit: ebb7bd1b0e2c6d7fb94fe2cec384474e18ffb4a1
      
https://github.com/Perl/perl5/commit/ebb7bd1b0e2c6d7fb94fe2cec384474e18ffb4a1
  Author: Nicholas Clark <n...@ccl4.org>
  Date:   2021-10-15 (Fri, 15 Oct 2021)

  Changed paths:
    M perly.act
    M perly.h
    M perly.tab
    M perly.y
    M t/op/for-many.t

  Log Message:
  -----------
  for my ($foo,,, $bar) { ... } should parse as ($foo, $bar)

Multiple commas between the lexicals in the list shouldn't change the
parsing.


  Commit: 4eb63851541cd149fb854155d3664e3814d9583d
      
https://github.com/Perl/perl5/commit/4eb63851541cd149fb854155d3664e3814d9583d
  Author: Nicholas Clark <n...@ccl4.org>
  Date:   2021-10-15 (Fri, 15 Oct 2021)

  Changed paths:
    M pod/perldelta.pod
    M pod/perldiag.pod
    M pod/perlsyn.pod

  Log Message:
  -----------
  Pod improvements suggested by Matthew Horsfall


  Commit: 0163c912394bd3d42bae250f8dabe208191ab35b
      
https://github.com/Perl/perl5/commit/0163c912394bd3d42bae250f8dabe208191ab35b
  Author: Ricardo Signes <rjbs@semiotic.systems>
  Date:   2021-10-15 (Fri, 15 Oct 2021)

  Changed paths:
    M MANIFEST
    M ext/B/B/Concise.pm
    A ext/B/t/optree_for.t
    M lib/B/Deparse.pm
    M lib/B/Deparse.t
    M lib/warnings.pm
    M op.c
    M perly.act
    M perly.h
    M perly.tab
    M perly.y
    M pod/perldelta.pod
    M pod/perldiag.pod
    M pod/perlsyn.pod
    M pp_hot.c
    M regen/warnings.pl
    A t/op/for-many.t
    M toke.c
    M warnings.h

  Log Message:
  -----------
  Merge branch 'pp_iter' into blead


Compare: https://github.com/Perl/perl5/compare/1d7b70436255...0163c912394b

Reply via email to