Geth roast: skids++ created pull request #329:
Add tests for RT#132006
00:05
synopsebot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=132006
Geth roast: 6f7002f2c6 | skids++ | S02-types/instants-and-durations.t
Add tests for RT#132006
roast: 7edf35ddf7 | skids++ (committed using GitHub Web editor) | S02-types/instants-and-durations.t
Merge pull request #329 from skids/rt132006

Add tests for RT#132006
synopsebot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=132006
synopsebot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=132006
travis-ci Rakudo build passed. Nick Logan 'Use proper java 8 jdk package' 00:40
travis-ci.org/rakudo/rakudo/builds/278822303 github.com/rakudo/rakudo/compare/f...f339b91d2a
Geth roast: skids++ created pull request #330:
Rt126433
00:50
roast: 90d40a449a | skids++ | S12-coercion/coercion-types.t
Re-attribute tests to RT#126433 and enhance them

One test was suceeding for the wrong reason
   throws-like does a dies-ok subtest so altering the test is ok
synopsebot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=126433
roast: 0d9b3e23d2 | skids++ | S12-coercion/coercion-types.t
Can do a todo here rather than a skip
roast: 574035ff4d | skids++ (committed using GitHub Web editor) | S12-coercion/coercion-types.t
Merge pull request #330 from skids/rt126433

