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:04 reportable6 joined 00:22 patrickb left 00:23 patrickb joined 00:39 patrickb left 00:46 [Coke] left 01:46 [Coke] joined 03:49 quotable6 left, committable6 left, greppable6 left, linkable6 left, statisfiable6 left, squashable6 left, bloatable6 left, tellable6 left, notable6 left, unicodable6 left, bisectable6 left, benchable6 left, shareable6 left, releasable6 left, nativecallable6 left, sourceable6 left, evalable6 left, coverable6 left, reportable6 left, bisectable6 joined, sourceable6 joined, bloatable6 joined 03:50 reportable6 joined 03:51 evalable6 joined, tellable6 joined, notable6 joined, greppable6 joined, benchable6 joined 04:49 unicodable6 joined 04:50 statisfiable6 joined 04:51 nativecallable6 joined 05:09 Kaiepi left, Kaiepi joined 05:49 quotable6 joined 05:51 linkable6 joined 06:02 reportable6 left 06:04 reportable6 joined 06:50 coverable6 joined 06:52 committable6 joined, squashable6 joined
Nicholas good *able6, #moarvm 07:32
08:14 frost joined
nine And a gracious good * to you! 08:55
MasterDuke anyone have any thoughts/comments on github.com/MoarVM/MoarVM/pull/1617 and github.com/MoarVM/MoarVM/pull/1608 ?
or github.com/rakudo/rakudo/pull/4650 and github.com/rakudo/rakudo/pull/4651 ? 08:56
do we want to wait until after the release for some/all of them? 08:57
nine Personally I'd feel comfortable with #1617 merged before the release. The changes are very straight forward. #4650 probably as well as the changes are almost exclusively in exception reporting, i.e. when the program failed already. 09:25
PR #1608 feels to invasive for merging before the release. Probably also needs changes, as the magic number 3000 is not explained anywhere. 09:26
Btw. 1000000000e0 looks curious. After all the point of scientific notation is to not have those long chains of 0s. 09:30
MasterDuke yeah, that 3000 was copied from one of the first uses of alloca (github.com/MoarVM/MoarVM/commit/47...a2a807c6), but now that isn't being used more frequently maybe we should add a `#define MAX_ALLOCA_SIZE 3000` somewhere 09:31
s/isn't/it is/
nine The explanation for the number can be found in logs.liz.nl/moarvm/2017-10-03.html. Would be great if this makes it into a comment and/or git log 09:35
MasterDuke ah nice, i was looking for comments on the prior commits that did the alloca but didn't see any 09:37
nine /* XXX We need a fetch_u at some point. */ 09:41
MasterDuke nine: i just tacked 'e0' on the end to make the literal a Num
nine Indeed...and only 6 years later we're gonna get it
1e9 would have saved me the counting of 0s :D
MasterDuke heh. but then you'd still have to count the 0s in the integer literal to make sure they're the same value! though i guess could also do something like `my constant $num-nano-literal = 1e9; my constant $int-nano-literal = $num-nano-literal.Int; ` 09:45
Nicholas www.youtube.com/watch?v=ZB3HcyJfbG8 (I did not know that this existed) 09:47
Not a RickRoll - a RickRoll looks like this: www.youtube.com/watch?v=dQw4w9WgXcQ 09:48
MasterDuke i'll add a commit to github.com/MoarVM/MoarVM/pull/1608 with a #define and referencing the reasoning for the limit
nine MasterDuke: No I wouldn't have to count because I happen to know that a nano is a billionth and that a billion has 9 zeroes. 09:49
MasterDuke i thought a RickRoll looked like this archive.nerdist.com/rick-rolls-ric...day-table/ 09:50
huh, now i'm looking at those literals and wondering why i didn't put '_'s in, i usually do (at least for personal use) 09:51
speaking of counting, i was amused by a recent coincidence. i had heard a rant a little while ago about counting in French (e.g., why is there a name for 70, but 80 is 4x20?!). then my daughter was practicing counting past 20 and got to 29, paused, and said "twenty ten, twenty eleven, ..." 09:56
moon-child 'there is a name for 70' actually, 70 is sixty-ten!
MasterDuke guess what's intuitive just depends on what you already know 09:57
moon-child soixante-dix
MasterDuke oh, right. i do actually know that, just hurriedly picked a wrong example 09:58
moon-child :)
Nicholas Or if you're Belgian. Fastest link I could find is www.fluentu.com/blog/french/belgian-french/
MasterDuke nice. another reason to like the belgians 09:59
timo it's difficult to sing along with the counting since the stress is on unexpected syllables 10:00
Geth MoarVM: 5503065c6a | (Daniel Green)++ | 2 files
Alloca the nativecall args that we can

The memory for CPPStructs is passed on, so it has to be malloced.
10:05
MoarVM: 83c53580a7 | (Jonathan Worthington)++ (committed using GitHub Web editor) | 2 files
Merge pull request #1617 from MasterDuke17/fix_memory_leaks_in_nativecall_libffi_and_dynasm

