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:03 reportable6 joined 00:21 CaCode_ joined 00:23 CaCode- left 00:24 CaCode joined 00:25 CaCode- joined, CaCode_ left 00:28 CaCode left 00:59 CaCode- left 01:57 discord-raku-bot joined 02:36 frost joined 03:36 releasable6 left, evalable6 left, linkable6 left 03:37 releasable6 joined 04:04 squashable6 left 05:04 quotable6 left, shareable6 left, bisectable6 left, nativecallable6 left, greppable6 left, releasable6 left, tellable6 left, unicodable6 left, reportable6 left, statisfiable6 left, sourceable6 left, bloatable6 left, notable6 left, committable6 left, coverable6 left, benchable6 left 05:05 bloatable6 joined 05:06 benchable6 joined, nativecallable6 joined, statisfiable6 joined 05:07 tellable6 joined, coverable6 joined, greppable6 joined 05:56 frost left 06:00 frost joined 06:05 unicodable6 joined, squashable6 joined, shareable6 joined, committable6 joined 06:06 sourceable6 joined 06:39 evalable6 joined 07:04 reportable6 joined 07:05 bisectable6 joined 07:07 quotable6 joined 07:38 linkable6 joined 08:07 releasable6 joined, notable6 joined 08:13 CaCode joined 08:23 frost left, CaCode left 09:20 MasterDuke joined 09:36 Colt left
MasterDuke perf says 53% of the time is spent in `__memmove_avx_unaligned_erms` for `my $str; $str ~= "$_\n" for 0..300000` ?!?! 09:40
Nicholas if true, that seems LTA 09:54
good *, *
10:36 linkable6 left, evalable6 left
Geth MoarVM/remove_callsite_flat_named_flag: 2c776f530e | (Stefan Seifert)++ | 3 files
Treat MVM_CALLSITE_ARG_(FLAT | NAMED) like FLAT_NAMED

If both the FLAT and NAMED flags are set, this means exactly the same as the FLAT_NAMED flag, so we treat them the same. Later on we can free up the FLAT_NAMED flag. Doing this in two steps to avoid bootstrapping issues.
10:50
MoarVM/remove_callsite_flat_named_flag: cab24960ca | (Stefan Seifert)++ | 6 files
Free up MVM_CALLSITE_ARG_FLAT_NAMED flag

The flag is superseeded by the combination of MVM_CALLSITE_ARG_FLAT and MVM_CALLSITE_ARG_NAMED. Freeing it up, so we have a flag available for unsigned integers.
10:51 Geth left, Geth joined 11:37 linkable6 joined 11:59 patrickb joined 12:02 reportable6 left 12:03 reportable6 joined 12:38 evalable6 joined
nine Bootstrapping is da worst 13:06
lizmat curryworst > 13:34
?
lizmat runs 13:37
Nicholas nine: that (plus the NQP branch) works on "my" machine 13:50
nine And just 3 hours later I've finally managed to build the fix_unsigned branch after rebasing on top of remove_callsite_flat_named_flag 13:54
Nicholas \o/
ASAN yawns at your work so far.
(the branch I tested. Not the unsigned epic)
14:08 Colt joined
timo you've had the worst, now try the THIRST......... QUENCHER! 14:13
14:26 Colt left 14:27 Colt joined 14:30 Colt left 14:31 Colt joined 14:32 Colt left 14:34 Colt joined, Colt left, Colt joined 14:35 Colt left 17:30 linkable6 left, reportable6 left, notable6 left, evalable6 left, unicodable6 left, bisectable6 left, sourceable6 left, shareable6 left, quotable6 left, releasable6 left, statisfiable6 left, tellable6 left, benchable6 left, coverable6 left, squashable6 left, bloatable6 left, nativecallable6 left, greppable6 left, committable6 left, unicodable6 joined 17:31 benchable6 joined 17:32 coverable6 joined, nativecallable6 joined, evalable6 joined 17:33 tellable6 joined, reportable6 joined, releasable6 joined
nine I hope there is a way to avoid this uglyness: $!strings.write_uint8(my uint $zero := 0) 17:48
[Coke] add a new literal type with prefix u? 17:54
<-- Me, not helping. 17:55
18:02 reportable6 left 18:05 reportable6 joined
lizmat nine: maybe we need more candidates for write-uint? 18:07
m: dd Buf.new.write-uint8(2,767) # this seems to work ok? 18:09
camelia Buf.new(0,0,255)
nine lizmat: on fix_unsigned branches 18:21
lizmat nine: the code now says: "# for simplicity's sake, these are not multis" 18:22
they could well turn into multis afaics
m: multi sub a(int $a) { dd }; multi sub a(Int $a) { dd }; a 42; a my int $ = 666 18:23
camelia sub a(Int $a)
sub a(int $a)
lizmat m: my uint8 $a = my Int $ = 767; say $a # the non-native candidate would only need to do something like that? 18:25
camelia 255
18:31 bloatable6 joined 18:32 greppable6 joined, sourceable6 joined, statisfiable6 joined 18:33 linkable6 joined, committable6 joined
nine Ends in "No applicable candidates found to dispatch to for 'write_uint8'." 19:09
Nicholas you need more curry? 19:16
lizmat nine: is that really _uint8 ?? or -uint8 ? 19:17
19:31 notable6 joined 19:33 shareable6 joined, bisectable6 joined, squashable6 joined
nine _uint8 19:54
I have version for uint8, int8, uint and int but none seem to match 19:57
lizmat but but in Rakudo they're called with kebab-case ? 19:59
lizmat is confused
20:04 CaCode joined
nine Logical consequence: I'm talking about NQP ;) 20:08
20:10 vrurg left 20:13 vrurg joined 20:18 Geth left, Geth joined 20:19 [Coke] left 20:22 [Coke] joined
[Coke] . 20:22
20:41 Geth joined 20:53 Geth left, Geth joined 21:33 quotable6 joined 23:20 patrickb left
MasterDuke nqp::radix_I includes the radix ** number-of-digits-converted (github.com/Raku/nqp/blob/master/do...own#radix) as one of its return values, but that doesn't seem to be used all that frequently 23:21
i haven't benchmarked it yet, why couldn't that just be number-of-digits-converted? then the more common cases that don't use the value don't have all those extra bigint multiplications occurring, and the few users can do the exponentiation themselves 23:23
oh, it looks like it might speed it up a bit 23:33
m: use nqp; my $i; my int $r = (2**12).Int; my $l = ~(7**(+$r)); my $s = now; $i = nqp::radix_I(10, $l, 0, 0, Int)[0] for ^1_000; say now - $s; say $i
camelia 1.482196017
332331798909192794102011386849386170669696888974932434480342064556621190171437688707278118090123647686658608145199786447897387758210523180413213249103122582779768286375171704314531172355189641656150934709823053250062924250588570076715465…
MasterDuke locally that usually takes ~1.3s. if i strip out calculating the radix ** number-of-digits-converted and instead just return a bigint set to 1 (only slightly less work than actually required), the time drops to ~0.8s 23:36
of course not quite as big a difference with smaller strings. if i use 2**5 as the range in the above example (and increase the iterations to 100_000, the time drops from ~0.16s to ~0.12s 23:39
it's too late now, but maybe tomorrow i'll try creating a moarvm/nqp/rakudo trio of patches 23:45