MasterDuke heh. i'm trying to optimize POSITIONS() in array_slice.pm6. my changes didn't seem to make it faster, so thought i'd check instruction count with callgrind 00:41
my test case, which takes 1.9 billion instructions before any changes, takes 391 instructions more after my optimization attempt 00:42
back to the drawing board... 00:43
japhb Good on you for checking that though .... 01:21
Geth nqp: 13845470aa | pmurias++ | 3 files
[js] Basic implementation of new encoding ops
07:26
nqp: 5bcb548b34 | pmurias++ | t/moar/11-decode.t
Extra decoding tests
[Tux] Rakudo version 2018.03-29-ga3e4f9e3e - MoarVM version 2018.03-3-g2bd691551
csv-ip5xs0.822 - 0.842
csv-ip5xs-207.844 - 7.895
csv-parser37.953 - 38.068
csv-test-xs-200.428 - 0.474
test9.118 - 9.192
test-t2.547 - 2.573
test-t --race1.072 - 1.076
test-t-2045.384 - 47.843
test-t-20 --race16.488 - 16.678
08:17
Geth rakudo: 2760753d5a | (Samantha McVey)++ | 2 files
Fix Encoding::Decoder so it works properly with a replacement

Fix a write error to a read only variable and fix the signatures so it doesn't fail when a Bool is passed in.
09:26
rakudo: 37fc2883dd | (Samantha McVey)++ | src/core/IO/Handle.pm6
Make sure IO::Handle.encoding passes replacement, strict to decoder

The signature had :$replacement and :$strict but they were not passed through to Encoding.decoder, though they worked fine with the encoder.
In addition add a :$translate-nl argument to allow changing the value. Previously the default of $translate-nl = True was passed into the decoder and encoder's but there was no way to configure it.
roast: 1e1b9c0db0 | pmurias++ | S32-str/encode.t
Stop using invalid unicode in a string literal
09:35
nqp: bb14087e03 | pmurias++ | src/vm/js/nqp-runtime/codecs.js
[js] Fix nqp::encoderep with utf8
09:59
nqp: 02a2378f31 | pmurias++ | src/vm/js/nqp-runtime/core.js
[js] Wrap native strings in NQPStr
pmurias m: the round method is broken due to floating point errors 10:12
camelia 5===SORRY!5=== Error while compiling <tmp>
Missing block
at <tmp>:1
------> 3the round method is7⏏5 broken due to floating point errors
pmurias say (123.456789).round(1e-5) === 123.45679
evalable6 False
pmurias say (123.456789).round(1e-5)
evalable6 123.45679
pmurias .tell Zoffix I imagine the least daunting p6 install experience would look something like this: p6up.github.io/ 11:46
yoleaux pmurias: I'll pass your message to Zoffix.
Geth rakudo: 684a50d1f6 | (Elizabeth Mattijsen)++ | src/core/Rakudo/Iterator.pm6
Give R:I.IntRange its own .push-exactly

This makes HyperIteratorBatcher.produce-batch about 3x as fast as before when given a Range.iterator.. The dedicated HyperRangeBatcher makes it about 5x as fast, but introduces a lot of code and maintenance overhead. Given that the HyperxBatcher.produce-batch is typically less than 0.1% of total time used, it feels that just creating an optimized .push-exactly is the right thing to do.
12:02
lizmat GH R#1639 12:16
synopsebot R#1639 [open]: github.com/rakudo/rakudo/issues/1639 [NYI][RFC] Do we need an API method "SLICE", as extension to AT-POS?
Geth rakudo: a7ed20975c | (Elizabeth Mattijsen)++ | 4 files
HyperRangeBatcher RIP

