Skip to content

Instantly share code, notes, and snippets.

@Whateverable
Created January 10, 2019 13:36
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Whateverable/b2b051babebf052ea645b9d225dd6734 to your computer and use it in GitHub Desktop.
Save Whateverable/b2b051babebf052ea645b9d225dd6734 to your computer and use it in GitHub Desktop.
bisectable6
old=2018.11 for 1..3 { { say $_; last } if $_ == 2 }
Bisecting: 139 revisions left to test after this (roughly 7 steps)
[7d3b7e1111c84f856a9d700d522a6af46ae48d4a] Streamline short-id2class handling
»»»»» Testing 7d3b7e1111c84f856a9d700d522a6af46ae48d4a
»»»»» Script output:
2
»»»»» Script exit code: 0
»»»»» Bisecting by output
»»»»» Output on “old” revision is:
2
»»»»» The output is identical
»»»»» Therefore, marking this revision as “old”
»»»»» -------------------------------------------------------------------------
»»»»» Testing d836ca4dfae1ee5d8848df67bff562fcf772f287
»»»»» Script output:
2
»»»»» Script exit code: 0
»»»»» Bisecting by output
»»»»» Output on “old” revision is:
2
»»»»» The output is identical
»»»»» Therefore, marking this revision as “old”
»»»»» -------------------------------------------------------------------------
»»»»» Testing 483bb59e924f9b544ebbfa0088dbba9550f50e16
»»»»» Script output:
2
»»»»» Script exit code: 0
»»»»» Bisecting by output
»»»»» Output on “old” revision is:
2
»»»»» The output is identical
»»»»» Therefore, marking this revision as “old”
»»»»» -------------------------------------------------------------------------
»»»»» Testing fcfd51beba36469478435c2d9103330c1e8f24fc
»»»»» Script output:
2
»»»»» Script exit code: 0
»»»»» Bisecting by output
»»»»» Output on “old” revision is:
2
»»»»» The output is identical
»»»»» Therefore, marking this revision as “old”
»»»»» -------------------------------------------------------------------------
»»»»» Testing 6b078a052a7c71c3310dfb927682440d3b65eab4
»»»»» Script output:
2
»»»»» Script exit code: 0
»»»»» Bisecting by output
»»»»» Output on “old” revision is:
2
»»»»» The output is identical
»»»»» Therefore, marking this revision as “old”
»»»»» -------------------------------------------------------------------------
»»»»» Testing 4d7cdc0f415ac887a67c07a8dd5be5b29a36ec71
»»»»» Script output:
True
»»»»» Script exit code: 0
»»»»» Bisecting by output
»»»»» Output on “old” revision is:
2
»»»»» The output is different
»»»»» Therefore, marking this revision as “new”
»»»»» -------------------------------------------------------------------------
»»»»» Testing d2df5b805db39e1deee23a62d4d7b1c444ca9c7c
»»»»» Script output:
True
»»»»» Script exit code: 0
»»»»» Bisecting by output
»»»»» Output on “old” revision is:
2
»»»»» The output is different
»»»»» Therefore, marking this revision as “new”
»»»»» -------------------------------------------------------------------------
»»»»» Testing 541a4f1628e4e156f6eefc547938746f7b736104
»»»»» Script output:
True
»»»»» Script exit code: 0
»»»»» Bisecting by output
»»»»» Output on “old” revision is:
2
»»»»» The output is different
»»»»» Therefore, marking this revision as “new”
»»»»» -------------------------------------------------------------------------
541a4f1628e4e156f6eefc547938746f7b736104 is the first new commit
commit 541a4f1628e4e156f6eefc547938746f7b736104
Author: Jonathan Worthington <jnthn@jnthn.net>
Date: Mon Jan 7 17:30:58 2019 +0100
More aggressive scope flattening
Previously, we would only ever flatten away lexical scopes if we saw
that there were no declarations inside of that scope, the only special
case being `$_`, which was handled specially. There was also some
special mechanism in place to try and handle topic rebinds correctly.
Recently, lexical to local lowering became more powerful, able to deal
with normal lexical variables rather than just parameters and name
bindings. This handling takes in $_ too.
This commit replaces the scope flattening mechanism with one that, at
its heart, will flatten in an immediate block if all of its variables
were lowered. This means that in a program like:
my $a = 42;
if $a > 21 {
my $b = 10;
if $b < 200 {
say $a + $b
}
}
Then both of those scopes flatten away, thanks to both `$a` and `$b`
having been lowered. Previously, only the innermost one would have been,
thanks to the declaration of `$b`.
Since the `$_` in each block is now also lowered to a local when
possible, then we can replace the `getouterlex` calls with a simple
bind, and do away with the topic preservation mechanism, which was
always rather cheaty.
:040000 040000 322a5751d03238a1cdfce7c2b73fe274dde6cde8 6707b5c3fbc65c7f86483adcab963b26c57655a1 M src
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment