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:05 linkable6 joined 00:06 reportable6 left 02:14 greppable6 left, committable6 left, releasable6 left, notable6 left, sourceable6 left, evalable6 left, squashable6 left, coverable6 left, statisfiable6 left, bisectable6 left, benchable6 left, nativecallable6 left, shareable6 left, unicodable6 left, linkable6 left, quotable6 left, tellable6 left, bloatable6 left 02:15 greppable6 joined, shareable6 joined, coverable6 joined 02:16 nativecallable6 joined, bisectable6 joined, evalable6 joined 02:17 benchable6 joined, bloatable6 joined, tellable6 joined 03:11 discord-raku-bot left, discord-raku-bot joined 03:15 releasable6 joined, committable6 joined 03:17 notable6 joined 04:17 evalable6 left, unicodable6 joined 04:32 Techcable joined 05:08 reportable6 joined 05:17 statisfiable6 joined 05:18 evalable6 joined 05:25 frost joined 05:45 frost left 05:56 frost joined 06:07 reportable6 left 06:15 quotable6 joined 06:16 sourceable6 joined, squashable6 joined 07:10 reportable6 joined 07:16 linkable6 joined 08:29 evalable6 left 09:04 squashable6 left
nine Ah, yes, we really should re-use those deprecated ops much more agressively 09:14
09:30 evalable6 joined
nine Nice: though there are tons of failures in the current Blin run, none of them seem to be caused by my changes 09:38
Nicholas I'm inferring that installed systems (mostly) have to rebuild installed bytecode on new releases of the setting, 09:46
meaning that we don't actually have to run older bytecode on new MoarVM *that* often
meanign that it doesn't matter *as much* that it's efficient. Only that it works. 09:47
that we might be able to completely re-number the opcodes
(and know how to load and re-map older bytecode in the validator)
but then I thought "worry about this when extops die"
MasterDuke Nicholas: did you see my comment on 'mimalloc' vs 'use_mimalloc' on github.com/MoarVM/MoarVM/pull/1638 ? i think that's the reason for the ci fails 09:50
Nicholas yes. incoming. 09:52
but the comment on it will not be incoming for a bit
(thanks for the diagnosis)
MasterDuke i also have a wip patch (against master) to convert MVM_recalloc to take a new count + new size (like calloc does) instead of old total size + new total size so we can use mi_recalloc 09:53
oh, and do you think you could add `ignore = untracked` to the .gitmodule entry? 09:55
Nicholas ah OK. But not right now as I'm building something else 09:56
and "need" coffee
MasterDuke no worries, just got a second cup a couple min ago myself 09:57
10:28 frost left
MasterDuke committable6: 25ca206~1,25ca206 say List({:1a, :2b})Ā Ā  # this is what broke Crane 10:28
committable6 MasterDuke, Ā¦25ca206~1: Ā«({a => 1, b => 2})ā¤Ā» Ā¦25ca206: Ā«(b => 2 a => 1)ā¤Ā»
MasterDuke is this a bug in coercion/dispatch, or expected behavior? if the latter, then we'll have to revert 25ca206 (i.e., add back those CALL-MEs i removed) 10:31
jnthnwrthngtn, vrurg: ^^^
10:58 dogbert11 left 11:05 squashable6 joined 11:06 dogbert17 joined 11:53 linkable6 left 11:54 linkable6 joined 12:06 reportable6 left
Geth MoarVM/fix_unsigned_for_merge: 6 commits pushed by (Stefan Seifert)++ 12:30
MoarVM: niner++ created pull request #1639:
More preparations for fixing unsigned handling
12:37
nine With those out of the way, the remaining core of interdependent changes looks somewhat manageable :) 12:55
lizmat let's merge! :-) 13:02
bartolin nine: I didn't really follow your work on fixing/improving handling of unsigned ints. Am I right in assuming that the other backends would need to support the new ops as well? 13:03
(or should I raise that question in one of the PR or over at #raku-dev?) 13:07
13:09 reportable6 joined 13:10 linkable6 left
lizmat bartolin: looks to me raising it in the PR would be the best chance of it not falling through the cracks :-) 13:13
bartolin will do 13:17
nine Yes, they will 13:23
bartolin ah, I just asked in github.com/Raku/nqp/pull/756 13:24
lizmat sanity check: can MoarVM be considered a registered based VM ? 14:20
nine Register based VM? Yes, absolutely
lizmat oki, thanks! 14:26
MasterDuke lizmat: been reading news.ycombinator.com/item?id=29850562 ? 14:47
15:13 linkable6 joined
MasterDuke m: my $v = 3; my $sign = $v +> 31 ?? -1 !! 1; say $signĀ Ā Ā  # this is less than ideal 15:22
camelia (signal SEGV)
Nicholas ==22075==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000010 (pc 0x7f322e7be1f2 bp 0x7ffeba1d2800 sp 0x7ffeba1d27f0 T0) #0 0x7f322e7be1f1 in at_key src/6model/reprs/P6opaque.c:1469 16:10
lizmat MasterDuke: no, actually it was twitter.com/chrisgardenuk/status/1...0109725697 16:13
16:47 linkable6 left, evalable6 left 16:49 evalable6 joined 16:50 linkable6 joined 17:07 sena_kun left 17:08 sena_kun joined
dogbert17 bisect: my $v = 3; my $sign = $v +> 31 ?? -1 !! 1 18:06
bisectable6 dogbert17, Will bisect the whole range automagically because no endpoints were provided, hang tight
dogbert17, Output on all releases: gist.github.com/9f32a8d5d9273967bb...f98b9c296c
dogbert17, Bisecting by exit signal (old=2021.12 new=21d988d). Old exit signal: 0 (None)
dogbert17, bisect log: gist.github.com/31e0f21d74489a410d...5f4c6e3909
dogbert17, (2021-12-16) github.com/rakudo/rakudo/commit/71...7d13855ce1
dogbert17, Output on all releases and bisected commits: gist.github.com/c861c8877f1e7a9b61...0a7d850c9f
18:09 reportable6 left 18:56 patrickb joined
vrurg MasterDuke: It is expected. You coerce a hash into a List. 19:44
m: say {:1a, :2b}.List
camelia (a => 1 b => 2)
vrurg m: say List.new({:1a, :2b}) 19:45
camelia ({a => 1, b => 2})
Geth MoarVM: nwc10++ created pull request #1640:
Support using C11 atomics as an alternative libatomic_ops
19:49
Nicholas Geth: technically that was a *draft* PR 19:53
MasterDuke vrurg: ok, guess we need to revert github.com/rakudo/rakudo/pull/4701 then 19:56
so that segfault i demoed and dogbert17 bisected points to new code i added. however, i'm not yet 100% sure that code is entirely at fault. i don't think it should segfault, even if it does end up happening to be wrong 20:00
it dies here github.com/MoarVM/MoarVM/blob/mast...ue.c#L1469 because del is 0x0 20:03
however, repr_data->ass_del_slot is 0 and repr_data->attribute_offsets[repr_data->ass_del_slot] is 8, which seem like plausible values 20:04
20:10 reportable6 joined
nine MasterDuke: your code cannot be at fault. Nothing Rakudo does may lead to a segfault in the VM. Except via NativeCall of course. 20:18
MasterDuke yeah, the segfault definitely shouldn't happen. i was looking to see if i was also doing something incorrect 20:19
fwiw, no change with MVM_SPESH_DISABLE
if i change the code to do an nqp::existskey first that still dies. something's wrong with what it gets from `.prec` 20:37
vrurg MasterDuke: I don't see why removal of CALL-ME is a wrong move? It was a workaround for incorrectly working coercions which is not the matter anymore. 20:43
MasterDuke because i breaks the ecosystem
*it breaks
vrurg Perhaps it's the modules who got it wrong? 20:44
MasterDuke github.com/rakudo/rakudo/issues/4705 crane, first one on the list 20:45
vrurg Let's not shoot from the hip. For example, the fact that Chronic expects `1 ~~ all(1,2,3)` to be true doesn't mean I'd revert the fixes for smartmatching. :)
Let me get over those which point at my commits. Then I hope to have time for Crane. 20:46
MasterDuke vrurg++
vrurg BTW, what exact type does it fail with? Did you manage to find this out? 20:47
MasterDuke what do you mean type? what i showed is pretty much a golf of one of its fails 20:48
it's creating Lists 20:49
vrurg Ah, I see. Then it is certainly bad reason to revert. If it needs a list with a hash element, the approach is the same, as for everything else: containerize, or itemize with extra comma. 20:52
m: say List({:1a, :2b},)
camelia (a => 1 b => 2)
vrurg m: say List(({:1a, :2b},))
camelia ({a => 1, b => 2}) 20:53
MasterDuke yeah, but it used to work that way for 6 years, i doubt that's the only code relying on the behavior
vrurg Ah, containerization wouldn't work. Anyway. 20:54
This is a bad reason to preserve a bug, in my eyes.
MasterDuke i'm not disagreeing that it's "wrong", but i'm not sure we can just change that behavior
vrurg Let's see how it goes. But as long as it's just a couple of modules, it should be manageable, I hope. 20:56
MasterDuke backing up to the segfault, looks like what `.prec` is returning is concrete, but nqp::existskey and nqp::atkey segfault if given it 20:57
21:00 patrickb left 21:20 japhb left 21:36 japhb joined
vrurg BTW, is there a way in new-disp to program two chained method calls? In my spare time I'm playing with expressing smartmatch via new-disp and can't see if .ACCEPTS.Bool can be done without introducing an extra block/frame around them. 21:37
22:04 [Coke] left 22:07 [Coke] joined
MasterDuke huh. why is REPR(obj)->name = "P6opaque"? shouldn't it be MVMHash (or BOOTHash)? 22:10
22:12 [Coke] left, [Coke] joined
MasterDuke yeah, so it's usually a VMHash. that's the current problem. now to figure why is it a P6opaque instead? 22:18
japhb thinks that would depend on whether you're looking at a Rakudo Hash or its $!storage 22:20
22:27 [Coke] left
MasterDuke oh interesting. if i do indeed replace $obj.prec<iffy> with `my $prec := $obj.prec; nqp::atkey(nqp::getattr($prec,Map,'$!storage'),'iffy')` then there's no segfault 22:30
but `$obj.prec<iffy>` should still not cause a segfault 22:32
22:40 [Coke] joined
japhb Agreed, definitely 22:56
23:40 evalable6 left, linkable6 left 23:42 evalable6 joined, linkable6 joined 23:48 Kaiepi left