Rt126433
lizmat Files=1229, Tests=75164, 314 wallclock secs (14.99 usr 5.30 sys + 2147.32 cusr 222.10 csys = 2389.71 CPU) 07:46
feels like we lost about 20 seconds wallclock since yesterday on the spectest
MasterDuke lizmat: how many tests have been added? 10:16
lizmat yesterdays: Files=1227, Tests=75115, 298 wallclock secs (14.64 usr 5.32 sys + 2016.98 cusr 210.03 csys = 2246.97 CPU) 10:18
so 49 tests
CPU usage is definitely also up
perhaps it's jnthn's new supply tests 10:19
timotimo at least the test doesn't hang on your system :)
lizmat indeed, does it on yours ?
timotimo yeah, S17-supply/syntax.t has a test that consumes infinite cpu and doesn't finish 10:21
MasterDuke some where for me a day or two ago, i'm doing a run now to see if it's changed
timotimo or was that changed?
lizmat dunno :-(
timotimo jnthn wasn't able to reproduce it
lizmat I guess /me neither :-( 10:22
timotimo the plot thickens. i won't be able to investigate very soon, though 10:27
dogbert11 compare with these times: irclog.perlgeek.de/perl6-dev/2017-...i_14928347 10:29
lizmat yeah, but almost 8K more tests 10:30
MasterDuke it is running pretty slowly, i also had a failure in t/spec/S32-io/IO-Socket-Async.t, `Parse errors: Bad plan. You planned 26 tests but ran 17.`
dogbert11 then those 8000 tests are quite slow 10:31
a few days later: irclog.perlgeek.de/perl6-dev/2017-...i_14961470
MasterDuke hm, that fails even when run by itself 10:32
looks like there's some debug output showing up 10:33
# host=::1
here with error
but then: Unhandled exception in code scheduled on thread 4
Unhandled exception in code scheduled on thread 7
Too few positionals passed; expected 6 arguments but got 2 10:34
dogbert11 MasterDuke: what happens if you disable the JIT 10:37
MasterDuke same errors, and same with disabling spesh also
dogbert11 interesting, it works for me and valgrind kept silent as well 10:38
MasterDuke do you see that debug output? 10:39
dogbert11 the host comments? 10:41
MasterDuke but yeah, neither gdb or valgrind are helpful 10:42
yeah, and 'here with error' i think
dogbert11 for '127.0.0.1', '::1' -> $host {
my $port = 5001;
diag("host=$host");
seems to come from the test file 10:43
MasterDuke github.com/rakudo/rakudo/blob/nom/...nc.pm#L201 10:45
maybe not the most useful error...
dogbert11 :) nice find
are you using gcc when building?
MasterDuke yeah, usually 10:46
gcc version 7.2.0 (GCC)
dogbert11 and you haven't been able to get asan working there?
MasterDuke i haven't tried recently, but couldn't get it in the past 10:47
how are you using it?
dogbert11 when using asan I tend to build MoarVM with 'perl Configure.pl --debug --no-optimize --asan --prefix=<install dir>' 10:48
that's almost enough
at least asan output should show up if a problem is encountered 10:49
MasterDuke do you have to --no-optimize? 10:50
dogbert11 no
MasterDuke hm, that spit out a bunch of leak info 10:51
dogbert11 what did you do
MasterDuke when i ran that test right after rebuilding with those options
lizmat afk& 10:52
MasterDuke but i tried rebuilding nqp and that failed
dogbert11 you don't have to rebuild nqp
MasterDuke well yeah, but why does it fail? is that expected? 10:53
dogbert11 let me try as well
dogbert11 rebuilds with 'perl Configure.pl --debug --asan --prefix=../../install/' followed by 'make -j6 install' 10:54
one thing which wont work is trying to run a prg compiled with asan under valgrind. Boom 10:55
MasterDuke oh hm, i didn't add --asan to the nqp configure 10:56
dogbert11 I only rebuild Moar with --asan
MasterDuke ok 10:57
dogbert11 perhaps we build our stuff differently
MasterDuke my usual MoarVM build: perl Configure.pl --prefix=/home/dan/Source/perl6/install/ --debug=3 --telemeh && make -j8 install 10:58
my usual NQP and Rakudo build: perl Configure.pl --prefix=/home/dan/Source/perl6/install/ && make -j8 install
dogbert11 here's what I do: 10:59
dogbert@dogbert-VirtualBox ~/repos/rakudo $ pwd
/home/dogbert/repos/rakudo
cd nqp/MoarVM
perl Configure.pl --debug --asan --prefix=../../install/ followed by make -j6 install and then 'cd -' and I'm good to go 11:00
btw, did you pick up a new system? Noticed the -j8 11:01
MasterDuke i have all three at the same directory level
dogbert11 aha 11:02
MasterDuke heh, not yet. -j8 is about the best value on this old system still
dogbert11 and now new Intel cpu's will be out in a couple of weeks 11:03
MasterDuke yeah, but they're expensive! 11:04
dogbert11 was afraid of that, then Ryzen is still on your radar I guess 11:05
MasterDuke i do plan to upgrade, but also just got new bindings for my snowboard and may have to get new boots also
dogbert11 $$$
MasterDuke yup 11:06
timotimo .o( use SportiveCall )
dogbert11 timotimo: are you good at interpreting callgrind results? 11:09
comparing results av a random spectest file, i.e. t/spec/S02-lists/tree.t, between 2017.07 and current 11:11
timotimo mildly
dogbert11 *of
the results are quite different, but of course a lot of work has been done in the meantime 11:12
timotimo fun: "bigfile".IO.slurp.lines is much better than "bigfile".IO.lines with regards to memory usage 11:14
MasterDuke ? 11:15
timotimo actually, the big impact comes when i .words every entry of the lines list afterwards 11:16
and take only the first one
dogbert11 timotimo: see anything odd here? gist.github.com/dogbert17/82ab9a5a...65d4dd4402 11:17
MasterDuke 120588maxresident with for IO.lines {} and 670020maxresident with for IO.slurp.lines {} 11:18
timotimo yeah
MasterDuke for a 57mb, 1million line file
dogbert11 wonders about the second line in the 'current release', i.e. 58,949,142 nqp/MoarVM/src/strings/ops.c:MVM_string_equal 11:19
timotimo i have 52 megs, 1264290 lines 11:21
did you also use a speshlog for this? %)
dogbert11 nope, should I have done that?
timotimo no
was just surprised the files were so similar :) 11:22
dogbert11 I might have messed up but I hope not :) 11:23
MasterDuke timotimo: wait, were you asking if i used a speshlog?
timotimo oh, haha 11:24
i didn't see dogbert answer instead of you 11:25
MasterDuke ha. but no, mine is the first 1million lines of the SQL output of profiling a rakudo build
timotimo dogbert11: yeah, the string equal thing is weird. we should perhaps grab a list of all moar-level stack traces from when that gets called, though that'll obviously give a gigantic file
maybe just the frame we're in when that happens 11:26
that could give us enough of a clue
dogbert11 callgrind_annotate does have a --tree option which supposedly can list the callers 11:27
timotimo right, but not the moar-level ones
have you ever used kcachegrind? 11:28
dogbert11 nope, would that do the job?
MasterDuke that's what i use 11:29
timotimo that gives you a prettier view of the whole thing 11:31
dogbert11 so it's a GUI
which seems to use KDE which I don't have :( 11:32
timotimo it doesn't "use kde", it should only use small parts
anyway, i'm grabbing all locations of MVM_string_equals calls and will count the individual places up to see what's what. 11:34
dogbert11 it crashed the first time but now it's seems to work
timotimo 225 megs so far %)
MasterDuke i bet you get over 1g 11:36
timotimo yeah, surely will 11:37
i have a feeling it'll take upwards of 15 minutes
oh, maybe i should use a moar compiled with --optimize=3 instead of --optimize=0 11:38
oh, okay, it already is
dogbert11 if I understand this correctly, not 100% certain, MVM_string_equal is called by bind_key, at_key, get_attribute, bind_attribute and MVM_frame_find_lexical_by_name 11:40
MasterDuke also directly called in interp.c by eq_s and ne_s 11:43
oh, do you mean when running your test file? 11:44
dogbert11 yeah t/spec/S02-lists/tree.t 11:45
MasterDuke ok, then nevermind what i said
btw, it's the host='::1' that my system doesn't like 11:47
TimToady waves from Tokyo
yoleaux 22 Sep 2017 19:43Z <Zoffix> TimToady: S02 says $? vars must not be changed after compile time; that makes $?USAGE kinda iffy, since we run all the sub MAIN bits at runtime. I'm thinking of changing it to $*USAGE on Sept 30th. Thoughts? IRC discussion: irclog.perlgeek.de/perl6-dev/2017-...i_15204296
22 Sep 2017 19:44Z <Zoffix> TimToady: worth clarifying: currently $?USAGE isn't available to users (so the change won't be breaking any code)
MasterDuke i bet it's because i disabled IPv6
TimToady Zoffix: I'm fine with $*USAGE
dogbert11 will read up on kcachegrind 11:53
Zoffix cool
MasterDuke huh, i guess everyone else has IPv6 enabled if i'm the only one getting that error 12:00
but either way, i don't think the test should diag("host=$host"), if anything it should put the $host in the individual test's descriptions 12:02
that was just added in github.com/perl6/roast/commit/8e38...887a42ee1, anybody object if i change it? 12:05
jdv79: ^^^
.ask jnthn is this github.com/rakudo/rakudo/blame/nom...nc.pm#L201 a debugging leftover? 12:08
yoleaux MasterDuke: I'll pass your message to jnthn.
timotimo MasterDuke: 2.9 gig so far 12:28
MasterDuke heh, any idea how far along you are?
timotimo no :( 12:29
the grep i have will have thrown out the "stage" lines
oh 12:31
i should be able to strace and see what function names it prints, the backtraces should contain the appropriate name of a stage in them
still stage parse 12:32
which isn't terribly surprising as it's the stage that takes the longest time out of all of those we have
MasterDuke and this is just for running the file dogbert11 was testing with? 12:34
timotimo oh no this is the core setting compilation
MasterDuke heh, yeah, that's going to take a while
timotimo i'll go afk for a bit again and see when it terminates 12:36
i bet it'll crash when it reaches ~15 gigs because that's how much ram i have and i'm storing the file on my /tm
on my /tmp
jnthn . 12:38
yoleaux 12:08Z <MasterDuke> jnthn: is this github.com/rakudo/rakudo/blame/nom...nc.pm#L201 a debugging leftover?
jnthn MasterDuke: Yes, d'oh
Geth rakudo/nom: 91cefc1a78 | (Jonathan Worthington)++ (committed using GitHub Web editor) | src/core/IO/Socket/Async.pm
Remove debugging leftover
12:39
rakudo/nom: cf95ce81c4 | (Zoffix Znet)++ | src/core/Cool.pm
Slightly improve Cool.subst-mutate error

  ā€¦when called on non-writable invocants.
Use param name more suitable to the context where the error occurs.
  - Str.subst-mutate doesn't need similar treatment, as those methods
  are multies and we just get an X::Multi::NoMatch from them.
12:42
MasterDuke oops, meant to say this here 12:54
when i just slurp the 50mb, 1million line file, i get 660620maxresident. when i remove the 27 lines with unicode in them, 487160maxresident 12:55
makes sense that it's bigger of course, but that's still a pretty large maxresident for a 50mb file 12:56
timotimo 3.9 gigs 12:58
it is, yeah 12:59
i'm still wondering if we should have an optimization for reading in large amounts of data where it constructs a strand where parts are represented as 8bit and other parts as 32bit
MasterDuke that would be nice 13:01
Geth roast: mryan++ created pull request #331:
Added tests to cover <ww> - within word
13:03
timotimo of course if we use .IO.lines it should already store each line as the smallest thing it can, shouldn't it? 13:04
MasterDuke yeah, it would only really help when slurping or something like that 13:05
Geth roast: b0261d7eb8 | mryan++ (committed by Zoffix Znet) | S05-mass/rx.t
Added tests to cover <ww> - within word (#331)

Added tests to cover the predefined subrule <ww>. As explained in RT #293, word boundary, <wb> is well tested but not <ww> which has a seperate implementation in nqp.
These tests fill that void. Resolves: RT #293
timotimo gist.github.com/timo/7da2609bfd3a4...c12e891ffc - here's an analysis of just a small chunk of the file i'm writing 13:06
might be interesting to see if anything inside QRegex has changed in between those commits dogbert11 checked
MATCH has a few "$blah ne ''" that could probably be replaced with something faster 13:13
m: use nqp; say nqp::isnull_s("")
camelia 0
timotimo m: use nqp; say nqp::istrue_s("")
camelia ===SORRY!===
No registered operation handler for 'istrue_s'
timotimo we do have an istrue_s in moar, but we don't seem to map it in nqp at all 13:14
MasterDuke huh. is it used internally in moar anywhere? 13:15
timotimo probably
hm, not really 13:16
it could be used here, but it's not used anywhere as an op in moar or nqp 13:17
MasterDuke isfalse_s does `MVM_coerce_istrue_s(tc, GET_REG(cur_op, 2).s) ? 0 : 1`, wouldn't `!MVM_coerce_istrue_s(tc, GET_REG(cur_op, 2).s)` be faster?
timotimo i don't think the compiler would generate different code for those two
MasterDuke huh, isfalse_s is in nqp 13:18
timotimo only in the jvm part, though, no?
m: use nqp; say nqp::isfalse_s("")
camelia ===SORRY!===
No registered operation handler for 'isfalse_s'
timotimo j: use nqp; say nqp::isfalse_s("")
camelia Error while reading '/home/camelia/p6eval-token': No such file or directory at /home/camelia/rakudo-j-inst/bin/eval-client.pl line 10.
timotimo oh, well
MasterDuke src/vm/moar/NQP/Ops.nqp:123: push_op(@ins, 'isfalse_s', $not_reg, $val.result_reg); 13:19
istrue_s is only in jvm
timotimo haha
i don't really see why method !cursor_pass would call string equals 13:20
perhaps something implements "if $mystr" as comparison against '' 13:21
strange, i shall look at the speshlog
jdv79 MasterDuke: whatever works for you 13:27
timotimo huh, !cursor_pass isn't considered for speshing? 13:28
MasterDuke that seems...sub-optimal
jdv79: cool, i'll make that change 13:29
timotimo it says it got 783 hits in total 13:30
one of the callsite versions got 454 hits
MasterDuke i don't remember how it decides, some absolute value of hits needed? or percent of a version greater than some threshold? 13:31
timotimo well, worst case it would have made a certain specialization just based on the callsite shape 13:32
MasterDuke oh huh, diag(<something>) is used a bunch in roast tests
maybe i'll leave it as is then, since the real problem is the errors because i have IPv6 disabled 13:35
timotimo oh, btw, the "doesn't get speshed" thing was from a different workload 13:36
one with much less code to compile
MasterDuke ah 13:37
timotimo uh oh, my system is not happy right now 13:38
dogbert11 running out of memory?
timotimo barely
11 gigs out of 15 gig used
Konsole is getting unhappy 13:39
perhaps i put far too much output in it :S
ok, back to usual
dogbert11 btw, managed to get the syntax.t test discussed yesterday to SEGV 13:43
timotimo segfault? huh
dogbert11 yup, read all about it :) gist.github.com/dogbert17/d018b0f6...0f734d0dbc
timotimo it could be that getlexperinvtype caused the string comparison in cursor_pass when trying to look up $?CLASS 13:46
oh crap something's filling up my hard drive 13:48
oh!
dogbert11 uh oh
timotimo i don't actually have a tmpfs on /tmp
MasterDuke whoops 13:49
timotimo no wonder a bunch of programs crashed
including kwin and plasmashell
dogbert11 this syntax.t test is a bit of a mystery 13:53
if I run it in a loop, most of the time the results are: 2.03user 0.68system 0:01.25elapsed 216%CPU (0avgtext+0avgdata 155844maxresident)k 13:54
that is pretty consistent, but once in a while something strange happens and the results are much worse 13:55
like this : 35.11user 23.60system 0:59.61elapsed 98%CPU (0avgtext+0avgdata 1157060maxresident)k
timotimo mhm 13:56
getlexperinvtype doesn't really do a string comparison, though
dogbert11 and sometimes, as we know, the result is: Command terminated by signal 11
timotimo i've never had a segfault there 13:57
dogbert11 I must set MVM_SPESH_BLOCKING=1 for it to happen
timotimo ah 13:58
MasterDuke that moarvm backtrace is scary, all GC related 14:01
dogbert11: but doesn't happen when disabling jit and/or spesh?
dogbert11 MasterDuke: will try to disable spesh, don't have the jit since I'm on 32 bit 14:02
MasterDuke right 14:03
didn't you just upgrade your system? but the vm is 32bit?
dogbert11 yeah, it's the vm 14:06
I transferred it from my old machine
MasterDuke have you noticed that things inside the vm run any faster on the new machine? 14:07
dogbert11 disabling spesh seems to help, no crashes yet, but the strange slow down and eat lots of memory problem still crops up
MasterDuke maybe try running it with heaptrack and see what it says when you get a large memory run? 14:08
dogbert11 I'd say it's a bit faster in ST but the biggest gain is the MT thanks to additional cores
another tool I have never used :) 14:09
MasterDuke makes sense
dogbert11 the cores in my old system were good but there were too few of them :) 14:10
I convinced myself I deserved the upgrade after using it for ~7 years 14:11
MasterDuke pretty much my exact thinking 14:15
dogbert11 I saw that one run was slow so I attached gdb to it, all I can see is this:
7 Thread 0xb0ffeb40 (LWP 15107) "moar" 0xb7346a7a in gc_mark (tc=0xb22a47a0, st=0xaccbc90, data=0x92e21c40, worklist=0xa73e6f38) at src/6model/reprs/VMArray.c:76
2 Thread 0xaa5f6b40 (LWP 15112) "moar" 0xb732c9eb in MVM_gc_root_add_frame_registers_to_worklist (tc=tc@entry=0xb14852e8, worklist=worklist@entry=0xa365e698, frame=<optimized out>, frame@entry=0x93332c90)
at src/gc/roots.c:409
it will probably complete if I let it continue 14:16
MasterDuke timotimo: github.com/MoarVM/MoarVM/blob/mast...ps.c#L1707 looks like we always allocate the space for MVMGrapheme32 when joining strings. could we check if they're each MVMGrapheme(8|ASCII) and then allocate less if so? 14:18
timotimo yeah
does re_nfg try to make things smaller? 14:19
well, probably not
MasterDuke nope 14:20
timotimo since if you're combining stuff, it's likely you'll end up with nfg-related stuff
MasterDuke isn't there some function to convert 32bit to 8bit? 14:21
ah, turn_32bit_into_8bit_unchecked 14:22
but if you're combining all 8bit or ascii strings, would they ever not be concat stable? 14:25
timotimo there's \r and \n
where \r\n turns into a synthetic
MasterDuke but isn't there a way to special case that? 14:26
timotimo not sure 14:29
jnthn++ # bloggage 14:34
Geth rakudo/nom: 21f05e3f1e | (Nick Logan)++ (committed using GitHub Web editor) | src/core/Proc/Async.pm
Remove unused attributes
15:08
ugexe moar/nqp need a bump for rakudo to go green on appveyor it looks like 15:11
we could change the appveyor badge to show green if only --gen-moar=master --gen-nqp=master passes 15:13
Geth roast: 2f9a131a61 | (Zoffix Znet)++ | S06-other/main-usage.t
Rewrite the file to be more concise

