Skip to content

Instantly share code, notes, and snippets.

@Whateverable
Created December 15, 2018 23:32
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/efff3094c4c18896eaf8fc6797107997 to your computer and use it in GitHub Desktop.
Save Whateverable/efff3094c4c18896eaf8fc6797107997 to your computer and use it in GitHub Desktop.
bisectable6
class C {}; multi infix:<~>($a, C) is default {42}; say "test" ~ C.new
Bisecting: 4488 revisions left to test after this (roughly 12 steps)
[4afa6126214a775bfe37026b10713664294e1035] Remove .path attribute from cat handle
»»»»» Testing 4afa6126214a775bfe37026b10713664294e1035
»»»»» Script output:
42
»»»»» Script exit code: 0
»»»»» Bisecting by output
»»»»» Output on “old” revision is:
42
»»»»» The output is identical
»»»»» Therefore, marking this revision as “old”
»»»»» -------------------------------------------------------------------------
»»»»» Testing bececb7b7525bf76ed4d19956e79e2013936528d
»»»»» Script output:
42
»»»»» Script exit code: 0
»»»»» Bisecting by output
»»»»» Output on “old” revision is:
42
»»»»» The output is identical
»»»»» Therefore, marking this revision as “old”
»»»»» -------------------------------------------------------------------------
»»»»» Testing 5c429e4eadcdcb9ba5aa3d7eb79264f172990f0e
»»»»» Script output:
42
»»»»» Script exit code: 0
»»»»» Bisecting by output
»»»»» Output on “old” revision is:
42
»»»»» The output is identical
»»»»» Therefore, marking this revision as “old”
»»»»» -------------------------------------------------------------------------
»»»»» Testing c2b66c144c368f4d98a542d4de3c553e85febbe5
»»»»» Cannot test this commit. Reason: Commit exists, but a perl6 executable could not be built for it
»»»»» Therefore, skipping this revision
»»»»» -------------------------------------------------------------------------
»»»»» Testing 20f0df8f7251486a5ea0a160cc88459937f4aa12
»»»»» Script output:
42
»»»»» Script exit code: 0
»»»»» Bisecting by output
»»»»» Output on “old” revision is:
42
»»»»» The output is identical
»»»»» Therefore, marking this revision as “old”
»»»»» -------------------------------------------------------------------------
»»»»» Testing de98129322489bc57c1997b8b620363977c28e8c
»»»»» Cannot test this commit. Reason: Commit exists, but a perl6 executable could not be built for it
»»»»» Therefore, skipping this revision
»»»»» -------------------------------------------------------------------------
»»»»» Testing 89055755e270334e326b5364e24d991ac192f08c
»»»»» Script output:
testC<94542350007040>
»»»»» Script exit code: 0
»»»»» Bisecting by output
»»»»» Output on “old” revision is:
42
»»»»» The output is different
»»»»» Therefore, marking this revision as “new”
»»»»» -------------------------------------------------------------------------
»»»»» Testing 1bf086120d57aae02f0fd11d22b3378c82a0e273
»»»»» Script output:
testC<94272385317376>
»»»»» Script exit code: 0
»»»»» Bisecting by output
»»»»» Output on “old” revision is:
42
»»»»» The output is different
»»»»» Therefore, marking this revision as “new”
»»»»» -------------------------------------------------------------------------
»»»»» Testing 36d37cbc8b4794cdda7945fce74fc8b3ca3b669d
»»»»» Script output:
42
»»»»» Script exit code: 0
»»»»» Bisecting by output
»»»»» Output on “old” revision is:
42
»»»»» The output is identical
»»»»» Therefore, marking this revision as “old”
»»»»» -------------------------------------------------------------------------
»»»»» Testing 9a5c538fa286061267be3350600ed09a88e9bca5
»»»»» Script output:
testC<94907867968368>
»»»»» Script exit code: 0
»»»»» Bisecting by output
»»»»» Output on “old” revision is:
42
»»»»» The output is different
»»»»» Therefore, marking this revision as “new”
»»»»» -------------------------------------------------------------------------
»»»»» Testing 1070fa0c84af1bc3f25bd29f207da64396c7260c
»»»»» Script output:
42
»»»»» Script exit code: 0
»»»»» Bisecting by output
»»»»» Output on “old” revision is:
42
»»»»» The output is identical
»»»»» Therefore, marking this revision as “old”
»»»»» -------------------------------------------------------------------------
»»»»» Testing fa73bb48d5a6ac72e17b6c7f5cb7b9ec47a260df
»»»»» Script output:
42
»»»»» Script exit code: 0
»»»»» Bisecting by output
»»»»» Output on “old” revision is:
42
»»»»» The output is identical
»»»»» Therefore, marking this revision as “old”
»»»»» -------------------------------------------------------------------------
»»»»» Testing bf9ab42e0f598b0701c44ba0da71f1f0f2f68a61
»»»»» Script output:
42
»»»»» Script exit code: 0
»»»»» Bisecting by output
»»»»» Output on “old” revision is:
42
»»»»» The output is identical
»»»»» Therefore, marking this revision as “old”
»»»»» -------------------------------------------------------------------------
»»»»» Testing 3ae97e5f38e85a5db76053ed2c7757c59a22f73d
»»»»» Script output:
testC<94309944378016>
»»»»» Script exit code: 0
»»»»» Bisecting by output
»»»»» Output on “old” revision is:
42
»»»»» The output is different
»»»»» Therefore, marking this revision as “new”
»»»»» -------------------------------------------------------------------------
»»»»» Testing dc68b932d37c8b31a28ae0fdc2273ebd8a4de9a3
»»»»» Script output:
42
»»»»» Script exit code: 0
»»»»» Bisecting by output
»»»»» Output on “old” revision is:
42
»»»»» The output is identical
»»»»» Therefore, marking this revision as “old”
»»»»» -------------------------------------------------------------------------
3ae97e5f38e85a5db76053ed2c7757c59a22f73d is the first new commit
commit 3ae97e5f38e85a5db76053ed2c7757c59a22f73d
Author: Elizabeth Mattijsen <liz@wenzperl.nl>
Date: Thu Aug 9 15:53:37 2018 +0200
Optimize interpolation
Before, all interpolation was codegenned with a call to "Stringy". This
has several disadvantages:
- it created a more opcodes (this patch makes core setting 25K smaller)
- it wouldn't allow for better optimized infix:<~> candidates
- it didn't allow custom infix:<~> to be seen (as all became Str)
This commit does the following things:
- remove codegenning a method call to Stringy
- except if it's the only one, to handle the case of "$a".WHAT
- add several candidates for infix:<~> to handle optimisable cases
- Cool ~ Str | Str ~ Cool | Cool ~ Cool: directly call Cool.Str
- str ~ Str | Str ~ str | str ~ str: always return a str
- [~] @foo: now handles str @foo | @foo with separate candidate
This made code like "$a $a":
- 2% faster in the case of $a being a Str
- 10% faster in the case of $a being an Int
- 2x as fast in the case of $a being a str
:040000 040000 ad8f5a64bee6c1922b8b80e50f8ea2bdf0568446 a30b5a28581ac53cd0d418a6018511889d4b0a10 M src
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment