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] |
|
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 |