Camelia, the Perl 6 bug

IRC log for #moarvm, 2013-10-11

| Channels | #moarvm index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:00 diakopter hm
00:00 diakopter I don't remember, but I'd think so
00:01 diakopter jnthn: does it not?
00:02 jnthn Well, if it does, MVM_HASH_EXTRACT_KEY should not need to check IS_WIDE
00:02 jnthn And if it does, then it'll do wrong things
00:02 jnthn But it would be consistently wrong so it can't be our heisenbug...
00:02 diakopter oh yeah; if it's checking IS_WIDE I think the 8-bit ones are okay too
00:03 diakopter oh hm
00:03 diakopter consequence of nfg... have to compute the hash based on the expanded string
00:08 jnthn Grr, under the debugger it works...
00:08 diakopter yeah :)
00:08 diakopter oh wait, maybe I did get that far...
00:08 diakopter argh, my memory
00:08 jnthn Though, this is weird...
00:08 jnthn Use of undeclared variable '$desired' at line 3169, near "));\r\n     "
00:08 jnthn panicNMAKE : fatal error U1077: 'C:\consulting\MoarVM\install\bin\moar.EXE' : return code '0x623e3c51'
00:08 jnthn See how it says "panic", but then doesn't spit out a backtrace, and the return code is weird
00:09 diakopter panic doesn't backtrace I thought
00:09 diakopter I"m pretty sure it's segmentationfail
00:10 jnthn no, I don't think it's a VM panic
00:10 jnthn It's that the method it's in is called panic
00:10 jnthn $/.CURSOR.panic(...)
00:10 jnthn But if the exception is uncaught you'd expect the error
00:10 diakopter ohh
00:10 diakopter so the backtrace printer is faulting
00:10 jnthn yeah
00:10 jnthn presumably due to some other corruption
00:11 jnthn But it don't do it under the debugger. Otherwise it'd have been a great clue.
00:11 diakopter but the debugger does special things with stderr
00:11 diakopter well, maybe that wouldn't matter
00:11 jnthn no, doesn't
00:11 diakopter it at least rewrites some code
00:11 jnthn It not only doesn't segv
00:11 jnthn It doesn't even think the variable is undeclared
00:12 jnthn So never tries to backtrace
00:12 diakopter try printing elems of the hash if it thinks it's undeclared
00:12 diakopter (not debugger)
00:13 diakopter I bet it's hosed
00:13 diakopter well the other way is to use windows' error interception
00:13 diakopter have it segfault but make windows bring up the dialog to debug in VS
00:14 diakopter I looked for how to enable that in win8 the other day to no avail
00:14 diakopter getting win8.1 soon..
00:17 jnthn http://msdn.microsoft.com/en-us/library​/windows/desktop/bb204634(v=vs.85).aspx
00:17 diakopter THAT
00:17 diakopter how u find so quickly
00:18 diakopter I cede googling skills crown to you
00:36 jnthn I have a bad feeling that the adjustments I do to spit out the stuff when it hits the undecl variable will move enough stuff around that it'll hide the bug again...
00:42 diakopter hm
00:42 diakopter heh.
00:45 jnthn bugger, it did as well... :/
00:46 diakopter did you try the automatic debugging?
00:46 jnthn It doesn't seem to actually segfault
00:46 jnthn Even doing attach to process doesn't show one.
00:46 diakopter hunh.
00:46 jnthn yeah, it's odd
00:47 diakopter hmmm maybe "panic" is one of those terrible error messages I threw in there
00:47 * diakopter ducks
00:47 diakopter yeah, b/c it doesn't show "at 'panic'" or whatever
00:50 diakopter which revision are you at
00:50 diakopter I'll try to reproduce
00:52 jnthn Grab latest MoarVM and latest moarboot
00:52 jnthn Then apply:
00:52 jnthn https://gist.github.com/jnthn/6928022
00:52 jnthn Think I give up for tonight :)
00:53 diakopter oh :)
00:53 diakopter sleep swimmingly!
00:57 jnthn Thanks...
00:57 jnthn Will have plenty of tuits tomorrow :)
00:57 jnthn 'night o/
00:57 TimToady o/
01:59 JimmyZ .tell jnthn I got a different error: Routine declaration requires a signature at line 1047, near "(MAST::Ins"
01:59 yoleaux JimmyZ: I'll pass your message to jnthn.
02:44 nwc10 joined #moarvm
02:44 moritz joined #moarvm
02:44 BinGOs joined #moarvm
02:44 BinGOs joined #moarvm
03:05 diakopter TimToady: I find it interesting that nqp-parrot and nqp-jvm can't run the man-or-boy benchmark/test... ;)
03:05 diakopter (but nqp-moar can)
03:06 diakopter can't is perhaps overstated; won't is more precise
03:09 diakopter uhm.
03:09 diakopter I meant to say don't
03:30 JimmyZ .tell jnthn I got a backstrace : https://gist.github.com/zhuomingliang/6929185
03:30 yoleaux JimmyZ: I'll pass your message to jnthn.
03:34 moritz joined #moarvm
03:34 BinGOs joined #moarvm
03:34 BinGOs joined #moarvm
03:34 wsri joined #moarvm
03:39 diakopter joined #moarvm
04:32 * diakopter stares at the screen awaiting ideas
06:40 ssutch joined #moarvm
07:06 FROGGS joined #moarvm
07:12 odc joined #moarvm
07:52 foo_bar_baz joined #moarvm
10:00 dalek MoarVM: 2db742c | jimmy++ | src/core/ (2 files):
10:00 dalek MoarVM: Remove needless MVMROOT
10:00 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/2db742cf50
10:03 jnthn JimmyZ: You committed debugging code, and I'd not remove that clone one
10:03 jnthn JimmyZ: I can completley imagine copy_to allocating...
10:03 jnthn The other one in exceptions.c is unrequired, though.
10:20 FROGGS jnthn: here is what I have for the flattening issue of list_*: https://gist.github.com/FR​OGGS/1240be3b37b8678bd6fd
10:21 FROGGS for me it seems like as if typed arrays don't get properly composed
10:21 jnthn FROGGS: ok, gimme a bit, I'm just working on a GC bug fix...
10:21 FROGGS that is, repr_data->slot_type is never MVM_ARRAY_I64 for example
10:21 FROGGS jnthn: sure, no hurry :o)
10:22 FROGGS lunchtime soon anyway
10:24 jnthn I may have nailed at least one case of the undecl heisenbug
10:26 FROGGS \o/
10:26 FROGGS may++
10:26 jnthn It was a case that looks like it could cause return value corruption
10:27 FROGGS ahh, the return value of $*W-is_symbol you mentioned?
10:27 FROGGS s/'-'/./
10:28 jnthn Could easily have been, yes
10:29 jnthn Well, it seems to vanish the incident I ran into
10:30 jnthn *incidence
10:30 FROGGS yeah, but maybe it just hides under the carpet
10:30 FROGGS like before
10:31 jnthn Maybe *but* (a) this was a genuine bug either way, and (b) the fix doesn't change timing of GC
10:31 jnthn and (c) it's highly likely the fix doesn't even malloc
10:31 jnthn uh, even cause a malloc where there'd not have been one
10:31 jnthn Meaning it doesn't change memory usage patterns while fixing the bug
10:31 FROGGS and (d) fixes are always good :o)
10:36 jnthn That too
10:36 dalek MoarVM: 6c409d9 | jnthn++ | src/6model/reprs/Lexotic.c:
10:36 dalek MoarVM: Missing MVMROOT in Lexotic.
10:36 dalek MoarVM:
10:36 dalek MoarVM: Argument processing can cause boxing. If this caused a GC run (which
10:36 dalek MoarVM: it did during debugging the "Undeclared variable..." heisenbug) then
10:36 dalek MoarVM: we'd end up looking inside the wrong Lexotic, which most likely led to
10:36 dalek MoarVM: corruption of the return value.
10:36 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/6c409d9f51
10:39 jnthn aww...git revert doesn't take a -p
10:41 dalek MoarVM: a1101cd | jnthn++ | src/core/ (2 files):
10:41 dalek MoarVM: Partial revert of "Remove needless MVMROOT"
10:41 dalek MoarVM:
10:41 dalek MoarVM: This partly reverts commit 2db742cf50d3736320263847c15b2b683f23f45b.
10:41 dalek MoarVM: It added debugging code. Also, it's reasonable for copy_to to allocate
10:41 dalek MoarVM: and having just spent 4 hours finding a missing MVMROOT, I would very
10:41 dalek MoarVM: much rather have too many than too few.
10:41 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/a1101cd5ff
10:42 jnthn (Workaround to no git revert -p: git revert --no-commit, then git reset -p, the git commit
10:42 jnthn )
10:43 jnthn That MVMROOT comment in the commit general policy, BTW. It's cheap to have an MVMROOT that we don't need. It's very costly to hunt missing ones.
10:43 jnthn *is general policy
11:08 jnthn FROGGS: OK, your patch now :)
11:09 jnthn FROGGS: Since t/qast is one of our last failures :)
11:10 cognominal joined #moarvm
11:12 camelia joined #moarvm
11:17 jnthn FROGGS: I think you're confusing yourself. https://gist.github.com/FROGGS/1240be3​b37b8678bd6fd#file-flattener-diff-L15 should be get_elem_storage_spec, no? :)
11:21 camelia joined #moarvm
11:24 JimmyZ jnthn: ping
11:29 jnthn FROGGS: Think I've got your patch in working order :)
11:29 jnthn JimmyZ: pong
11:31 FROGGS jnthn: awesome!
11:31 jnthn FROGGS: It was pretty close
11:31 JimmyZ jnthn: re the clone MVMROOT: I follow the create OP one, move 'GET_REG(cur_op, 0).o = cloned;' before allocate
11:32 FROGGS jnthn: btw, this is/was just a debugging line, but yes, it is off
11:32 JimmyZ jnthn: So I think it's safe :-)
11:32 jnthn FROGGS: Yes, I figured it was debugging. But when the debugging line contains a bug ;-)
11:32 FROGGS *g*
11:33 jnthn JimmyZ: oh, so you did...
11:33 * jnthn missed that re-order
11:33 JimmyZ ;)
11:33 jnthn JimmyZ: Might I gently suggest writing something like "Re-order to avoid needing MVMROOT" in the commit message, rather than just "remove" :)
11:34 cognominal joined #moarvm
11:34 jnthn But yeah, it's safe with the re-order
11:34 JimmyZ jnthn: I was consider copy the create OP comment to the clone OP
11:34 jnthn JimmyZ: That may also be wise
11:35 jnthn FROGGS: yay, t/qast now passes
11:35 JimmyZ I can do it again? :P
11:35 FROGGS yay!!!
11:35 FROGGS push push push
11:35 jnthn JimmyZ: Sure :)
11:36 dalek MoarVM: 83b416c | jnthn++ | src/6model/reprs/MVMArray.c:
11:36 dalek MoarVM: Implement get_elem_storage_spec in VMArray.
11:36 dalek MoarVM:
11:36 dalek MoarVM: FROGGS++
11:36 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/83b416cf66
11:36 dalek MoarVM: 6277e7f | jnthn++ | src/core/args.c:
11:36 dalek MoarVM: Handle natively typed lists in arg flatten.
11:36 dalek MoarVM:
11:36 dalek MoarVM: Based on a patch from FROGGS++.
11:36 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/6277e7f6cf
11:36 jnthn JimmyZ: I had some coffee now so it's more likely to pass review ;-)
11:37 jnthn OK, so 82-decode.t...
11:37 JimmyZ jnthn: great
11:39 FROGGS ahh, I see the difference
11:43 dalek MoarVM: ed9523e | jimmy++ | src/core/interp.c:
11:43 dalek MoarVM: Avoids a MVMROOT, also and a comment to explain why.
11:43 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/ed9523ea04
11:43 JimmyZ safe safe safe ...
11:43 FROGGS JimmyZ: "... before calling initialize"
11:43 FROGGS ?
11:44 JimmyZ oh copy_to
11:44 jnthn s/initialize/copy_to/
11:47 camelia joined #moarvm
11:48 dalek MoarVM: b1d75d1 | jimmy++ | src/core/interp.c:
11:48 dalek MoarVM: revise the comment
11:48 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/b1d75d13bb
11:49 FROGGS jnthn: all but encode here fine too :o)
11:50 jnthn yeah, I just started working on it, but starting to feel hungry...
11:52 jnthn Why are MVM_stat_platform_blocks and friends defined in src/string/ops.h?
11:52 jnthn What does stat have to do with strings?
11:54 FROGGS stat? I'd say nothing
11:54 FROGGS well, "stat" would have
11:56 FROGGS I think I will look at the --target=ast issue then
11:56 jnthn +1
11:58 jnthn FROGGS: Also, maybe see why --stagestats produced corrupted output
11:59 FROGGS ahh, the double-printing?
11:59 FROGGS yeah
12:02 jnthn Anyway, it's awesome we're down to one test file :)
12:02 FROGGS yes, it is :o)
12:03 FROGGS I am really eager to see how long rakudo's stage parse takes
12:03 jnthn We're a bit from that yet, I think :)
12:03 FROGGS nah
12:03 FROGGS my b-day is in five days you see :P
12:03 FROGGS that is not that far
12:05 JimmyZ you would not mind if I added some MVM prefixes to string ops.h?
12:05 JimmyZ or MVM_STRING_ prefixe ...
12:05 dalek MoarVM: e6ff821 | jnthn++ | / (6 files):
12:05 dalek MoarVM: Stub encode/decode ops.
12:05 dalek MoarVM:
12:05 dalek MoarVM: Currently, just throw NYI exceptions.
12:05 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/e6ff821fbe
12:06 jnthn JimmyZ: Leave those for now; it'll clutter the code a lot and it's not entirely clear that we should be exposing those...
12:06 jnthn Those used only in strings/ops.c could just be #define'd in there.
12:07 jnthn The MVM_stat things can get moved though
12:07 JimmyZ ok :-)
12:07 jnthn Were they not meant to be in src/io/ops.h ?
12:08 JimmyZ you mean MVM_stat_plaform part? yes
12:08 jnthn yeah
12:13 dalek MoarVM: 9c2f101 | jimmy++ | src/ (2 files):
12:13 dalek MoarVM: move MVM_stat_plaform_* macro from strings/ops.h to src/io/fileops.h
12:13 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/9c2f101d7c
12:14 jnthn lunch &
12:28 woolfy joined #moarvm
12:59 Woodi joined #moarvm
13:34 FROGGS btw, --target=ast explodes when concatenating "associative" with NULL
13:43 FROGGS aha, nqp-jvm prints it as - QAST::VarWithFallback(associative null)
13:43 FROGGS and nqp-parrot as - QAST::VarWithFallback(associative )
13:44 FROGGS so, it is a bug in nqp's code
13:47 jnthn back
13:50 diakopter FROGGS: ok..
13:50 diakopter FROGGS: well, it just means need to add a null check .. in a billion places?
13:50 diakopter :)
13:51 FROGGS nah, just one I think
13:51 diakopter well, for now
13:51 grondilu joined #moarvm
13:51 FROGGS for now?
13:52 jnthn Eventually we need to arrange to not SEGV if we hit a NULL :)
13:52 diakopter I figure there are probably other places we assume printing null doesn't blow up at that level
13:53 diakopter jnthn: what are the possible argument values to encode() and decode()
13:57 FROGGS jnthn: I could imagine that we create a new string "nil" when we hit a NULL in concat, and in all other string ops
13:58 diakopter FROGGS: he means to make a pmcnull-type repr
13:58 diakopter that asplodes on evarthing
13:58 diakopter then change everywhere that writes NULLs in the C code to write that pointer instead
14:00 diakopter it's definitely easier in the short run than making the signal interceptors/handlers
14:00 diakopter though those are needed eventually too
14:03 jnap joined #moarvm
14:05 dalek MoarVM: 3dd7916 | jnthn++ | src/ (3 files):
14:05 dalek MoarVM: Integrate utf-16 encoding; small encoding cleanup.
14:05 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/3dd7916ee8
14:06 colomon joined #moarvm
14:06 jnthn encode(string, encoding_name, array_to_write_into)
14:06 jnthn decode(array, encoding_name)
14:09 FROGGS Stage mast       :   1.582
14:09 FROGGS Stage mbc        :   0.007
14:09 FROGGS moar: 3rdparty/libuv/src/unix/loop.c:150: uv__loop_delete: Assertion `!((((*(&(loop)->active_reqs))[0]) == (&(loop)->active_reqs)) == 0)' failed.
14:09 FROGGS hmmm
14:13 FROGGS Stage start: 0.000013Stage start      :   0.000
14:13 FROGGS Stage parse: 9.33755Stage parse      :   9.338
14:13 FROGGS Stage ast: 0.000072Stage ast        :   0.000
14:13 FROGGS really really strange
14:14 timotimo cool buffers running into each other
14:14 FROGGS strange strange, even
14:14 FROGGS timotimo: looks at the stage parse
14:14 timotimo wow
14:14 FROGGS 9.337... vs. 9.338
14:14 timotimo one of them is rounded
14:14 timotimo the other one is full
14:14 timotimo that's amazing
14:15 FROGGS the 9.338 is correct though
14:16 timotimo oh
14:16 timotimo so it prints out all the parts first
14:16 timotimo and then the result of formatting all the parts
14:17 FROGGS nqp-m: say(nqp::sprintf("Stage %-11s: %7.3f", ["parse", "9.337533"]))
14:17 camelia nqp-moarvm: OUTPUT«Bytecode validation error at offset 22, instruction 4:␤register operand index 50 out of range 0..9␤»
14:17 FROGGS errrm, what?
14:17 FROGGS needs a rebuild?
14:17 FROGGS locally this works fine
14:18 FROGGS so I think it only borkens when printing to stderr
14:19 FROGGS install/bin/moar nqp.moarvm -e 'my $err := nqp::getstderr(); nqp::printfh($err, nqp::sprintf("Stage %-11s: %7.3f", ["parse", "9.337533"]))'
14:19 FROGGS Stage parse      :   9.338moar: 3rdparty/libuv/src/unix/loop.c:150: uv__loop_delete: Assertion `!((((*(&(loop)->active_reqs))[0]) == (&(loop)->active_reqs)) == 0)' failed.
14:30 ggoebel6 joined #moarvm
14:39 tadzik so, t/nqp/82-decode.t is the last nqpboot failure?
14:40 JimmyZ kinda
14:42 jnthn I guess nobody ever tried touse this utf-16 encoder... :P
14:45 dalek MoarVM: f3e16a0 | jnthn++ | src/strings/utf16.c:
14:45 dalek MoarVM: Fix obvious problem in UTF-16 encoder.
14:45 dalek MoarVM:
14:45 dalek MoarVM: Who knows what more may lurk... :-)
14:45 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/f3e16a025d
14:45 dalek MoarVM: 249069d | jnthn++ | src/ (3 files):
14:45 dalek MoarVM: First pass at encode/decode ops.
14:45 dalek MoarVM:
14:45 dalek MoarVM: Right enough to pass 82-decode.t, at least.
14:45 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/249069d2b3
14:45 tadzik \o/
14:46 arnsholt Does the Unicode consortium have some kind of torture chamber for implementations?
14:46 arnsholt That'd make sense
14:46 jnthn Probably :)
14:47 arnsholt Kind of like TeX has TRIP
14:47 jnthn oh, I have an NQP commit locally that I didn't push too
14:48 jnthn There we go
14:48 JimmyZ jnthn++
14:49 jnthn Only issue left that isn't Moar specific is taht on Windows, \r screws up 05-comments.t
14:49 jnthn if you get rid of those all is fine
14:49 jnthn It happens on other backends too...may just fix it while I'm fixing stuff, though, so it's clean even in that environment'
14:52 FROGGS jnthn++
14:58 diakopter jnthn: nope, never teted the utf16 :D :D :D :D
14:59 diakopter ... I'm surprised it took only that to make work...
15:05 jnthn diakopter: Well, that only tests it can encode/decode 'a' :P
15:05 diakopter heh.
15:06 TimToady you need at least A to be able to do ASCII
15:06 diakopter evalbot rebuild nqp-moarvm
15:06 diakopter evalbot rebuild nqp-moar
15:07 diakopter evalbot rebuild nqp-m
15:07 diakopter nqp-m: 1;
15:07 camelia nqp-moarvm: OUTPUT«Bytecode validation error at offset 22, instruction 4:␤register operand index 50 out of range 0..9␤»
15:07 jnthn .oO( I was gonna learn about Unicode, but I sent for asciing vacation instead... )
15:07 jnthn *went
15:13 jnthn All tests successful.
15:13 jnthn Files=85, Tests=1918, 25 wallclock secs ( 0.39 usr +  0.11 sys =  0.50 CPU)
15:13 jnthn Result: PASS
15:13 jnthn \o/
15:13 * masak .oO( I get branded as sexists just for one little EBCDIC joke... )
15:13 masak sexist*
15:13 jnthn That's with an optimized build
15:15 diakopter is that fast?
15:15 jnthn It's ok :)
15:15 PerlJam masak: Just make sure you're not within ear-shot of Adria Richards ;>
15:15 benabik Correct >> fast
15:15 diakopter not_gerd: if you're around, ping me on gtalk... :D
15:16 diakopter benabik: fast is part of correct! I promise!
15:16 * jnthn checks the build actually works with optimized MoarVM too
15:16 * diakopter doesn't hold my breath
15:17 masak PerlJam: don't worry, I don't have a tendency to dongle in her vicinity...
15:17 jnthn I'm going to merge moarboot into master, then make sure that we didn't break the NQP on Parrot or NQP on JVM builds. And provided not, then I'll merge it
15:18 FROGGS \o/
15:19 jnthn diakopter: Works for me :)
15:19 jnthn I want to set up a runner thing for it too
15:19 * diakopter dares you to try 32-bit
15:19 jnthn hah
15:19 diakopter runner thing?
15:19 jnthn Don't actually have a 32-bit build handy
15:19 diakopter sure you do
15:19 jnthn diakopter: Yeah, so you can just say "nqp" instead
15:20 * grondilu has 32-bit linux in case it's useful
15:20 jnthn diakopter: Like on JVM
15:20 jnthn diakopter: Instead of the full path to Moar, then nqp.moarvm :)
15:20 diakopter I thought the jvm one was a shell script
15:20 jnthn Sure
15:21 jnthn Or .bat on Windows
15:21 jnthn Will do the same here.
15:21 diakopter oh; I thought we had that actually
15:21 jnthn We can look at fake-executable stuff in the future if we really want.
15:21 jnthn No, make test does prove --exec "/path/to/moar nqp.moarvm"
15:21 jnthn or so
15:22 tadzik Files=85, Tests=1918, 24 wallclock secs
15:22 tadzik hah
15:22 tadzik prove -j4 ftw :P
15:22 FROGGS jnthn: and the segfault after stagestats is due to printing to stderr, not closing it, and tehn calling uv_loop_delete
15:22 * jnthn does -j4
15:22 tadzik even 20, if I reorder stuff
15:22 FROGGS I tried to close that pipe but there is still something left to clean up in libuv
15:23 jnthn Files=85, Tests=1918, 14 wallclock secs
15:23 jnthn hah
15:23 tadzik t/qregex/01-qregex.t is the slowest one, so it makes sense to put it first
15:23 jnthn ooh, lemme try that
15:23 tadzik t/qregex, then t/nqp
15:24 jnthn hm, on Windows it makes no difference
15:24 tadzik it was 20% faster here :)
15:24 tadzik (the whole run)
15:24 jnthn wow
15:25 timotimo i'm still convinced that print failure is due to it accidentally printing all pieces of the format string in order "unformatted" and then the whole thing formatted :P
15:25 tadzik (24 vs 20 secs)
15:26 jnthn diakopter: I'm gonna go for the merge, then sort out runner, etc. There's no need for the rest to happen in a branch.
15:27 jnthn oh, I may squash the stage 0 updates though...
15:28 diakopter squash away
15:29 FROGGS timotimo: now I think the nqp-cc really is to blame, because the weird output has no padding for %s, and when you look at nqp-cc's sprintf %s rule, it is outdated and can't handle it
15:29 timotimo mhk
15:29 FROGGS so, only we make bootstrap-files using the stage2 created by moar, it will vanish at all
15:30 FROGGS now it is just visible when using the stage0, but not after that
15:30 diakopter why in the world does it....
15:30 diakopter asplain plz
15:31 FROGGS well, I can even update sprintf in nqp-cc, create a new stage0, and it will be good
15:32 FROGGS the segfault when calling uv_loop_delete has nothing to do with that though, and therefor will remain
15:32 FROGGS gtg, see you in a bit
15:33 jnthn No, just fix it in nqp repo
15:33 benabik Is Moar's nqp going to try to install itself as nqp?  That could get awkward quickly, with three different versions of nqp vying to be the one true nqp.
15:34 diakopter see the #perl6 backlog... oh wait, don't.
15:34 diakopter yeah we'll have them build nqp-$vm executables/launchers
15:34 diakopter and put those in path
15:35 diakopter then alias/shortcut one of them
15:35 diakopter and have the user choose which one if there's multiple
15:35 diakopter using the system distro package manager if possible (alternatives/provides)
15:35 lee_ it might be cool if there was something like nqp --switch-vm moar, to change the default
15:35 lee_ kind of like how perlbrew or rbenv work
15:36 arnsholt That doesn't belong in NQP itself I think
15:36 diakopter lee_: there's a tool for that on the major distros
15:36 benabik I don't think they're quite 100% interchangeable...  Or will nqp-moar be able to compile my parrot languages?
15:36 lee_ i guess if you trust distros to get it right, then yeah :P
15:36 diakopter benabik: not if it has Q:PIR
15:36 diakopter :P
15:36 benabik diakopter: Well, yes.
15:37 diakopter benabik: ... what parrot languages
15:37 timotimo moar already gets perl5 compatibility, why not add parrot compatibility on top!
15:37 timotimo so we can run winxed programs on moar ...
15:37 diakopter meh
15:37 diakopter (what does it offer above nqp)
15:37 benabik diakopter: I did develop on Parrot for a couple years, I have a small collection of stuff.
15:39 arnsholt If your language is implemented using NQP-rx it should be possible to re-implement it on NQP without *too* much pain I think
15:41 tadzik oh, that sounds like rakudobrew a bit :)
15:42 tadzik multiple backends installed, and a perl6 script that picks the one you want
16:14 not_gerd joined #moarvm
16:14 not_gerd o/
16:15 diakopter o/
16:21 colomon joined #moarvm
16:22 nwc10 what branches of nqp and parrot should I be building with to get moarvm to pass t/nqp/82-decode.t ?
16:23 jnthn No Parrot needed
16:23 jnthn nwc10: Hang on a bit though, I'm landing some merges etc. soon.
16:23 nwc10 OK
16:24 nwc10 I shall go back to herding the 4 year old yuppie, who seems to be annexing all the sofas for house construction, and blaming her scooter for what its doing
16:45 ssutch joined #moarvm
16:47 jnthn Oh, while I was taking a walk in Stockholm, I figured out how to do a nice, isolated fix for the long-standing GC gen2 root list algorithmic problem.
16:47 jnthn Just implemented it now and testing .
16:47 jnthn ...and hoping for now SEGV :P
16:48 jnthn Hm, it shaved another 4s off make test
16:49 jnthn Now non-parallelized is down to 21s
16:49 diakopter sigh.
16:49 diakopter I wonder if I addressed it in the gcorch branch.. :(
16:49 jnthn And down to 10s parallelized
16:49 jnthn diakopter: I'm really happy with how self-contained my solution is
16:50 diakopter if you thought I was arguing to consider using mine instead then I'm insulted
16:50 diakopter I thought I've tried to communicate this so many times before
16:51 diakopter that when I say those sorts of things I'm simply lamenting that I didn't yet have time to finish it
16:51 jnthn diakopter: Huh, no, was just expressing my happiness that something I had first expected would be a pain to solve seems to have had a realtively easy to implement solution.
16:52 diakopter well when you push it I'll be able to see if I even worked on it
16:52 jnthn diakopter: I don't recall this being on the list youd gist'd of things you had done in gcorch fwiw
16:52 diakopter I suspect I didn't, yeah
16:53 * TimToady gave up trying to figure out whether he was insulted a long time ago, and just assumes it's so, and that it doesn't matter :)
16:54 diakopter bleh
16:56 dalek MoarVM: ffc82e5 | jnthn++ | src/gc/ (2 files):
16:56 dalek MoarVM: Greatly improve gen2 root handling.
16:56 dalek MoarVM:
16:56 dalek MoarVM: Before, an object was only removed from the gen2 root list when it was
16:56 dalek MoarVM: itself GC'd in a full collection. This meant that a long-lived object
16:56 dalek MoarVM: that made it into the gen2 root list stayed there even if it no longer
16:56 dalek MoarVM: pointed to any nursery objects or frames.
16:56 dalek MoarVM:
16:56 dalek MoarVM: Now, as we pass through the gen2 roots list, we take note of objects
16:56 dalek MoarVM: that no longer need to be there, and slide those that do down to the
16:56 dalek MoarVM: start of the list. This keeps it around a constant-ish size, rather
16:56 dalek MoarVM: than O(heap size).
17:02 jnthn nwc10: So, now no Parrot needed. In MoarVM, perl Configure.pl --prefix=install or so
17:02 jnthn nwc10: Then in latest NQP, perl ConfigureMoar.pl --prefix=/path/to/MoarVM/install
17:02 jnthn That is, just make the prefixes match :)
17:02 diakopter jnthn: yeah but nwc10 doesn't have 2GB ram
17:03 diakopter on the Pi, that is
17:04 jnthn Yeah, I suspect what I just committed will only help so much
17:05 FROGGS joined #moarvm
17:27 nwc10 the Pi ended up being extremely upset
17:27 nwc10 kernel paniced overnight
17:27 nwc10 and oopsed into the kernel debugger on reboot
17:27 nwc10 it's back now
17:27 diakopter how much memory does it have
17:27 nwc10 256Mb RAM, but the GPU has to have at least 32Mb, IIRC
17:27 nwc10 it's an old model B
17:30 nwc10 and apparently I need to make "brm brm brm" noises right now
17:32 diakopter o_O
18:10 nwc10 jnthn: All tests successful. (not on the Pi)
18:14 jnthn :) (:()
18:16 benabik Does moarboot being merged into nqp mean nqp-cc will die soon?
18:19 TimToady one can hope :)
18:20 jnthn benabik: yeah
18:21 jnthn benabik: But as soon as it goes away we have to start respecting bytecode back-compat
18:21 jnthn I think there's a few things to sort out (like extops bytecode changes) before we do that
18:22 jnthn But I suspect its remaining life is O(weeks)
18:22 benabik Guess I need to set up another nqp clone then.  :-D
18:22 benabik compatibility?  Oh noes!
18:35 masak jnthn: '(:()' looks like a monkey with a banana on its head.
18:36 jnthn It...it does? :P
18:42 diakopter looks more like a person with two bananas on their head
18:49 benabik Hm...   '2' is not a valid number at line 685, near ",\n    2,\n "  panic
18:51 benabik Compiling stage2/MASTOps.moarvm
18:51 diakopter well, why'd you make 2 an invalid number? :P
18:53 jnthn heh
18:54 benabik Seems odd because that's in the middle of a huge list of numbers.  Going to guess that's actually a memory issue or something.
18:55 diakopter gamma rays, probably
18:56 benabik Well, it's happened twice now, with different numbers in Ops.nqp
18:57 dalek MoarVM: d0e69a5 | jnthn++ | src/core/coerce.c:
18:57 dalek MoarVM: Missing MVMROOT in nqp::radix.
18:57 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/d0e69a5d80
18:58 jnthn benabik: If we're really lucky, ^ might get it.
18:59 benabik jnthn++
18:59 diakopter t\qregex/01-qregex.t takes fully half of the cpu time
19:00 jnthn diakopter: ?
19:00 jnthn "fully half"?
19:00 jnthn Sounds like it's a good profiling target, either way... ;)
19:01 diakopter fully there means "definitely, I'm not eaggerating"
19:01 diakopter exaggerating
19:01 jnthn diakopter: half the CPU time during make test?
19:01 diakopter yeah
19:01 jnthn Well, it does do 750 evals...
19:02 jnthn It's by far the most hard-working of the tests.
19:02 * diakopter goes to profile it
19:02 jnthn I'll profile it if you don't beat...oh, cool :)
19:02 jnthn Added a runner, btw
19:02 diakopter you're a runner
19:03 jnthn Nah, I'm too lazy for that :P
20:06 FROGGS jnthn: I tried to come around the segfault when printing to stderr/stdout...
20:06 FROGGS jnthn: this seems to be a possible fix: https://github.com/joyent/node/commit/4​915884da69814bd4daab22393919a628c9ecf23
20:06 FROGGS jnthn: but sadly it segfaults then when trying to leaning up the stream handle
20:21 foo_bar_baz joined #moarvm
21:08 not_gerd good night o/
21:08 diakopter o/
21:09 not_gerd left #moarvm
23:05 BenGoldberg joined #moarvm
23:05 BenGoldberg p6: say <JAPH>
23:05 camelia rakudo 50cecf, niecza v24-98-g473bd20: OUTPUT«JAPH␤»
23:06 BenGoldberg nqp-m: say(NQPMatch)
23:06 camelia nqp-moarvm: OUTPUT«Bytecode validation error at offset 22, instruction 4:␤register operand index 50 out of range 0..9␤»
23:08 BenGoldberg A "Bytecode validation error" is much better than a segfault (which is what that code did a day or so ago), but it's still obviously not quite right...
23:11 diakopter :)
23:13 [Coke] where are the guts for MVM_OP_tc ? oplist is signature, ops.c is a struct of that signature, it seems...
23:14 [Coke] (tc is particularly hard to search for, as it's also the abbr for threadcontext)
23:14 diakopter [Coke]: look for OP(tc) in interp.c
23:14 diakopter src/core/interp.c
23:19 [Coke] danke.
23:20 diakopter yw
23:25 cognominal joined #moarvm

| Channels | #moarvm index | Today | | Search | Google Search | Plain-Text | summary