github.com/moarvm/moarvm | IRC logs at irclog.perlgeek.de/moarvm/today
Set by moderator on 19 October 2013.
01:14 FROGGS joined 01:46 FROGGS joined 02:02 FROGGS joined 02:19 jnap joined 02:28 colomon joined 04:17 FROGGS joined 06:39 woolfy1 left
FROGGS .tell jnthn now it fails on linux like: Missing method cache; late-bound dispatch NYI 07:29
scalar_attr
so, seems to behave exactly like on windows, which is nice :o) 07:30
lue FROGGS: I don't believe yoleaux is here. 07:35
FROGGS lue: I don't believe so too :o)
but jnthn will read this anyway
09:08 lizmat joined
jnthn FROGGS: OK, good that Linux is caught up now :) 09:14
Well, Rakudo Moar on Linux, that is :P
FROGGS hehe, exactly *g* 09:15
dalek arVM: 63537d4 | (Tobias Leich)++ | Configure.pl:
improve backslash handling on windows
09:26
10:04 camelia joined 10:34 woolfy joined 11:26 colomon joined
dalek arVM: 330d921 | jnthn++ | src/ (6 files):
Implement late-bound method lookup.
12:10
12:29 cognominal joined 12:54 FROGGS[mobile] joined
dalek arVM: 473c7dd | jnthn++ | src/6model/reprs/P6bigint.c:
Add P6bigint.deserialize_stable_size.
12:57
arVM: ee86416 | (Dagur Valberg Johannsson)++ | src/mast/compiler.c:
operands are uninitialized if we have none, check for it
13:25
arVM: b21f027 | jonathan++ | src/mast/compiler.c:
Merge pull request #63 from dagurval/crash-on-no_op

operands are uninitialized if we have none, check for it
arVM: b2a9d55 | jnthn++ | src/6model/6model.c:
Catch a common null error.

Need a more general approach, but this one is handy to catch now.
13:32
14:27 lue joined
FROGGS jnthn: the filename at src/core/loadbytecode.c:67 is somehow borken... I can't even convert it to a C string to pring it... 15:26
print*
hmmm, the string is 'blib/Perl6/BOOTSTRAP.moarvm', and figure_filename seems to break it 15:28
15:43 camelia joined
FROGGS hmmm, it helps when I do: 15:50
-result = orig
+result = MVM_string_utf8_decode(tc, tc->instance->VMString, orig_cstr, orig_len);
jnthn: this is the patch that helps, but I don't think it is sane gist.github.com/FROGGS/603692fde738639fc0d3 16:13
now it segfaults here :/ 16:14
Program received signal SIGSEGV, Segmentation fault.
0x00007ffff79e6319 in process_worklist (tc=0x6033b0, worklist=0x29ccb40, wtp=0x7fffffffccd0, gen=0 '\\000') at src/gc/collect.c:171
no, now it does: 16:36
Cannot invoke null object
returnless_past
camelia: help 16:52
camelia FROGGS: Usage: <(rakudo-jvm|nqp-jvm|star|pugs|std|niecza|p5-to-p6|nqp-parrot|b|rakudo-parrot|nqp-moarvm|nom|rnP|r|nPr|rPn|Prn|j|nqp-m|Pnr|nqp-mvm|nqp-j|nr|p6|n|p56|rj|perl6|nqp|r-j|P|rn|rakudo|r-jvm|nqp-p|nrP|p|r-p|rp)(?^::\\s) $perl6_program>
FROGGS nqp: say(nqp::getcomp('qast'))
camelia nqp-moarvm: OUTPUT«Unhandled exception: Bytecode segment overflows end of stream␤»
..nqp-jvm: OUTPUTĀ«java.lang.NullPointerException␤ in (gen/jvm/stage2/NQPCORE.setting:672)␤ in print (gen/jvm/stage2/NQPCORE.setting:671)␤ in say (gen/jvm/stage2/NQPCORE.setting:678)␤ in (/tmp/ihCgTevKen:1)␤ in (gen/jvm/stage2/NQPHLL.nqp:1098)␤ in eval (gen/jvm/sta…»
..nqp-parrot: OUTPUT«Null PMC access in get_string()␤current instr.: '' pc 768 (gen/parrot/stage2/NQPCORE.setting.pir:355) (gen/parrot/stage2/NQPCORE.setting:665)␤»
FROGGS nqp: nqp::getcomp('qast') 16:53
camelia ( no output )
..nqp-moarvm: OUTPUT«Unhandled exception: Bytecode segment overflows end of stream␤»
FROGGS nqp: use QAST; say(nqp::isnull(nqp::getcomp('qast'))) 16:58
camelia nqp-jvm, nqp-parrot: OUTPUT«1␤»
..nqp-moarvm: OUTPUT«Unhandled exception: Bytecode segment overflows end of stream␤»
FROGGS err 16:59
nqp: use QAST; say(nqp::isnull(nqp::getcomp('QAST')))
camelia nqp-moarvm: OUTPUT«Unhandled exception: Bytecode segment overflows end of stream␤»
..nqp-jvm, nqp-parrot: OUTPUT«0␤»
FROGGS okay, works locally for nqp-m too
nqp: use QAST; say(nqp::getcomp('QAST').operations.HOW.name(nqp::getcomp('QAST').operations)) 17:02
camelia nqp-parrot: OUTPUT«QAST::Operations␤»
..nqp-moarvm: OUTPUT«Unhandled exception: Bytecode segment overflows end of stream␤»
..nqp-jvm: OUTPUT«QAST::OperationsJAST␤»
FROGGS k, works locally too 17:03
ahh, we are laking method is_inlinable 17:06
jnthn yeah, I was just gonna steal it too :) 17:39
jnthn builds to see the next error... :)
FROGGS it calls another nonexistent method, at least that is how I understand it
something along line 44, trait_mod:<is> 17:40
moritz are you two working on rakudo/moar-support?
FROGGS currently I try to make the msg "Cannot invoke null object" nicer, so we know the method name
moritz: yes
jnthn FROGGS: Yes, that needs some very careful handling :) 17:41
For a simple-looking thing there's a few ways to get it wrong... :)
In the case we .^find_method we need to set up the continuation trick to check for the non-foundness, I think... 17:42
Hmmm...that redeclaration error is weird, though. 17:44
Almost like it doesn't consider that multi a multi 17:45
FROGGS I was guessing that the redeclaration is about the exception class...
benabik FROGGS: nitpick on your Configure commits: You say "on Linux", but you really coded "not Windows" which includes OS X at the very least. (That said, I think everything you added works on OS X. We'll see in a minute.) 17:46
FROGGS okay, the MVM_frame_find_invokee which throws is in coerce.c around line 60 (the else block) 17:47
benabik: you are right :/
jnthn Line 2329 is where it throws 17:48
FROGGS: Yeah, but we need to fix method lookup, I think. :)
nqp: nqp::findmethod(NQPMu, 'invalid') # does this blow? 17:49
camelia ( no output )
..nqp-moarvm: OUTPUT«Unhandled exception: Bytecode segment overflows end of stream␤»
..nqp-parrot: OUTPUT«Method 'invalid' not found for invocant of class 'NQPMu'␤current instr.: '' pc 44 ((file unknown):40504472) (/tmp/dDdqC7WTsB:1)␤»
FROGGS jnthn: no, does not throw locally
jnthn hm, nqp-jvm doesn't blow up on that, but nqp Parrot does
Right, I know it doesn't
FROGGS ahh, k
jnthn I'm saying it should, I just didn't want to do it before checking what nqp::findmethod wants 17:50
Turns out it throws
At least on Parrot, which means we're not relying it not blowing up elsewhere
So I think we make it explode on Moar too and treat nqp-jvm as the non-conformatn one.
As for the real reason we fail, I think it's because I didn't make nqp::can handle late-found calls yet 17:51
And actions.pm 2320 relies on that
FROGGS s/found/bound/ ?
moritz currently I get "Unhandled exception: failed to load library 'dynext/libperl6_ops_moar.so'" while compiling the setting
is that expected?
FROGGS moritz: you compiled MOarVM with --shared?
jnthn FROGGS: yes 17:52
moritz FROGGS: no. Should I?
FROGGS moritz: yes
dunno if we should replace the --shared by a --static option, and flip the defaults
I guess it makes sense
moritz if the main customer needs it, it should be default. 17:53
benabik is going to try to push those OS eq/ne 'win32' into build/setup.pm with the rest of the platform options.
+1
jnthn +1 17:54
benabik undef ld == use cc for linking? 17:57
moritz it seems that 'make clean' doesn't clean 3rdparty/libuv 17:58
FROGGS realclean does
moritz which is a problem if you built without --shared, and then reconfigure with shared
FROGGS right?
dalek arVM: 371e714 | jonathan++ | src/6model/6model.c:
Partial fix for method not found errors.

