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. |