Welcome to the main channel on the development of MoarVM, a virtual machine for NQP and Rakudo (moarvm.org). This channel is being logged for historical purposes.
Set by lizmat on 24 May 2021.
00:02 reportable6 left 00:03 reportable6 joined
japhb jnthnwrthngtn++ # Awesome progress! :-) 00:20
01:03 evalable6 left, linkable6 left 01:05 evalable6 joined 01:06 linkable6 joined
MasterDuke is there an easy way to negate the return value of a function call in the lego jit? 01:23
e.g., isfalse_s is just sugar for !istrue_s 01:24
neither of which are currently jitted
(they have templates, but not a lego jit implementation) 01:25
05:11 quotable6 left, benchable6 left, linkable6 left, releasable6 left, reportable6 left, bisectable6 left, coverable6 left, evalable6 left, statisfiable6 left, greppable6 left, sourceable6 left, committable6 left, bloatable6 left, shareable6 left, tellable6 left, nativecallable6 left, squashable6 left, unicodable6 left, notable6 left, shareable6 joined, sourceable6 joined, tellable6 joined 05:12 notable6 joined, squashable6 joined, statisfiable6 joined, reportable6 joined, coverable6 joined, benchable6 joined, greppable6 joined, bloatable6 joined, evalable6 joined 05:13 nativecallable6 joined, releasable6 joined, linkable6 joined 05:14 committable6 joined, bisectable6 joined, quotable6 joined, unicodable6 joined 06:02 reportable6 left 06:03 reportable6 joined
timo depends on what course of correction i will take 06:06
like, do we want something that is aware of what SF's we're currently looking into and preventing only the inlining of calls into SFs we've already seen once? do we want a simple recursion depth counter for inlining optimization in general? do we want a count of how much we've been going into recursions so far and prevent anything further so that no pathological situations can occur when optimizing 06:16
a single frame takes seconds because it keeps looking into other inlining options?
07:03 evalable6 left, linkable6 left 07:04 linkable6 joined, evalable6 joined 07:10 patrickb joined 08:06 Kaiepi left 08:11 Kaiepi joined 08:51 patrickb left
Nicholas .tell brrt Good *, brrt. colabti.org/irclogger/irclogger_lo...1-07-14#l8 08:56
tellable6 Nicholas, I'll pass your message to brrt
jnthnwrthngtn moarning o/ 09:37
Nicholas \o 09:38
09:51 evalable6 left, linkable6 left 09:52 evalable6 joined 09:54 linkable6 joined 11:02 linkable6 left, evalable6 left 11:05 linkable6 joined, evalable6 joined 11:23 MasterDuke left
jnthnwrthngtn Good news: did a fix that makes all the NativeCall tests pass on new-disp. Bad news: ran spectests and 120 new failures. What on earth have I done... 11:36
Nicholas failed to eat lunch? 11:39
jnthnwrthngtn It ran while I was eating lunch
First world problems, but my office machine, while being pretty darn fast, is not as fast my home dev box, which is newer and so faster. 11:46
I could swap them around, but I have no idea whether the near future will see more home working or less. 11:47
Nicholas but if you did that, you'd have a better dev box *and* a better coffee machine in the same place? Wouldn't that upset some balance?
Is the pub next to the office still allowed to be open?
jnthnwrthngtn Yes, but we're not allowed to go to it unless we do at least a self-test + sworn declaration. 11:48
(Because they tightened up the rules from "3 weeks after first dose" to "2 weeks after second dose" last week) 11:49
Nicholas but 2 weeks after second dose, and (for the current rules) you'd be allowed in with just the proof of second dose?
(and we obviously don't know if the rules will change again by that time)
jnthnwrthngtn Yes 11:50
Well, and they don't actually require staff to check at restaurants, there's just spot checks by inspectors (which I've never seen happen, although I've not really been out enough to make it terribly likely anyway, even when I was in the 2-week window when I could) 11:51
Ah, seems the regression was indeed an "I need lunch" kind of one. I forgot to account for capture parameters, which also allow all nameds. 11:56
Also, the passing nativecall ones means I'm down to just one screen of `make test` failure output (8 tests, though 1 seems flappy) 12:01
12:03 reportable6 left 12:04 reportable6 joined
jnthnwrthngtn Yay, 1202 fully passing spectests with that. 12:09
dogbert17 how many left, 250? 12:10
jnthnwrthngtn I don't know how many there currently are without checkout out `master` and running it and seeing the number at the end
If anybody has it handy I'd be curious :)
dogbert17 on my system it's 1405 excluding the perl 5 tests which I don't run 12:12
jnthnwrthngtn m: say 1405 - 1202 12:22
camelia 203
jnthnwrthngtn m: say 1202 / 1405
camelia 0.855516
jnthnwrthngtn Not bad
Pretty sure my next task should be to port the regex compiler 12:25
(To emit dispatch ops)
Since the next problem I'm looking at appears to be because I didn't do that
I really wish people would just cope with long files rather than splitting stuff out in ways that mean I can't just open src/core.c/ClassName.pm6 and find what I'm looking for... 12:27
dogbert17 has someone managed to hide the regex compiler :) 12:33
jnthnwrthngtn No, just INTERPOLATE :) 12:34
Though the regex compiler is also a tad harder to refactor than first hoped
12:34 MasterDuke joined
Nicholas jnthnwrthngtn: Stage start : 0.002 12:40
No MoarVM syscall with name 'capture-names-list' at gen/moar/BOOTSTRAP/v6c.nqp:5228 (/home/nick/Perl/rakudo/blib/Perl6/BOOTSTRAP/v6c.moarvm:has-named-args-mismatch)
did you forget to push something?
Geth MoarVM/new-disp: 576d50b041 | (Jonathan Worthington)++ | 3 files
Add capture-names-list syscall