The maintenance overhead and bloat do not warrant the existence of this optimization that in itself could be significant (.produce-batch on Range being 5x faster instead of only 3x with a better Range.iterator.push-exactly) the CPU usage is well within noise levels just about any benchmark.
12:19
dogbert2 .seen Zoffix 13:27
yoleaux I saw Zoffix 01:21Z in #perl6: <Zoffix> FWIW: my vacation at $work started and I'm gonna go into isolation until Apr. 6, to enjoy it. I might make some commits to repos, but I'll be ignoring all notifications. If I break something, just revert or fix the commit, as I won't see the notification about breakage. If pmichaud comes around; rakudo.org domain is ready for move, per github.com/perl6/perl6.org/issues/...uecomment-
373971373
dogbert2 .tell Zoffix there's a spelling error in the brochure 'Language built from the ground up with *concurency* in mind' 13:29
yoleaux dogbert2: I'll pass your message to Zoffix.
Geth rakudo: dc921b601e | (Elizabeth Mattijsen)++ | src/core/Channel.pm6
Micro-optimize Channel.send

It's used a lot in async code, so every little bit helps.
14:04
rakudo: caacb2e4fc | (Elizabeth Mattijsen)++ | src/core/Supply.pm6
Mark Supplier.emit/done as --> Nil

Since TapList.emit/done are marked as --> Nil. Having the compiler already know that it will always be Nil, may help.
14:05
rakudo: 67f9157231 | (Elizabeth Mattijsen)++ | src/core/Channel.pm6
Streamline Channel.close a bit

  - the attribute is an integer flag, make it a native
  - Channel.close always returns Nil, so mark it as the return value
dogbert2 lizmat: are you working with channels now? 14:06
lizmat I'm working on anything that will make .hyper / .race go faster :-) 14:07
dogbert2 I remebered this: RT #131684
synopsebot RT#131684 [new]: rt.perl.org/Ticket/Display.html?id=131684 Iterator and Supply might fail early if Nil is sent on a channel
dogbert2 *bad spelling
lizmat will look at it while I'm at it :-) 14:08
dogbert2 ++lizmat 14:16
Geth rakudo: 739fd9c9a9 | (Elizabeth Mattijsen)++ | src/core/Supply.pm6
Streamline the Tap class
14:44
rakudo: f4255d5a17 | (Elizabeth Mattijsen)++ | src/core/Supply.pm6
Streamline Supply.new a bit

  - no more SET-SELF, use nqp::p6bindattrinvres instead
  - no more =:=, use nqp::eqaddr instead
15:07
travis-ci Rakudo build failed. Elizabeth Mattijsen 'Streamline the Tap class' 15:41
travis-ci.org/rakudo/rakudo/builds/356911704 github.com/rakudo/rakudo/compare/6...9fd9c9a9cd
buggable [travis build above] ☠ All failures are due to: failed make test (1 failure). Across all jobs, only t/04-nativecall/13-cpp-mangling.t test file failed.
lizmat cannot reproduce that error 15:43
Geth rakudo: bdd8143e6f | (Elizabeth Mattijsen)++ | src/core/Channel.pm6
Streamline Channel.iterator, fixes RT #131684

  - move logic of receive-nil-on-close into .iterator.pull-one
  - remove receive-nil-on-close altogether
16:05
synopsebot RT#131684 [new]: rt.perl.org/Ticket/Display.html?id=131684 Iterator and Supply might fail early if Nil is sent on a channel
lizmat dogbert2 ^^^
dogbert2 lizmat++
Kaiepi PufferBot, build 16:10
PufferBot [openbsd] Configuring Rakudo...
[openbsd] Configuring failed. See the output at fpaste.scsys.co.uk/576185 16:11
Kaiepi, done!
AlexDaniel 6c: say 23067200747291880127814827277075079921671259751791 %% 100000000000000000000000000000000000000000000000577 16:13
Kaiepi weird, it works when passing --has-libffi instead of --has-dyncall
committable6 AlexDaniel, gist.github.com/07d40e5b6250c046c5...2569e0cc2e
Geth rakudo: 33c52dbc7f | (Elizabeth Mattijsen)++ | src/core/Numeric.pm6
Fix GH R#1640

nqp::not_i on big Int's don't work. Use the HLL prefix:<!> instead.
16:24
synopsebot R#1640 [open]: github.com/rakudo/rakudo/issues/1640 [regression] %% fails with bigInt, bigInt arguments
AlexDaniel lizmat: hmm :) Why do you always forget to add testneeded tag? 16:40
lizmat you mean on RT? or on GH ? 16:41
if it's RT, I don't do RT directly, only through email
on GH, I've just taught myself to add the testneeded tag :-)
Geth rakudo: 6f42d19eb0 | (Elizabeth Mattijsen)++ | src/core/Supply.pm6
Streamline Supply.emit

  - favour the case where there is only 1 tap
  - reduce loop overhead on >1 tap case
