00:22 cognominal joined 01:47 ilbot3 joined 01:49 cognominal joined 04:16 skids joined 06:25 sno joined
dalek kudo/nom: d9b19da | lizmat++ | src/core/List.pm:
Temporary fix for RT #128123
07:54
synopsebot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=128123
08:10 RabidGravy joined
lizmat wonders whether we have some introduction into the concepts of NFG somewhere (other then specs) 08:23
09:05 |Tux| joined
dalek kudo/nom: 64e3609 | peschwa++ | .travis.yml:
Seperate installation from Configure.pl and make test for travis.
09:42
psch ...i think that should work now :S 09:43
stmuk_ oddly some of best NFG explanation I found was in some old parrot (!) docs 09:55
jnthn I think I blogged some NFG explanation back when I was working on it 10:00
If you can find it and it doesn't suck, feel free to pillage it for docs or something
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:12
dalek kudo/nom: 67d3b69 | lizmat++ | src/core/Cursor.pm:
Streamline Cursor.INTERPOLATE

  - don't use default if never called without that parameter
  - use native int / str wherever possible
  - use postfix while for loops whenever possible
  - make no modifier case have the fewest checks
  - use setelems/bindpos instead of push if we know size in advance
  - simply alias in case of sequential matching, rather than copying
  - don't use named parameters when used as positionals
  - don't keep setting flag in loop if we can do once after the loop
  - don't use return when we don't have to
75bfcc2 | (Matt Oates)++ | docs/release_guide.pod: insure != ensure
Fixed homophone typo
10:37
lizmat (sorry dalek)
github.com/rakudo/rakudo/commit/67d3b69 # for your convenience
moritz lizmat++ # killing dalek with awesome commits 10:38
tadzik commits worth killing for 10:39
kudo/nom: 191113b | lizmat++ | docs/release_guide.pod:
Merge pull request #765 from MattOates/patch-1

insure != ensure
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 p: 9be3e93 | (Pawel Murias)++ | src/vm/js/ (2 files):
[js] Simplify the way savecapture works. It's not supposed to be used together with binding using a signature.
p: 6067144 | (Pawel Murias)++ | src/vm/js/nqp-runtime/nqp-exception.js:
[js] Exceptions boolify to true.
p: bc47382 | (Pawel Murias)++ | t/nqp/44-try-catch.t:
Test that exceptions boolify to true.
p: 6272a18 | (Pawel Murias)++ | src/vm/js/Compiler.nqp:
[js] Implement contvars.
lizmat masak: according to my dictionary, "insure" is all about monetary compensation 11:46
11:54 TimToady joined
masak sense 2 at www.thefreedictionary.com/insure is what I'm talking about. 11:56
tomboy64 with 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
bpaste.net/show/c432a82542ac <--- this is the failure
there is no libjnidispatch.so provided with nqp? how is the native-binding achieved? 12:00
dalek kudo/nom: dc7346b | lizmat++ | src/core/Map.pm:
Make Map.kv about 10% faster

  - use STATEMENT_LIST where possible
  - don't use a tmp for the iterator
12:16
lizmat afk& 12:19
dalek p: 6740109 | (Pawel Murias)++ | t/qast/01-qast.t:
Test the contvar QAST::Var decl condvar
12:25
p: cc49750 | (Pawel Murias)++ | src/vm/js/ (3 files):
[js] Implement nqp::{ctx, ctxcaller} and $ctx<$foo_var>.
p: e09d1fa | (Pawel Murias)++ | src/vm/js/ (3 files):
[js] Stub a lot of ops.
p: b57435c | (Pawel Murias)++ | t/nqp/67-container.t:
Test nqp::isrwcont on a code_pair container.
12:26 pmurias joined 12:39 perlpilot joined 12:45 brrt joined
dalek p: a499c5f | peschwa++ | src/vm/jvm/runtime/org/perl6/nqp/runtime/Ops.java:
Fix an oversight in coerce_{n2i,i2n}, pmurias++
13:04
psch github.com/perl6/nqp/blob/master/t...gint.t#L91 i don't see how i can make that test pass on nqp-j 13:18
getattr has to return something boxed
well, currently at least 13:23
i suppose i *could* change the return type to Object...
oh duh, i'm misunderstanding it apparently 13:26
hm, i suppose that means the actual question is "how do i know what to box the BigInteger in" 13:27
jnthn psch: Even REPRs that'd like to be flattened into another by default can exist on their own too 13:28
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('
bigint') still has the vm-type boxed inside that REPR
hm, i'm still missing something 13:35
like, the $box_val_3 in that test line has a BigInteger in field_0 13:36
so there's no way for me to know as which type it was put there
because the newtype 'TestBigInt' from the beginning of the file is probably not the only existing type with repr bigint
well, P6bigint, but still
tomboy64 bpaste.net/show/97d1183e286c <--- would this have any chance making it into rakudo's tree? 14:00
ugh
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:01
psch, jnthn ^ 14:02
heh
besides it not working -.-
nine tomboy64: I'd forget about the Env module and just use %ENV{RAKUDO_LIBJNIDISPATCH_DIR} consistently 14:17
tomboy64 okay 14:23
stmuk_ wasn't someone here trying to package on fedora? 14:24
14:35 sortiz joined
jnthn TimToady: If I understand correctly, github.com/perl6/nqp/pull/284 saves about 330KB? :) 14:51
d'oh 14:52
timotimo: ^^
dalek p: e3603d4 | timotimo++ | src/vm/moar/QAST/QASTOperationsMAST.nqp:
make mappers in MASTOperations cheaper

  * get rid of an extra level of closuring
  * remove the completely unused :mapper argument
  * move check of "ret" value out of moarop_mapper
  * make return value of moarop_mapper immediately usable
