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