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:06 linkable6 joined 01:04 reportable6 joined 02:04 reportable6 left, linkable6 left, evalable6 left 02:05 linkable6 joined 02:07 reportable6 joined 03:06 evalable6 joined 05:20 nebuchadnezzar joined 06:02 reportable6 left 06:03 reportable6 joined
nine timo: so far I've stayed away from Junctions, so I guess I'd have to catch up a lot to be of help 07:21
Does autothreading of junctions actually involve threads? So far I've not found anything conclusive 07:22
lizmat autothreading of junctions does **not** involve threading afaik 08:18
08:20 linkable6 left, evalable6 left 08:21 linkable6 joined
nine From a bird's eye view, the point of the new-disp architecture is to remove genericness, polymorphism and the like as much as possible by determining the result of the generic mechanism once, remember the result and collecting the set of conditions that must hold for that result to be valid in the future. 09:05
So the next time, we're at the same point, we just have to check those conditions and jump right to the previous conclusion if they still hol.d 09:06
Junction autothreading (as far as I understand it now) on the outset sounds very dispatchy. After all it is about calling routines. I do wonder however what the genericity is that we can remove with the "facts" we gather at runtime? 09:08
In a call like foo($a|$b|$c) we will always have to run foo with $a, $b and $c in turn and collect the results into a new Junction object, won't we? 09:10
lizmat yes 09:16
nine: yes
the only "complication" is that we have the *option* to actually run this in *any* order and over multiple threads 09:17
I'd say we start out without using that option (which is how it works today)
nine Incidentally that is actually where new-disp might be able to help. The whole "does it pay off to actually use multiple threads in this case?" question can only really be answered at runtime. 09:18
lizmat yup
but for this to really work, we need the capability of finding out how much CPU was used from time X to time Y *in the current thread* 09:19
nine Not sure about that. Wallclock time may be just as good or even better. What if the execution is not that CPU intensive, but needs to wait for IO? In that case parallelization is just as important. 09:20
Number of work items and time to finish one of them can be determined at runtime. And at least the number of items can be guarded. 09:21
And presumably the time is strongly correlated with the code we're running. So we can assume it to be constant.
lizmat hmmmm.... 09:22
nine In case a reader is wondering: what's the point of doing the check for how many elements in a dispatch guard instead of some classic autothread handling code? It's the same check isn't it? 09:25
But a dispatcher's result is the code to call. And with dispatchers this code can e.g. be inlined. Which is especially important if the code we're calling is kinda trivial (which it often will be). 09:26
Like `if $a | $b | $c > 3 { ... }` 09:27
lizmat fwiw, it would allow the static optimization of $foo == 1|2|3 to be removed
which would result in faster compilation times
nine Well, that may still have a place 09:28
09:57 linkable6 left 10:59 linkable6 joined 11:16 frost joined 11:22 evalable6 joined 12:02 reportable6 left
timo one important thing about junctions is that currently we have to rely on the binder to fail and then reevaluating to get the details right 12:06
lizmat ahhh.. the PositionalBindFailover stuff ? 12:07
timo not quite
that one is for when we put a seq where a Positional is required and we implicitly listify it for the user
but i have also not looked at how that is handled in new-disp right no 12:08
maybe that one is a lot more common than junction autothreading
12:43 frost left 12:48 squashable6 left 12:51 squashable6 joined 14:05 reportable6 joined 15:05 linkable6 left, evalable6 left, linkable6 joined 15:07 evalable6 joined 15:49 dogbert17 joined
dogbert17 hmm, suddenly I'm unable to build new-disp. Building rakudo ends with a bang. 15:49
Stage start : 0.000
Internal error: inconsistent bind result
at gen/moar/BOOTSTRAP/v6c.nqp:3958 (/home/dogbert/repos/rakudo/blib/Perl6/BOOTSTRAP/v6c.moarvm:)
Geth MoarVM/new-disp: 61b5f03b55 | (Stefan Seifert)++ | src/disp/boot.c
Give lang-hllize dispatcher an optional argument for language name

This makes lang-hllize suitable as a replacement for the nqp::hllizefor op.
nine is covering his tracks...
dogbert17 perhaps I should try again ... 15:51
nine All 3 repos up to date as of...now? 15:53
dogbert17 I thinks so, trying a rebuild now ... 15:55
NQP has been built and installed. 15:56
Using /home/dogbert/repos/rakudo/install/bin/nqp-m (version 2021.07-93-gcb7404823 / MoarVM 2021.07-406-g61b5f03b5).
I hope those are the correct ones
nine looks good 15:57
dogbert17 :( I must be doing something wrong here 16:00
same error
nine I just force-pushed an amended commit in rakudo 16:02
But that probably won't fix your issue
dogbert17 aha 16:07
nine ? 16:08
dogbert17 if I'm the only one having this problem then I guess that I'm doing something wrong
nine Well....it works for me so there's just about 8 billion other people to check before we know you're the only one :D 16:09
dogbert17 I aha'ed your comment 'But that probably won't fix your issue'
but it seems to be working ... it's parsing
+++ Rakudo installed succesfully! nine++ 16:11
nine I don't think my fixed commit really did it. I'd guess it was some build artefact in the way or something like that 16:12
But whatever it was...good that you're up and running again :)
dogbert17 I saw that you were adding stuff some tough testing might be in order :) 16:14
s/some/so some/ 16:15
nine Feel free :) I certainly managed to do many more mistakes than I anticipated.
17:25 squashable6 left 17:39 squashable6 joined 17:56 squashable6 left 17:59 squashable6 joined 18:02 reportable6 left 19:16 evalable6 left, linkable6 left 19:18 linkable6 joined
dogbert17 I don't believe it, I actually found something 20:08
MoarVM oops: MVM_str_hash_entry_size called with a stale hashtable pointer
at gen/moar/Metamodel.nqp:2706 (/home/dogbert/repos/rakudo/blib/Perl6/Metamodel.moarvm:!rebuild_table)
from gen/moar/Metamodel.nqp:2714 (/home/dogbert/repos/rakudo/blib/Perl6/Metamodel.moarvm:concretization_lookup)
was running 'while ./rakudo-m -Ilib t/spec/S17-promise/start.t; do :; done' with new-disp, MVM_GC_DEBUG=1 and a 16k nursery 20:10
the culprit, at least the two times this has happened, is test #50 20:12
lizmat fwiw, that test is a common flapper for me on master
so this may not be related to new-disp
dogbert17 that's interesting
github.com/Raku/roast/blob/master/...art.t#L151 20:15
21:02 linkable6 left 21:04 linkable6 joined 22:25 linkable6 left 22:27 linkable6 joined 23:17 evalable6 joined