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:05 Xliff left, reportable6 joined 01:05 coverable6 left, reportable6 left, notable6 left, evalable6 left, linkable6 left, sourceable6 left, tellable6 left, benchable6 left, squashable6 left, quotable6 left, unicodable6 left, bloatable6 left, statisfiable6 left, shareable6 left, committable6 left, releasable6 left, nativecallable6 left, bisectable6 left, greppable6 left 01:06 coverable6 joined, shareable6 joined, reportable6 joined 01:07 nativecallable6 joined 01:08 tellable6 joined, greppable6 joined 01:32 frost joined 02:01 nine left, nine joined 02:06 releasable6 joined, bisectable6 joined, sourceable6 joined 02:07 statisfiable6 joined, evalable6 joined, unicodable6 joined, committable6 joined, benchable6 joined 02:08 linkable6 joined 03:06 bloatable6 joined 03:07 notable6 joined 03:08 quotable6 joined 04:06 [Coke] left, [Coke] joined, squashable6 joined 04:19 ugexe left, samcv left, ugexe joined 04:20 samcv joined
Nicholas good *, #moarvm 06:00
06:02 reportable6 left 06:05 reportable6 joined
Nicholas jnthnwrthngtn: gcc.gnu.org/gcc-11/changes.html -- Several new features from the upcoming C2X revision of the ISO C standard are supported [...] Labels may appear before declarations and at the end of a compound statement. 07:31
finally...
08:20 squashable6 left 08:22 squashable6 joined 08:45 squashable6 left
jnthnwrthngtn moarning o/ 09:40
Nicholas: Now we just have to wait another decade for it to be widespread enough to use... :/ Or maybe make babel, but for C :D 09:41
Nicholas \o 09:42
09:48 squashable6 joined 10:48 evalable6 left, linkable6 left 10:49 linkable6 joined 10:56 sena_kun joined
dogbert11 anything interesting going on here today? 11:24
lizmat my @a = ^1000; for ^10000 { @a[$_] for ^1000 }; say now - INIT now 11:29
m: my @a = ^1000; for ^10000 { @a[$_] for ^1000 }; say now - INIT now
camelia 0.372348021
lizmat m: my @a = ^1000; for ^10000 { @a.AT-POS($_) for ^1000 }; say now - INIT now
camelia 0.34283105
lizmat I sorta expected there to be no noticeable difference between the two 11:31
and yet another Rakudo Weekly News hits the Net: rakudoweekly.blog/2021/09/13/2021-37-receding/ 11:35
jnthnwrthngtn m: say 0.372 / 0.342 11:42
camelia 1.087719
jnthnwrthngtn It's not that significant, given there's a (mostly optimized away) extra multiple dispatch in there 11:43
To see how well the optimizer is doing at reducing that cost, try timing them with MVM_SPESH_DISABLE=1; I'd imagine the relative difference will be larger. 11:44
11:56 linkable6 left 11:58 linkable6 joined 12:04 reportable6 left
sena_kun huh, there is a race (?) in Concurrent::Stack it seems. 12:16
❌ TST: No exception handler located for catch
❌ TST: from t/stress.t:15 (<ephemeral file>:)
not sure how reproducible this is
13:07 reportable6 joined
dogbert11 No exception handler located for catch 14:17
at SETTING::src/core.c/Exception.pm6:62 (/home/dogbert/.rakudobrew/versions/moar-master/install/share/perl6/runtime/CORE.c.setting.moarvm:throw)
from SETTING::src/core.c/Failure.pm6:63 (/home/dogbert/.rakudobrew/versions/moar-master/install/share/perl6/runtime/CORE.c.setting.moarvm:throw)
from SETTING::src/core.c/Failure.pm6:93 (/home/dogbert/.rakudobrew/versions/moar-master/install/share/perl6/runtime/CORE.c.setting.moarvm:Int)
from SETTING::src/core.c/atomicops.pm6:154 (/home/dogbert/.rakudobrew/versions/moar-master/install/share/perl6/runtime/CORE.c.setting.moarvm:infix:<⚛+=>)
14:19 leont left, leont joined
sena_kun it's reproducible then, I guess 14:19
jnthnwrthngtn dogbert11: Can you run it with --ll-exception? 14:20
dogbert11 jnthnwrthngtn: sure, gimme a sec
sena_kun: yes 14:22
jnthnwrthngtn I guess that means also a regression, maybe thanks to one of the recent changes
dogbert11 gist.github.com/dogbert17/136be8a8...9a0396de18 14:23
let me know if you want something more done 14:24
jnthnwrthngtn MVM_SPESH_DISABLE and MVM_JIT_DISABLE too 14:25
dogbert11 ok ...
jnthnwrthngtn There's not that many commits sicne the last blin run though so can also bisect it between MoarVM HEAD and the bump before last 14:26
dogbert11 while MVM_SPESH_DISABLE=1 MVM_JIT_DISABLE=1 perl6 -Ilib --ll-exception t/stress.t; do :; done # this also fails after a number of iterations. Stack trace is the same. 14:27
sena_kun jnthnwrthngtn, it bisects to the last rakudo bump 14:28
jnthnwrthngtn sena_kun: Yes but it's the MoarVM commit that causes it that is of particular interest I think 14:30
Although...wow, if spesh being disabled doesn't affect it, that's...well, we don't really have more commits to look at 14:31
Every single MoarVM change is a spesh/jit one
sena_kun jnthnwrthngtn, well, Blin doesn't bisect moar revisions between bumps.
jnthnwrthngtn sena_kun: I figured; thus why it's worth doing manually on MoarVM commits 14:35
I just fail to see a likely candidate
dogbert11 No exception handler located for catch 14:49
dogbert@dogbert-VirtualBox:~/repos/p6-concurrent-stack$ perl6 -v
Welcome to 𝐑𝐚𝐤𝐮𝐝𝐨™ v2021.08-27-g10b327292.
Implementing the 𝐑𝐚𝐤𝐮™ programming language v6.d.
Built on MoarVM version 2021.08-9-g4b7ffe3af.
so, it's present on master as well
jnthnwrthngtn Oh 14:51
14:53 frost left
dogbert11 it usually take a few iterations for it to fail so blin might have been easily fooled 14:53
jnthnwrthngtn: I have a new-disp bug if you're interested 14:57
try this if you're bored :) # while MVM_SPESH_NODELAY=1 ./rakudo-m -e 'sleep 1; sub f($str) { my $num = +$str; }; f "3.0/2"'; do :; done 14:58
dogbert11 goes for an afternoon walk 14:59
15:10 linkable6 left
[Coke] build failure on windows for new-disp 15:25
gist.github.com/coke/f17a5e56c0c36...7b81d82a53
github.com/MoarVM/MoarVM/blob/new-...xpr.c#L705 15:26
Dynamic array sizign.
jnthnwrthngtn Huh, and MSVC doesn't support that? 15:27
That's crap. 15:28
It's only been in the C standard for 22 darn years.
Wonder if it supports alloca
[Coke] I am using VS 2017. Maybe I need to update 15:30
jnthnwrthngtn I can't remember what we actually support. 15:33
I thought "something that does C99", but it might be "something that does more of C99 than MSVC used to"
timo i do believe it supports alloca
jnthnwrthngtn Ah, they don't plan to ever support VLAs, it seems... devblogs.microsoft.com/cppblog/c11...g-in-msvc/ 15:35
timo vla is kind of tasty 15:37
16:11 linkable6 joined 17:27 sena_kun left 18:02 reportable6 left 18:26 kjp left 18:28 kjp joined 18:51 evalable6 joined 19:05 reportable6 joined
dogbert11 I went back to moar-2019.11 and the problem exposed by Concurrent::Stack is present there as well 19:26
20:03 squashable6 left 21:03 reportable6 left, statisfiable6 left, linkable6 left, sourceable6 left, committable6 left, evalable6 left, bisectable6 left, nativecallable6 left, unicodable6 left, benchable6 left, shareable6 left, greppable6 left, notable6 left, quotable6 left, bloatable6 left, releasable6 left, tellable6 left, coverable6 left, releasable6 joined 21:04 sourceable6 joined, linkable6 joined, benchable6 joined, coverable6 joined 21:05 squashable6 joined, quotable6 joined 21:06 evalable6 joined, nativecallable6 joined
jnthnwrthngtn dogbert11: Wow, so not a new-disp regression after all. Thanks for checking. 21:31
22:03 unicodable6 joined 22:04 tellable6 joined 22:05 greppable6 joined, notable6 joined 22:06 shareable6 joined, bloatable6 joined 22:11 Xliff joined 22:31 Mutter joined
Mutter timo: btw, while the directives dyn variable is never explicitly set, another variable is bound to it and then pushed to, that’s how it gets populated 22:32
timo can you point me to where that happens? my searching has turned up nothing 22:40
Mutter github.com/Raku/nqp/blob/9858768b7...d.nqp#L194
timo 760: my @clds := @*comp_line_directives; 22:42
22:42 squashable6 left
timo not this right? 22:42
Mutter That’s it
timo ok interesting, where is the dynamic variable ever declared though?
Mutter Dunno/don’t remember 22:43
22:44 squashable6 joined
Mutter Obviously the overall mechanism works somehow, but like I (MasterDuke) said before, it was implemented a long time ago, so it may be ripe for improvement 22:44
timo are these directives the things that give us the #?line 0 blah.nqp feature? 22:45
Mutter Yeah
And so you can give a name/label to EVALs 22:46
I though I don’t remember if it’s actually specced or not 22:51
timo i think its not a language feature 22:52
Mutter Does your commit break either of those? 22:58
timo IMPOSSIBLE 22:59
it actually gets entries
uiaedturianedutrinaedtruinaetdruinaetdruinaetdruniae
i do not understand. 23:02
Mutter ? 23:03
23:04 bisectable6 joined 23:05 committable6 joined, statisfiable6 joined
timo without a declaration, how are we finding a dynamic variable of that name? 23:06
Mutter Magic I guess? 23:07
No declaration needed in NQP?
timo if you dont declare something you get nqpnull, but this is @ sigiled so i think it gives you an array anyway 23:08
like can you find any mention of comp line directives that is preceded by a my that declares it? im losing my mind here?!? 23:09
nqp: say(nqp::isnull($*blah))
camelia 0
timo nqp: say(($*blah)) 23:10
camelia
timo how do we check in nqp if a dynamic variable lookup failed?
Mutter isconcrete?
timo nqp: sub a() { nqp::push(@*a, 1); say(nqp::elems(@*a)) ; a; a; a;a; a; a; 23:12
camelia Unable to parse expression in blockoid; couldn't find final '}' at line 2, near ""
at gen/moar/stage2/NQPHLL.nqp:1053 (/home/camelia/rakudo-m-inst-1/share/nqp/lib/NQPHLL.moarvm:panic)
from gen/moar/stage2/NQPHLL.nqp:1073 (/home/camelia/rakudo-m-inst-1…
timo nqp: sub a() { nqp::push(@*a, 1); say(nqp::elems(@*a)) }; a; a; a;a; a; a;
camelia ( no output )
timo hum?
nqp: say(nqp::isconcrete($*blah)) 23:13
camelia 0
timo nqp: say(nqp::isconcrete(@*blah))
camelia 1
Mutter Ah ha
timo so this shows we get a list allocated for us when the lookup fails
but it would have to be the same list eaäch time for the behaviour im seeing 23:14
nqp: sub a() { say(nqp::objectid(@*a)) }; a; a; a;a; a; a; 23:15
camelia ( no output )
timo so what am i doing wrong here
Mutter Are parens required? 23:16
timo nqp: sub a() { say(nqp::objectid(@*a)) }; a(); a(); a();a(); a(); a();
camelia 22665816
22665816
22665816
22665816
22665816
22665816
timo apparently
well this is frickin weird 23:17
nqp: sub a() { say(nqp::objectid(@*a)); say(nqp::objectid(@*a)); }; a(); a(); a();a(); a(); a();
camelia 21513000
21513000
21513000
21513000
21513000
21513000
21513000
21513000
21513000
21513000
21513000
21513000
timo but where does it go tho
Mutter That great big dyn array in the sky? 23:18
timo nqp: sub a() { say(nqp::objectid(@*a)); }; sub m() { say(nqp::objectid(@*a)); }; a(); a(); m();m(); a(); m(); 23:19
camelia 35862472
35862472
35862472
35862472
35862472
35862472
timo nqp: sub a() { say(nqp::objectid(@*a)); }; sub m() { say(nqp::objectid(@*a)); }; sub x() { a(); m(); }; a(); a(); x(); m();m(); a(); m(); 23:21
camelia 17618104
17618104
17618104
17618104
17618104
17618104
17618104
17618104
timo does that mean that line directives leak between evals as well? 23:26
im practicing with my new keyboard and its slow and frustrating so i dont really want to write a lot of code to test this hypothesis right now
Mutter I’m on my phone, so likewise 23:27
timo ha 23:28
23:34 Mutter left