To get an array of the names of the named arguments being passed by the capture.
12:41
jnthnwrthngtn Yes, sorry.
MasterDuke seems like negating a function call via the jit isn't possible. think i'd need to add a `flip` argument to MVM_coerce_istrue_s 13:02
jnthnwrthngtn MasterDuke: That's getting deleted in new-disp, fwiw 13:09
Or at least, the boolification stuff in there is
MasterDuke ah, good to know. i'll put a pause on this until after new-disp lands 13:10
jnthnwrthngtn smart stringify and friends also 13:11
MasterDuke it'll be nice to have all that stuff simplified 13:12
jnthnwrthngtn They all become dispatchers, pretty much 13:13
14:02 frost left
[Coke] (cope with long files) - was part of that performance, in which case we can recombine once you make everything faster? :) 14:04
Geth MoarVM/hash-fsck-fixes: 736154d29d | (Nicholas Clark)++ | 3 files
Fix some bugs in the various hash_fsck functions.

They were still assuming that the metadata sentinel byte needed to be 1, and reporting an error if it was not. This should have been changed as part of commit b432533e90f175a7 in Oct 2020:
   The hash metadata sentinel byte can be 0 - it does not need to be 1.
... (5 more lines)
14:08
MoarVM: nwc10++ created pull request #1513:
Fix some bugs in the various hash_fsck functions.
14:09
MoarVM: 736154d29d | (Nicholas Clark)++ | 3 files
Fix some bugs in the various hash_fsck functions.

They were still assuming that the metadata sentinel byte needed to be 1, and reporting an error if it was not. This should have been changed as part of commit b432533e90f175a7 in Oct 2020:
   The hash metadata sentinel byte can be 0 - it does not need to be 1.
