Perl 6 language and compiler development | Logs at colabti.org/irclogger/irclogger_log/perl6-dev | For toolchain/installation stuff see #perl6-toolchain | For MoarVM see #moarvm
Set by Zoffix on 27 July 2018.
MasterDuke any idea why i'm getting 'Attempt to read past end of string heap when reading string length' on my rebased default-nqp-to-int branch? 02:01
nine: i add a new entry to MVMStringConsts in my MoarVM branch that goes along with my default-vars/ops-to-int NQP branch. could that have caused some conflict with your recent mbc work? 02:18
nine MasterDuke: don't see how 08:07
MasterDuke i don't understand why NQP builds ok, but even the empty program dies with that error 11:52
Geth rakudo: 304feae9f0 | (Elizabeth Mattijsen)++ | src/core/Str.pm6
Make Str.trim-trailing about 10-20% faster

Depending on string and amount of whitespace
12:52
lizmat is feeling rather dim today 13:01
m: my $a = 42; my $b = q/a = $a/; say $b # is there an easy method on $b to make that say "a = 42" ?
camelia a = $a
nine lizmat: I assume not as interpolation is part of compilation 13:02
lizmat right, I have the string 'a = $a' and I want a method to turn interpolate the $a in the string 13:03
can't eval it, as it's not legal code 13:05
this in light of rt.perl.org/Public/Bug/Display.html?id=133772 13:06
nine m: use MONKEY-SEE-NO-EVAL; my $a = 42; my $b = q/a = $a/; say EVAL qq["$b" 13:07
camelia 5===SORRY!5=== Error while compiling <tmp>
Couldn't find terminator ] (corresponding [ was at line 1)
at <tmp>:1
------> 3 42; my $b = q/a = $a/; say EVAL qq["$b"7⏏5<EOL>
expecting any of:
]
nine m: use MONKEY-SEE-NO-EVAL; my $a = 42; my $b = q/a = $a/; say EVAL qq["$b"]
camelia a = 42
nine lizmat: ^^^
lizmat nine: yeah... but using EVAL... meh 13:21
MasterDuke nine: got any other idea about the string heap error? 13:23
fwiw, here's the complete backtrace: gist.github.com/MasterDuke17/9f61f...619867b95e 13:24
nine MasterDuke: writing bytecode includes quite a few calculations of positions. You change how NQP does math, so that's what I'd suspect. 13:25
MasterDuke nine: that makes sense, but the results should be the same 13:26
nine There may be some subtle difference 13:29
Btw. I can't find that branch? 13:30
MasterDuke nine: github.com/MasterDuke17/nqp/tree/t...lt_int_fix is where i am now (amidst some rebasing and such) 13:32
github.com/MasterDuke17/MoarVM/tre...mrt_intify is the MoarVM branch
MasterDuke nine: do you happen to remember if any of the calculations *should* be done as num? 13:44
nine Ok, can clearly repro. I'm not terribly surprised why compilation succeeds but nqp-m -e '' breaks: First the stage0 compiler is used to compile the current sources into the stage1 compiler. Then the stage1 compiler is used to compile the same sources into stage2. As your branch subtly breaks the compiler, stage2 is the first part to be broken. And the first time that runs is in your ./nqp-m -e '' 13:46
MasterDuke: they absolutely shouldn't
MasterDuke nine: that's good (that they shouldn't)
nine: my branch did pass `make m-test` in NQP a while ago 13:47
well, the original branch did, but i think its state has been lost during my rebase attempts 13:48
hm, github.com/perl6/nqp/blob/master/s....nqp#L2327 might need changing 13:51
nine So there actually is one calculation that's supposed to use floats, yes indeed. 13:58
And it's used all over the place
MasterDuke size()? 13:59
nine Oh, indeed! Just change that line to: my uint32 $aligned := nqp::ceil_n(nqp::div_n($size, 8)) * 8; 14:04
MasterDuke nine++, now it builds and there's just one failed test during a `make m-test` 14:08
heh, and that was just the plan off by one! 14:11
now to get back to trying to get rakudo to build with this branch... 14:13
gets all the way to stage optimize, didn't remember it got that far: Stage optimize : Unhandled exception: Cannot invoke this object (REPR: Null; VMNull) at SETTING::src/core/Mu.pm6:549 (<ephemeral file>:Str) 14:17
nine Encouraging results :) 14:18
MasterDuke yep, but not that easy to debug... 14:50
timotimo: is ^^^ something the debugserver could help with? 14:57
jnthn lizmat: I'd probably write it like {q/a = $^a/} and then invoke the block, if that's an option :) 15:04
MasterDuke heh. rakudo builds if i set --optimize=0, but then the install fails with: ===SORRY!=== This type cannot unbox to a native integer: P6opaque, Failure 15:45
MasterDuke ah ha! Signature.count is a Num, that might be it... 15:49
b2gills m: say {q:s/a = $^a/}(42) 16:01
camelia a = 42
nine The optimizer does a surprising number of calculations. But nothing supsicious 16:05
MasterDuke i think this is the problematic line: github.com/rakudo/rakudo/blob/mast....nqp#L3111 16:10
nine Looks so innocent :) 16:12
Why is Signature's count a Num anyway? Doesn't feel right 16:13
MasterDuke istr it's so slurpies can be inf or something like that 16:14
nine Yep, exactly that
MasterDuke i once tried to change it and it wasn't a single-line fix 16:15
ooooh, rakudo built and installed 16:16
MasterDuke hmm, make m-test (aside from a couple fails to investigate) seems to hang during t/09-moar/NAME__UnicodeData.t 16:39
b2gills I wonder if Signature.count could be -1 for Inf in NQP land 16:46
MasterDuke i think negatives are already used 16:48
but it was a while ago i looked at it, so not 100% sure 16:49
mostly unrelated, but my branch(es) make the rakudo compile take at least 5s longer, which i wouldn't have expected 16:50
nine MasterDuke: smrtintify is not JITed 16:54
That probably breaks JIT compilation of a lot of frames 16:56
MasterDuke arg, right. nine++ again 16:57
nine I wondered the same thing previously :)
MasterDuke hm, i thought another Signature.count related fix was needed, but now the install hangs with 100% cpu at: 17:16
home/dan/Source/perl6/install/bin/moar --libpath="blib" --libpath="/home/dan/Source/perl6/install/share/nqp/lib" --libpath="/home/dan/Source/perl6/install/share/nqp/lib" perl6.moarvm --nqp-lib=blib -e "for @*ARGS.head(*-1) { given (@*ARGS[*-1] ~ '/' ~ .IO.basename.Str) { say 'rm -f ' ~ .Str; .IO.unlink if .IO.e } }" blib/Perl6/ModuleLoader.moarvm blib/Perl6/World.moarvm blib/Perl6/Grammar.moarvm blib/Perl6/Ops.moarvm blib/Perl6/Actions.mo 17:17
MasterDuke anyone have an idea why changing the nqp::iseq_i here github.com/rakudo/rakudo/blob/mast...ode.pm6#L8 to nqp::iseq_n would cause the hang i mentioned above? becuase i think that should be a correct change 20:17
nine MasterDuke: the 1 there is now an int, isn't it? 20:22
MasterDuke nine: hm, i thought it would Just Work, but maybe not 20:24
nine I've never been completely sure what to expect. The only version I'm certain about is the spesh log
MasterDuke odd that there was no error, just a hang 20:26
huh, changed to 1e0 and it still hangs
AlexDaniel releasable6: status 21:00
releasable6 AlexDaniel, Next release will happen when it's ready. 4 blockers. 113 out of 239 commits logged (⚠ 41 warnings)
AlexDaniel, Details: gist.github.com/cb7f223f2a23785764...eb28db7f23 21:01
MasterDuke timotimo: how should i use the debug server to see what's going on during that install command? 21:29
getting a lot of: Tried to get the result of a broken Promise ....... 21:33
when i do a dump 21:37