Skip to content

Instantly share code, notes, and snippets.

@Whateverable
Created December 15, 2020 14:31
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/b0939ac45971783cb8318f5c2bcbf593 to your computer and use it in GitHub Desktop.
Save Whateverable/b0939ac45971783cb8318f5c2bcbf593 to your computer and use it in GitHub Desktop.
bisectable6
sub a(:$foo) { dd $foo }; &a.wrap: { LEAVE say now - ENTER now; callsame }; a :foo
Bisecting: 139 revisions left to test after this (roughly 7 steps)
[32b3ddc7e10090427d5a78f48ab4ee5161d2cfcd] Micro-optimize ORDER() by about 7%
»»»»» Testing 32b3ddc7e10090427d5a78f48ab4ee5161d2cfcd
»»»»» Script output:
Cannot resolve caller infix:<->(Instant, Mu); none of these signatures match:
($x = 0)
(\a, \b)
(Real \a, Real \b)
(Int:D \a, Int:D \b --> Int:D)
(int $a, int $b --> int)
(Num:D \a, Num:D \b)
(num $a, num $b --> num)
(Range:D \r, Real:D \v)
(Rational:D \a, Rational:D \b)
(Rational:D \a, Int:D \b)
(Int:D \a, Rational:D \b)
(Complex:D \a, Complex:D \b --> Complex:D)
(Complex:D \a, Real \b --> Complex:D)
(Real \a, Complex:D \b --> Complex:D)
(Instant:D $a, Instant:D $b)
(Instant:D $a, Real:D $b)
(Duration:D $a, Real $b)
(Duration:D $a, Duration:D $b)
(DateTime:D \a, DateTime:D \b)
(DateTime:D \a, Duration:D \b)
(Date:D $d, Int:D $x)
(Date:D $a, Date:D $b)
in block <unit> at /tmp/37JO6ZBS9E line 1
»»»»» Script exit code: 1
»»»»» Bisecting by output
»»»»» Output on “old” revision is:
Cannot resolve caller infix:<->(Instant, Mu); none of these signatures match:
($x = 0)
(\a, \b)
(Real \a, Real \b)
(Int:D \a, Int:D \b --> Int:D)
(int $a, int $b --> int)
(Num:D \a, Num:D \b)
(num $a, num $b --> num)
(Range:D \r, Real:D \v)
(Rational:D \a, Rational:D \b)
(Rational:D \a, Int:D \b)
(Int:D \a, Rational:D \b)
(Complex:D \a, Complex:D \b --> Complex:D)
(Complex:D \a, Real \b --> Complex:D)
(Real \a, Complex:D \b --> Complex:D)
(Instant:D $a, Instant:D $b)
(Instant:D $a, Real:D $b)
(Duration:D $a, Real $b)
(Duration:D $a, Duration:D $b)
(DateTime:D \a, DateTime:D \b)
(DateTime:D \a, Duration:D \b)
(Date:D $d, Int:D $x)
(Date:D $a, Date:D $b)
in block <unit> at /tmp/37JO6ZBS9E line 1
»»»»» The output is identical
»»»»» Therefore, marking this revision as “old”
»»»»» -------------------------------------------------------------------------
»»»»» Testing f0c85125f86193a0bfa5b7e7c88b1c5a3fcb6901
»»»»» Script output:
Cannot resolve caller infix:<->(Instant, Mu); none of these signatures match:
($x = 0)
(\a, \b)
(Real \a, Real \b)
(Int:D \a, Int:D \b --> Int:D)
(int $a, int $b --> int)
(Num:D \a, Num:D \b)
(num $a, num $b --> num)
(Range:D \r, Real:D \v)
(Rational:D \a, Rational:D \b)
(Rational:D \a, Int:D \b)
(Int:D \a, Rational:D \b)
(Complex:D \a, Complex:D \b --> Complex:D)
(Complex:D \a, Real \b --> Complex:D)
(Real \a, Complex:D \b --> Complex:D)
(Instant:D $a, Instant:D $b)
(Instant:D $a, Real:D $b)
(Duration:D $a, Real $b)
(Duration:D $a, Duration:D $b)
(DateTime:D \a, DateTime:D \b)
(DateTime:D \a, Duration:D \b)
(Date:D $d, Int:D $x)
(Date:D $a, Date:D $b)
in block <unit> at /tmp/37JO6ZBS9E line 1
»»»»» Script exit code: 1
»»»»» Bisecting by output
»»»»» Output on “old” revision is:
Cannot resolve caller infix:<->(Instant, Mu); none of these signatures match:
($x = 0)
(\a, \b)
(Real \a, Real \b)
(Int:D \a, Int:D \b --> Int:D)
(int $a, int $b --> int)
(Num:D \a, Num:D \b)
(num $a, num $b --> num)
(Range:D \r, Real:D \v)
(Rational:D \a, Rational:D \b)
(Rational:D \a, Int:D \b)
(Int:D \a, Rational:D \b)
(Complex:D \a, Complex:D \b --> Complex:D)
(Complex:D \a, Real \b --> Complex:D)
(Real \a, Complex:D \b --> Complex:D)
(Instant:D $a, Instant:D $b)
(Instant:D $a, Real:D $b)
(Duration:D $a, Real $b)
(Duration:D $a, Duration:D $b)
(DateTime:D \a, DateTime:D \b)
(DateTime:D \a, Duration:D \b)
(Date:D $d, Int:D $x)
(Date:D $a, Date:D $b)
in block <unit> at /tmp/37JO6ZBS9E line 1
»»»»» The output is identical
»»»»» Therefore, marking this revision as “old”
»»»»» -------------------------------------------------------------------------
»»»»» Testing f6756bb4d9b8b43a55a613a1a2fc85a8c6d379c0
»»»»» Script output:
Cannot resolve caller infix:<->(Instant, Mu); none of these signatures match:
($x = 0)
(\a, \b)
(Real \a, Real \b)
(Int:D \a, Int:D \b --> Int:D)
(int $a, int $b --> int)
(Num:D \a, Num:D \b)
(num $a, num $b --> num)
(Range:D \r, Real:D \v)
(Rational:D \a, Rational:D \b)
(Rational:D \a, Int:D \b)
(Int:D \a, Rational:D \b)
(Complex:D \a, Complex:D \b --> Complex:D)
(Complex:D \a, Real \b --> Complex:D)
(Real \a, Complex:D \b --> Complex:D)
(Instant:D $a, Instant:D $b)
(Instant:D $a, Real:D $b)
(Duration:D $a, Real $b)
(Duration:D $a, Duration:D $b)
(DateTime:D \a, DateTime:D \b)
(DateTime:D \a, Duration:D \b)
(Date:D $d, Int:D $x)
(Date:D $a, Date:D $b)
in block <unit> at /tmp/37JO6ZBS9E line 1
»»»»» Script exit code: 1
»»»»» Bisecting by output
»»»»» Output on “old” revision is:
Cannot resolve caller infix:<->(Instant, Mu); none of these signatures match:
($x = 0)
(\a, \b)
(Real \a, Real \b)
(Int:D \a, Int:D \b --> Int:D)
(int $a, int $b --> int)
(Num:D \a, Num:D \b)
(num $a, num $b --> num)
(Range:D \r, Real:D \v)
(Rational:D \a, Rational:D \b)
(Rational:D \a, Int:D \b)
(Int:D \a, Rational:D \b)
(Complex:D \a, Complex:D \b --> Complex:D)
(Complex:D \a, Real \b --> Complex:D)
(Real \a, Complex:D \b --> Complex:D)
(Instant:D $a, Instant:D $b)
(Instant:D $a, Real:D $b)
(Duration:D $a, Real $b)
(Duration:D $a, Duration:D $b)
(DateTime:D \a, DateTime:D \b)
(DateTime:D \a, Duration:D \b)
(Date:D $d, Int:D $x)
(Date:D $a, Date:D $b)
in block <unit> at /tmp/37JO6ZBS9E line 1
»»»»» The output is identical
»»»»» Therefore, marking this revision as “old”
»»»»» -------------------------------------------------------------------------
»»»»» Testing fa979c9227033a80302f12612eb8c05e654e338b
»»»»» Script output:
Type check failed in binding to parameter '<anon>'; expected Any but got Mu (Mu)
in block <unit> at /tmp/37JO6ZBS9E line 1
»»»»» Script exit code: 1
»»»»» Bisecting by output
»»»»» Output on “old” revision is:
Cannot resolve caller infix:<->(Instant, Mu); none of these signatures match:
($x = 0)
(\a, \b)
(Real \a, Real \b)
(Int:D \a, Int:D \b --> Int:D)
(int $a, int $b --> int)
(Num:D \a, Num:D \b)
(num $a, num $b --> num)
(Range:D \r, Real:D \v)
(Rational:D \a, Rational:D \b)
(Rational:D \a, Int:D \b)
(Int:D \a, Rational:D \b)
(Complex:D \a, Complex:D \b --> Complex:D)
(Complex:D \a, Real \b --> Complex:D)
(Real \a, Complex:D \b --> Complex:D)
(Instant:D $a, Instant:D $b)
(Instant:D $a, Real:D $b)
(Duration:D $a, Real $b)
(Duration:D $a, Duration:D $b)
(DateTime:D \a, DateTime:D \b)
(DateTime:D \a, Duration:D \b)
(Date:D $d, Int:D $x)
(Date:D $a, Date:D $b)
in block <unit> at /tmp/37JO6ZBS9E line 1
»»»»» The output is different
»»»»» Therefore, marking this revision as “new”
»»»»» -------------------------------------------------------------------------
»»»»» Testing d443076dab818722c077e9733419b5af2b6aabb3
»»»»» Script output:
Type check failed in binding to parameter '<anon>'; expected Any but got Mu (Mu)
in block <unit> at /tmp/37JO6ZBS9E line 1
»»»»» Script exit code: 1
»»»»» Bisecting by output
»»»»» Output on “old” revision is:
Cannot resolve caller infix:<->(Instant, Mu); none of these signatures match:
($x = 0)
(\a, \b)
(Real \a, Real \b)
(Int:D \a, Int:D \b --> Int:D)
(int $a, int $b --> int)
(Num:D \a, Num:D \b)
(num $a, num $b --> num)
(Range:D \r, Real:D \v)
(Rational:D \a, Rational:D \b)
(Rational:D \a, Int:D \b)
(Int:D \a, Rational:D \b)
(Complex:D \a, Complex:D \b --> Complex:D)
(Complex:D \a, Real \b --> Complex:D)
(Real \a, Complex:D \b --> Complex:D)
(Instant:D $a, Instant:D $b)
(Instant:D $a, Real:D $b)
(Duration:D $a, Real $b)
(Duration:D $a, Duration:D $b)
(DateTime:D \a, DateTime:D \b)
(DateTime:D \a, Duration:D \b)
(Date:D $d, Int:D $x)
(Date:D $a, Date:D $b)
in block <unit> at /tmp/37JO6ZBS9E line 1
»»»»» The output is different
»»»»» Therefore, marking this revision as “new”
»»»»» -------------------------------------------------------------------------
»»»»» Testing 20ccaccad7b632d32280833b8a36f481c7286e02
»»»»» Script output:
Cannot resolve caller infix:<->(Instant, Mu); none of these signatures match:
($x = 0)
(\a, \b)
(Real \a, Real \b)
(Int:D \a, Int:D \b --> Int:D)
(int $a, int $b --> int)
(Num:D \a, Num:D \b)
(num $a, num $b --> num)
(Range:D \r, Real:D \v)
(Rational:D \a, Rational:D \b)
(Rational:D \a, Int:D \b)
(Int:D \a, Rational:D \b)
(Complex:D \a, Complex:D \b --> Complex:D)
(Complex:D \a, Real \b --> Complex:D)
(Real \a, Complex:D \b --> Complex:D)
(Instant:D $a, Instant:D $b)
(Instant:D $a, Real:D $b)
(Duration:D $a, Real $b)
(Duration:D $a, Duration:D $b)
(DateTime:D \a, DateTime:D \b)
(DateTime:D \a, Duration:D \b)
(Date:D $d, Int:D $x)
(Date:D $a, Date:D $b)
in block <unit> at /tmp/37JO6ZBS9E line 1
»»»»» Script exit code: 1
»»»»» Bisecting by output
»»»»» Output on “old” revision is:
Cannot resolve caller infix:<->(Instant, Mu); none of these signatures match:
($x = 0)
(\a, \b)
(Real \a, Real \b)
(Int:D \a, Int:D \b --> Int:D)
(int $a, int $b --> int)
(Num:D \a, Num:D \b)
(num $a, num $b --> num)
(Range:D \r, Real:D \v)
(Rational:D \a, Rational:D \b)
(Rational:D \a, Int:D \b)
(Int:D \a, Rational:D \b)
(Complex:D \a, Complex:D \b --> Complex:D)
(Complex:D \a, Real \b --> Complex:D)
(Real \a, Complex:D \b --> Complex:D)
(Instant:D $a, Instant:D $b)
(Instant:D $a, Real:D $b)
(Duration:D $a, Real $b)
(Duration:D $a, Duration:D $b)
(DateTime:D \a, DateTime:D \b)
(DateTime:D \a, Duration:D \b)
(Date:D $d, Int:D $x)
(Date:D $a, Date:D $b)
in block <unit> at /tmp/37JO6ZBS9E line 1
»»»»» The output is identical
»»»»» Therefore, marking this revision as “old”
»»»»» -------------------------------------------------------------------------
»»»»» Testing a3a7c142a48026db434893e79930478efba926c9
»»»»» Script output:
Cannot resolve caller infix:<->(Instant, Mu); none of these signatures match:
($x = 0)
(\a, \b)
(Real \a, Real \b)
(Int:D \a, Int:D \b --> Int:D)
(int $a, int $b --> int)
(Num:D \a, Num:D \b)
(num $a, num $b --> num)
(Range:D \r, Real:D \v)
(Rational:D \a, Rational:D \b)
(Rational:D \a, Int:D \b)
(Int:D \a, Rational:D \b)
(Complex:D \a, Complex:D \b --> Complex:D)
(Complex:D \a, Real \b --> Complex:D)
(Real \a, Complex:D \b --> Complex:D)
(Instant:D $a, Instant:D $b)
(Instant:D $a, Real:D $b)
(Duration:D $a, Real $b)
(Duration:D $a, Duration:D $b)
(DateTime:D \a, DateTime:D \b)
(DateTime:D \a, Duration:D \b)
(Date:D $d, Int:D $x)
(Date:D $a, Date:D $b)
in block <unit> at /tmp/37JO6ZBS9E line 1
»»»»» Script exit code: 1
»»»»» Bisecting by output
»»»»» Output on “old” revision is:
Cannot resolve caller infix:<->(Instant, Mu); none of these signatures match:
($x = 0)
(\a, \b)
(Real \a, Real \b)
(Int:D \a, Int:D \b --> Int:D)
(int $a, int $b --> int)
(Num:D \a, Num:D \b)
(num $a, num $b --> num)
(Range:D \r, Real:D \v)
(Rational:D \a, Rational:D \b)
(Rational:D \a, Int:D \b)
(Int:D \a, Rational:D \b)
(Complex:D \a, Complex:D \b --> Complex:D)
(Complex:D \a, Real \b --> Complex:D)
(Real \a, Complex:D \b --> Complex:D)
(Instant:D $a, Instant:D $b)
(Instant:D $a, Real:D $b)
(Duration:D $a, Real $b)
(Duration:D $a, Duration:D $b)
(DateTime:D \a, DateTime:D \b)
(DateTime:D \a, Duration:D \b)
(Date:D $d, Int:D $x)
(Date:D $a, Date:D $b)
in block <unit> at /tmp/37JO6ZBS9E line 1
»»»»» The output is identical
»»»»» Therefore, marking this revision as “old”
»»»»» -------------------------------------------------------------------------
»»»»» Testing 4b5d36f3a8dff65cb41d4c3747c3f15e6fa36cbb
»»»»» Script output:
Type check failed in binding to parameter '<anon>'; expected Any but got Mu (Mu)
in block <unit> at /tmp/37JO6ZBS9E line 1
»»»»» Script exit code: 1
»»»»» Bisecting by output
»»»»» Output on “old” revision is:
Cannot resolve caller infix:<->(Instant, Mu); none of these signatures match:
($x = 0)
(\a, \b)
(Real \a, Real \b)
(Int:D \a, Int:D \b --> Int:D)
(int $a, int $b --> int)
(Num:D \a, Num:D \b)
(num $a, num $b --> num)
(Range:D \r, Real:D \v)
(Rational:D \a, Rational:D \b)
(Rational:D \a, Int:D \b)
(Int:D \a, Rational:D \b)
(Complex:D \a, Complex:D \b --> Complex:D)
(Complex:D \a, Real \b --> Complex:D)
(Real \a, Complex:D \b --> Complex:D)
(Instant:D $a, Instant:D $b)
(Instant:D $a, Real:D $b)
(Duration:D $a, Real $b)
(Duration:D $a, Duration:D $b)
(DateTime:D \a, DateTime:D \b)
(DateTime:D \a, Duration:D \b)
(Date:D $d, Int:D $x)
(Date:D $a, Date:D $b)
in block <unit> at /tmp/37JO6ZBS9E line 1
»»»»» The output is different
»»»»» Therefore, marking this revision as “new”
4b5d36f3a8dff65cb41d4c3747c3f15e6fa36cbb is the first new commit
commit 4b5d36f3a8dff65cb41d4c3747c3f15e6fa36cbb
Author: Zoffix Znet <cpan@zoffix.com>
Date: Sat Apr 21 06:06:37 2018 +0000
Fix up proto .arity/.count for all core multi subs
Fixes https://github.com/rakudo/rakudo/issues/1739
THIS COMMIT HAS REGRESSION IN OPTIMIZATION of rewriting
stuff like `*` with natives to `mul_i`. That still needs
to be looked at.
- Match .count to highest count of all candidates
- Match .arity to lowest arity of all candidates
- Add a named slurpy to allow for user extension
- Remove `Mu` proto params on non-Mu subs
- Widen & and @ params in protos to allow Any in
case user wants to add such candidates (the same don't
apply to `Mu` removal, because `Mu` changes semantics by
preventing autothreading of Junctions, so that's sorta
in a different category.
:040000 040000 154dabaf4a12936bdd4eb347785f3be5d323b49c 9eec937843eacccbbca0283fae462a70b095407d M src
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment