|
github.com/moarvm/moarvm | IRC logs at irclog.perlgeek.de/moarvm/today Set by moderator on 5 October 2013. |
|||
| jnthn | C:\\consulting\\rakudo\\nqp\\src\\stage1>\\consulting\\MoarVM\\install\\bin\\moar.exe nqp.moarvm -e "say('omg stage 1')" | 00:01 | |
| omg stage 1 | |||
| lue | Congratulations! Where's stage 2? :P | 00:04 | |
| jnthn | Working on it... | 00:05 | |
| lue | But seriously, glad you got that darn bug or two wrangled. | 00:09 | |
| jnthn | Yes, the GC ones took some finding... | 00:10 | |
|
00:18
cognominal joined
|
|||
| dalek | arVM: f2cb396 | jnthn++ | src/core/interp.c: objprimspec should tolerate null. |
00:18 | |
| jnthn | C:\\consulting\\rakudo\\nqp\\src\\stage2>\\consulting\\MoarVM\\install\\bin\\moar.exe nqp.moarvm -e "say('yay stage 2')" | 00:20 | |
| yay stage 2 | |||
| lue: ^^ :P | 00:21 | ||
| lue | That's cool. So it's like, what, a week until stage 8 is done? ;) | 00:22 | |
| TimToady | \\o/ | ||
| lue: I believe it's called stage "six" | 00:23 | ||
| lue | Stage 7 is where nqp can build compilers for other languages by itself. Stage 8 is where those compilers bootstrap :) | 00:24 | |
| jnthn | oops, it's 2:30 AM and I gotta get up tomorrow to write a talk to give on Tuesday that, for some reaosn, 100+ people have signed up to see... | 00:31 | |
.oO( Maybe they're in it for the promise of free Thai food, like me... ))) ) |
|||
| ah well, I'll hack until my beer's depleted... | 00:32 | ||
| lue | You're writing a talk the day you're giving it? That's an impressive goal. :P | 00:34 | |
| TimToady | Do not torment the implementor. That's my job. :) | 00:35 | |
| jnthn | no no, tomorrow is Monday (I hope!) and the talk is Tuesday :P | ||
| uh, well, today is Monday technically, but... :P | |||
| ooh | 00:36 | ||
| ok, this went well... | |||
| lue | TimToady: sorry. That was one joke I couldn't resist though. :) | ||
| jnthn | See #perl6 for commit message. :) | 00:39 | |
| Long story short: October's NQP will ship with MoarVM support. | 00:40 | ||
| Todo tasks: add p5regex library to the build, triage t/qregex test failures :) | 00:42 | ||
| lee_ | woohoo jnthn++ :) | ||
| jnthn | Also we probably want some kind of runner like JVM has (but thankfully a load simpler...no epic classpath :P) | 00:43 | |
| I'll get to these but I suspect I'll be relatively tied up until Wednesday. | |||
| uh, I'll get to these if nobody else does :) | |||
| lue | jnthn++ jnthn++ [ one for each functioning stage :) ] | 00:44 | |
| s/func/now-func/ | |||
| jnthn | ok, enough for today :) | 00:52 | |
| 'night o/ | |||
| lue | good ♞ jnthn o/ | 00:54 | |
|
01:07
ssutch joined
02:02
colomon joined
02:41
eternaleye joined
|
|||
| diakopter | . | 04:28 | |
|
05:03
harrow joined
|
|||
| masak | diakopter: , | 06:29 | |
|
07:17
FROGGS joined
|
|||
| moritz | | | 07:18 | |
| FROGGS | .tell jnthn \\o/ | 07:34 | |
| yoleaux | FROGGS: I'll pass your message to jnthn. | ||
| moritz | fatal: reference is not a tree: a9e6eec70785f43f63ef17189fc2733d4ceb8446 | 07:35 | |
| Unable to checkout 'a9e6eec70785f43f63ef17189fc2733d4ceb8446' in submodule path '3rdparty/dyncall' | |||
| what do I do to fix that? | |||
| ah, git submodule sync | 07:36 | ||
|
08:14
FROGGS joined
09:23
donaldh joined,
wsri joined
09:24
grondilu joined
09:36
cognominal joined
|
|||
| diakopter | masak: , | 09:46 | |
| wheels up, ish... & | 09:51 | ||
| arnsholt | diakopter: Any objections to closing the "Strange loop" NQP bug? | 09:53 | |
| More info, courtesy of jnthn++, at irclog.perlgeek.de/perl6/2013-10-06#i_7678311 | 09:54 | ||
| nwc10 | jnthn++ # bootstrapping | 09:59 | |
| grondilu | jnthn++ awesome work. Looking forward to reading a report in 6guts, hopefully with an estimated date for a MoarVM port of rakudo :) | 10:02 | |
| masak | jnthn++ # blog post coming up? :) | 10:04 | |
| nwc10 assumes that slides happen first | |||
| jnthn | yeah, I need to focus on my reactive programming talk for tomorrow evening first :) | ||
|
12:01
FROGGS joined
|
|||
| [Coke] | jnthn++ | 12:30 | |
|
12:32
FROGGS joined
|
|||
| FROGGS | jnthn: this is why qregex hangs: | 12:45 | |
| zero_slots elems=343035904 ssize=343040000 | |||
| zero_slots elems=343040000 ssize=343044096 | |||
| zero_slots elems=343044096 ssize=343048192 | |||
| zero_slots elems=343048192 ssize=343052288 | |||
| in MVMArray.c | |||
| tadzik | that's plenty of elems | ||
| FROGGS | it increases, increases, increases | ||
| tadzik: and it kills my box when running in gdb :P | 12:46 | ||
| tadzik | MOAR RAM | ||
| FROGGS | yeah | 12:47 | |
| r: say (343048192 + 0x1000) & ~0xfff | 12:48 | ||
| camelia | rakudo 70f2ae: OUTPUT«all(343052288, 4095)» | ||
| FROGGS | r: say (343048192 + 0x1000) +& ~0xfff | ||
| camelia | rakudo 70f2ae: OUTPUT«0» | ||
| FROGGS | r: say ~0xfff | 12:49 | |
| camelia | rakudo 70f2ae: OUTPUT«4095» | ||
| FROGGS | what is binary negation again? | ||
| moritz | +^ iirc | 12:50 | |
| r: say +^ 4 | |||
| camelia | rakudo 70f2ae: OUTPUT«-5» | ||
| FROGGS | ahh | ||
| moritz | yep | ||
| FROGGS | r: say (343048192 + 0x1000) +& (+^ 0xfff) | ||
| camelia | rakudo 70f2ae: OUTPUT«343052288» | ||
| FROGGS | that would fit | ||
| so, it is called by set_size_internal | 12:51 | ||
| jnthn | I'm guessing something is pushing endlessly or so | 13:05 | |
| FROGGS | jnthn: I'll now in 3minutes, compiling right now | 13:38 | |
| gah, almost missed the bus top the airport by not finding it | 13:39 | ||
| to* | 13:40 | ||
| timotimo | my @parts := match($line, /\\T+/, :global); | 13:42 | |
| this line makes it consume infinite amounts of memory | |||
| FROGGS | k | ||
| push body->elems=8244775 | 13:44 | ||
| push body->elems=8244776 | |||
| push body->elems=8244777 | |||
| push body->elems=8244778 | |||
| push body->elems=8244779 | |||
| yes, push | |||
| timotimo | so the :global match is either not advancing properly, or it's not terminating at the end-of-line properly; the latter seems unlikely | 13:45 | |
|
13:47
ggoebel3 joined
|
|||
| FROGGS | install/bin/moar nqp.moarvm -e 'my $line := ""; my @parts := match($line, /T+/, :global);' # passes | 13:48 | |
| install/bin/moar nqp.moarvm -e 'my $line := ""; my @parts := match($line, /\\T+/, :global);' # hangs | |||
| install/bin/moar nqp.moarvm -e 'my $line := ""; my @parts := match($line, /\\T/, :global);' # passes | 13:49 | ||
| timotimo | strange | ||
| FROGGS | so, it even might be a problem with quantifying cclasses | ||
| timotimo | can you compare the qast dump of the two regexes from different backends? | ||
| timotimo doesn't have a nqp.moarvm yet | 13:50 | ||
| FROGGS | I should be able to, yes | ||
| no, it segfaults | |||
| timotimo | oh, bummer :( | ||
| well, let's compare matches without :global | |||
| FROGGS | Program received signal SIGSEGV, Segmentation fault. | ||
| 0x000000000043614a in MVM_string_concatenate (tc=0x829310, a=0x7ffff6fcec98, b=0x0) at src/strings/ops.c:413 | |||
| 413\t MVMStringIndex agraphs = NUM_GRAPHS(a), bgraphs = NUM_GRAPHS(b), rgraphs; | |||
| timotimo | oh, so a null string got concatenated to a string | 13:51 | |
| or a null object i guess? | |||
| FROGGS | bt is gist.github.com/anonymous/eba3683fb19c83732026 | ||
| should be an MVMString * | 13:52 | ||
| timotimo | i still can't build moarvm-nqp: While looking for 'QAST.moarvm': no such file or directory at nqp-src\\ModuleLoader.pm:52 (src/vm/moar/stage0/ModuleLoader.moarvm:frame_name_33:96) | 13:53 | |
| FROGGS | seems like regex dumping is faulty | ||
| I have dev/MoarVM and dev/nqp, in MoarVM I do: perl Configure.pl --prefix=../nqp/install && make install | 13:54 | ||
| then in nqp: perl ConfigureMoar.pl --prefix=install && make | |||
| timotimo | OK | ||
| i have build/MoarVM and build/rakudo/nqp/ | |||
| and i had the prefix set to ......./build/MoarVM | 13:55 | ||
| FROGGS | install/bin/moar nqp.moarvm --target=ast -e 'match("", /abc/)' | ||
| Speicherzugriffsfehler (Speicherabzug geschrieben) | |||
| using -e '1 ~~ 2' works | 13:56 | ||
| timotimo | "speicherabzug" >_< | ||
| FROGGS | :o) | ||
| timotimo | i still get the 404 from stage0/ModuleLoader | 13:57 | |
| FROGGS | hmmm | 14:00 | |
| but you are on moarboot branch, yes? | |||
| do you have whitespace in prefix? | |||
| timotimo | yes i am, no i don't | 14:02 | |
| JimmyZ | Routine declaration requires a signature at line 4093, near "(MAST::Nod" | 14:29 | |
| so you got While looking for 'QAST.moarvm': no such file or directory | |||
| /MoarVM/bin/moar --libpath=src/vm/moar/stage0 src/vm/moar/stage0/nqp.moarvm --bootstrap --module-path=src/stage1 \\ --setting=NQPCORE --no-regex-lib --target=mbc \\ --output=src/stage1/QAST.moarvm src/stage1/gen/QAST.nqp | 14:31 | ||
| Routine declaration requires a signature at line 4093, near "(MAST::Nod" | |||
| masak | oh! "Speicher-abzug". that took me far too long to parse right :) | 14:38 | |
| literally "space/room extract". | |||
| so, "memory dump" :) | |||
| and a "Speicherzugriffsfehler" must be a "memory access error"... | 14:39 | ||
|
14:47
benabik joined
|
|||
| timotimo | yeah | 14:55 | |
| "speicher" used to refer to a room in a house used to store stuff, but nowadays it refers to any kind of storage | 14:56 | ||
| masak | aha, like a storage a company uses for putting boxes in, for example. | 15:11 | |
| timotimo | hmm | 15:12 | |
| masak | GT says memory/store/reservoir/attic/loft/storehouse. | 15:16 | |
| timotimo | mhm | 15:17 | |
| i'm not the authority on word use in german :) | |||
| jnthn | .oO( I've got a sinking feeling about this reservoir access error... ) |
||
| arnsholt | timotimo: Google Translate isn't an authority on anything at all =) | ||
| masak | *gasp* | 15:21 | |
| timotimo | jnthn: so, any idea why the :global match with /\\T+/ would fail? dumping the qast for that doesn't seem to work at all | 15:23 | |
| masak | timotimo: are you saying that the non-:global match with /\\T+/ doesn't fail? | 15:25 | |
| timotimo | i can't try :( | 15:27 | |
| masak is confused by that response | 15:28 | ||
| timotimo | building moarvm doesn't work on my box | ||
| masak | how about on feather? | ||
| timotimo | don't have access there | ||
| masak | pity. :/ | 15:30 | |
| TimToady | I'm guessing it's missing the implied . after the <![\\t]> | 15:35 | |
| masak | that sounds highly plausible. | 15:38 | |
|
15:42
not_gerd joined
|
|||
| not_gerd | o/ | 15:42 | |
| JimmyZ | \\o | 15:44 | |
| timotimo | oh, is that how it's created internally? | ||
| jnthn | Don't think so | 15:45 | |
| masak | it was back in PGE, methinks. | 15:46 | |
| \\T was basically <![\\t]>. | |||
| not_gerd | jnthn: any thoughts on making the interpreter stage extop operands and just pass on a MVMRegister* ? | ||
| con: probably worse interpreter performance | 15:47 | ||
| pro: cleaner API, possibly more JIT friendly | |||
| diakopter | not_gerd: hi :) | 15:48 | |
| not_gerd: my first reaction is it doesn't feel as safe | |||
| not_gerd | diakopter: hi | 15:49 | |
| diakopter: less safe than poking into the bytecode stream? | |||
| diakopter | I didn't think we were doing that | ||
| not_gerd | out extops signature right now is just MVMThreadContext *tc | 15:51 | |
| ie we'll have to read operands from the stream via tc->interp_cur_op | |||
| diakopter | right | ||
| not_gerd | *our | ||
| diakopter | the jit/optimizer will know that it can cache &tc->interp_cur_op somewhere if it wants | 15:52 | |
| (since it doesn't change) | |||
| not_gerd | but it'll have to emulate the whole interp shebang | ||
| diakopter | I don't know what you mean | 15:53 | |
| not_gerd | with staging, it could just push values to the stack and pass a pointer to the first one | ||
| diakopter | how would this be a cleaner API and possibly more JIT friendly | ||
| the JIT can do whatever it wants :P | 15:54 | ||
| jnthn | yeah but if the API for writing an extop and having it called is JIT-hostile... | ||
| not_gerd | cleaner insofar as the extop wouldn't have to poke into the bytecode stream and reg_base array | 15:55 | |
| it just takes operands from the stage and puts results back into it | |||
| jnthn | We limit the arg count anyway | ||
| So we could easily switch on that (8 cases) | |||
| And then pass pointers to each register. | |||
| void my_op(ThreadContext *tc, MVMRegister *a, MVMRegister *b) { } # for a 2-op one | 15:56 | ||
| diakopter | not_gerd: why would it have to poke into the bytecode stream? | ||
| jnthn | diakopter: To know the register numbers | ||
|
15:56
FROGGS joined
|
|||
| diakopter | oh yeah. :) | 15:56 | |
| FROGGS | timotimo: fwiw, if you comment the if $node.negate { ... } in method enumcharlist in qastregexcommpilermast.nqp, then, at least, it does not push endlessly | 16:00 | |
| so either there is something wrong what the quant might need, or... dunno | |||
| timotimo | but that stuff isn't per-backend, right? | 16:01 | |
| FROGGS | diakopter: do you spot an error here? github.com/perl6/nqp/blob/moarboot...#L435-L441 | ||
| not_gerd | jnthn: I could live with that, though it's still a bit less jit friendly than explicit staging | ||
| FROGGS | timotimo: the regex-to-op compiler is backend specific | 16:02 | |
| not_gerd | with an explicit stage, the jit is free to rake the operand from $wherever | ||
| timotimo | uh oh | ||
| not_gerd | (in particular hardware registers) | ||
| but we could always tell our users if you want max performance, provide jitable op definitions which we can inline | |||
| jnthn | not_gerd: Yeah, I'd imaigned we'll have a JITTree-producing mechanism for dynops too | 16:03 | |
| uh, extops | |||
| diakopter | FROGGS: no.. | 16:04 | |
| FROGGS | :/ | ||
| diakopter | why | ||
| FROGGS | diakopter: because \\t and \\T happens to be an enumcharlist, and \\t+ passes while \\T+ hangs | ||
| hangs means, it pushes onto an array, again and again and ... | 16:05 | ||
| diakopter: I know that you can't remember what you wrote there :o) | |||
| if I finally understand parts of it I might even add comments | |||
| CAUSE THERE ARE NONE! | 16:06 | ||
| jnthn | That's 'cus regex compilers are, like, just obvious man... :P | ||
|
16:06
jnap joined,
benabik joined
|
|||
| FROGGS | jnthn: bah | 16:06 | |
| not to me "bro" | |||
| :P | |||
| not_gerd | jnthn: wouldn't passing | 16:08 | |
| up.. | |||
| s | |||
| jnthn | ...wat? | 16:09 | |
| not_gerd | oO(too much Federweißer...) | ||
| wouldn't void my_op(ThreadContext *tc, MVMRegister *a, MVMRegister *b) actually be the worst of both worlds | |||
| is you'd have to first stage the pointers before you could pass them | |||
| if you already do that, why not just pass the values | |||
| jnthn | You need to be able to write also | 16:10 | |
| *but* we could constrain that to "only the first register" | |||
| arnsholt | FROGGS: If \\t+ works but \\T+ doesn't I'd look in the direction of negated enumcharlists | ||
| They're represented as the same AST node, but with a flag set for negation | 16:11 | ||
| FROGGS | arnsholt: exactly | ||
| arnsholt: that is why I pasted github.com/perl6/nqp/blob/moarboot...#L435-L441 | |||
| which is exactly that | |||
| diakopter | FROGGS: it's almost entirely transliterated from pmichaud's ->pir compiler in pir | 16:12 | |
| FROGGS | hmmm | ||
| diakopter | any departures from that were solely small refactorings and adaptation | 16:13 | |
| jnthn | It looks right at first glance | 16:14 | |
| If we match, we always increment pos | |||
| timotimo | i bet it increments the wrong pos | 16:15 | |
| jnthn | There can only be one | ||
| arnsholt | diakopter: I asked in #perl6 as well, but since you're here: Any objections to closing NQP #66? | ||
| timotimo | the number of the bea! | 16:16 | |
| the increment of pos seems to be after the goto op for failure | |||
| is that right? | |||
| jnthn | Yeah. If we fail we don't progress | 16:17 | |
| timotimo | OK | ||
| this wouldn't end up being zerowidth, would it? | |||
| FROGGS | what does indexat_scb? | ||
| not_gerd | timotimo: according to the website, the number of bea is 1-800-633-0925 at oracle | ||
| if that's better or worse than hell - you decide ;) | 16:18 | ||
| timotimo | heh | ||
| FROGGS | ohh, if indexat_scb fails, it does a goto $ok | 16:22 | |
| s/ohh/ahh/ | |||
| timotimo | so if that part is right, what part is wrong? | 16:23 | |
| FROGGS | dunno yet | ||
| nqp-m: nqp::indexat_scb() | |||
| camelia | nqp-moarvm: OUTPUT«No registered operation handler for 'indexat_scb'compile_op» | ||
| FROGGS | I wanted to check if the first pir stmt would work, which is: $ops.push_pirop('ge', %*REG<pos>, %*REG<eos>, %*REG<fail>); | 16:24 | |
| jnthn | nqp-m: say('abc' ~~ /\\T/) | ||
| camelia | nqp-moarvm: OUTPUT«a» | ||
| jnthn | nqp-m: say('abc' ~~ /\\T+/) | 16:25 | |
| camelia | nqp-moarvm: OUTPUT«(timeout)» | ||
| FROGGS | but moarvm only calls indexat_scb, and I'd like to check that it fails when pos > eos | ||
| jnthn | nqp-m: say('abc' ~~ /\\T{3}/) | ||
| camelia | nqp-moarvm: OUTPUT«Unsupported use of {N,M} as general quantifier; in Perl 6 please use ** N..M (or ** N..*) at line 2, near "/)"panic» | ||
| jnthn | nqp-m: say('abc' ~~ /\\T ** /) | ||
| camelia | nqp-moarvm: OUTPUT«Quantifier quantifies nothing at line 2, near " /)"panic» | ||
| jnthn | nqp-m: say('abc' ~~ /\\T ** 3 /) | ||
| camelia | nqp-moarvm: OUTPUT«abc» | ||
| jnthn | FROGGS: Yeah, I'm wondering what its eos semantics are | ||
| FROGGS | nqp-m: say('abc' ~~ /\\T*/) | 16:26 | |
| timotimo | that may well be the problem | ||
| camelia | nqp-moarvm: OUTPUT«(timeout)» | ||
| jnthn | nqp-m: say("abc\\t" ~~ /\\T+/) # this may make it clear | ||
| camelia | nqp-moarvm: OUTPUT«abc» | ||
| timotimo | nqp-m: say('abc' ~~ /\\T ** 4/) | ||
| camelia | nqp-moarvm: OUTPUT«abc» | ||
| TimToady | surely there's a tab *somewhere* in memory... | ||
| jnthn | :P | ||
| FROGGS | if (offset < 0 || offset >= NUM_GRAPHS(a)) | ||
| return -1; | |||
| :o( | |||
| timotimo | i don't understand why i can just build moarvm-nqp on host07, but not on my machine | ||
| FROGGS | and in interp.c it checks for >= 0 | ||
| timotimo | with about the same setup | ||
| FROGGS | timotimo: check the git versions | 16:27 | |
| (of the repos) | |||
| timotimo | i pulled until nothing more came out | ||
| diakopter | FROGGS: what does "return -1" mean there | 16:29 | |
| FROGGS | I can insert a nqp::push(@ins, 'say', %*REG<pos>); right? | ||
| diakopter | sure | ||
| FROGGS | diakopter: failure | ||
| diakopter | FROGGS: I figured that. | ||
| FROGGS: but what does it do if it's -1 | |||
| FROGGS | as I said, in interp.c it treats >= 0 as success, and does the goto | 16:30 | |
| ohh, no, it does the goto when it fails? | |||
| diakopter | right | ||
| oh, that's the problem | 16:32 | ||
| heh. | |||
| FROGGS: you see the problem? :) | 16:33 | ||
| FROGGS | not really | ||
| it is just weird :o) | |||
| diakopter | if it's at eos, it fails, which makes it succeed | ||
| timotimo | oh | 16:34 | |
| diakopter | so the eos check needs to be in the interp.c | ||
| as well | |||
| timotimo | hehehe | ||
| jnthn | Alternatuvely, add anaap o;p that does the negative check | ||
| diakopter | that too | ||
| FROGGS | a what? | ||
| timotimo | we're at the end of string, so let's go a bit further until we are not past the end of string any more! | ||
| jnthn | wtf | ||
| *add an op | 16:35 | ||
| FROGGS | ahh | ||
| diakopter | jnthn's alternatuve would be slightly more efficient | 16:36 | |
| jnthn | @} | ||
| uh, :P | |||
| keyboard I am disappoint | |||
| FROGGS | I am a bit puzzled | ||
| we want a indexnotat_scb or something now? | 16:37 | ||
| diakopter | well it needs to express that it did find a characdter there | ||
| I forget what scb stands for | |||
| FROGGS | somethingelseat_scb? | ||
| :P | |||
| jnthn | I always wondered what scb stood for :) | ||
| FROGGS | *g* | ||
| jnthn | oh | 16:38 | |
| string constant + branch I guess :P | |||
| diakopter | oh hee. | ||
| FROGGS: feel free to rename them... | |||
| well it's not a string constant tho | |||
| FROGGS | indexat might be nice enough | 16:39 | |
| damn, I dont know what to do | |||
| err, how, I mean | |||
| diakopter | oh maybe it was a string constant | 16:40 | |
| meh | |||
| FROGGS | can somebody paste pseudo-code? | ||
| timotimo | make a copy of the scb op thingie that negates the check, but does the EOS check the same way | 16:41 | |
| and then emit that op in the thingie | |||
| diakopter | FROGGS: I can fix it | ||
| FROGGS | diakopter++ | ||
| diakopter | if you want | ||
| FROGGS | ohh yes | 16:42 | |
| timotimo | thank you! :) | ||
| i'm surprised this didn't blow up during any parsing of code before | |||
| FROGGS | timotimo: I just an guess that there are no negated enumcharlists | 16:43 | |
| can* | |||
| jnthn | It needs that *and* the eos issue | ||
| diakopter | ? | ||
| FROGGS | ahh | 16:44 | |
| diakopter | oh. | ||
| timotimo: I went exploring in your homedir | 16:46 | ||
| timotimo@host07:~/nqp$ install/bin/moar nqp.moarvm -e 'my $a:=1000000;while $a-- { }' | |||
| Invalid string index: max 28, got 29 | |||
| timotimo | i didn't do anything wrong! :) | ||
| diakopter | (fails during paring) | ||
| is it just me or is bootstrapping kindof magical | 16:47 | ||
| timotimo | no, it is | ||
| diakopter | nqp-m: my $a:=1000000;while $a-- { } | ||
| camelia | ( no output ) | ||
| diakopter | nqp-m: my $s:=nqp::time_n;my $a:=1000000;while $a-- { }; say(nqp::time_n - $s)' | 16:48 | |
| camelia | nqp-moarvm: OUTPUT«Confused at line 2, near "say(nqp::t"panic» | ||
| timotimo | perhaps that code *is* suffering from the wrongness we just uncovered? | ||
| FROGGS | nqp-m: my $a:=1000000;while $a-- { }; say(nqp::time_n() - BEGIN nqp::time_n()) | ||
| camelia | nqp-moarvm: OUTPUT«Method isdecl not found in cache, and late-bound dispatch NYI at nqp-src/QASTNodes.nqp:52 (./QASTNodesMoar.moarvm:frame_name_9:4294967295) from nqp-src/QASTNodes.nqp:51 (./QASTNodesMoar.moarvm:new:40) from nqp-src/NQP.nqp:466 (nqp.moarvm:frame_name_7…» | ||
| jnthn | Whenever I've see the string index thing it was out of date files somewhere | ||
| diakopter | hm | 16:49 | |
| FROGGS | nqp-m: my $s:=nqp::time_n(); my $a:=1000000; while $a-- { }; say(nqp::time_n() - $s)' | ||
| camelia | nqp-moarvm: OUTPUT«Confused at line 2, near "say(nqp::t"panic» | ||
| FROGGS | gah | ||
| timotimo | oh, interesting | ||
| FROGGS | nqp: my $s:=nqp::time_n(); my $a:=1000000; while $a-- { }; say(nqp::time_n() - $s)' | ||
| camelia | nqp: OUTPUT«Confused at line 2, near "say(nqp::t"current instr.: 'panic' pc 14748 (src/stage2/gen/NQPHLL.pir:5229) (src/stage2/gen/NQPHLL.nqp:279)» | ||
| FROGGS | what is wrong? | 16:50 | |
| nqp: my $s:=nqp::time_n(); my $a:=1000000; while $a-- { 1 }; say(nqp::time_n() - $s)' | |||
| camelia | nqp: OUTPUT«Confused at line 2, near "say(nqp::t"current instr.: 'panic' pc 14748 (src/stage2/gen/NQPHLL.pir:5229) (src/stage2/gen/NQPHLL.nqp:279)» | ||
| jnthn | The ' at the end | ||
| FROGGS | nqp: my $s:=nqp::time_n(); my $a:=1000000; while $a-- { 1 }; say(nqp::time_n() - $s) | ||
| -.- | |||
| camelia | nqp: OUTPUT«0.621707201004028» | ||
| diakopter | hee. | ||
| FROGGS | nqp-m: my $s:=nqp::time_n(); my $a:=1000000; while $a-- { 1 }; say(nqp::time_n() - $s) | ||
| camelia | nqp-moarvm: OUTPUT«0.595968» | ||
| diakopter | nqp-j: my $s:=nqp::time_n(); my $a:=1000000; while $a-- { 1 }; say(nqp::time_n() - $s) | ||
| nqp-jvm: my $s:=nqp::time_n(); my $a:=1000000; while $a-- { 1 }; say(nqp::time_n() - $s) | |||
| camelia | nqp-jvm: OUTPUT«0.16300010681152344» | 16:51 | |
| jnthn | JIT :) | ||
| FROGGS | I guess the 6model stuff will show a bigger difference | ||
| timotimo | cool that the jit has enough time to warm up in just 0.1 seconds | 16:52 | |
| jnthn | timotimo: you missed the startup time :P | ||
| diakopter | 5-6 seconds | ||
| timotimo | oh, of course, it doesn't measure that part | ||
| diakopter | nqp: my $s:=nqp::time_n(); my $a:=1000000; while --$a { 1 }; say(nqp::time_n() - $s) | 16:53 | |
| camelia | nqp: OUTPUT«0.66899299621582» | ||
| diakopter | nqp-m: my $s:=nqp::time_n(); my $a:=1000000; while --$a { 1 }; say(nqp::time_n() - $s) | ||
| camelia | nqp-moarvm: OUTPUT«0.673368» | ||
| diakopter | <shrug> | ||
| timotimo | ah, parrot and moar are very close on that, but we have no idea about the startup time there either | 16:54 | |
| diakopter | nqp-m: my $s:=nqp::time_n(); my int $a:=1000000; while --$a { 1 }; say(nqp::time_n() - $s) | ||
| camelia | nqp-moarvm: OUTPUT«0.655229» | ||
| timotimo | i'm just guessing here, but moar should start up faster :) | ||
| diakopter | nqp: my $s:=nqp::time_n(); my int $a:=1000000; while --$a { 1 }; say(nqp::time_n() - $s) | ||
| camelia | nqp: OUTPUT«0.712493896484375» | ||
| diakopter | timotimo: nah not by much I don't think | ||
| timotimo | hm. well it *does* mmap the pbcs, doesn't it? | ||
| anyway, i'll afk for a bit | |||
| jnthn | Somehow Moar passes t/nqp faster than Parrot; it could be in the startup time for or runtime or both. | 16:55 | |
| That we're doing so at this point *before* we've had chance to profile how it runs NQP and really dig into optimization or implement the clever stuff is kinda nice. :) | 16:56 | ||
| diakopter | would someone like to do this for MoarVM github.com/blog/1184-contributing-guidelines | 16:57 | |
| CONTRIBUTING.md | 16:58 | ||
|
16:58
ggoebel4 joined
|
|||
| not_gerd | .oO( nqp-m-cgoto ) |
17:02 | |
| FROGGS | okay, so I tried it but without luck | 17:13 | |
| would it be: if $node.negate { op indexnat } else { op indexat }... or do I need to leave the goto's in the negate-block? | |||
| jnthn | FROGGS: No, if you do a negated version of the op you can clear thatup | 17:15 | |
| FROGGS: The goto and label in the negate block is only coping with the lack of a negated version of the op | |||
| FROGGS | okay | ||
| dunno if somebody wanna see that :o) gist.github.com/FROGGS/db53df3844dc98dd6b58 | 17:18 | ||
| didnt properly hanged the regex compiler in nqp-cc, because I didn't made another stage0 | 17:20 | ||
| another try | 17:23 | ||
| jnthn | FROGGS: I'd add indexnat after indexat fwiw | 17:24 | |
| though of course needs re-build of all things :) | |||
| and stage0 update | |||
| FROGGS | yeah, I can do that when it works :o) | ||
| jnthn | aye | 17:25 | |
| Getting t/qregex passing would be l'awesome | 17:26 | ||
| FROGGS | timotimo: I remember: I had it too that it wasn't able to find moduleloader, that was due to the fact that it didnt build it | ||
| timotimo: there ware a syntax error hidden in the build-output-mess | |||
| jnthn | Lemme see if I can add P5Regex building while my dinner cooks | ||
| Though need to get back to my Rx talk after dinner... | |||
| jnthn is liking Rx and should do a P6Rx port :) | 17:27 | ||
| FROGGS | *g* | ||
| install/bin/moar nqp.moarvm t/qregex/01-qregex.t | |||
| Unsupported use of - as character range; in Perl 6 please use .. for range, for explicit - in character class, escape it or place as last thing at line 29, near "> $m { %ex" | |||
| :o( | |||
| jnthn | :( | 17:28 | |
|
17:29
FROGGS[mobile] joined
17:35
FROGGS[mobile]2 joined
|
|||
| FROGGS | jnthn++ | 17:42 | |
| ahhh, kilkenny++ | 17:43 | ||
| jnthn | FROGGS: So, if you manage a fix for the \\T+ thing then we may get the t/p5regex passing also :) | 17:46 | |
| FROGGS | yeah I've seen the msg | 17:47 | |
| froggs@TL02L-R8RXTCW-linux:~/dev/nqp$ install/bin/moar nqp.moarvm -e 'say("abc" ~~ /\\w+/)' | 17:48 | ||
| abc | |||
| froggs@TL02L-R8RXTCW-linux:~/dev/nqp$ install/bin/moar nqp.moarvm -e 'say("abc" ~~ /\\W+/)' | |||
| Substring length (-6) cannot be negative | |||
| O.o | |||
| nwc10 | dinner *cooks*? Not brews? :-) | 17:49 | |
| FROGGS | because he is a sorcerer? | ||
| jnthn | FROGGS: i think that may be busted NQPMatch.Str... | 17:50 | |
| FROGGS | ohh: install/bin/moar nqp.moarvm -e 'say("abc" ~~ /\\T+/)' | ||
| abc | |||
| that is nice | |||
| install/bin/moar nqp.moarvm -e 'say("" ~~ /\\T+/)' | 17:51 | ||
| Substring length (-3) cannot be negative | |||
| so, a failed match is busting it | |||
| timotimo | yes, -3 is the "no match" value | 17:53 | |
| FROGGS | yeah, and nqp@parrot is a bit lax when it comes to negative lengths in substr | 17:54 | |
| timotimo | hehe | ||
| FROGGS | compiling... | ||
| timotimo | i remember thinking, during the RaNIW, "that can't possibly cause strange errors" | ||
| FROGGS | nqp: say(substr("abc", 0, -3)) | ||
| camelia | nqp: OUTPUT«Could not find sub &substrcurrent instr.: '' pc 48 ((file unknown):64016775) (/tmp/PTtvgkfP4s:1)» | ||
| FROGGS | nqp: say(nqp::substr("abc", 0, -3)) | ||
| camelia | nqp: OUTPUT«» | ||
| FROGGS | nqp-jvm: say(nqp::substr("abc", 0, -3)) | 17:55 | |
| camelia | nqp-jvm: OUTPUT«java.lang.StringIndexOutOfBoundsException: String index out of range: -3 in (/tmp/kBbhjDjInJ:1) in (src/stage2/gen/NQPHLL.nqp:1091) in eval (src/stage2/gen/NQPHLL.nqp:1077) in evalfiles (src/stage2/gen/NQPHLL.nqp:1283) in command_eval (src/stage…» | ||
| FROGGS | nqp-m: say(nqp::substr("abc", 0, -3)) | ||
| camelia | nqp-moarvm: OUTPUT«Substring length (-3) cannot be negative at /tmp/wT8W6o2rzh:2 (<ephemeral file>:frame_name_0:4294967295) from nqp-src/NQPHLL.nqp:1084 (./NQPHLLMoar.moarvm:frame_name_671:97) from nqp-src/NQPHLL.nqp:1070 (./NQPHLLMoar.moarvm:eval:87) from nqp-src/N…» | ||
| timotimo | nqp-jvm: say("abc" ~~ /\\W+/) | ||
| camelia | nqp-jvm: OUTPUT«» | ||
| timotimo | interesting | ||
| FROGGS | hmmm, that should'nt have worken for jvm either | ||
| jnthn | hm, yeah | ||
| odd | |||
| FROGGS | even | ||
| trying this now just to be sure: method Str() { $!to > $!from ?? nqp::substr($!orig, $!from, $!to-$!from) !! '' } | 17:56 | ||
| install/bin/moar nqp.moarvm -e 'say("" ~~ /\\T+/)' | 17:58 | ||
| err | |||
| timotimo | it says "err"? that's odd | ||
| FROGGS | well, this passes, but qregex is still busted | ||
| that was me :o) | |||
| timotimo | the same "unsupported use of -" thing? | ||
| FROGGS | yes | ||
| timotimo | it doesn't seem to see the end of the regex or something? | 18:00 | |
| FROGGS | the very first path already broke test t/nqp/32-protoregex.t btw | ||
| patch* | |||
| timotimo | that line is $s := subst($s, /\\\\(<[nretf]>)/, -> { %expansions{$m[0]} }, :global); | ||
| that's probably a better place to look at, then | |||
| FROGGS | yeah | 18:01 | |
| timotimo: can you paste your build output btw? | 18:08 | ||
| (of nqp)# | |||
| -# | |||
| timotimo | oh, locally? sure, hold on | 18:11 | |
| FROGGS | yeah | ||
| timotimo | gist.github.com/timo/5dddacb5b8a6835a0e0d - there you go | ||
| FROGGS | we must fix this :o) | ||
| timotimo | you just want to force me to help you! :P | ||
| FROGGS | Routine declaration requires a signature at line 4092, near "(MAST::Nod" | 18:12 | |
| hmmm, I had that too | |||
| timotimo: have you build the nqp-cc by any chance? | 18:13 | ||
| you could copy over the *.moarvm as your stage0 | |||
| see you in hotel & | 18:15 | ||
| timotimo | i can't seem to get the right nqp version for the crosscompiler to be happy | 18:18 | |
| now i got it :) | 18:23 | ||
|
18:25
ggoebel4 joined
|
|||
| FROGGS | what exactly? the cc? | 18:27 | |
| timotimo | yes | ||
| only that | |||
| FROGGS | k | ||
| timotimo | oh, but it won't build | ||
| /home/timo/build/rakudo/install/bin/nqp --target=pir src/QASTRegexCompilerMAST.nqp > QASTRegexCompilerMAST.pir | |||
| FROGGS | :o( | ||
| timotimo | This type does not support positional operations | ||
| FROGGS | I had that too once | ||
| hmmm | 18:28 | ||
| timotimo | bootstrapping is really very sensitive to all changes it seems | 18:30 | |
| benabik | Pulling ones self up by your bootstraps is inherently difficult. Most people never manage it. | ||
| timotimo | indeed | ||
| we've (as a collective) already done it a couple times | |||
| dalek | arVM/ext: 4b02034 | (Gerhard R)++ | src/core/ext.c: Fix extop validation (hopefully) |
18:54 | |
| arVM/ext: a08d772 | (Gerhard R)++ | src/core/bytecode.c: Load extension op records from bytecode stream Operand descriptor validation might need some changes, in particular for sized constants which we don't yet support properly. |
|||
| not_gerd | afk | 19:10 | |
| probably good night o/ | |||
|
19:11
jnap joined,
not_gerd left
|
|||
| FROGGS | this is the latest state of the patch: gist.github.com/FROGGS/db53df3844dc98dd6b58 | 19:22 | |
| it seems it does not break and does not quite fix anything | |||
| install/bin/moar nqp.moarvm t/qregex/01-qregex.t | 19:23 | ||
| Use of undeclared variable '$expect_substr' at line 55, near ") >= 0;\\n " | |||
| timotimo | o_O | 19:34 | |
| i wonder. it's declared a few lines before that. how does that b0rk? | 19:35 | ||
| FROGGS | i dunno | ||
| timotimo | does it perhaps for some weird reason declare $expect instead? | ||
| FROGGS | or the stash gets screwed up | 19:36 | |
| timotimo | i wouldn't know anything about that :P | ||
| FROGGS | what really weird is, is that I refactor something that really does not change its behaviour, but now it breaks differently | 19:38 | |
| benabik | Erm. `make selftest` is now just giving "Bytecode validation error at offset 30" | 19:40 | |
| And `make nqptest` says it can't find ModuleLoader.moarvm | |||
| FROGGS | benabik: do you have a ModuleLoader.moarvm? or a .class? | 19:41 | |
| benabik | Hm. selftest is trying to run ../moarvm instead of ../moar | ||
| FROGGS | ohh | 19:42 | |
| timotimo | well, that would probably do it :) | ||
| benabik | Ah. I have a ModuleLoader.class. | ||
| benabik re-configures | |||
| I thought I had done that | |||
| FROGGS | then we must tweak the makefile.in, so it creates the .moarvm now | ||
| benabik | FROGGS: It might do that, I think I hadn't reconfigured nqp-cc. | 19:43 | |
| FROGGS | this is a leftover from moving to nqp repo | ||
| ahh, okay | |||
| benabik | Now it's building a ModuleLoader.moarvm, so I think that was it. | 19:45 | |
| FROGGS | benabik: make selftest works here | ||
| benabik | Sorry for the false alarm. :-/ | ||
| FROGGS | np :o) | ||
| timotimo | not quite a problem? :) | 19:46 | |
| FROGGS | okay, I can't use my produced stage0: | 19:48 | |
| --output=src/stage1/QAST.moarvm src/stage1/gen/QAST.nqp | |||
| Use of undeclared variable '$qastcomp' at line 1953, near ".as_mast(@" | |||
| timotimo | huh, what's with all these variables getting undeclared? | ||
| is that one of the earliest files it tries? | |||
| FROGGS | I have no idea | ||
| no | |||
| it is one of the last of stage1 | |||
| timotimo | that's strange | 19:52 | |
| and at a very late line, too | |||
| so what kind of error hides for that long and *suddenly* shows its head? if it's to do with lexpads/stashes/whatever is at play here | |||
| FROGGS | well, for QAST.nqp it concats several files | 19:54 | |
| one of them is the qastompilermast.nqp I am editing | |||
| so maybe it has a problem there | |||
| like, filesize or chunksizes or something | |||
| benabik | Hm. selftest errors. 19-file-ops.t: "Failed to stat file: no such file or directory" and 82-decode.t: "No registered operation handler for 'encode'"" | 19:55 | |
| FROGGS | benabik: this is expeted and fine | ||
| it works in the nqp repo because it expects a file in a specific location | 19:56 | ||
| benabik | FROGGS: And the no encode handler? | ||
| FROGGS | NYI | 19:57 | |
| benabik | Ah. Don't remember seeing those before, but hey it works. | ||
| FROGGS | benabik: the test file was missing :o) | 19:58 | |
| I updated the gist again: gist.github.com/FROGGS/db53df3844dc98dd6b58 | |||
| @all: feel free to take it and play, I'm at an dead end atm with this | 19:59 | ||
| timotimo | that nqp.diff isn't terribly helpful, it just says "these binary files differ" | ||
| how do we get to those binary files? | 20:00 | ||
| just re-run the cross compiler? | |||
| FROGGS | yes | ||
| timotimo | did you change anything in dyncall/ ? | 20:01 | |
| FROGGS | cd nqp-cc && make && cp *.moarvm ../../nqp/src/stage0 | ||
| no | |||
| that shows up for ages now | |||
| timotimo | ok | ||
| what commit is your nqp on? | 20:04 | ||
| ah, moarboot of course | |||
| /home/timo/build/rakudo/install/bin/parrot --output=MASTOps.pbc MASTOps.pir | 20:06 | ||
| error:imcc:syntax error, unexpected IDENTIFIER ('going') in file 'MASTOps.pir' line 1 | |||
| the what now? o_O | |||
| FROGGS | works for me | 20:07 | |
| and there is no 'going' in that file | 20:08 | ||
| do you have debug output that lands in that file perhaps? | |||
| timotimo | oh! | ||
| duuuuuh | |||
| but i put that somewhere entirely else | 20:09 | ||
| how did this ... | |||
| ah, of course | |||
| it was using my system nqp that had the debug output to show me if my optimization disabling thing works or not | 20:10 | ||
| fwiw, i still cannot build it locally, same error as way earlier | 20:25 | ||
| FROGGS | :/ | 20:26 | |
|
20:43
foo_bar_baz joined
21:30
colomon joined,
flussence_ joined
21:33
jnap joined
21:35
eternaleye joined
22:18
jnap joined
|
|||
| jnthn | woo, I finished my slides and demo code :) | 22:45 | |
| timotimo | are you going to continue hacking on nqp? you must hate sleep! :) | 22:51 | |
| jnthn | hm, I wonder when my train goes in the morning... | 22:53 | |
| timotimo: I don't think I'll get any NQP tuits tonight, sadly. | |||
| TimToady | then maybe you should work on rakudo instead :) | 22:56 | |
| seriously, I've very \\o/ about all the recent progress | 22:57 | ||
| jnthn | :P | ||
| TimToady | so it's okay if you sleep occasionally | ||
|
22:57
jnap joined
|
|||
| jnthn | TimToady: btw, I was in the Rx source earlier today and saw they declared a "class ι". :) One of the few times I've seen Unicode put to use in C# source (outside of string literals, etc.) :) | 23:46 | |
| jnthn wonders whether such things will become more common in the future, or remain an oddity :) | 23:48 | ||
|
23:48
jnap joined
|
|||