[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