For easier reading
15:16
Zoffix ^ (forgot to add: no functional changes) 15:17
timotimo i wrote a little spesh opt that turns eq_s and ne_s against a known empty string into an istrue_s or isfalse_s 15:30
it triggers a bunch of times while doing the core setting parse
so maybe that can reduce the amount of time spent inside MVM_string_equal
MasterDuke and stage parse now takes only 5s? 15:31
lizmat didn't know istrue_x was a thing
timotimo haha 15:33
lizmat: it's not available as nqp:: op it looks like
but only because a line is missing in the QASTOperationsMAST file
well, two lines :)
MasterDuke lizmat: btw, s is the only _* 15:34
lizmat ok, well, there's one occurrence in the setting in "get_next_substitution_result" 15:35
(of iseq_s(...,'')
timotimo but with that spesh opt it's the same if you write ne ""
MasterDuke istrue and isfalse are both used a bunch in the rakudo source, the only _* mention is: src/vm/moar/Perl6/Ops.nqp:301: nqp::push(@ops, MAST::Op.new( :op('istrue_s'), $tmp_reg, $exprres.result_reg ));
Geth rakudo: skids++ created pull request #1170:
Look for yada fullfillment in default parent type, too (RT#131676)
15:36
synopsebot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=131676
timotimo i'm now doing a callgrind of core setting compilation to see if the amount of time spent in string equal goes down noticably
i mean, there's already a shortcut in the equals code for strings having the same amount of graphemes 15:37
MasterDuke lizmat: i see three uses of iseq_s(...,'') 15:38
src/core/Rakudo/Internals.pm:1000,1001 and src/core/Str.pm:2410:
Zoffix ZOFFLOP: t/spec/S17-supply/stable. 15:43
MasterDuke hm, optimizing MVM_string_join is kind of annoying, because Perl 6 strings are stands of MVMGrapheme32 by default 15:47
timotimo so it doesn't often see that it could do it? 15:49
MasterDuke well, there a comment about how we could just collect all the things as strands, but that's not implemented. that would probably help a bunch 15:51
timotimo maybe we can find more places where we create strings to use smaller storage strategies
MasterDuke otherwise you'd have to be using native strs to get a benefit from other optimization
lizmat timotimo: there are several places in the core where natives are *not* used because of vague issues 15:53
I seem to recall natives in roles not optimizing
timotimo i was refering exclusively to moarvm code with that
because the only influence HLL code can have on the internal storage is to flatten out strands 15:54
like we do for regex matching
travis-ci Rakudo build failed. Nick Logan 'Remove unused attributes' 15:55
travis-ci.org/rakudo/rakudo/builds/278964569 github.com/rakudo/rakudo/compare/c...f05e3f1e6e
buggable [travis build above] ā˜  All failures are due to: failed make test (1 failure). Across all jobs, only t/01-sanity/99-test-basic.t test file failed.
gfldex while trying to teach JSON::Fast to handle DateTime correctly I stepped on a bit of a problem
m: my $d = now.DateTime; my $d2 = DateTime.new($d.Str); say $d eqv $d2;
camelia False
gfldex m: my $d = DateTime.now; my $d2 = DateTime.new($d.Str); say $d eqv $d2;
camelia False
gfldex that only applies to DateTime objects that are created by using an Instant 15:56
timotimo m: my $d = DateTime.new; my $d2 = DateTime.new($d.Str); say $d; say $d2; say $d.perl; say $d2.perl
camelia Cannot call DateTime.new with no parameters
in block <unit> at <tmp> line 1
timotimo m: my $d = DateTime.now; my $d2 = DateTime.new($d.Str); say $d; say $d2; say $d.perl; say $d2.perl
camelia 2017-09-23T17:56:42.406978+02:00
2017-09-23T17:56:42.406978+02:00
DateTime.new(2017,9,23,17,56,42.4069781303406,:timezone(7200))
DateTime.new(2017,9,23,17,56,42.406978,:timezone(7200))
timotimo ah
it cuts off the accuracy 15:57
gfldex indeed
but the problem may reach deeper
it may very well be that we need ā‰… for DateTime and Instant 15:58
timotimo: I'm confident there will be a PR for JSON::Fast today that got a working solution. 15:59
timotimo cool :)
if you'd like i'll make you contributor
Geth rakudo/nom: 0b15f6728a | (Zoffix Znet)++ | src/core/Main.pm
Implement $*USAGE

  - Provides default USAGE message the program would generate
  - Available as dynvar $*USAGE inside MAIN and USAGE subs; USAGE sub
   can use it as a base to generate custom usage, for example.
  - Speculation describes $?USAGE, but we renamed[^1] it since at compile
   time we don't know if we'll ever need it
  - Die if user attempts to assign into it
  [1] irclog.perlgeek.de/perl6-dev/2017-...i_15206569
16:01
roast: 04b03b1d40 | (Zoffix Znet)++ | S06-other/main-usage.t
Spec $*USAGE

Rakudo impl: github.com/rakudo/rakudo/commit/0b15f6728a
16:02
specs: aec781246c | (Zoffix Znet)++ | 2 files
Add notes $?USAGE was renamed to $*USAGE

Rakudo impl: github.com/rakudo/rakudo/commit/0b15f6728a Spec: github.com/perl6/roast/commit/04b03b1d40 Docs: github.com/perl6/doc/commit/9849f0945f
16:03
timotimo does another callgrind to compare 16:16
dangit, it'll take like 45 minutes or something >_< 16:17
14th place for MVM_string_equal (though it for some reason also has the 15th place) with my opt in place 16:18
and adding the two numbers up it arrives at 4th place 16:19
it's done! 16:52
there's almost no difference :\ 16:53
dogbert11 oh no
timotimo like 7 million fewer instructions 16:54
but MVM_string_equal in total is responsible for about 6000 million instructions
it's still a mystery why string comparison went up by so much 17:10
travis-ci Rakudo build passed. Zoffix Znet 'Implement $*USAGE 17:24
travis-ci.org/rakudo/rakudo/builds/278978602 github.com/rakudo/rakudo/compare/2...15f6728a4a
dogbert11 timotimo: I might be misinterpreting what kcachegrind tells me but a lot of calls seems to come from MVM_frame_find_lexical_by_name 17:34
timotimo oh? interesting. 17:37
i thought about that, too, but i didn't find many corresponding calls in the spesh 17:38
could be wrong of course
dogbert11 as could I :)
timotimo and i don't find the string equals in there. prehaps it's in the HASH_GET
it's almost 99% $?CLASS 17:40
dogbert11 HASH_GET sounds familiar
timotimo perhaps something broke the spesh opt that can specialize on $?CLASS cleverly
dogbert11 somthing called MVM_HASH_GET, is that the same?
gfldex m: say DateTime.now.posix, Date.today.posix; 17:42
camelia No such method 'posix' for invocant of type 'Date'
in block <unit> at <tmp> line 1
dogbert11 how do you figure out if that opt is broken? 17:44
cognominal jnthn++ # guts 18:38
yoleaux AlexDaniel: teach bisectable to bisect moar, you idiot. 18:49
AelxDnaiel :|
cognominal the rise of the bots ? 18:52
Zoffix ZofBot: I'll be spared, though, right? 20:14
ZofBot Zoffix, jnthn: while siegeing the golfed httpd I got "MoarVM oops: Return label is NULL!"