in a random test program, this takes moarop_mapper frames down from 368,016 bytes to 336,600 bytes and removes add_core_moarop_mapping and add_hll_moarop_mapping from the list completely (weighing 286,688 bytes and 16,008 bytes respectively)
14:54
jnthn Hm, no, not quite that much it turns out 14:56
Or at least, just glancing process manager, 100KB off working set, and 72KB off private 14:57
Still, about 1% off NQP's base memory, which is welcome :) 14:58
pmurias it's always nice when optimalizations simplify code :) 15:22
jnthn That too :) 15:23
dalek p: 3948937 | (Pawel Murias)++ | src/vm/js/ (2 files):
[js] Implement nqp::hllize.
15:44
p: fea5f99 | (Pawel Murias)++ | t/qast/01-qast.t:
Test nqp::hllize.
p: 4e16fd4 | (Pawel Murias)++ | src/vm/js/ (2 files):
[js] Make nqp::bindcurhllsym/nqp::getcurhllsym use the hll language of the compilation unit.
p: 73befe5 | (Pawel Murias)++ | t/qast/01-qast.t:
Test that bindcurhllsym/getcurhllsym use the hll language of the compunit.
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
timotimo could be we're not getting the benefit because of fragmentation in the FSA
psch which means it shouldn't return a SMO, but Object..?
ah, no, void get_attribute also boxes 16:03
welp, i've mostly again just been uninformed what data is available, it seems vOv 16:06
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:09
|Tux| This is Rakudo version 2016.04-155-gdc7346b built on MoarVM version 2016.04-26-g1088538 16:11
test 21.365
test-t 13.643
csv-parser 36.199
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:35
Doing the same outside the setting compiles just fine. 16:36
In case anyone wonders: the '$sig' is because my $sig := $req.code.signature.perl; fails with a somewhat mysterious error in .perl. 16:38
ugexe i wonder if its at all related to whatever the issue with using `proto` before settings 17:29
dalek p: 77fa587 | niner++ | / (2 files):
Hook up new bytecode loading ops

Will be usefull for the new precompilation store implementation.
17:49
nine What's odd is that I can put one of the multi candidates into the role as required non-multi method. 18:03
18:30 sno joined
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:43
timotimo ugh 18:44
psch that sounds like a lot of fun 18:48
nine Maybe I should just forget about using multis for that :/ 18:49
dalek kudo/nom: a31ab3b | lizmat++ | src/core/Hash.pm:
Make Hash.push|append about 5% faster
19:13
kudo/precomp-store-redesign: 90613f7 | niner++ | / (2 files):
Implement CompUnit::Loader.load-precompilation

Needs an NQP bump
19:25
nine @all: the precomp-store-redesign branch is now ready for testing!
19:25 dalek joined
sortiz nine++ 19:26
[Coke] nine++ 19:28
lizmat nine: could we bump nqp regardless ? 19:32
nine lizmat: the bump is included in the commit. I just wrote that as a reminder for me 19:36
psch nine: "Error while compiling, type X::Undeclared\n suggestions: ()\n symbol: CompUnit::PrecompilationUnit\n what: Type" 19:46
nine: that is r-j, though, so...
nine psch: your branch might be outdated. I initially forgot to add that file but have rebased since
psch nine: i pulled after 19:25 < nine> @all: the precomp-store-redesign branch is now ready for testing! 19:47
dalek kudo/precomp-store-redesign: bfcc160 | niner++ | src/core/CompUnit/PrecompilationRepository.pm:
Fix "no precompilation;"

Need to detect that precompilation was aborted without error and not try to access the byte code file.
nine If you pull again now, you should arrive at bfcc1607d9f4b39d4483c4b26d3f267d31dc6d1f
psch yup
psch cleans and reruns Configure.pl 19:48
nine oh yes, of course you'll need Configure.pl
or config.status at least
psch well, i did that before... :)
'git clean -xdf && perl Configure.pl --backends=$be --gen-nqp --make-install' is pretty much my install mantra 19:49
where $be is either "jvm" or "jvm,moar --gen-moar"
nine psch: oh, I forgot to change the Makefile-JVM.in 19:50
dalek kudo/precomp-store-redesign: 2ae6306 | niner++ | tools/build/Makefile-JVM.in:
Fixup for "Introduce CompUnit::PrecompilationUnit"
19:51
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 ;)
nine So much code changed, it may as well be. At least I'm not using FIRST anymore 19:59
psch well, i do know why the FIRST issue happens, fwiw... 20:00
i have no clue how to fix it though
nine psch: how do I map an op that doesn't return anything? 20:03
psch nine: looks like takedispatcher is an example 20:11
nine: although the mapping does some extra magic apparently... let me look for a different example
nine: looks like die_s to die_s_c is the easiest example 20:13
nine: that is, nqp::die_s maps to void die_s_C
tr/C/c/
nine But the mapping still specifies an $RT_STR result? 20:14
psch yeah, it does
i mean, you could probably try to stuff $RT_VOID there instead
all i know is that die_s works vOv 20:15
nine Seems like javac likes my additions to nqp. Let's give rakudo a try 20:23
Cannot call method 'prefix' on a null object 20:29
So at least we're not worse than before...
psch nine++ 20:31
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
nine: something along the lines of $*REPO.repo-chain.map(*.path-spec).grep(* !~~ / { $path } /).join instead of just join as it is now 20:39
...i think it's not actually $path.path-spec, is it? $path is an IO::Path... :S 20:41
nine This line? %ENV<RAKUDO_PRECOMP_WITH> = $*REPO.repo-chain.map(*.path-spec).join(','); 20:42
psch nine: yeah, exactly 20:43
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
which seems kind of... bad? 'cause precomp might need to rely on existing modules, right?
no idea what's behind that though, as i said... :)
20:50 TimToady joined
nine psch: have you tried removing the #?if jvm in CompUnit::RepositoryRegistry::setup-repositories? 20:54
psch nine: no, i haven't. didn't see it 20:55
nine Ok, doesn't make a difference. 21:12
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:14
dalek kudo/nom: bffc3ae | lizmat++ | src/core/Pair.pm:
Remove superfluous .list & fix Pair.antipairs
21:16
nine Oh, it is. It's just the STDERR capturing that changes the order of the output
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:31
Yep, I get a NPE trying to note $custom-lib 21:37
And I think, I even know why. Of course the real mystery is why it doesn't break on moar 21:39
21:40 pmurias_ joined
psch nine: i'd hunch at VMNull being an actual HLL type on moar, but vm-level null on jvm 21:40
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 :)
psch getting the moar behavior to jvm is another non-trivial, far from finished, thing on my list 21:42
next to getattr
those are two big things where nqp-j does things in a way that demands much more rigor
nine - nqp::bindkey($custom-lib,nqp::iterkey_s(pair),
- nqp::atkey($repos,normalize(nqp::iterval(pair))));
+ my $repo := nqp::atkey($repos, normalize(nqp::iterval(pair)));
+ nqp::bindkey($custom-lib, nqp::iterkey_s(pair), $repo) unless nqp::isnull($repo);
Gets us to "java.lang.RuntimeException: This type does not support positional operations" in slurp-rest 21:43
psch huh
that's what i got with my VMNull attempts, too
during nqp-j build
which is probably just a conincidence and not meaningful :) 21:44
nine I guess so.
Wow, it's late! Really have to stop now and enjoy my bed :)
Has been fun playing with you ;)
timotimo yay 21:46
gnite, nine :)
good work today
psch g'night nine++
nine: looks like it's an edge case for moar *not* to die there, see github.com/rakudo/rakudo/commit/64...t-17438234 22:05
hm, that GH comment was three hours ago, apparently
dalek p/fewer_closures_in_mast_operations: 99938e8 | timotimo++ | src/vm/moar/QAST/QASTOperationsMAST.nqp:
use a different moarop mapper for core ops
23:45
p/fewer_closures_in_mast_operations: cd63dfd | timotimo++ | src/vm/moar/QAST/QASTOperationsMAST.nqp:
only 1/4th of ops have $moarop different from $op.