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 &substr␤current 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