Perl 6 - the future is here, just unevenly distributed

IRC log for #p6dev, 2016-05-11

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

All times shown according to UTC.

Time Nick Message
00:22 cognominal joined #p6dev
01:47 ilbot3 joined #p6dev
01:47 Topic for #p6dev is now Perl 6 language and compiler development
01:49 cognominal joined #p6dev
04:16 skids joined #p6dev
06:25 sno joined #p6dev
06:25 sno joined #p6dev
07:54 dalek rakudo/nom: d9b19da | lizmat++ | src/core/List.pm:
07:54 dalek rakudo/nom: Temporary fix for RT #128123
07:54 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/d9b19da7b4
07:54 synopsebot6 Link:  https://rt.perl.org/rt3//Public/Bug/Display.html?id=128123
08:10 RabidGravy joined #p6dev
08:23 * lizmat wonders whether we have some introduction into the concepts of NFG somewhere (other then specs)
09:05 |Tux| joined #p6dev
09:42 dalek rakudo/nom: 64e3609 | peschwa++ | .travis.yml:
09:42 dalek rakudo/nom: Seperate installation from Configure.pl and make test for travis.
09:42 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/64e3609e6c
09:43 psch ...i think that should work now :S
09:55 stmuk_ oddly some of best NFG explanation I found was in some old parrot (!) docs
10:00 jnthn I think I blogged some NFG explanation back when I was working on it
10:00 jnthn If you can find it and it doesn't suck, feel free to pillage it for docs or something
10:12 stmuk_ I was thinking of ftp://ftp.uni-siegen.de/pub/parrot-docs/html/docs/pdds/pdd28_strings.pod.html (maybe some definitions can be lifted if they still apply).
10:37 dalek rakudo/nom: 67d3b69 | lizmat++ | src/core/Cursor.pm:
10:37 dalek rakudo/nom: Streamline Cursor.INTERPOLATE
10:37 dalek rakudo/nom:
10:37 dalek rakudo/nom: - don't use default if never called without that parameter
10:37 dalek rakudo/nom: - use native int / str wherever possible
10:37 dalek rakudo/nom: - use postfix while for loops whenever possible
10:37 dalek rakudo/nom: - make no modifier case have the fewest checks
10:37 dalek rakudo/nom: - use setelems/bindpos instead of push if we know size in advance
10:37 dalek rakudo/nom: - simply alias in case of sequential matching, rather than copying
10:37 dalek rakudo/nom: - don't use named parameters when used as positionals
10:37 dalek rakudo/nom: - don't keep setting flag in loop if we can do once after the loop
10:37 dalek rakudo/nom: - don't use return when we don't have to
10:37 lizmat (sorry dalek)
10:37 lizmat https://github.com/rakudo/rakudo/commit/67d3b69  # for your convenience
10:38 moritz lizmat++ # killing dalek with awesome commits
10:39 tadzik commits worth killing for
10:43 dalek rakudo/nom: 75bfcc2 | (Matt Oates)++ | docs/release_guide.pod:
10:43 dalek rakudo/nom: insure != ensure
10:43 dalek rakudo/nom:
10:43 dalek rakudo/nom: Fixed homophone typo
10:43 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/75bfcc23a3
10:43 dalek rakudo/nom: 191113b | lizmat++ | docs/release_guide.pod:
10:43 dalek rakudo/nom: Merge pull request #765 from MattOates/patch-1
10:43 dalek rakudo/nom:
10:43 dalek rakudo/nom: insure != ensure
10:43 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/191113be74
11:37 masak I don't mind the homophone fix, but I don't believe using "insure" to mean "ensure"/"assure" is all that wrong.
11:37 dalek nqp: 9be3e93 | (Pawel Murias)++ | src/vm/js/ (2 files):
11:37 dalek nqp: [js] Simplify the way savecapture works. It's not supposed to be used together with binding using a signature.
11:37 dalek nqp: review: https://github.com/perl6/nqp/commit/9be3e93f5b
11:37 dalek nqp: 6067144 | (Pawel Murias)++ | src/vm/js/nqp-runtime/nqp-exception.js:
11:37 dalek nqp: [js] Exceptions boolify to true.
11:37 dalek nqp: review: https://github.com/perl6/nqp/commit/60671441da
11:37 dalek nqp: bc47382 | (Pawel Murias)++ | t/nqp/44-try-catch.t:
11:37 dalek nqp: Test that exceptions boolify to true.
11:37 dalek nqp: review: https://github.com/perl6/nqp/commit/bc47382418
11:37 dalek nqp: 6272a18 | (Pawel Murias)++ | src/vm/js/Compiler.nqp:
11:37 dalek nqp: [js] Implement contvars.
11:37 dalek nqp: review: https://github.com/perl6/nqp/commit/6272a18e73
11:46 lizmat masak: according to my dictionary, "insure" is all about monetary compensation
11:54 TimToady joined #p6dev
11:56 masak sense 2 at http://www.thefreedictionary.com/insure is what I'm talking about.
11:59 tomboy64 with https://github.com/perl6/nqp/pull/281 i introduced a build failure for rakudo when building against the local jna, which is linked against a local libjnidispatch.so. is someone familiar with the jvm backend? any suggestion where to look to include the proper path?
11:59 tomboy64 https://bpaste.net/show/c432a82542ac <--- this is the failure
12:00 tomboy64 there is no libjnidispatch.so provided with nqp? how is the native-binding achieved?
12:16 dalek rakudo/nom: dc7346b | lizmat++ | src/core/Map.pm:
12:16 dalek rakudo/nom: Make Map.kv about 10% faster
12:16 dalek rakudo/nom:
12:16 dalek rakudo/nom: - use STATEMENT_LIST where possible
12:16 dalek rakudo/nom: - don't use a tmp for the iterator
12:16 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/dc7346b46a
12:19 lizmat afk&
12:25 dalek nqp: 6740109 | (Pawel Murias)++ | t/qast/01-qast.t:
12:25 dalek nqp: Test the contvar QAST::Var decl condvar
12:25 dalek nqp: review: https://github.com/perl6/nqp/commit/67401094e7
12:25 dalek nqp: cc49750 | (Pawel Murias)++ | src/vm/js/ (3 files):
12:25 dalek nqp: [js] Implement nqp::{ctx, ctxcaller} and $ctx<$foo_var>.
12:26 dalek nqp: review: https://github.com/perl6/nqp/commit/cc497503aa
12:26 dalek nqp: e09d1fa | (Pawel Murias)++ | src/vm/js/ (3 files):
12:26 dalek nqp: [js] Stub a lot of ops.
12:26 dalek nqp: review: https://github.com/perl6/nqp/commit/e09d1fa475
12:26 dalek nqp: b57435c | (Pawel Murias)++ | t/nqp/67-container.t:
12:26 dalek nqp: Test nqp::isrwcont on a code_pair container.
12:26 dalek nqp: review: https://github.com/perl6/nqp/commit/b57435c774
12:26 pmurias joined #p6dev
12:39 perlpilot joined #p6dev
12:45 brrt joined #p6dev
13:04 dalek nqp: a499c5f | peschwa++ | src/vm/jvm/runtime/org/perl6/nqp/runtime/Ops.java:
13:04 dalek nqp: Fix an oversight in coerce_{n2i,i2n}, pmurias++
13:04 dalek nqp: review: https://github.com/perl6/nqp/commit/a499c5f08e
13:18 psch https://github.com/perl6/nqp/blob/master/t/nqp/60-bigint.t#L91 i don't see how i can make that test pass on nqp-j
13:18 psch getattr has to return something boxed
13:23 psch well, currently at least
13:23 psch i suppose i *could* change the return type to Object...
13:26 psch oh duh, i'm misunderstanding it apparently
13:27 psch hm, i suppose that means the actual question is "how do i know what to box the BigInteger in"
13:28 jnthn psch: Even REPRs that'd like to be flattened into another by default can exist on their own too
13:29 jnthn BOOTInt uses the P6int REPR as a box type, but it also represents int in Perl 6 which inlines into a surrounding object.
13:29 psch jnthn: yeah, i think that was my misunderstanding.  a type with REPR('
13:29 psch bigint') still has the vm-type boxed inside that REPR
13:35 psch hm, i'm still missing something
13:36 psch like, the $box_val_3 in that test line has a BigInteger in field_0
13:36 psch so there's no way for me to know as which type it was put there
13:36 psch because the newtype 'TestBigInt' from the beginning of the file is probably not the only existing type with repr bigint
13:36 psch well, P6bigint, but still
14:00 tomboy64 https://bpaste.net/show/97d1183e286c <--- would this have any chance making it into rakudo's tree?
14:00 tomboy64 ugh
14:01 tomboy64 https://bpaste.net/show/a128f11cb119 <--- that's actually the patch i am applying. would that have any chance of making it into rakudo's tree?
14:02 tomboy64 psch, jnthn ^
14:02 tomboy64 heh
14:02 tomboy64 besides it not working -.-
14:17 nine tomboy64: I'd forget about the Env module and just use %ENV{RAKUDO_LIBJNIDISPATCH_DIR} consistently
14:23 tomboy64 okay
14:24 stmuk_ wasn't someone here trying to package on fedora?
14:35 sortiz joined #p6dev
14:51 jnthn TimToady: If I understand correctly, https://github.com/perl6/nqp/pull/284 saves about 330KB? :)
14:52 jnthn d'oh
14:52 jnthn timotimo: ^^
14:54 dalek nqp: e3603d4 | timotimo++ | src/vm/moar/QAST/QASTOperationsMAST.nqp:
14:54 dalek nqp: make mappers in MASTOperations cheaper
14:54 dalek nqp:
14:54 dalek nqp: * get rid of an extra level of closuring
14:54 dalek nqp: * remove the completely unused :mapper argument
14:54 dalek nqp: * move check of "ret" value out of moarop_mapper
14:54 dalek nqp: * make return value of moarop_mapper immediately usable
14:54 dalek nqp:
14:54 dalek nqp: in a random test program, this takes moarop_mapper frames
14:54 dalek nqp: down from 368,016 bytes to 336,600 bytes and removes
14:54 dalek nqp: add_core_moarop_mapping and add_hll_moarop_mapping from
14:54 dalek nqp: the list completely (weighing 286,688 bytes and 16,008
14:54 dalek nqp: bytes respectively)
14:54 dalek nqp: review: https://github.com/perl6/nqp/commit/e3603d4b10
14:56 jnthn Hm, no, not quite that much it turns out
14:57 jnthn Or at least, just glancing process manager, 100KB off working set, and 72KB off private
14:58 jnthn Still, about 1% off NQP's base memory, which is welcome :)
15:22 pmurias it's always nice when optimalizations simplify code :)
15:23 jnthn That too :)
15:44 dalek nqp: 3948937 | (Pawel Murias)++ | src/vm/js/ (2 files):
15:44 dalek nqp: [js] Implement nqp::hllize.
15:44 dalek nqp: review: https://github.com/perl6/nqp/commit/39489372fe
15:44 dalek nqp: fea5f99 | (Pawel Murias)++ | t/qast/01-qast.t:
15:44 dalek nqp: Test nqp::hllize.
15:44 dalek nqp: review: https://github.com/perl6/nqp/commit/fea5f9955c
15:44 dalek nqp: 4e16fd4 | (Pawel Murias)++ | src/vm/js/ (2 files):
15:44 dalek nqp: [js] Make nqp::bindcurhllsym/nqp::getcurhllsym use the hll language of the compilation unit.
15:44 dalek nqp: review: https://github.com/perl6/nqp/commit/4e16fd446e
15:44 dalek nqp: 73befe5 | (Pawel Murias)++ | t/qast/01-qast.t:
15:44 dalek nqp: Test that bindcurhllsym/getcurhllsym use the hll language of the compunit.
15:44 dalek nqp: review: https://github.com/perl6/nqp/commit/73befe524c
16:00 timotimo jnthn: right, i only used the heap explorer's "top frames by size" to compare; i was expecting the frames that disappear from the top there would be actually gone from memory usage
16:00 psch that's the thing, isn't.  getattr as a drop-in replacement for getattr_{s,i,n} on nqp-j currently boxes, but shouldn't
16:00 timotimo could be we're not getting the benefit because of fragmentation in the FSA
16:00 psch which means it shouldn't return a SMO, but Object..?
16:03 psch ah, no, void get_attribute also boxes
16:06 psch welp, i've mostly again just been uninformed what data is available, it seems vOv
16:09 psch i should probably also note down "did you properly look at the moar implementation yet?" as a default question to ask myself before asking here :P
16:11 |Tux| This is Rakudo version 2016.04-155-gdc7346b built on MoarVM version 2016.04-26-g1088538
16:11 |Tux| test            21.365
16:11 |Tux| test-t          13.643
16:11 |Tux| csv-parser      36.199
16:35 nine Ok, I don't get it: the CompUnit::PrecompilationStore role requires a multi method store(...) with 3 candidates to be implemented. The CompUnit::PrecompilationStore::File class does exactly that (I even copied the definitions), yet compilation fails with Multi method 'store' with signature $sig must be implemented by CompUnit::PrecompilationStore::File because it is required by a role
16:36 nine Doing the same outside the setting compiles just fine.
16:38 nine In case anyone wonders: the '$sig' is because my $sig := $req.code.signature.perl; fails with a somewhat mysterious error in .perl.
17:29 ugexe i wonder if its at all related to whatever the issue with using `proto` before settings
17:49 dalek nqp: 77fa587 | niner++ | / (2 files):
17:49 dalek nqp: Hook up new bytecode loading ops
17:49 dalek nqp:
17:49 dalek nqp: Will be usefull for the new precompilation store implementation.
17:49 dalek nqp: review: https://github.com/perl6/nqp/commit/77fa587307
18:03 nine What's odd is that I can put one of the multi candidates into the role as required non-multi method.
18:30 sno joined #p6dev
18:43 nine Ok, I "fixed" the error in grep that made .perl fail and now I get the "helpful" Multi method 'store' with signature Signature.new() must be implemented
18:44 timotimo ugh
18:48 psch that sounds like a lot of fun
18:49 nine Maybe I should just forget about using multis for that :/
19:13 dalek rakudo/nom: a31ab3b | lizmat++ | src/core/Hash.pm:
19:13 dalek rakudo/nom: Make Hash.push|append about 5% faster
19:13 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/a31ab3b84b
19:25 dalek rakudo/precomp-store-redesign: 90613f7 | niner++ | / (2 files):
19:25 dalek rakudo/precomp-store-redesign: Implement CompUnit::Loader.load-precompilation
19:25 dalek rakudo/precomp-store-redesign:
19:25 dalek rakudo/precomp-store-redesign: Needs an NQP bump
19:25 dalek rakudo/precomp-store-redesign: review: https://github.com/rakudo/rakudo/commit/90613f7c55
19:25 nine @all: the precomp-store-redesign branch is now ready for testing!
19:25 dalek joined #p6dev
19:26 sortiz nine++
19:28 [Coke] nine++
19:32 lizmat nine: could we bump nqp regardless ?
19:36 nine lizmat: the bump is included in the commit. I just wrote that as a reminder for me
19:46 psch nine: "Error while compiling, type X::Undeclared\n  suggestions: ()\n  symbol: CompUnit::PrecompilationUnit\n  what: Type"
19:46 psch nine: that is r-j, though, so...
19:46 nine psch: your branch might be outdated. I initially forgot to add that file but have rebased since
19:47 psch nine: i pulled after 19:25 < nine> @all: the precomp-store-redesign branch is now ready for testing!
19:47 dalek rakudo/precomp-store-redesign: bfcc160 | niner++ | src/core/CompUnit/PrecompilationRepository.pm:
19:47 dalek rakudo/precomp-store-redesign: Fix "no precompilation;"
19:47 dalek rakudo/precomp-store-redesign:
19:47 dalek rakudo/precomp-store-redesign: Need to detect that precompilation was aborted without error and not try
19:47 dalek rakudo/precomp-store-redesign: to access the byte code file.
19:47 dalek rakudo/precomp-store-redesign: review: https://github.com/rakudo/rakudo/commit/bfcc1607d9
19:47 nine If you pull again now, you should arrive at bfcc1607d9f4b39d4483c4b26d3f267d31dc6d1f
19:47 psch yup
19:48 * psch cleans and reruns Configure.pl
19:48 nine oh yes, of course you'll need Configure.pl
19:48 nine or config.status at least
19:48 psch well, i did that before... :)
19:49 psch 'git clean -xdf && perl Configure.pl --backends=$be --gen-nqp --make-install' is pretty much my install mantra
19:49 psch where $be is either "jvm" or "jvm,moar --gen-moar"
19:50 nine psch: oh, I forgot to change the Makefile-JVM.in
19:51 dalek rakudo/precomp-store-redesign: 2ae6306 | niner++ | tools/build/Makefile-JVM.in:
19:51 dalek rakudo/precomp-store-redesign: Fixup for "Introduce CompUnit::PrecompilationUnit"
19:51 dalek rakudo/precomp-store-redesign: review: https://github.com/rakudo/rakudo/commit/2ae6306e54
19:53 nine psch: though it will still not compile on JVM I'm afraid as I still need to hook up the loadbytecodefh or at least loadbytecodebuffer op
19:53 psch nine: aww, and here i was hoping you secretly fixed the 'Cannot call method "prefix" on a null object" issue ;)
19:59 nine So much code changed, it may as well be. At least I'm not using FIRST anymore
20:00 psch well, i do know why the FIRST issue happens, fwiw...
20:00 psch i have no clue how to fix it though
20:03 nine psch: how do I map an op that doesn't return anything?
20:11 psch nine: looks like takedispatcher is an example
20:11 psch nine: although the mapping does some extra magic apparently... let me look for a different example
20:13 psch nine: looks like die_s to die_s_c is the easiest example
20:13 psch nine: that is, nqp::die_s maps to void die_s_C
20:13 psch tr/C/c/
20:14 nine But the mapping still specifies an $RT_STR result?
20:14 psch yeah, it does
20:14 psch i mean, you could probably try to stuff $RT_VOID there instead
20:15 psch all i know is that die_s works vOv
20:23 nine Seems like javac likes my additions to nqp. Let's give rakudo a try
20:29 nine Cannot call method 'prefix' on a null object
20:29 nine So at least we're not worse than before...
20:31 psch nine++
20:38 nine If the line number is right, it's $repo that's the null object
20:38 psch nine: no idea if you recall it, but not including the target path (i.e. $path.path-spec) in line 188 in PrecompilationRepository is how i got that to work
20:39 psch nine: something along the lines of $*REPO.repo-chain.map(*.path-spec).grep(* !~~ / { $path } /).join instead of just join as it is now
20:41 psch ...i think it's not actually $path.path-spec, is it?  $path is an IO::Path... :S
20:42 nine This line? %ENV<RAKUDO_PRECOMP_WITH> = $*REPO.repo-chain.map(*.path-spec).join(',');
20:43 psch nine: yeah, exactly
20:43 psch nine: i took that to mean that it can't create the repo of the target if that's where we want to precomp to
20:43 psch which seems kind of... bad?  'cause precomp might need to rely on existing modules, right?
20:43 psch no idea what's behind that though, as i said... :)
20:50 TimToady joined #p6dev
20:54 nine psch: have you tried removing the #?if jvm in CompUnit::RepositoryRegistry::setup-repositories?
20:55 psch nine: no, i haven't.  didn't see it
21:12 nine Ok, doesn't make a difference.
21:14 nine Seems like the prefix thing is actually not the first issue: 3123  7598 RMD: Precomping /home/nine/rakudo/install/share/perl6/sources/2ACCA56EF5582D3ED623105F00BD76D7449263F7 failed: 256
21:16 dalek rakudo/nom: bffc3ae | lizmat++ | src/core/Pair.pm:
21:16 dalek rakudo/nom: Remove superfluous .list & fix Pair.antipairs
21:16 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/bffc3ae41b
21:16 nine Oh, it is. It's just the STDERR capturing that changes the order of the output
21:31 nine Now the line number points at my $pair-prefix := nqp::iterval(pair).prefix; which makes much more sense. So somehow the $custom-lib hash contains bogus values
21:37 nine Yep, I get a NPE trying to note $custom-lib
21:39 nine And I think, I even know why. Of course the real mystery is why it doesn't break on moar
21:40 pmurias_ joined #p6dev
21:40 psch nine: i'd hunch at VMNull being an actual HLL type on moar, but vm-level null on jvm
21:41 psch nine: if it "goes away" (fsvo) with an isnull check, that'd be a hint for to be right
21:41 nine Oh yes! Progress :)
21:42 psch getting the moar behavior to jvm is another non-trivial, far from finished, thing on my list
21:42 psch next to getattr
21:42 psch those are two big things where nqp-j does things in a way that demands much more rigor
21:42 nine -            nqp::bindkey($custom-lib,nqp::iterkey_s(pair),
21:42 nine -              nqp::atkey($repos,normalize(nqp::iterval(pair))));
21:42 nine +            my $repo := nqp::atkey($repos, normalize(nqp::iterval(pair)));
21:42 nine +            nqp::bindkey($custom-lib, nqp::iterkey_s(pair), $repo) unless nqp::isnull($repo);
21:43 nine Gets us to "java.lang.RuntimeException: This type does not support positional operations" in slurp-rest
21:43 psch huh
21:43 psch that's what i got with my VMNull attempts, too
21:43 psch during nqp-j build
21:44 psch which is probably just a conincidence and not meaningful :)
21:44 nine I guess so.
21:44 nine Wow, it's late! Really have to stop now and enjoy my bed :)
21:44 nine Has been fun playing with you ;)
21:46 timotimo yay
21:46 timotimo gnite, nine :)
21:46 timotimo good work today
21:46 psch g'night nine++
22:05 psch nine: looks like it's an edge case for moar *not* to die there, see https://github.com/rakudo/rakudo/commit/64e3609e6c29c3649656ee3da899b6b2fdcfecc0#commitcomment-17438234
22:05 psch hm, that GH comment was three hours ago, apparently
23:45 dalek nqp/fewer_closures_in_mast_operations: 99938e8 | timotimo++ | src/vm/moar/QAST/QASTOperationsMAST.nqp:
23:45 dalek nqp/fewer_closures_in_mast_operations: use a different moarop mapper for core ops
23:45 dalek nqp/fewer_closures_in_mast_operations: review: https://github.com/perl6/nqp/commit/99938e8ad5
23:45 dalek nqp/fewer_closures_in_mast_operations: cd63dfd | timotimo++ | src/vm/moar/QAST/QASTOperationsMAST.nqp:
23:45 dalek nqp/fewer_closures_in_mast_operations: only 1/4th of ops have $moarop different from $op.
23:45 dalek nqp/fewer_closures_in_mast_operations: review: https://github.com/perl6/nqp/commit/cd63dfdbfc

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