Still need to do the late-bound case.
moritz FROGGS: at least it says it does 17:59
I'll know soon
yep, worked
dalek arVM: 495d641 | (Tobias Leich)++ | Configure.pl:
replace --shared by --static
18:00
FROGGS ahh 18:11
Error while constructing error object:Cannot find method 'specialize'
Error while compiling, type X::Redeclaration
symbol: routine
symbol: trait_mod:<is>
line 44
dinner &
dalek arVM: c8b5ed3 | jonathan++ | src/ (3 files):
Refactors in prep for non-cache nqp::can handling.
18:17
jnthn Descending; guess I'll have to vanish soon :) 18:18
dalek arVM: 8303bb3 | benabik++ | / (2 files):
[Configure] Move rpath into platform options

We hvae all these nice platform hashes in build/setup.pm. Let's use those instead of a hand-coded conditional.
arVM: 80f0e1a | benabik++ | / (2 files):
[Configure] Move lib names and dir into platform config

This eliminates the last `eq 'win32'` checks in the main Configure code.
benabik There. Now all the platform specific stuff is in the platform configure hashes. :-D 18:19
jnthn bah, took my earphones out and drunk guy behind me is still drunk and still singing... 18:21
dalek arVM: 9114651 | jonathan++ | src/6model/6model.c:
Implement non-cache case of nqp::can.
18:27
jnthn and next up, "extension op 'p6bool' not registered" 18:29
That's LHF, but I seem to be on a LFP by now...so later :) &
moritz jnthn: maybe you should give dagurval a commit bit :-) 18:33
or diakopter, or whoever hands out MoarVM commit bits 18:34
18:43 benabik joined 18:47 benabik joined
diakopter moritz: not I 19:00
benabik I seem to have a working nqp-m! \\o/ 19:13
FROGGS \\o/
\\m/
benabik Actually, nqp-m is currently the only nqp that passes all the tests on my computer... 19:18
Installing fails though: make: *** No rule to make target `/Users/brian/dev/perl6/nqp/temp/usr/local/lib/MAST/Ops.nqp', needed by `gen/moar/stage1/MASTOps.moarvm'. Stop.
moritz benabik: nqp-p passed all its test earlier today on my machine
benabik moritz: I'm having some problem with icu4u I think. Parrot fails a few of its tests as well. 19:19
icu4c, I mean.
Wait... Why does building stage1 depend on my prefix? 19:20
Oh. Because it's looking for my moarvm install.
19:26 woolfy joined
benabik Ah. If $(PREFIX) includes $(DESTDIR), it's inappropriate to use in build rules. 19:39
jnthn ah, nice :) 20:36
It's warm enough to sit outside on an evening to hack and I have a beer. :) 20:37
FROGGS jnthn: btw, the multi does not find its proto
diakopter jnthn: so can I claim the continuations port task for 1.5 days?
jnthn FROGGS: I fixed that with the can patch :) 20:38
FROGGS hmmm
jnthn Oh, wait, I half fixed it. It blocks on p6bool too.
FROGGS jnthn: I stubbed p6bool
jnthn Yes but it needs to work :) 20:39
FROGGS and now the 'specialize' and redecl message popped up again
gah
:P
jnthn Thankfully, tha should be easy... :)
FROGGS if you say so :o) 20:40
I don't even know how to get the argument
diakopter jnthn: ...?
jnthn diakopter: Yes, go ahead :) 20:41
We don't block on it for a while yet.
FROGGS it will be needed for gather/take, right? 20:42
jnthn Right
FROGGS k
jnthn We don't rely on gather/take to get a loadable setting afaik
At least, didn't in the JVM times :)
diakopter oh.
diakopter is scared to search the setting for 'gather' 20:43
jnthn But think make test needs it :)
FROGGS there are a lot of 'gather's in the setting :/ 20:44
27 times :o)
first one is at line 5909 20:45
jnthn You don't need it to work to compile a gather/take though ;) 20:50
diakopter 'splain?
FROGGS listens
diakopter you mean just emit NYI opcodes or something? 20:51
jnthn Well, it calls into a GATHER call
FROGGS you need it to run it I guess
jnthn You only have a problem at runtime when that GATHER call needs to do something useful ;)
FROGGS and since none of the gathers is in a BEGIN block, we are safe :o) 20:52
until...
diakopter jnthn: what then could I do that's on the rakudo critical path 20:54
(sooner) 20:55
jnthn diakopter: tbh, making the NQP continuations tests pass is the easiest isolated thing to take on. I'm only saying "a while" 'cus I'm hedging on how fast we'll get to it being a blocker... ;)
Other bits are the container stuff, binder stuff (that needs probably me to look at it, though)...and probably loads of little pieces 20:56
[Coke]'s list of ops we're missing on Moar but have on Parrot/JVM is another good source of todos.
dalek arVM: 6eaf71f | jonathan++ | src/ (2 files):
Some more additions to the public API.
21:12
diakopter jnthn: do you happen to know how I can find that list of todops? 21:13
jnthn diakopter: Not short of searching for coke and a gist within the last few days 21:14
diakopter heh; last I remember it was weeks ago 21:16
jnthn Feels recenter than that to me.
FROGGS diakopter: gist.github.com/coke/6799633 21:24
ahh, getlexouter is next 21:26
diakopter is tempted to suggest claiming them in the commets 21:29
comments
er, *comments 21:31
I mean
I didn't comment there yet
[Coke]: why are the continuation ones in the need docs section, but not in the "missing in moar" section? 21:32
.ask [Coke] why are the continuation ones in the need docs section, but not in the "missing in moar" section?
.. oh, b/c it's not documented? :S 21:35
jnthn: see the comment I added to that gist 21:40
FROGGS: u2 :)
jnthn sorry, got distracted doing night photos :)
but this is vacation... :)
diakopter *comment updated 21:41
hmm, seems that list is out of date some 21:42
jnthn captureexistsnamed
capturehasnameds
I did thsee two very recently
diakopter how can we not implement wval
or scgetcode
jnthn setdispatcher
takedispatcher
Those also
Here are my suggestions for those who want something to hack on: 21:43
chain
xor
srand
sprintfdirectives
getlexrel
getlexreldyn
getlexrelcaller
inf
nan
neginf
bitand_s
bitor_s
bitxor_s
Those should all be approachable, isolated, and we'll hit 'em sooner rather than later :) 21:44
diakopter yay :) thanks jnthn :D
diakopter starts from the bottom
jnthn I suspect FROGGS will know exactly what to do with sprintfdirectives :) 21:45
diakopter *comment updated
jnthn: should we still add to the bottom of oplist?
FROGGS jnthn: already mapping it :o)
diakopter or add them all at once in one commit in decent places? 21:46
eh, I guess add them at the bottom, duh.. 21:47
jnthn At the bottom 21:48
The comment at the top says so ;-)
Though I was just about to add one too 21:49
diakopter jnthn: git question: how do I kill merge commits (I seem to have several ready to push) :( 21:50
FROGGS git status shows you
git reset HEAD <file>
jnthn diakopter: How did you get them? Pulling when you had a local commit? 21:51
diakopter git status shows me what?
jnthn: yes I guess
tadzik git rebase -i maybe
diakopter (without rebase, accidentally)
tadzik: how?
tadzik I don't know, but I know people do that :)
diakopter FROGGS: what does git status show me?
FROGGS diakopter: git status shows me how to unstage it
jnthn If you have, like, your commit <- merge <- merge, then count the merges and try get reset --hard HEAD~2 # where 2 is number of merge commits
tadzik just git rebase -i and try to play along, I guess
jnthn And then git pull --rebase
diakopter jnthn: hm, oh, but I have stashes in there too 21:52
jnthn stashes are orthogonal
Hmm, but I wonder if HEAD~2 will go weird also...
diakopter: oh, easier
If you have what I described
diakopter yes
jnthn Get the sha-1 of the last commit you made, before the merge commits
Then git reset --hard that-sha-1 21:53
And then git pull --rebase
diakopter finds a large number of abandoned stashes 21:55
FROGGS jnthn: MVM_frame_find_lexical_by_name is almost what we need for getlexouter, right? 21:56
the only diff I see is that getlexouter does not take the type 21:57
jnthn FROGGS: Yeah, I'm working on that one atm :)
FROGGS I thought so :o) 21:58
(because it is missing in the todo list above)
diakopter ugh, I forgot about this; when solving conflicts from stash merges, REMOTE and LOCAL are switched, ish
FROGGS: where is it missing? 21:59
FROGGS: it's in the list
in my comment
FROGGS diakopter: it is missing in jnthn's suggestions 22:00
diakopter oh that :) 22:02
dalek arVM/hllprof: 2890baa | diakopter++ | build/test.txt:
updated test message
22:04
arVM/hllprof: fe79f4c | diakopter++ | / (72 files):
Merge branch 'master' of github.com:MoarVM/MoarVM
arVM/hllprof: b8a1a81 | diakopter++ | / (12 files):
Merge branch 'master' of github.com:MoarVM/MoarVM
diakopter erm
dalek arVM/hllprof: e3565a2 | diakopter++ | / (12 files):
hllprof wip
diakopter oops
diakopter well they went into that branch. argh.
FROGGS nqp: nqp::seed(42)
-.- 22:05
diakopter hah
22:06 camelia joined
camelia ..nqp-moarvm: OUTPUT«Can't exec "./nqp": No such file or directory at lib/EvalbotExecuter.pm line 185.␤exec (./nqp /tmp/DqklMLvlPN) failed: No such file or directory␤Server error occurred! Closing Link: host07.perl6.com (Quit: camelia)␤Lost connection to server irc.freenode.org.␤» 22:07
22:07 BinGOs joined
tadzik wow, that was fast 22:07
diakopter wonders if someone deleted it
evalbot control restart 22:10
22:10 camelia joined
diakopter nqp-m: 1 22:10
camelia ( no output ) 22:11
diakopter nqp-m: say(nqp::now - nqp::now);
camelia nqp-moarvm: OUTPUT«No registered operation handler for 'now'␤compile_op␤»
diakopter nqp-m: say(nqp::now_n - nqp::now_n);
camelia nqp-moarvm: OUTPUT«No registered operation handler for 'now_n'␤compile_op␤»
diakopter nqp-m: say(nqp::time_n - nqp::time_n); 22:12
camelia nqp-moarvm: OUTPUT«-0␤»
diakopter nqp-m: say(nqp::time_n - nqp::time_n);
camelia nqp-moarvm: OUTPUT«-0␤»
diakopter nqp-m: my $a = nqp::time_n; say(nqp::time_n - $a);
camelia nqp-moarvm: OUTPUT«Assignment ("=") not supported in NQP, use ":=" instead at line 2, near " nqp::time"␤panic␤»
diakopter nqp-m: my $a := nqp::time_n; say(nqp::time_n - $a);
camelia nqp-moarvm: OUTPUT«0.000002␤»
diakopter ugh
ok, better
nqp: my $a := nqp::time_n; say(nqp::time_n - $a); 22:13
camelia nqp-moarvm: OUTPUT«0.000001␤»
..nqp-parrot: OUTPUT«9.5367431640625e-07␤»
..nqp-jvm: OUTPUT«0␤»
diakopter jnthn: lol ^
FROGGS Just In no Time :o)
diakopter so moar is impercipbly slower than parrot there... and infinitely slower than jvm ;) 22:14
*imperceptibly
22:16 Ulti joined
diakopter jnthn: erm, nqp seems to be building MUCH faster than when last I looked.... o_O 22:16
dalek arVM: 7948d19 | (Tobias Leich)++ | / (7 files):
s/seed/srand/
diakopter FROGGS: why not just map it..? 22:17
well, I guess if you don't change the order, it's fine..
FROGGS diakopter: it would be the first op where the mapping differs AFAIK 22:18
diakopter there's bunches
where they're just renames
.. unless someone cleaned them all up and I didn't notice 22:19
FROGGS hmmm, well, at least there is not one more :o)
jnthn: can I change an op from void to return something without breaking backcompat? 22:25
diakopter oh, not if it's used in the bootstrap 22:27
but I doubt it is...
well, who knows :)
FROGGS can't be used, since I renamed the op :o) 22:28
diakopter evalbot control rebuild nqp-moarvm
jnthn FROGGS: Return something? What, ooc? 22:29
FROGGS: It's not just a case where the result is one of the arguments?
FROGGS jnthn: it is the case, yes
srand(n) returns n 22:30
jnthn Yes, we don't change the op for that 22:31
You just add , 0 when mapping it
And it uses the 0th argument as the result
FROGGS ahh, allright
even better :o)
22:31 BinGOs joined
diakopter jnthn: it's really strange, I don't remember implementing that ,0 thing, but I feel I had to have been the one.... :S 22:32
jnthn: hm, why doesn't it LTO moar.dll 22:33
jnthn I think it does here... 22:34
At least, it takes ages over it :)
22:34 colomon joined
diakopter weird 22:34
jnthn You passed, --optimize, I assume? 22:36
diakopter yeah 22:37
diakopter tries again in case I had a seizure or something during it
oh, maybe 22:38
moar.exe is now dynamically linked to moar.dll?
FROGGS yes
diakopter wow, ok
jnthn Needed for extops 22:41
dalek arVM: 3442b93 | jonathan++ | / (8 files):
Add and implement getlexouter op.
jnthn No registered operation handler for 'p6bindsig' 22:42
*groan* :)
FROGGS diakopter: an you strip srand, sprintfdirectives and getlexouter from your comment? that would be sweet
can*
diakopter oh yeah, the unimplemented rakudo ops
22:42 BenGoldberg joined
diakopter FROGGS ok 22:42
FROGGS: ok
FROGGS jnthn: damn, now it is not a surprise anymore :o) 22:43
diakopter *updated
FROGGS builds anyway
jnthn :P
FROGGS diakopter++ # thanks
diakopter FROGGS: maybe I'll look at chain, unless you already are 22:44
jnthn I wonder if the need for that means we have hit the BEGIN block...
FROGGS diakopter: I'm not, I am thinking about snoring a bit like all the other lifeforms do here 22:45
diakopter "..it's just me and some lifeforms, sir."
FROGGS *g*
diakopter jnthn: how does one implement a custom rakudo op for moar 22:47
FROGGS: or you, of course
the moar-support branch I know..
ah well, I can find it 22:48
FROGGS diakopter: see rakudo/src/vm/moar/ops/perl6_ops.c
jnthn What FROGGS said and also see src/vm/moar/Perl6/Ops.nqp 22:49
But please leave p6bindsig for me
diakopter how many unimplmented ones are there there? 22:50
how many unimplmented ones are there?
(anyone know offhand?)
FROGGS se 22:51
sec
48 are defined for jvm 22:52
and three are done
jnthn "done" :) 22:53
FROGGS yeah
jnthn jnthn.net/tmp/by-night.jpg # ok-ish night photo of where I'm hacking from :) 22:54
FROGGS very nice
jnthn Look forward to seeing how it looks in daylight :)
diakopter jnthn: wow! 22:55
FROGGS tomorrow is hackathon?
timotimo ooooh pretty 22:56
jnthn Probably more like walkathon in the daylight hours :)
I got some nice restaurant tips too :)
But yeah, evening plan is beer and hack :) 22:57
FROGGS have fun guys, I go to bed
o/
jnthn 'night, FROGGS
diakopter \\\\\\\\\\\\\\ 22:58
\\
\\\\
argh
jnthn wtf :D 23:00
diakopter is now working on chain 23:07
bug: rakudo's Configure.pl doesn't allow relative paths for --prefix, but nqp allows it 23:15
jnthn: when nqp-m.exe exits from an exception, I'm not sure it's setting %ERRORLEVEL%, otherwise nmake wouldn't continue 23:18
jnthn diakopter: Yeah, I've seen some oddness there...
diakopter oh, I mean 23:19
not nqp
jnthn If we exit(non-zero) all should, in theoyr, be fine...
diakopter when moar.exe is running perl6.moarvm
which I'm shocked exists already
jnthn yeah
;-)
Darn progress
diakopter jnthn: are unhandled exceptions in child threads going to kill the vm? 23:25
(seems to me they should) 23:30
(should effectively force all exceptions to be handled) 23:31
jnthn: if more than one thread is running, and one of them calls nqp::exit(1), does it interrupt the others a la a gc run or whatever and then shutdown the vm? 23:35
shutdown gracefully?
jnthn (exceptions) yeah, seems reasonable 23:38
(exit) I don't think it does anything nice wrt threads yet.
but it should.
sleep time...'night 23:39
diakopter *sigh* I know what it does/doesn't do now.. I was asking what it should do
BenGoldberg Do we have a way to gracefully kill a thread from another thread? 23:42
timotimo that is never possible, ever :P
diakopter BenGoldberg: like notify? 23:43
BenGoldberg Probably
if more than one thread is running, and one thread calls nqp::exit, then that thread should notify all of the other threads that the vm is shutting down, and then that thread should exit. As each of the other threads receive that notification, it should shut itself down. The last thread alive could then do additional cleanup. 23:46
diakopter a la the JVM, we would have each thread throw a Really Systemy Exception 23:52
BenGoldberg I'm not sure if throwing a System Shutting Down exception would be a good idea... something might catch it and choose not to die, or fail to catch it and accidentally not clean something up 23:57
diakopter X::FatalError 23:59