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
|