Perl 6 - the future is here, just unevenly distributed

IRC log for #p6dev, 2016-03-23

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

All times shown according to UTC.

Time Nick Message
00:26 BenGoldberg joined #p6dev
00:42 synopsebot6 joined #p6dev
01:07 lizmat joined #p6dev
01:25 geekosaur joined #p6dev
02:47 ilbot3 joined #p6dev
02:47 Topic for #p6dev is now Perl 6 language and compiler development
05:20 synopsebot6 joined #p6dev
05:23 synopsebot6 joined #p6dev
07:41 [Tux] test            20.841
07:41 [Tux] test-t          12.436
07:41 [Tux] csv-parser      25.131
07:55 TimToady joined #p6dev
08:22 FROGGS joined #p6dev
10:23 RabidGravy joined #p6dev
11:19 dalek rakudo/nom: 7cbf2d3 | skids++ | src/core/Range.pm:
11:19 dalek rakudo/nom: More Range fixes/optimizations
11:19 dalek rakudo/nom:
11:19 dalek rakudo/nom:   Make Range.EXISTS-POS properly handle negative indices
11:19 dalek rakudo/nom:   Optimize Range.AT-POS for integer range from O(index) to O(1)
11:19 dalek rakudo/nom:     Note that there are no real-world constraints allowing unbox_i on this path
11:19 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/7cbf2d302c
11:19 dalek rakudo/nom: 176285f | lizmat++ | src/core/Range.pm:
11:19 dalek rakudo/nom: Merge pull request #728 from skids/range
11:19 dalek rakudo/nom:
11:19 dalek rakudo/nom: More Range fixes/optimizations
11:19 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/176285faee
11:20 timotimo ^- i am OK with this
11:22 lizmat so was I  :-)
12:10 perlpilot_ joined #p6dev
12:11 colomon joined #p6dev
12:12 dalek rakudo/nom: 08a7603 | lizmat++ | src/core/Str.pm:
12:12 dalek rakudo/nom: Make <96 97 c>.chrs give a better error message
12:12 dalek rakudo/nom:
12:12 dalek rakudo/nom: Type check failed in converting element #2 to .chr; expected Int but got Str ("c")
12:12 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/08a760304f
12:14 psch so i was looking at #125577, and thought "hey, maybe can just remove that jvm-specific code and do what moar does!"
12:14 synopsebot6 Link:  https://rt.perl.org/rt3//Public/Bug/Display.html?id=125577
12:14 psch and it actually *worked*
12:14 psch at least for that file
12:15 psch then i decided to check for other files in S12-attributes that use .clone
12:15 psch and S12-attributes/instance.t also does, but NPE'd with my change
12:15 psch which of course made me stash my changes and rebuild nom HEAD
12:16 psch but hey, that *also* NPE'd, so my patch is obviously perfectly fine... :)
12:18 psch ...okay, no point in make spectest.  the first 2 dozen files all report 'NO subtests run'...
12:24 psch lizmat: re 'make test', i did find out that binding of the $!call attribute for role Native is what dies
12:24 psch lizmat: i suspect that the REPR plays a role there, but...
12:37 mojca joined #p6dev
12:48 [Coke] nine: if I have a test file that says "use lib "lib"" and lib doesn't exist... lib gets created with a .precomp dir.
12:48 [Coke] that seems aggressive.
12:48 timotimo a bit
12:51 [Coke] (I'm making a sample git project for a git presentation and using perl 6 as the sample code, so I found this by doing a test first approach)
12:53 lizmat [Coke]: the problem is that a new repo needs to be made when installing modules for the first time...
12:53 lizmat and where that repo lives, is basically indicated with "use lib" at the moment
12:53 lizmat well, afaik
12:54 perlpilot use lib shouldn't install anything though.
12:55 lizmat no, but it creates a Repo object
12:55 lizmat nine knows more  :)
12:58 mojca left #p6dev
12:59 perlpilot [Coke]: I just tried to reproduce that behavior and I can not.
13:01 [Coke] perlpilot: my test file has: use lib 'lib';
13:01 [Coke] use Square;
13:01 [Coke] use Test;
13:01 [Coke] and Square didn't exist yet.
13:02 perlpilot ah.  okay.
13:04 perlpilot oddly, it only does that for the last directory that has been "use lib"d
13:05 perlpilot i.e.  use lib "does_not_exist", "nor_this";  use FooBarBaz;  # will create nor_this/.precomp
13:05 perlpilot or even ..  use lib "does_not_exist"; use lib "nor_this";  use FooBarBaz; # same as above
13:25 skids joined #p6dev
13:42 nine Oh, use lib "foo", "bar"; should be the equivalent to use lib "bar"; use lib "foo";
13:45 nine [Coke]: I agree. We shouldn't create a lib dir that doesn't exist yet.
13:46 dalek rakudo/repl6: b843735 | hoelzro++ | src/Perl6/Compiler.nqp:
13:46 dalek rakudo/repl6: REPL6: Fix -I processing when using REPL
13:46 dalek rakudo/repl6:
13:46 dalek rakudo/repl6: The -I option is processed in
13:46 dalek rakudo/repl6: CompUnit::RepositoryRegistry.setup-repositories upon the first eval
13:46 nine Should be a relatively simple fix once I've shaved this particularly felted yak.
13:46 dalek joined #p6dev
13:46 dalek Heuristic branch merge: pushed 31 commits to rakudo/repl6 by hoelzro
14:07 psch humm
14:07 psch m: use nqp; class A { has $.f is box_target is repr('bigint') }; say nqp::getattr(A.new, A, '$!f')
14:07 camelia rakudo-moar 08a760: OUTPUT«(Any)␤»
14:07 psch same code on r-j says "This representation does not support being a box target"
14:08 psch m: use NativeCall; use nqp; class A { has $.f is box_target is repr('NativeCall') }; say nqp::getattr(A.new, A, '$!f')
14:08 camelia rakudo-moar 08a760: OUTPUT«(Any)␤»
14:08 psch same there...
14:10 psch hrm, i suspect NativeCall does codegen shenanigans to overwrite sixmodel.REPR.generateBoxingMethods() with something non-throwy when it's used properly on nqp-j...
14:11 psch huh, no, reprs.NativeCall *already* overrides that...
14:11 psch ...why does it call the parent method?
14:22 timotimo joined #p6dev
14:24 [Tux] joined #p6dev
14:45 dalek rakudo/nom: c3446c0 | lizmat++ | src/core/Dateish.pm:
14:45 dalek rakudo/nom: Only integers live in these lookup lists
14:45 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/c3446c014e
14:46 timotimo that'll be worth a few bytes
14:50 lizmat yeah, only a few, but hopefully the atpos_i lookup is a bit faster than the atpos one ?
14:51 lizmat and it should be easier jittable, as we can now before hand the type of what atpos_i returns
14:52 timotimo it's only much better if it doesn't get boxed directly after lookup
14:52 timotimo which is a tiny bit likely
14:54 lizmat well, it would be nice if we could annotate methods returning natives  :-)
14:54 timotimo we can't?
14:55 timotimo well, !DAYS-IN-MONTH can also return Nil
14:55 lizmat nope, everything gets boxed on the way out
14:55 timotimo i mean, being allowed to return Nil or Failure through regular methods or subs, that's already a tiny bit bad
14:55 timotimo but in "returns int" annotated methods ... :|
14:56 lizmat I guess that method should just return 0
14:57 timotimo is there a good reason to allow Nil or Failure through methods/subs annotated to return a native int, num or str?
14:57 timotimo because if not, we can have a simpler return typecheck for that
14:58 lizmat I would think that they would disallow that
14:59 timotimo it's probably not noticably cheaper
14:59 dalek rakudo/nom: e57e631 | lizmat++ | src/core/IO/Handle.pm:
14:59 dalek rakudo/nom: Make IO::Handle.comb use native strings internally
14:59 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/e57e631a81
15:01 jnthn I don't think you can return Nil/Failure from a native...it should just blow up immediately inside the sub
15:01 jnthn (a returns native, that is)
15:12 AlexDaniel joined #p6dev
15:14 nine m: sub foo returns int { fail "noooo"; }; foo;
15:14 camelia rakudo-moar e57e63: OUTPUT«noooo␤  in sub foo at /tmp/TmG9X3wavu line 1␤  in block <unit> at /tmp/TmG9X3wavu line 1␤␤Actually thrown at:␤  in block <unit> at /tmp/TmG9X3wavu line 1␤␤»
15:15 * nine has always liked the empirical approach
15:16 timotimo m: sub foo returns int { fail "nooooo"; }; my $result = foo; say "alive"
15:16 camelia rakudo-moar e57e63: OUTPUT«alive␤»
15:17 timotimo so much for that
15:26 nine Oh...thanks for fixing my bug :)
15:30 colomon what happened to File::Copy?
15:30 colomon nevermind
15:31 * colomon accidentally tried to run the p5 version of the script he wanted in p6.
16:29 SrKeys joined #p6dev
17:26 pmurias joined #p6dev
17:26 dalek nqp: 4e9507f | (Pawel Murias)++ | src/vm/js/ (9 files):
17:26 dalek nqp: [js] Pass t/serialization/03-closures.t
17:26 dalek nqp:
17:26 dalek nqp: Implement serialization of closures.
17:26 dalek nqp:
17:26 dalek nqp: Disable the qregex test which started to just eat up all memory for some reason and the sprintf test which bitrotted.
17:26 dalek nqp: review: https://github.com/perl6/nqp/commit/4e9507f0d6
18:18 dalek nqp: 78a021d | (Pawel Murias)++ | src/vm/js/ (2 files):
18:18 dalek nqp: [js] Pass t/hll/06-sprintf.t.
18:18 dalek nqp:
18:18 dalek nqp: Support stringifing VMException.
18:18 dalek nqp: review: https://github.com/perl6/nqp/commit/78a021db04
19:15 camelia joined #p6dev
19:18 Hotkeys_ joined #p6dev
19:20 dalek joined #p6dev
19:30 [Coke] ok, work crunch is done, will definitely be able to cut a release this afternoon.
19:47 jnthn [Coke]++ :)
19:52 FROGGS joined #p6dev
20:33 colomon joined #p6dev
21:38 colomon joined #p6dev
21:44 geekosaur joined #p6dev
21:56 dalek nqp/use-setdebugtypename: e400d72 | jnthn++ | src/vm/moar/stage0/ (11 files):
21:56 dalek nqp/use-setdebugtypename: Update MoarVM stage0 bootstrap.
21:56 dalek nqp/use-setdebugtypename:
21:56 dalek nqp/use-setdebugtypename: This means we'll be able to use the nqp::setdebugtypename op in NQP's
21:56 dalek nqp/use-setdebugtypename: MOP.
21:56 dalek nqp/use-setdebugtypename: review: https://github.com/perl6/nqp/commit/e400d72a8a
21:56 dalek nqp/use-setdebugtypename: 77005fc | jnthn++ | src/how/NQP (5 files):
21:56 dalek nqp/use-setdebugtypename: Scatter various nqp::setdebugtypename.
21:56 dalek nqp/use-setdebugtypename: review: https://github.com/perl6/nqp/commit/77005fc915
22:19 jnthn For those who don't follow #moarvm: the heap snapshots and analyzer I've been working on can do some basic stuff, including explaining the source of the EVAL memory leak... https://gist.github.com/jnthn/f67379ff234861729f34
22:23 timotimo how does the analyzer perform?
22:23 timotimo did you have to wait long for the result you've shown there?
22:23 jnthn Nah
22:24 jnthn It's actually slowest to start up
22:24 jnthn For entirely fixable reasons
22:24 timotimo cool :)
22:24 jnthn With the NQP sized snapshots you're barely waiting around more than a couple of seconds.
22:26 jnthn The .Int thing I put into Rakudo yesterday removed one bottleneck
22:26 jnthn The MoarVM GC blocking fix I put in earlier removed a second major one
22:26 jnthn So now I'm basically down to just one that feels annoying.
22:27 jnthn I'm sure we'll be able to tune it more beyond that though.
22:28 jnthn But yeah, if you have an idea where the compute-intensive things are and write carefully, and take advantage of multi-core stuff, you can get some nice wins :)
22:29 jnthn The frontend shell is just "whatever, write cute Perl 6": https://github.com/jnthn/p6-app-moarvm-heapanalyzer/blob/master/lib/App/MoarVM/HeapAnalyzer/Shell.pm6
22:29 jnthn While the core processing model has careful use of native/packed arrays, binding, and parallel processing: https://github.com/jnthn/p6-app-moarvm-heapanalyzer/blob/master/lib/App/MoarVM/HeapAnalyzer/Model.pm6
22:31 timotimo :)
22:31 jnthn Note, zero dropping down to nqp:: to get acceptable performance :)
22:31 jnthn Anyways, enough for today :)
22:32 timotimo do you want to drop me a few little tasks?
22:32 timotimo i don't have energy to do anything well, but i can at least try
22:32 timotimo i don't want to keep feeling useless :|
22:33 jnthn timotimo: Yeah, more things could do with unmanaged_size
22:33 timotimo aye, that was the obvious part :)
22:33 jnthn You did P6bigint
22:34 timotimo i did, yes
22:34 jnthn Biggest targets are MVMHash, MVMStaticFrame (the list of lexicals, for example), MultiDimArray, MVMCompUnit (has various long C arrays), SCRef (the same)...
22:34 timotimo i've already got MDA open in an editor
22:35 jnthn MVMMultiCache too :)
22:35 timotimo mhm
22:35 jnthn Those are all the ones on my todo list
22:35 timotimo are we interested at all in "allocated" vs "used"?
22:35 jnthn Not at the moment
22:35 timotimo 'k
22:36 jnthn Maybe in the future... :)
22:36 jnthn Anyway, I should relax :)
22:36 timotimo do you have a word or two of design advice for "attribute names and such"?
22:36 timotimo ah. yes, you should :)
22:36 jnthn Yeah... Another REPR function
22:36 jnthn You pass it the MVMHeapSnapshot or so
22:37 jnthn And it can call the functions like MVM_profile_heap_add_collectable_rel_vm_str
22:37 timotimo ah, so that it can grab some strings, yeah
22:37 jnthn (e.g. with P6opaque attribute names)
22:37 jnthn Or MVM_profile_heap_add_collectable_rel_idx in MVMArray
22:37 timotimo that's a/the function that tells a reference what name it should have, yeah?
22:37 timotimo wow, that's super simple! :)
22:38 jnthn It adds a reference to the collectable, and if the collectable isn't in the seen hash does the right thing, and if it's NULL ignores it totally.
22:38 jnthn So you don't have to guard against it
22:38 jnthn Yeah, I already did most of the work ;)
22:38 timotimo fantastic
22:38 timotimo have a great relaxation ;)
22:38 jnthn Thanks! :)
22:38 jnthn Have fun!
22:38 jnthn o/
22:38 timotimo i'll be fed some food now, see ya later!
23:06 [Tux] joined #p6dev
23:18 AlexDaniel joined #p6dev
23:31 BenGoldberg joined #p6dev
23:33 BenGoldberg joined #p6dev
23:41 geekosaur joined #p6dev

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