Alloca the nativecall args that we can
jnthnwrthngtn moarning o/ 10:06
10:51 shareable6 joined
Nicholas \o 10:51
10:51 releasable6 joined 11:51 evalable6 left, linkable6 left 12:03 reportable6 left 12:52 linkable6 joined 13:04 reportable6 joined 13:17 rypervenche left 13:22 rypervenche joined 13:25 Kaipi joined 13:27 Kaiepi left 14:23 patrickb joined 14:28 vrurg_ joined 14:30 vrurg left 14:54 evalable6 joined
nine One of the last spect test failures I get is nqp::bindpos_u(to, $i, from.AT-POS($j = ($j + 1) % $values)) blowing up, because `from` is a signed intarray, AT-POS returns an IntPosRef and but we codegen a decont_u on that instead of a decont_i, because the target requires a uint register 15:25
jnthnwrthngtn Arguably an explicit conversion is a good thing there... 15:36
But if there's a test already that's maybe awkward
I assume the test isn't actually doing _u? Can we have int and uint candidates and decide on the lex ref type, and one can do the conversion? 15:37
16:01 evalable6 left, linkable6 left 16:22 vrurg joined, vrurg_ left
nine Problem is that the only place where we have information about the required type and the data type is MVM_VMArray_at_pos. Codegen doesn't know the result of the AT-POS. MVM_6model_container_decont_u, native_ref_fetch_u and MVM_nativeref_read_positional_u don't know what slot type the array has 16:27
Of course MVM_VMArray_at_pos can do the coercion easily. But this is also the place where all those helpful error messages come from that let me do the other fixes. Can't have both :/ 16:29
jnthnwrthngtn What is the actual code that you golfed the nqp::op version from? 16:30
16:30 patrickz joined
jnthnwrthngtn m: my int $x = 2.5 16:30
camelia 5===SORRY!5=== Error while compiling <tmp>
Cannot assign a literal of type Rat (2.5) to a native variable of type int. You can declare the variable to be of type Real, or try to coerce the value with 2.5.Int or Int(2.5)
at <tmp>:1
------> 3ā€¦
16:30 patrickb left
nine Haven't committed/pushed my local version yet, but the code originates from: github.com/rakudo/rakudo/blob/mast...f.pm6#L637 16:31
I have replaced the atpos_i with AT-POS since from may be signed or unsigned
jnthnwrthngtn We can't use the meta-object to determine what type of array from is and have separate code-paths? 16:34
m: my Buf $x .= new; my int @arr; say $x.^array_type 16:35
camelia (uint8)
jnthnwrthngtn m: my Buf $x .= new; my int @arr; say $x.^array_type; say @arr.^array_type
camelia (uint8)
(int)
nine No, that's just too obvious a solution. 16:37
nine is testing the fix
It's like magic! 16:42
MasterDuke m: my Buf $x .= new; my int @arr; say $x.^array_type.^unsigned; say @arr.^array_type.^unsigned # nice, just learned about this 16:47
camelia 1
0
jnthnwrthngtn :) 16:49
nine Well, this time it's harder: my uint @a = 1, 2; $_++ for @a' 16:55
MVMArray: atpos U64 expected int register, got 4 instead
jnthnwrthngtn Does ++ have a uint is rw and int rw candidate? 16:58
nine It's postfix:<++>(int $a is rw --> int) that's getting passed an UIntPosRef but treats it as signed.
jnthnwrthngtn I think that's how I'd expect it to work
I'm not sure a UIntPosRef should bind there
nine It doesn't I tried adding one but setting build failed with Ambiguous call to prefix:<++>
16:59 TempIRCLogger left 17:00 TempIRCLogger joined
jnthnwrthngtn Yeah, uint and int would be equally tight, so if int accepts a UIntPosRef we'll have a bad time. 17:00
grmbl, finally found time to look over the failures from my attr init replacement, and it looks like some modules fail because I'm broken blin or zef itself in an apparently subtle way 17:01
m: class C { has %.h = (); submethod BUILD() { %!h<k> = 42 } }; C.new.h.say 17:10
camelia {k => 42}
17:11 TempIRCLogger left, TempIRCLogger joined
nine How does rakudo determine whether e.g. an int accepts a UIntPosRef? 17:26
jnthnwrthngtn github.com/rakudo/rakudo/blob/mast....nqp#L1821 17:31
I guess iscont_i is answering true on UIntPosRef?
17:42 TempIRCLogger left, TempIRCLogger joined
nine It does. So I'll have to add an iscont_u 17:47
Now that's something I know how to do :)
17:57 TempIRCLogger left, TempIRCLogger joined 18:02 reportable6 left, evalable6 joined 18:06 TempIRCLogger left, TempIRCLogger joined 18:30 TempIRCLogger left, TempIRCLogger joined 18:45 TempIRCLogger left, TempIRCLogger joined 19:02 linkable6 joined 19:04 reportable6 joined 20:48 colemanx left, colemanx joined 23:08 squashable6 left 23:11 squashable6 joined 23:36 squashable6 left 23:38 squashable6 joined