Skip to content

Instantly share code, notes, and snippets.

@Whateverable
Created June 29, 2019 12:27
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/13ce8b2a7cf5572c0c91a3700111012f to your computer and use it in GitHub Desktop.
Save Whateverable/13ce8b2a7cf5572c0c91a3700111012f to your computer and use it in GitHub Desktop.
bisectable6
$_ = "3"; my regex decimal { \d }; say &decimal.Bool
Bisecting: 4998 revisions left to test after this (roughly 12 steps)
[c76d9324a9f67e4075683e38a63a9788161c17cc] Don't trip over Type(sigilles-var).
»»»»» Testing c76d9324a9f67e4075683e38a63a9788161c17cc
»»»»» Script output:
True
»»»»» Script exit code: 0
»»»»» Bisecting by output
»»»»» Output on “old” revision is:
True
»»»»» The output is identical
»»»»» Therefore, marking this revision as “old”
»»»»» -------------------------------------------------------------------------
»»»»» Testing b0a54f92ff329bb11f8701f5b7e169a8eba9c73a
»»»»» Cannot test this commit. Reason: Commit exists, but a perl6 executable could not be built for it
»»»»» Therefore, skipping this revision
»»»»» -------------------------------------------------------------------------
»»»»» Testing 189c5a8a34709c5a6f5c0bcd4e9890cf545ea14b
»»»»» Script output:
True
»»»»» Script exit code: 0
»»»»» Bisecting by output
»»»»» Output on “old” revision is:
True
»»»»» The output is identical
»»»»» Therefore, marking this revision as “old”
»»»»» -------------------------------------------------------------------------
»»»»» Testing 0bdf51809ba5ca01558c833847be193272afa8b6
»»»»» Script output:
True
»»»»» Script exit code: 0
»»»»» Bisecting by output
»»»»» Output on “old” revision is:
True
»»»»» The output is identical
»»»»» Therefore, marking this revision as “old”
»»»»» -------------------------------------------------------------------------
»»»»» Testing ffe840999c6a971656e61ea2e0d904e3a4434a2c
»»»»» Script output:
False
»»»»» Script exit code: 0
»»»»» Bisecting by output
»»»»» Output on “old” revision is:
True
»»»»» The output is different
»»»»» Therefore, marking this revision as “new”
»»»»» -------------------------------------------------------------------------
»»»»» Testing 0d29768adf45a12ce18a670fc8091ab4a45f63de
»»»»» Script output:
True
»»»»» Script exit code: 0
»»»»» Bisecting by output
»»»»» Output on “old” revision is:
True
»»»»» The output is identical
»»»»» Therefore, marking this revision as “old”
»»»»» -------------------------------------------------------------------------
»»»»» Testing 1c101a04f92ed199eec62cc31a6b2ffba874a8cd
»»»»» Script output:
True
»»»»» Script exit code: 0
»»»»» Bisecting by output
»»»»» Output on “old” revision is:
True
»»»»» The output is identical
»»»»» Therefore, marking this revision as “old”
»»»»» -------------------------------------------------------------------------
»»»»» Testing d904b7048bfaa8b7e1583baa1af0665f29c5b8c3
»»»»» Script output:
False
»»»»» Script exit code: 0
»»»»» Bisecting by output
»»»»» Output on “old” revision is:
True
»»»»» The output is different
»»»»» Therefore, marking this revision as “new”
»»»»» -------------------------------------------------------------------------
»»»»» Testing 963e5d707f7cf9f44bce307e8faec6b4b40d8a10
»»»»» Script output:
True
»»»»» Script exit code: 0
»»»»» Bisecting by output
»»»»» Output on “old” revision is:
True
»»»»» The output is identical
»»»»» Therefore, marking this revision as “old”
»»»»» -------------------------------------------------------------------------
»»»»» Testing 6e6c288c11bebd1409fb22849b122cbfda4238d8
»»»»» Script output:
False
»»»»» Script exit code: 0
»»»»» Bisecting by output
»»»»» Output on “old” revision is:
True
»»»»» The output is different
»»»»» Therefore, marking this revision as “new”
»»»»» -------------------------------------------------------------------------
»»»»» Testing 7133b81e4f1875ff0315bab5eba340b3b0f4de16
»»»»» Script output:
True
»»»»» Script exit code: 0
»»»»» Bisecting by output
»»»»» Output on “old” revision is:
True
»»»»» The output is identical
»»»»» Therefore, marking this revision as “old”
»»»»» -------------------------------------------------------------------------
»»»»» Testing c2e272ef682d54758ed1fac80d80e4ee4b1ee0fb
»»»»» Script output:
False
»»»»» Script exit code: 0
»»»»» Bisecting by output
»»»»» Output on “old” revision is:
True
»»»»» The output is different
»»»»» Therefore, marking this revision as “new”
»»»»» -------------------------------------------------------------------------
»»»»» Testing 3d581c8d23e0b47fd09616a1165f84568531a4aa
»»»»» Script output:
False
»»»»» Script exit code: 0
»»»»» Bisecting by output
»»»»» Output on “old” revision is:
True
»»»»» The output is different
»»»»» Therefore, marking this revision as “new”
»»»»» -------------------------------------------------------------------------
»»»»» Testing 8ef7c15ed5bff6674270dfe209962aaafd0ac825
»»»»» Script output:
False
»»»»» Script exit code: 0
»»»»» Bisecting by output
»»»»» Output on “old” revision is:
True
»»»»» The output is different
»»»»» Therefore, marking this revision as “new”
»»»»» -------------------------------------------------------------------------
8ef7c15ed5bff6674270dfe209962aaafd0ac825 is the first new commit
commit 8ef7c15ed5bff6674270dfe209962aaafd0ac825
Author: Jonathan Worthington <jnthn@jnthn.net>
Date: Fri Jan 25 16:58:19 2019 +0100
Make regex literals capture $/ and $!
These are then used when the regex is evaluated in boolean context,
rather than using dynamic scope, which is not reliable given that `$_`
is no longer dynamic as of 6.d. Previously, we would not lower away `$_`
if we saw a regex literally present in that scope, however this cannot
handle the at-a-distance uses.
Defining these semantics will, on the upside:
1. Provide the correct behavior for immediate literal uses of /.../,
which is by far the common case.
2. Provide a good means for `.grep: { /foo/ }` to work (it has always
been a bit of a "works by accident" before now).
3. Avoid weird issues of finding a `$_` at a distance just because the
closest one was undefined. In fact, things like `so /foo/` only ever
worked before now because `so` did not put a defined value into its
`$_`! Worse still, if you wrote `given $foo { if /.../ { say 1 } }`
and `$foo` was undefined, you'd not get a warning, but instead it
would magically match against the first `$_` in dynamic scope that
has a defiend value!
4. Do nothing but good for performance.
On the downside, it means we have to consider one spectest 6.d errata.
This patch also does not currently retain the previous semantics for
6.c, however I can see how to do that and look into it if there's some
consensus for us to go in this direction.
:040000 040000 71a547efb00fd7db7f315a6f5ff8940af05446bb 676f359a1abf2c5afe6bd5f17b37c03a7ba26938 M src
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment