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:07 reportable6 left 00:49 [Coke]_ joined 00:52 [Coke] left 00:57 tellable6 joined 00:58 nativecallable6 joined, benchable6 joined 00:59 evalable6 joined 01:07 reportable6 joined 01:18 discord-raku-bot left, discord-raku-bot joined, jnthnwrthngtn left 01:19 jnthnwrthngtn joined 01:23 discord-raku-bot left, discord-raku-bot joined 01:56 shareable6 joined 02:14 discord-raku-bot left, discord-raku-bot joined 03:01 frost joined 03:03 frost left 03:56 statisfiable6 joined 03:57 bloatable6 joined 04:57 linkable6 left, evalable6 left 05:57 bloatable6 left, releasable6 left, notable6 left, coverable6 left, sourceable6 left, benchable6 left, committable6 left, nativecallable6 left, greppable6 left, squashable6 left, bisectable6 left, reportable6 left, tellable6 left, statisfiable6 left, shareable6 left, quotable6 left, unicodable6 left, quotable6 joined 05:58 bloatable6 joined, reportable6 joined, benchable6 joined, tellable6 joined 05:59 evalable6 joined, committable6 joined, bisectable6 joined, squashable6 joined 06:00 unicodable6 joined, statisfiable6 joined 06:07 reportable6 left
Nicholas good *, * 06:55
06:58 nativecallable6 joined 06:59 linkable6 joined, shareable6 joined, notable6 joined, releasable6 joined, sourceable6 joined 07:00 greppable6 joined 07:45 squashable6 left 07:57 coverable6 joined 08:08 reportable6 joined 08:12 japhb left
Geth MoarVM: 85fa90c42c | (Nicholas Clark)++ | src/core/bytecode.c
Move the repeated code that frees callsites before exceptions to a function

Create `report_deserialize_callsites_violation` to de-duplicate code in
  `deserialize_callsites` which frees callsites before throwing an exception.
For all use the form of the exception text (with more diagnostics) originally only used for the fourth case. ... (6 more lines)
08:18
MoarVM: 03f023cc6c | (Nicholas Clark)++ | src/core/bytecode.c
Fix a bug in `report_deserialize_callsites_violation`

This bug originates from when the code was first added as part of commit c1c25e33fd6f1cce.
Unfortunately it can cause a SEGV, which obscures the actual error message that we are trying to report.
08:34 japhb joined 08:38 frost joined 08:42 frost left 08:47 squashable6 joined
Geth MoarVM: e80869eb63 | (Nicholas Clark)++ | 7 files
Remove all code for serialization versions earlier than 23

Code compiled with earlier versions assumes "old" dispatch, meaning that the ops it needs will now throw exceptions.
Also remove two comments "TODO ffi support" - FFI support for NativeCall.c was actually implemented in Dec 2019 by commit ff1e55617855f4ab:
   Implement serialization of NativeCall sites for libffi
09:30
MoarVM: bee95459f0 | (Nicholas Clark)++ | src/core/bytecode.c
Remove all code for bytecode versions earlier than 7

Identical to the previous commit for serialization versions, Code compiled for earlier bytecode versions assumes "old" dispatch, meaning that it will no longer work.
  (Code compiled for earlier bytecode versions actually won't have worked for
some time due to the incremental effect of other changes changed or removed unused functionality.)
lizmat feels like a bump is in order ? 09:33
Nicholas I have no good feel, really 09:34
lizmat ok, I'll hold for more input :-) 09:44
MasterDuke hm, i think it should be possible to consolidate the ascii cases for coerce_s_i, radix, and radix_I, which will likely give a bit of a speedup for radix* in those cases. the tricky part is that radix* keeps track of how many chars were converted and coerce_s_i doesn't 09:45
lizmat well, keeping how much has been converted, is a feature that *is* used
MasterDuke actually, i believe ascii and grapheme8 cases
definitely 09:46
just trying to figure out if adding that to coerce_s_i will complicate it/slow it down too much 09:47
but we may end up with pulling some of the code out of coerce_s_i that we just inlined, so all three ops can share it 09:49
jnthnwrthngtn moarning o/ 10:11
Nicholas \o
MasterDuke ahoy
10:11 ugexe left
Geth MoarVM: MasterDuke17++ created pull request #1661:
Fix things found by lgtm.com
10:18
10:25 ugexe joined
lizmat bumped anyway for better bisectability :-) 10:27
nine Looks like that Digest failure is its own can of worms. 11:00
Ha! "FIXME need autobox_uint" how right I was... 11:01
Geth MoarVM: b7d2713b08 | (Stefan Seifert)++ | 6 files
Implement unsigned native version of binary not op (bnot_u)
11:13
MoarVM: a0a98d47cc | (Stefan Seifert)++ | src/6model/reprs/P6opaque.c
Teach MVM_dump_p6opaque debug function to dump bigints
MoarVM: 3ff5b11136 | (Stefan Seifert)++ | src/core/args.c
Fix autoboxing of arguments treating unsigned ints as signed
MasterDuke it's really annoying that the reproducible build test doesn't seem to ever fail locally 11:34
11:41 AlexDaniel joined 11:47 AlexDaniel left 12:00 AlexDaniel joined 12:02 AlexDaniel left 12:06 reportable6 left 12:08 AlexDaniel joined 12:20 psydroid joined 12:33 [Coke]_ is now known as [Coke] 12:35 AlexDaniel left 13:07 reportable6 joined
MasterDuke nine: github.com/rakudo/rakudo/issues/15...1026962471 might be up your alley 15:23
15:23 AlexDaniel joined
vrurg We have a SEGV regression. BSON::Simple reliably dies on master on its t/00-use.rakutest 15:29
Unfortunately, I can't quickly make my linux box produce a core and don't have time for gdb right now. 15:31
MasterDuke doesn't repro right away for me 15:35
vrurg I wasn't able too somehow. Try full rebuild. 15:38
v2021.12-173-gffa09ff68. 15:39
MasterDuke 2021.12-173-gffa09ff68 here too. that test is just `use`ing the module. i think this is the same bug (or at least related to it) in use/require/precomp that i just reproed 15:40
vrurg Very likely. Out of curiosity, I'm trying 382f2f1084d721df6c3ce24a3dea9a174bbaac82 which is pre-last NQP bump. 15:43
15:43 linkable6 left
vrurg The bump, perhaps, made the bug more reproducible. Pre-bump build works as charm. 15:44
nine I'm curious how you come to that conclusion without backtraces to compare? 15:45
vrurg The test is about module loading.
15:46 linkable6 joined
nine And the reproduction is about parallel module loading, which we've never been good at 15:46
vrurg Could be a coincidence, of course. That's why it's "likely", even though "very". :) 15:47
Geth MoarVM: 2abb469945 | (Stefan Seifert)++ | src/6model/reprs/MVMCapture.c
Fix segfault after capture-replace-literal-arg with different kind

A comment above MVM_capture_replace_arg already said: "The callsite argument type is expected to be the same". Sadly comments are easy to miss and when arguments are replaced with values of different kinds, we can end up with e.g. a literal number for a callsite argument with kind obj and may try to dereference what we wrongly believe to be a pointer.
Fix by actually enforcing this rule. Fixes the segfault reported in GH #1656
15:49
MoarVM: ac0dee75b6 | niner++ (committed using GitHub Web editor) | src/6model/reprs/MVMCapture.c
Merge pull request #1658 from MoarVM/fix_segfault_after_capture_replace_literal_arg

Fix segfault after capture-replace-literal-arg with different kind
15:50 linkable6 left
vrurg Anyway, the SEGV is certainly reliable. Switched back to the HEAD and it is back to dying. 15:51
15:52 linkable6 joined
vrurg I have to go now. gist.github.com/vrurg/0fb88fb5f54f...3c5bfb8009 – this is as much as I managed to pull out from a core. 16:19
nine Definitely a different bug then 16:24
MasterDuke vrurg: if you're compiling your own rakudo/moarvm it would be nice to add `--debug=3` to the moarvm build. makes backtraces so much nicer and isn't really any slower 16:30
Geth MoarVM: d58fa57df3 | (Stefan Seifert)++ | 7 files
Implement (bind|get)attrs?_u ops
16:35
MoarVM: ea644a5b1e | (Stefan Seifert)++ | 11 files
Implement getattrref_u op
MasterDuke m: use nqp; my str $s = "  12"; say nqp::coerce_si($s); say nqp::radix(10, $s, 0, 0) 17:33
camelia 0
(0 0 -1)
MasterDuke that's interesting. locally i get `12 ` from coerce_si 17:34
which is what i was expecting
(minus the space i accidentally put in the quotes) 17:35
but what i really wanted to point out was the difference between coerce and radix in how they handle leading spaces 17:36
which makes my plan to consolidate some of their implementations look more complicated 17:37
m: use nqp; my str $s = "1_2"; say nqp::coerce_si($s); say nqp::radix(10, $s, 0, 0)  # another difference
camelia 1
(12 2 3)
Nicholas MasterDuke: JVM and MoarVM already disagree on what coerce_si does with leading spaces. And jnthnwrthngtn previously has said that the nqp spec is rougly "whatever the tests say", and this isn't tested yet, so we could figure out that it can all converge. See github.com/Raku/nqp/pull/759 (partly) 17:49
lizmat converging++ 17:50
MasterDuke yeah. trying to decide if i should make two versions of this change, one keeping current behavior and one converging as much as possible, or just go right to converging as much as possible and seeing if the benefit is worth dealing with any potential breakage 17:52
[Coke] benefit other than "single code path" ? 17:53
MasterDuke some faster hotpaths may be possible 17:54
18:07 reportable6 left 18:10 reportable6 joined
dogbert17 m: class :: { has uint8 $.x; }.new( x => 2** 8-1 ).x.say 19:03
camelia -1
dogbert17 found this in the old bug repo 19:04
19:42 linkable6 left 20:44 linkable6 joined 20:57 Kaiepi left 21:58 vrurg left, vrurg joined 22:03 Kaiepi joined