Perl 6 - the future is here, just unevenly distributed

IRC log for #moarvm, 2015-05-29

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

All times shown according to UTC.

Time Nick Message
00:17 vendethiel joined #moarvm
02:50 vendethiel joined #moarvm
06:05 vendethiel joined #moarvm
06:49 FROGGS joined #moarvm
07:31 brrt joined #moarvm
07:37 brrt why did nobody ever tell me about semantic
07:40 brrt ok, i have a bit of a mess on my hand
07:40 brrt when an exception is thrown (MVM_exception_throwobj), one of the following things can happen
07:44 zakharyas joined #moarvm
07:44 brrt a): a handler is not found, so panic
07:45 brrt b): a handler is found, and it is an invoked exception frame, in which case it is put on the tc->active_handlers stack, which is what we want
07:45 brrt because the throwish_post magic captures this
07:46 brrt c): a handler is found, and it is a goto exception, in which case we unwind (possibly no frames at all :-(), which is *not* caught by the throwish_post magic
07:46 brrt in which case we continue on our merry way, not throwing an exception at all
07:47 brrt fwiw, the case in which the goto is unwound to a JIT frame *is* in fact handled correctly
07:52 brrt anyway, i need a reliable indicator to show that an exception has been thrown
07:52 brrt and right now, i have nothing
07:53 brrt but bbiab
07:53 brrt actually, bb much later
08:25 Ven joined #moarvm
08:51 Ven joined #moarvm
09:13 lizmat joined #moarvm
09:18 brrt joined #moarvm
09:21 brrt \o
09:21 brrt ok, long story short
09:21 brrt i need some kind of giveaway that demonstrates unevoqually that something that was throwish actually did throw
09:22 brrt ... now how exactly should i do that
09:22 timotimo worst case we introduce a return value from the throw_obj and throw_cat functions?
09:23 brrt whats more, i need to ensure that resume works properly, which i don't think it will right now
09:23 brrt because i use jit_entry_label for *marking* rather than resuming the flow
09:23 brrt hmm
09:23 brrt that's possible, yes
09:23 brrt but in fact, throwish always throws
09:24 brrt throw_cat and throw_obj should throw, else what they are doing
09:24 brrt so we *could* get away with simply loading a reentry label and *always* trampolining to the interpreter
09:24 brrt damnit timo, why do you find bugs in the JIT just now :-P
09:25 timotimo sorry ;)
09:26 brrt :-P
09:27 arnsholt brrt: Would absence of something work as evidence that a throw occur perhaps?
09:27 brrt hmm... what absence would we be talking about
09:27 arnsholt Print something after the throw, print something after the catch
09:28 brrt hmm
09:28 arnsholt (Or set a value, or whatever)
09:28 brrt well, my most awesome guess was this
09:28 brrt add an integer counter to the threadcontext, num_throws or something
09:28 brrt increment it each time when you throw
09:28 brrt compare before and after a throwish op
09:28 vendethiel joined #moarvm
09:29 brrt if nonequal, jump to the interpreter
09:29 brrt ... there is still the ugly matter of the within-frame-resume
09:31 arnsholt Yeah, if it's for actually fixing something, it's probably not ideal
09:32 arnsholt My initial reading was that you wanted a test case
09:32 FROGGS brrt: do you get your hands on this? ex->body.resume_addr = *tc->interp_cur_op;
09:33 brrt no, i know why this happens arnsholt, but thanks :-)
09:57 zakharyas joined #moarvm
10:02 vendethiel joined #moarvm
10:10 brrt FROGGS: yes, and i'd need to store the jit entry label as well in a special jit_resume_label
10:11 brrt because it is possible that the resume will happen *in the same frame* as the throw, and then i have not enough labels to store my position
10:11 brrt yes, many confuse
10:11 brrt i'll explain it in september :-P
10:23 brrt the fix is, i think, to do this
10:23 brrt * stop checking for the active handler, it isn't always actually set
10:24 brrt * compare the stored FRAME register with the TC->cur_frame pointer, to see if we're still in the same frame; if not jumpout
10:24 brrt * compare the jit_entry_label with the end-of-throwish-block label, if nonequal jump
10:25 brrt * store a jit_resume_label in the frame, wherein we store the jit_entry_label at-time-of-throwing (if the exception can resume), and restore this in MVM_exception_resume
10:26 brrt * treat MVM_exception_resume as throwish
10:26 brrt seems.. legit?
10:29 vendethiel joined #moarvm
10:46 brrt or c): always, always just trampoline
10:55 vendethiel joined #moarvm
11:21 vendethiel joined #moarvm
11:26 brrt joined #moarvm
11:35 brrt *sighs*
11:40 FROGGS hmmm?
12:39 timotimo well, can you do it? and more importantly: will it be helpfl?
12:59 brrt joined #moarvm
13:02 vendethiel joined #moarvm
13:03 brrt timotimo: yes, i can do it. yes, it will help. no, it's not very simple :-)
13:03 brrt especially if we want to resolve resuming as well
13:11 Ven joined #moarvm
13:53 vendethiel joined #moarvm
14:14 timotimo i'm sorry about causing all this trouble
14:14 timotimo maybe it's good to get you back into the jit before your big assignment? ;)
14:29 lizmat joined #moarvm
14:34 brrt joined #moarvm
14:41 vendethiel joined #moarvm
14:58 brrt timotimo: not your fault, happy to work on it
14:58 brrt just scary that such a bug would sit in here for so long
14:58 timotimo is it a bug?
14:59 timotimo i mean, we never jitted anything but "die" before
15:04 lizmat joined #moarvm
15:32 brrt joined #moarvm
15:33 brrt yes, it's a big
15:33 brrt bug
15:41 brrt is the spectest expected to hang, or not?
15:46 dalek MoarVM/jit_throw_ops: 57c9b89 | brrt++ | src/ (3 files):
15:46 dalek MoarVM/jit_throw_ops: Hopefully fix throwish ops
15:46 dalek MoarVM/jit_throw_ops:
15:46 dalek MoarVM/jit_throw_ops: Before this patch, we used to check the active handler stack
15:46 dalek MoarVM/jit_throw_ops: of the interpreter to see if we've entered an exception handler
15:46 dalek MoarVM/jit_throw_ops: after executing a 'throwish' opcode in the JIT. However, because
15:46 dalek MoarVM/jit_throw_ops: we also have 'goto exceptions', that's not really a very good
15:46 dalek MoarVM/jit_throw_ops: check. A better check is to compare the current frame with the JIT
15:46 dalek MoarVM/jit_throw_ops: frame.
15:46 dalek MoarVM/jit_throw_ops:
15:46 dalek MoarVM/jit_throw_ops: Because we may resume (yay for delimited continuations) a thrown
15:46 dalek MoarVM/jit_throw_ops: exception, even that is not enough, though. So I rigged the exception
15:47 brrt timotimo: please check that out when you have time
15:50 vendethiel joined #moarvm
16:13 timotimo oh!
16:14 timotimo it's already here?
16:14 timotimo i was expecting it'd take a week or so ;)
16:16 timotimo well, nqp doesn't hang any more when building
16:16 timotimo so that's awesome :)
16:16 timotimo for send-more-money-loops to have THROW fully jitted, i'll have to jit newexception, setexceptionpayload, and setexceptiontype
16:16 timotimo but this is way cool. brrt++ :)
16:21 vendethiel joined #moarvm
16:48 brrt joined #moarvm
16:50 jepeway joined #moarvm
16:50 brrt well, you're welcome :-)
16:51 brrt spectest is flaky, but has been flaky for some time
16:51 brrt i'm most interested in resume, by the way
16:52 timotimo mhh
16:52 timotimo i don't have code exercising resume
16:55 brrt i'm fairly sure the spectest does
16:56 timotimo hopefully enough :)
16:56 timotimo the nqp tests are happy at least
16:58 timotimo the spec test run i have looks good, too
17:00 timotimo grocery shopping &
17:01 brrt see you
17:07 dalek MoarVM/jit_throw_ops: c1b4bae | brrt++ | src/jit/graph.c:
17:07 dalek MoarVM/jit_throw_ops: Fix copy-pasto
17:07 dalek MoarVM/jit_throw_ops: review: https://github.com/MoarVM/MoarVM/commit/c1b4baef4d
17:09 Peter_R joined #moarvm
17:21 brrt joined #moarvm
17:32 FROGGS joined #moarvm
17:38 timotimo crap, did i forget to fix this?
17:38 timotimo i was so sure i had done all those ops and stuff correctly in graph.c :(
17:57 brrt it happens :-)
17:57 brrt damn procasync test
17:57 timotimo yes :(
17:58 timotimo i wonder why newexception doesn't turn into a sp_fastcreate?
17:58 brrt possibly because nobody wrote that opt yet
17:58 timotimo ah, it's an opt that lives in the REPR
18:03 timotimo then i won't have to implement newexception in the jit :P
18:06 brrt right
18:07 timotimo and of course bindexcategory and bindexpayload become primitive set operations
18:12 brrt if you can, that'd be nice
18:14 timotimo but first there will be a dinner <3
18:14 brrt i can't actually trigger the code path
18:14 brrt damnit!
18:14 brrt oh, nice :-)
18:14 timotimo you mean resume in a jitted context?
18:28 brrt yes
18:35 timotimo hm
18:35 timotimo we spesh on the way out of a frame, no?
18:36 timotimo hm, but in the case of resume, we do leave the frame afterwards
18:37 brrt yes
18:37 brrt i'm working on resume as we speak
18:42 dalek MoarVM/jit_throw_ops: 7a25969 | brrt++ | src/ (4 files):
18:42 dalek MoarVM/jit_throw_ops: Add resume to JIT
18:42 dalek MoarVM/jit_throw_ops: review: https://github.com/MoarVM/MoarVM/commit/7a25969445
18:44 [Coke] Updating your resume! awesome.
18:44 brrt on the topic of which
18:45 brrt a grand total of 0 recruiters / hiring people know what a JIT is, have heard of GSoC, or even of perl6
18:45 brrt in fact the word of 'perl' induces some kind of automated 'inenoise' reaction
18:45 [Coke] in my area, I'm lucky when a recruiter has -heard- of perl.
18:46 timotimo oh god
18:46 [Coke] I could never get long term perl work in this area, though. maybe a 2 week "come in and fix this old script we can't comprehend".
18:47 brrt right
18:48 timotimo brrt: guess what i can wow recruiters with from my work with perl6
18:48 brrt and... they are wowed?
18:57 Ven joined #moarvm
18:59 timotimo um
18:59 timotimo it was a what question
19:01 brrt oh, i see
19:02 brrt my top 3 guesses
19:02 brrt wordpress
19:02 brrt php
19:02 brrt joomla
19:02 brrt oh, and mysql
19:02 timotimo i didn't ... what?
19:02 brrt you asked me to guess what you can use to wow recruiters in your area
19:02 brrt my guesses are: wordpress, joomla, mysql and php
19:03 timotimo oh
19:03 timotimo no, i mean
19:03 timotimo what from my perl6 work can i use to wow recruiters
19:03 brrt oooh....
19:03 timotimo i'm having a hard time here :)
19:03 brrt i would be very surprised if anything
19:05 timotimo well, damn.
19:05 timotimo how am i supposed to make money so i can live?
19:06 brrt government handouts
19:06 timotimo not very much of those in germany
19:06 brrt or wordpress sites
19:06 brrt whichever you like best
19:06 timotimo i'm currently on a much better programme
19:06 timotimo which is momernvent handouts
19:06 brrt and what movement would that be?
19:07 timotimo momernvent
19:07 [Coke] I'm guessing it's a play on government, but with "mom".
19:07 timotimo yeah
19:07 brrt aaaah
19:09 timotimo momernvent is much better than corrupternment
19:10 timotimo the netherworld must be a great place to live
19:17 * brrt afk for tonight
19:18 timotimo hmm
19:21 mj41 joined #moarvm
19:40 japhb timotimo: "Optimized Rakudo compiler at all levels of abstraction stack (compiler, intermediate language, VM)" ... "Created tracing and analysis tools for debugging and optimizing compiler code specialization engine" ... There are lots of things to be proud of here.
19:42 japhb One recommendation I've seen for Europeans trying to get hired (or promoted) at an English-speaking tech company, is that if you don't feel like you're being rather boorish and bragging like an American, you're probably being too understated.
19:44 japhb (I'm reminded of a medical rule of thumb they used to use around here: If you *don't* think Campbell's Tomato Soup is too salty right from the start, your daily sodium intake is probably *way* too high.)
19:45 timotimo japhb: i didn't create anything that traces :P
19:45 timotimo and nothing for debugging and optimizing compiler code specialization engine :P
19:46 japhb timotimo: That's my point.  Apparently (this is second- or third-hand, BTW), Europeans have a cultural bias against claiming credit for something unless they did it totally themselves.  Unlike Americans, who claim credit for the piece they worked on.
19:46 japhb timotimo: Weren't you the one who created the graphs of the instructions and BB and such?
19:46 timotimo i made something that turns the spesh dump into a graphviz image
19:47 timotimo when a recruiter reads that, they'll read VM and say "oh, have you worked with Xen?"
19:47 japhb timotimo: How is that different from what I said?  :-)
19:47 timotimo nobody used it for debugging and/or optimizing yet
19:48 japhb First of all, I think that's wrong, because *you* have.
19:48 japhb Second, there's a difference between *what you accomplished* and *the impact it had*.
19:48 japhb Both are important, but you *can* claim the first even if the second is yet to come.
19:48 timotimo well, there's like a hundred people in the community ... :P
19:49 timotimo i think my one line fix to VLC that puts cd audio files into the playlist with a leading 0 for the title so that it doesn't sort wrong had more of an impact than my work in p6 :)
19:49 japhb Do you feel like every one has to use your tool before it is A) important, B) useful, and C) a technical accomplishment?
19:50 timotimo wow, both A, B *and* C?
19:50 japhb Sure, that's one of those "Bill: $10,000; hitting machine with hammer: $1, knowing where to hit it: $9,999" type things.
19:51 japhb The number of people in the Rakudo/NQP/MoarVM *optimization* community is rather smaller than 100 people, I might add.
19:52 timotimo you're suggesting someone pays me USD10k? :)
19:52 japhb If you helped brrt, or jnthn, or FROGGS, or lizmat, or hoelzro, or who all, that's really important, even if not *all* of them were able to use it.
19:53 japhb Also, you haven't yet been in the work force for half your life.  We're not expecting that your entire resume consist of fundamental new theorems and nation-impacting applications ....  ;-)
19:54 timotimo i'm pretty sure the only use others had for my graphing tool was me posting pictures up on the internets :P
19:54 japhb timotimo: I was saying that a one line fix with impact has that kind of structure.  It's not that the fix was itself complex ... but knowing how to do it in one line shows a deeper understanding of the code base.
19:54 japhb timotimo: Before assuming that your contributions aren't valuable, *ask*.  :-)
19:55 timotimo but but but, that was the first time i looked at the vlc code base :P
19:56 japhb (To the Xen comment previously: You can say "JIT VM" to disambiguate.)
19:56 japhb timotimo: Which means that you're skilled at zooming in on a large codebase and finding the correct place to make an obscure fix.  That's a SKILL, my friend.
19:57 timotimo oh lord, you're smearing so much honey all over my beard :P
19:57 timotimo (quite a nice beard, if i may say so myself; not voluminous or imposing, but pretty)
19:57 japhb I'm just pointing out that you're not lacking marketable skills, just confidence (and perhaps a bit of braggadacio)
19:59 japhb Don't let a weak resume get you thrown out with all the people who *don't* have skills.  Let the resume get you in the door, then have confidence in the work you *did* do, and the ability to explain it and why it is valuable.
19:59 timotimo i can hardly believe anyone would consider what you've been praising here "skills" that others would be able to not have somehow
20:00 timotimo i mean it's so obvious to me how it'd be done and i'm having a hard time imagining i'm "just that good"
20:08 timotimo oh well
20:17 hoelzro timotimo: you might be able to work with Mozilla on Rust, or something like that
20:43 vendethiel joined #moarvm
21:23 japhb timotimo: (Sorry, was AFK for a while ...)  It's not that I'm saying no one else could have those skills.  I'm saying that if you don't claim them, interviewers will assume *you don't*.
21:23 japhb Because trust me, it's *amazing* how low the skillset of some interviewees goes.
21:25 japhb And there is a certain value to actually having *worked* in particular problem spaces, and seen first hand what works and what doesn't.  Experience matters.
21:25 japhb You can learn a ton of theory in college, but it's just not the same thing as actually working on a real project trying to make real improvements.
21:27 japhb (I'm reminded of an algorithmic bound based on the inverse Ackerman function, where everyone agrees there's really not a huge point to improving the bound much, because for problem sets *smaller than the entire universe*, inverse Ackerman is bounded by a small constant.  Sometimes a better theory isn't any better than a well-founded practical result.)
21:30 timotimo hmm
21:30 timotimo where did i get the idea that i have to be exceptionally good at something in order for someone to want to pay me
21:31 japhb Also, remember that you're hanging out with jnthn and TimToady.  Around here, being exceptional is not exactly a low bar.
21:32 timotimo mhm
21:32 * FROGGS .oO( it is a low baz )
21:40 FROGGS gnight
21:41 japhb o/
21:41 timotimo jobs are weird
21:42 lizmat joined #moarvm
21:48 japhb But valuable.  :-)
21:57 timotimo some are valuable, some are soul-crushing
21:59 timotimo well, i'm beginning to babble nonsense, or have been for a while perhaps. i shall be going to sleep early tonight
22:07 FROGGS joined #moarvm
22:09 vendethiel joined #moarvm
22:21 japhb A wise choice.  :-)
23:42 vendethiel joined #moarvm

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