Perl 6 - the future is here, just unevenly distributed

IRC log for #p6dev, 2016-03-16

| Channels | #p6dev index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

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

| Channels | #p6dev index | Today | | Search | Google Search | Plain-Text | summary