[Coke] | the invite showed up in win 1, which is just a load of logging crap I never look at, btw. I only know about this channel because it was mentioned on #perl6 | 02:10 | |
(I only thought to look for the invite because other people said they were invited.) | 02:13 | ||
IRC-- | |||
07:58
RabidGravy joined
|
|||
jnthn | Yes, that amount I can backlog... :) | 10:06 | |
lizmat | :-) | ||
dalek | kudo/nom: ec7d8d4 | skids++ | src/core/Range.pm: Range optimizations plus small fix Fix Range.iterator.count-only which was off by one Implement an efficient reverse iterator for common Ranges Optimize Range.reverse (now returns a Seq not a List, is specced --> Iterable) Optimize Range.first(:end) -- improvement proportional to .elems Note these changes sometimes exercise .pred rather .succ on values. Passes current roast. Will compare 6.c results and make new tests later. |
10:11 | |
kudo/nom: c47f5b5 | lizmat++ | src/core/Range.pm: Merge pull request #724 from skids/range Range optimizations plus small fix 42e401b | lizmat++ | src/core/native_array.pm: Streamline int/numarray roles - make sure they have identical method signatures - add generated role markers (dummies for now) - move .STORE(Range:D) out of generated part (too different between roles) - please note that this does not fix any problems (yet) |
|||
10:26
dalek joined
|
|||
lizmat | m: my int @a; @a.prepend(1,2,3) # lots of untested stuff with native arrays :-( | 10:39 | |
camelia | rakudo-moar c47f5b: OUTPUT«(timeout)» | 10:40 | |
jnthn | lizmat: To be fair, I didn't even know we had a prepend :P | 10:42 | |
lizmat: There are some hundreds of tests. :) | 10:43 | ||
Clearly we need some thousands :) | |||
lizmat | working on that :-) | 10:44 | |
jnthn: prepend is the flattening version of unshift :-) | |||
jnthn | ah :) | 10:45 | |
Makes sense :) | |||
10:56
pmurias joined
|
|||
kudo/nom: e4ec19d | lizmat++ | / (2 files): First version of generated native array roles Only the generated time/info markers are different in the native_array source, so we're sure we didn't introduce any artefacts with the role generation logic. |
11:23 | ||
ast: 863fcc4 | lizmat++ | S09-typed-arrays/native- (2 files): Remove specificity from int/num array tests The error message has/will be improved later. |
11:27 | ||
ast/6.c-errata: 7dd9a2c | lizmat++ | S09-typed-arrays/native- (2 files): Remove specificity from int/num array tests Backported from master 863fcc4 |
11:29 | ||
p: 7b112f9 | (Pawel Murias)++ | src/vm/js/Compiler.nqp: [js] Fix bug when compiling code for use by eval and our subs are present. |
11:37 | ||
p: cdc5419 | (Pawel Murias)++ | src/vm/js/ (2 files): [js] Unbitrot after cuid format change. |
|||
11:44
sortiz joined
11:45
pmurias joined
|
|||
dalek | kudo/nom: 43ead69 | lizmat++ | / (2 files): Remove int/numarray.ASSIGN-POS(Any) candidates They are better handled by Any.ASSIGN-POS candidates, which will emit back to the proper candidate here if appropriate. So, if you're using a string with a number as an index, you will have to go the long way. This also better catches using ASSIGN-POS(Inf) or ASSIGN-POS(NaN) |
12:05 | |
12:06
Skarsnik joined
|
|||
lizmat | .tell jnthn is there reason why we don't have a nqp::splice_i/n/s ? | 12:36 | |
jnthn | lizmat: Do we need one? | 12:39 | |
Why wouldn't splice just work? | |||
lizmat | .tell jnthn reason I'm asking is that using nqp::splice in inarray.STORE(int @a) is 2x as slow as using a handmade loop with bindpos_i | ||
jnthn | So long as the types on either side match I think it maybe should... | ||
Oh... | |||
Then it just wants making smarter. :) | |||
lizmat | nqp::splice works, but is mucho slower | ||
jnthn | Yeah | ||
I don't think we need to add _i/_n/_s variants though :) | 12:40 | ||
lizmat | ok, where would that making smarter happen ? | ||
jnthn | Just to be cleverer inside of the implementation of MVMArray:splice | ||
Down in MoarVM. | |||
MVMArray.c's splice function | |||
lizmat | ok... I just might have a look there :-) | ||
jnthn gives lizmat some carrots so she can C well :) | 12:41 | ||
Lunch time here...bbi30 or so :) | |||
13:03
|Tux| joined
|
|||
|Tux| | <|Tux|> test 20.861 | 13:03 | |
<|Tux|> test-t 13.702 | |||
<|Tux|> csv-parser 47.597 | |||
lizmat | jnthn: turns out nqp::slice is slower for 10 element arrays, but 26x faster for 1000 elem arrays, so yymv :-) | 13:05 | |
RabidGravy | if you could pull that trick with the CArray constructor, I'd buy 20x faster for (very) large arrays | 13:17 | |
my earlier attempts to at making it faster actually had the reverse effect | 13:18 | ||
(guessing because it couldn't inline the result) | |||
jnthn | lizmat: Wowser :) | 13:19 | |
dalek | kudo/nom: e8bc151 | lizmat++ | / (2 files): Streamline int|numarray.STORE - my int @a = ^1000; my int @a = @b (26x faster) - my int @a = 1,2,3,4,5 (marginally faster) - same for num, because code is generated :-) - fix bug in error message |
13:23 | |
lizmat | afk for a few hours& | ||
13:39
pmurias joined
|
|||
dalek | p: 307f146 | peschwa++ | src/HLL/sprintf.nqp: Complain at a higher level in nqp::sprintf. Previously failed {int,num,str}ification let the low-level message bubble up to the HLL. Now we instead throw a VMException that contains a complaint about the directive vs type mismatch as message and the actual failed argument as payload. |
16:03 | |
kudo/nom: ad19288 | peschwa++ | src/core/Cool.pm: Explicitely complain about lazy lists in (s)printf. |
16:04 | ||
16:50
pmurias joined
18:58
[Tux] joined
19:16
MadcapJake` joined
|
|||
dalek | kudo/nom: 4ed9fa9 | lizmat++ | src/core/IO/Handle.pm: Make sure a bare IO::Handle doesn't warn Inspired by PR #726 by azryelryvel++ |
19:51 | |
kudo/nom: 199d261 | lizmat++ | src/core/native_array.pm: Temporary fix for infinilooping int @a.prepend |
20:09 | ||
kudo/nom: 9eb1fb4 | lizmat++ | src/core/native_array.pm: Fix generic signature of int @a.push|unshift Get them in line with List|Buf.push|unshift |
20:43 | ||
timotimo | lizmat: i wonder if we could/should get the generated intarray.STORE and numarray.STORE into NativeCall's types module, too? to go with CArray[int] and CArray[num] | 21:05 | |
lizmat | timotimo: possibly, I'm just focusing on not breaking too many things in one commit :-) | 21:06 | |
but basically get all of the Buf/Blob improvements of late into native arrays | |||
and optionally get support for native str arrays in there (if that would be ok for 6.c) | 21:07 | ||
timotimo | i like the sound of that in general :) | 21:09 | |
[Coke] | ah, time to update the resume. Will have to be sure to add Perl 6 to the list. | 21:11 | |
lizmat | resumé ? | 21:12 | |
[Coke] | Ayup. | 21:13 | |
r̗͞e͔͢s̩̤u̳̪m̸̞é̜ | 21:14 | ||
(I love that the one required accent happened to be correct there. :) | |||
lizmat | :-) | 21:15 | |
timotimo | ugh, a vulnerability in git servers and clients :| | ||
dalek | kudo/nom: 92c17e9 | lizmat++ | src/core/Exception.pm: Add class X::MustBeParametric |
21:41 | |
lizmat | jnthn: a mystery perhaps: | 22:09 | |
for ^10 { my int @a } only calls array[int].new once | |||
for ^10 { array[int].new } calls array[int].new 10 times | 22:10 | ||
is spesh seeing that the code in { my int @a } is dead after the first iteration, or is there something else spooky going on ? | |||
22:17
ilbot3 joined
|
|||
timotimo | [value] | 22:18 | |
- | |||
well, that's not so helpful | |||
oh | |||
at first i wondered why there was only a single block for both for loops | |||
but of course this is just one for loop, and it has a want-void and a want-value branch | 22:19 | ||
i'm not entirely sure how the QAST::Var with its single value child works in this case, especially since that just stringifies to an empty string | |||
but it could very well be that it has a pre-made array that it just clones for every run of the block | 22:20 | ||
much like every Block gets cloned before it gets called in the rest of the code | |||
- QAST::Op(p6capturelex) :code_object<?> :past_block<?> | |||
- QAST::Op(callmethod clone) | |||
- QAST::WVal(Block) :uninstall_if_immediately_used<?> :code_object<?> :past_block<?> | |||
^- an example of blocks being cloned | |||
lizmat | I wonder whether this is more general for each "my" variable in there | 22:24 | |
anyways, I find myself too tired to really think about it much anymore | |||
this also means that the 40x win is much less visible for loops like this :-( | 22:25 | ||
timotimo | well, we do have some special code to make "my int @a" work | ||
it's the same kind of thing that'd make "my %foo as Mix" or something work, if i'm not mistaken | |||
not "kind of thing", it's "the same thing" | 22:26 | ||
that's what i meant | |||
lizmat | for ^10 { if 0 { my int @a } } # actually calls .new once | ||
timotimo | i imagine that happens very early | ||
probably as soon as the @a is added to the lexical scope | |||
hmm | |||
lizmat | yeah, seems to run at compile time | 22:27 | |
timotimo | but that could mean trouble when we have things that don't serialize well? | ||
it's probably doable to move that initialization to module-load-time ... CHECK time i guess? | |||
lizmat | perhaps, it definitly does run at BEGIN time | 22:28 | |
anyways, calling it a day... | |||
good night! | 22:29 | ||
timotimo | gnite! | ||
dalek | p: d42b516 | timotimo++ | src/vm/moar/HLL/Backend.nqp: refactor profile dumping, prepare for heap profiles |
23:52 | |
timotimo | ^- when --profile=heap is given (and when the moar version installed supports it, i.e. the heap-profiler branch is built) you'll get a heap-foobar.json file with the heap data | 23:53 |