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.
moon-child re warning: apparently it's a gcc bug 00:21
Nicholas [* GOOD *] 05:49
vrurg m: class C { method foo(--> Nil) { }; method p(&code) { LEAVE self.foo; code() }; method bar { self.p({ return 42 }) }; }; say C.new.bar; 13:15
camelia foo
vrurg Is it by design???? jnthnwrthngtn? 13:16
jnthnwrthngtn vrurg: Probably a case of github.com/rakudo/rakudo/issues/4521 14:17
vrurg It's in the way of my work on fixing CU/require concurrency. 14:19
Though I can rework the problematic code to get the returns out of the protected blocks, but it would likely slightly de-optimize them. Is there a workaround for the bug? 14:21
jnthnwrthngtn Not besides what you suggested, alas 14:23
vrurg Do you at least know if it's in the current codegen code and would be different on RakuAST? I mean, does it make sense for me to try fixing it? 14:25
jnthnwrthngtn I was more planning to re-work how LEAVE time is done generally, but it's an all-the-stack kind of change. I don't think it's a code-gen bug, probably more a MoarVM one, but not sure. 14:26
vrurg Ok, then I better change the CU code. There are only two or three locations left. 14:28
BTW, if there is a better suggestion for Lock::Soft name I'd like to consider it. :) 14:29
One more on this. Lock.protect is not affected. I presume because nqp::unlock doesn't touch the stack. 14:37
jnthnwrthngtn What is Lock::Soft? 15:20
vrurg await-based replacement for Lock. 15:49
Non-blocking.
vrurg is afk for a couple of hours
nine nine@sphinx:~/rakudo (rakuast_wip *)> RAKUDO_RAKUAST=1 ./rakudo-m -Ilib -e 'use Test;' 19:54
nine@sphinx:~/rakudo (rakuast_wip *)>
It compiles!
Nicholas ship it! 19:58
japhb Awesome! nine++ 20:02
MasterDuke nice 20:16
moon-child: interesting, where are you seeing that? 20:24
moon-child MasterDuke: I don't remember; but there was some gcc bug that was causing it to think array bounds were being overrun, that was affecting a lot of projects
MasterDuke src/disp/inline_cache.c:646:19: warning: array subscript ‘MVMDispInlineCacheEntryPolymorphicDispatchFlattening[0]’ is partly outside array bounds of ‘MVMDispInlineCacheEntry[1]’ [-Warray-bounds] 20:26
  646 |         MVMuint32 num_dps = ((MVMDispInlineCacheEntryPolymorphicDispatchFlattening *)entry)->num_dps;
      |                   ^~~~~~~
i've gotten ^^^ for a while now, but some googling did suggest it was a gcc bug. i'd hoped it would disappear with 12, but it hasn't. the other one is new with gcc 12 20:27
MasterDuke lwn.net/Articles/893686/ "Modern Python performance considerations", but might be some stuff of interest for us 20:36