16:44
AlexDaniel lizmat: ooooh… OK I see 16:46
MasterDuke is there any reason github.com/rakudo/rakudo/blob/mast...#L352-L355 couldn't be just `nqp::splice(iterbuffer, $reified, 0, nqp::elems($reified))`? 17:02
well, `nqp::splice(iterbuffer, $reified, 0, $elems)` 17:03
lizmat MasterDuke: I would say, none 17:06
but I would also say: the List of **@things is something that is volatile anyway, I think
MasterDuke but this github.com/rakudo/rakudo/blob/mast...t.pm6#L348 `my int $elems = +@things; # reify` should take care of that, right? 17:07
lizmat so I wonder why that just doesn't return @things ?
or @things.List rather :-)
MasterDuke hm, not sure what you're getting at. that new is in `class Reifer` inside `class List` 17:10
lizmat ah, ok hmmmm 17:12
travis-ci Rakudo build passed. Elizabeth Mattijsen 'Streamline Channel.iterator, fixes RT #131684 17:20
travis-ci.org/rakudo/rakudo/builds/356954108 github.com/rakudo/rakudo/compare/f...d8143e6fa0
synopsebot RT#131684 [open]: rt.perl.org/Ticket/Display.html?id=131684 Iterator and Supply might fail early if Nil is sent on a channel
AlexDaniel dogbert11: any progress on your RT account?
Geth rakudo: 828cd4a8c6 | (Elizabeth Mattijsen)++ | src/core/Rakudo/Iterator.pm6
Give R:I.ReifiedList/ReifiedArray their own push.exactly

To generally make things faster, and especially when .hypering over an Array or a List.
17:32
Kaiepi ok the build issue i was getting with pufferbot earlier just ended up being a problem with how my system's configured, not with moar itself 17:35
AlexDaniel \o/ 17:37
that sounds great
Geth roast: 64a0eae869 | (Ben Davies)++ | S32-str/encode.t
Fix plan in S32-str/encode.t

  See github.com/perl6/roast/commit/1e1b...36ef11c692
17:50
rakudo: 232197da00 | (Elizabeth Mattijsen)++ | src/core/Rakudo/Iterator.pm6
Don't use private methods in Rakudo::Iterator

  - there's no point since they're all inside anonymouse classes
   - so there is noi real danger of them being visible from the outside
  - avoids the still relatively costly dispatch:<!> runtime lookup
17:54
dogbert11 does anyone want to merge github.com/perl6/roast/pull/405 or should I do it myself? 17:57
MasterDuke m: use nqp; my \ib = nqp::create(IterationBuffer); my @li = (1, 2, "c", 4); nqp::splice(ib, nqp::getattr(@li, List, q|$!reified|), 0, 2); dd ib; say nqp::elems(ib) 18:03
camelia (1, 2, "c", 4)
4
MasterDuke ^^^ why isn't the count in the nqp::splice call respected?
jnthn That's how many elements to replace in the target, I think? 18:04
lizmat
.oO( yet another reason we need something like nqp::subbuf )
18:05
MasterDuke oh, ha. "Replace them with all the elements from @from"
jnthn: do you have any thoughts on introducing an nqp::subbuf? 18:06
afk for a while though
jnthn Well, sorta, also something more like memcpy :) 18:07
We actually want a couple of different things
One of them being an op that lets us get a view of an underlying thing without having to copy
lizmat jnthn: that we could nqp::clone you mean ? 18:08
if necessary :-)
jnthn Well, we need that one in particular for doing partial views of multi-dim arrays
But note that we could also use it for Blob 18:09
Which is immutable
lizmat or Lists ?
IterationBuffers ?
jnthn Well, only the underlying storage of List, but potentially yes
lizmat repr(VMArray) basically, right ? 18:10
jnthn That or repr(MultiDimArray)
So that it's useful for the partial view case 18:11
(to be clear, so that `my @a[2;2]; @a[2]` will work)
m: my @a[2;2]; say @a[2]
camelia Partially dimensioned views of shaped arrays not yet implemented. Sorry.
in block <unit> at <tmp> line 1
Geth rakudo: aa974ecdc2 | (Elizabeth Mattijsen)++ | src/core/Rakudo/Internals/HyperRaceSharedImpl.pm6
Implement .hyper.invert
18:21
travis-ci Rakudo build passed. Elizabeth Mattijsen 'Fix GH R#1640 18:25
travis-ci.org/rakudo/rakudo/builds/356964343 github.com/rakudo/rakudo/compare/b...c52dbc7f9b
synopsebot R#1640 [open]: github.com/rakudo/rakudo/issues/1640 [regression][testneeded] %% fails with bigInt, bigInt arguments
Geth rakudo: 32774e7be6 | (Elizabeth Mattijsen)++ | src/core/Rakudo/Internals/HyperRaceSharedImpl.pm6
Revert "Implement .hyper.invert"