... (5 more lines)
14:41
jnthnwrthngtn Uff, this'll be "fun". I switched the regex compiler fully over to emitting disaptch ops instead of findmeth/invoke sequences. It compiles NQP well enough that it compiles the NQP parts of Rakudo (and such that all NQP tests pass). It then does a misparse somewhere in CORE.setting. 14:54
Error while compiling, type X::Comp::AdHoc 14:55
payload: Missing required term after infix
at line 2, near " :\n"
...I don't believe that line number at all
nine I always treat line numbers with a healthy dose of scepticism ;) 15:01
jnthnwrthngtn Yeah, it was waaay off. The correct one is 319 and it happens when we see an operator adverb :) 15:05
This...doesn't tell me a lot.
dogbert17 enocoffee perhaps 15:08
Nicholas I was going to suggest tea
dogbert17 E_NO_T :) 15:09
jnthnwrthngtn Of all things, why does it have to be operator adverbs...now I have to remember a bit about how those a parsed. 15:13
timo oof, i remember something about putting multiple adverbs in a row, but i think that was just™ for lists of pairs 15:14
jnthnwrthngtn Well, it's more the way they are parsed as infixes but then marked as fake and the expression parser is like "oh, let's pretend we never saw an infix!" 15:19
Of all the things I can guess might be wrong, they all feel too unlikely to really be the issue though
timo well, great that the nqp regex test suite doesn't catch this i guess?!? :( 15:22
though involving invocations it's possibly more about the methods that set stuff on cursors and such
jnthnwrthngtn Well, <fake_infix> is parsed and passes, but then fake is never seen in HLL EXPR 15:25
Oh. It's already gone missing right after we call that 15:26
timo something something pass by reference vs value vs container vs something or other
jnthnwrthngtn Well, current suspicion falls on flattening 15:27
timo surely nothing related to return values
jnthnwrthngtn <O(|%item_assignment, :assoc<unary>, :fake<1>, :dba<adverb>)>
timo ah, well, i'm sure you're already on top of the issue
jnthnwrthngtn yup, if I change it to this: 15:29
<O(:prec<i=>, :assoc<right>, :assoc<unary>, :fake<1>, :dba<adverb>)>
Then it shows up
Wonder what I've managed to do... 15:30
meh, that was silly... 15:34
Goodness, this is super glacial now that we no longer get spesh of rules 15:40
MasterDuke how easy is it going to be to spesh these new dispatchers and such? 15:44
15:45 linkable6 left, evalable6 left
jnthnwrthngtn Relatively straightforward for those that don't do resumption 15:46
Nicholas I'm sure that this is the wrong order, but will your dev time improve if you speshed some of this before finishing the rest?
jnthnwrthngtn This is quite possible. :) 15:47
15:47 linkable6 joined
Geth MoarVM/new-disp: af3a8b1616 | (Jonathan Worthington)++ | src/core/args.c
Fix a thinko in args flattening

If we install a named arg's value into an earlier slot because it overrides a value we flattned in, we still need to progress through the list of original named arguments.
15:48
15:48 evalable6 joined
jnthnwrthngtn Hmm, that almost gets the tests that interpolate stuff into regexes working, except apparently it's not happy about multi-dispatch with natives somehow 15:55
nine timo: have you done some work on the spesh recursive inline issue yet? 16:05
jnthnwrthngtn And now it is. Down to 6 failing files in `make test` 16:36
[Coke] wow 16:44
timo sorry, i still haven't decided how to actually fix it 16:50
[Coke] jnthnwrthngtn: is it worth switching "Raku" to 'Raku' in that last commit? 17:15
In normal code I wouldn't bother, but maybe it might make a difference in the compiler?
jnthnwrthngtn [Coke]: Hm, single quoted string instead of double quoted? The compiler produces ths same code if it's a literal value. 17:19
17:19 evalable6 left, linkable6 left
jnthnwrthngtn It is a bit of a mix and match in there though. In my slight defence, that error code was copy-paste-tweak from BOOTSTRAP :) 17:19
Current spectest status: 1272 passing 17:20
17:20 linkable6 joined
jnthnwrthngtn m: say "$(1272 - 1197) new today" 17:20
camelia 75 new today
jnthnwrthngtn m: say 1272 / 1405 17:21
camelia 0.905338
17:21 evalable6 joined
jnthnwrthngtn I have energy left tonight after dinner, I'll wire up the coercion stuff so Int($blah) works 17:21
That should help unblock some of the further `make test` files, and no doubt more spectests 17:22
*If I have energy...
home & 17:23
17:33 [Coke] left 17:39 [Coke] joined 18:02 reportable6 left, Kaiepi left 18:03 Kaiepi joined 18:05 reportable6 joined 18:06 Kaiepi left, Kaiepi joined 20:07 dogbert17 left 20:19 Kaiepi left, Kaiepi joined
jnthnwrthngtn Did and pushed the coercion type support. Down to 5 failing tests in `make test` (one of them moved on to a different failure mode), and 1281 passing spectests. 23:13
23:47 linkable6 left, evalable6 left, linkable6 joined 23:50 evalable6 joined
timo looks shiny in any case :) 23:56