This reverts commit aa974ecdc2d42acd2bc9672cc774d7cb582098b4.
18:44
lizmat yeah, that was not so bright :-) 18:45
Geth roast: bc2894aa58 | (Jan-Olof Hendig)++ | S04-declarations/constant.t
Test for RT 127352
18:56
roast: f2d422f229 | dogbert17++ (committed using GitHub Web editor) | S04-declarations/constant.t
Merge pull request #405 from dogbert17/test-rt-127352

Test for RT 127352
synopsebot RT#127352 [open]: rt.perl.org/Ticket/Display.html?id=127352 [BUG] Behavior of Regular Expressions Contained in a Constant with a Sigil
Geth rakudo: d75f4cfc71 | (Elizabeth Mattijsen)++ | 3 files
Implement .hyper|race.invert properly

  - in HyperSeq/RaceSeq
  - actual handler in HyperRaceSharedImpl
   - which is actually just a front end for .map
Also unify the order of methods in HyperSeq/RaceSeq with each other for better maintainability.
19:37
MasterDuke jnthn: so nqp::subbuf should copy, but nqp::bufview not copy? 20:36
so i just tried replacing github.com/rakudo/rakudo/blob/mast...#L352-L355 with `nqp::splice(iterbuffer,nqp::getattr(@things,List,'$!reified'),0,0);` 20:45
and it builds ok, but during the install, i get `This type (Scalar) does not support elems in block <unit> at tools/build/create-moar-runner.pl line 11`
lizmat MasterDuke: that's probably a missing nqp::decont on @things ? 20:50
ah, elems
perhaps a decont on the nqp::getattr 20:52
MasterDuke heh, now it's `This type (Mu) does not support elems in block <unit> at tools/build/create-moar-runner.pl line 11` 21:03
lizmat MasterDuke: could you gist the diff ? 21:16
MasterDuke lizmat: gist.github.com/MasterDuke17/697b0...ebf68d2971 21:17
ah, builds+installs if i add back in the `my $reified := nqp::getattr(@things,List,'$!reified');` and then wrap the nqp::splice in an `nqp::if($reified,...)` 21:22
spectesting
lizmat aaaahhh... yes, it should exist
:-)
travis-ci Rakudo build failed. Elizabeth Mattijsen 'Don't use private methods in Rakudo::Iterator 21:33
travis-ci.org/rakudo/rakudo/builds/357010566 github.com/rakudo/rakudo/compare/8...2197da0006
buggable [travis build above] ☠ Did not recognize some failures. Check results manually.
Geth rakudo: 8ce20ae1fc | (Elizabeth Mattijsen)++ | src/core/Array.pm6
Streamline Array.STORE-ITERABLE a bit

  - lose the =:= in favour of nqp::eqaddr
  - combine bindattr + return value into singe p5bindattrinvres
21:46
lizmat and that concludes my hacking for today& 21:52
japhb lizmat++ 22:03
timotimo p5bindattrinvres? ;) 22:16
Geth rakudo: MasterDuke17++ created pull request #1641:
Simplify List's Reifier.new
23:04