Perl 6 - the future is here, just unevenly distributed

IRC log for #moarvm, 2014-02-12

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

All times shown according to UTC.

Time Nick Message
01:19 dalek MoarVM: 90b70eb | jimmy++ | src/core/coerce.c:
01:19 dalek MoarVM: Make MVM_radix return an array of integers
01:19 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/90b70eb466
01:34 chipdude joined #moarvm
01:37 dalek MoarVM: 05050fd | jimmy++ | src/math/bigintops.c:
01:37 dalek MoarVM: small fixes to MVM_bigint_radix
01:37 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/05050fda55
01:56 lue joined #moarvm
06:48 woosley joined #moarvm
07:28 woosley left #moarvm
07:35 FROGGS joined #moarvm
08:07 lizmat joined #moarvm
08:10 nn8tr joined #moarvm
08:11 lizmat_ joined #moarvm
08:18 dalek MoarVM: fa49bd8 | jimmy++ | src/core/coerce.c:
08:18 dalek MoarVM: s/MVMnum64/MVMint64/
08:18 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/fa49bd8f3a
08:37 odc joined #moarvm
08:53 nwc10 jnthn: in assert_can_read() in serialisation.c, shouldn't this:
08:53 nwc10 if (read_end > *(reader->cur_read_end))
08:53 nwc10 be >=
08:53 nwc10 ?
08:54 nwc10 oh wait, am I undercaffineated?
08:54 nwc10 I think both are exclusive bounds, not inclusive
10:09 jnthn nwc10: Yes, I've glanced that code before then concluded it's right as it is... :)
14:06 timotimo before i continue work on the string stuff, i'll build a heap analyzer.
14:06 timotimo should be easy, since the objects all start with how big they are and have a pointer to the STable that tells me what the repr is at a fixed offset
14:09 dalek MoarVM/eieio: 598d1ab | jnthn++ | / (6 files):
14:09 dalek MoarVM/eieio: Preparations for refactoring I/O code.
14:09 dalek MoarVM/eieio:
14:09 dalek MoarVM/eieio: Adds a table of I/O operations, and starts preparing MVMOSHandle for
14:09 dalek MoarVM/eieio: working in this way. No functional changes yet.
14:09 dalek MoarVM/eieio: review: https://github.com/MoarVM/MoarVM/commit/598d1abd7e
14:09 dalek MoarVM/eieio: 9f8b2f1 | jnthn++ | / (7 files):
14:09 dalek MoarVM/eieio: Start moving sync file I/O to new factoring.
14:09 dalek MoarVM/eieio:
14:09 dalek MoarVM/eieio: Goes far enough to pass NQP tests and Rakudo sanity tests, though some
14:09 dalek MoarVM/eieio: pieces are left to move over.
14:09 dalek MoarVM/eieio: review: https://github.com/MoarVM/MoarVM/commit/9f8b2f181c
14:10 timotimo oh yay! :)
14:10 timotimo old mcjnthn had a refarm
14:13 tadzik eieio sounds either like https://www.youtube.com/watch?v=ZZ5LpwO-An4 or https://www.youtube.com/watch?v=2h8569IrLgY :P
14:14 timotimo I LOVE THAT SONG (heyyeyaaeyaaaeyaeyaa)
14:17 * moritz had to think of http://www.youtube.com/watch?v=SQfMg0ejewk
14:18 tadzik wow, this guitar has two strings
14:19 timotimo she took off all the other strings?
14:20 moritz looks like it
14:20 tadzik I think so, but I'd be super-impressed if she actually lost all the rest during the show and then improvised that song
14:20 timotimo really hard to make out in 240p
14:20 moritz she does lots of cool stuff
14:20 timotimo at one point the camera zoomb in pretty close and it does indeed look like that
14:20 timotimo pretty cool
14:20 tadzik hello again, spotify
14:20 moritz she sings the background herself, records it and plays it back in a loop
14:21 moritz yes, the top two strings are still there
14:21 tadzik oh, the "Suddenly I see" hit is hers, nice
14:22 moritz I think "Black Horse and the Cherry Tree" is her best-known hit
14:23 * timotimo shuffles all her stuff
14:25 moritz she's one of those artists where I get the impression that they really do it for the love of the music
14:26 tadzik it feels that way
14:31 JimmyZ jnthn++
14:32 * timotimo made a questhub quest for what he's doing
14:32 JimmyZ jnthn: I think we can flatten MVMIOOps too, same as MVMREPROps
14:32 jnthn JimmyZ: No. We're not.
14:32 jnthn JimmyZ: There it made sense for performance. Here there's no need.
14:33 JimmyZ OK :P
14:33 jnthn JimmyZ: One indirection is gonna be lost in the cost of IO, and all the memory is static anyway...
14:33 FROGGS jnthn++
14:37 JimmyZ jnthn: I meant s/handle->body.ops->seekable->tell/handle->body.ops.seekable->tell/
14:38 jnthn JimmyZ: Yeah, but why do it?
14:39 jnthn JimmyZ: It makes it harder to maintain when you can't have something say "oh, I do none of that section"
14:40 timotimo i think i ought to get some more food so i can finish my breakfast ~_~
14:41 * JimmyZ is going to say good night :P
14:42 timotimo good night JimmyZ :)
14:44 jnthn 'night, JimmyZ
14:52 dalek MoarVM/eieio: 2b60c48 | jnthn++ | src/io/ (3 files):
14:52 dalek MoarVM/eieio: Move the rest of the file I/O into the new place.
14:52 dalek MoarVM/eieio:
14:52 dalek MoarVM/eieio: Except the logic in MVM_file_read_fhs, which is sufficiently wrong to
14:52 dalek MoarVM/eieio: just toss and do over.
14:52 dalek MoarVM/eieio: review: https://github.com/MoarVM/MoarVM/commit/2b60c48846
14:52 dalek MoarVM/eieio: a330d08 | jnthn++ | src/io/ (3 files):
14:52 dalek MoarVM/eieio: Refactor file handle case of standard streams.
14:52 dalek MoarVM/eieio: review: https://github.com/MoarVM/MoarVM/commit/a330d08dd4
14:52 dalek MoarVM/eieio: f5d2313 | jnthn++ | src/ (2 files):
14:52 dalek MoarVM/eieio: Clean up most of old file I/O bits.
14:52 dalek MoarVM/eieio:
14:52 dalek MoarVM/eieio: Still can't quite get rid of fd in MVMOSHandle, as a few more things
14:53 dalek MoarVM/eieio: need moving first.
15:29 FROGGS joined #moarvm
15:38 dalek MoarVM/eieio: 9a49896 | jnthn++ | src/io/ (3 files):
15:38 dalek MoarVM/eieio: Move truncate to new scheme.
15:38 dalek MoarVM/eieio: review: https://github.com/MoarVM/MoarVM/commit/9a49896e1f
15:38 dalek MoarVM/eieio: 14a7b99 | jnthn++ | src/ (4 files):
15:38 dalek MoarVM/eieio: Move file lock/unlock code.
15:38 dalek MoarVM/eieio: review: https://github.com/MoarVM/MoarVM/commit/14a7b99717
15:38 dalek MoarVM/eieio: fcb87b4 | jnthn++ | src/ (2 files):
15:38 dalek MoarVM/eieio: Final steps of moving file I/O out.
15:38 dalek MoarVM/eieio:
15:38 dalek MoarVM/eieio: With this, it's all now encapsulated in syncfile.c, and detangled from
15:38 dalek MoarVM/eieio: everything else.
15:38 dalek MoarVM/eieio: review: https://github.com/MoarVM/MoarVM/commit/fcb87b4dcb
15:38 jnthn Well, that was step 1...
15:40 FROGGS of ?
15:41 jnthn I/O cleanup/refactor
15:41 BinGOs step 1 is admitting you have a problem
15:41 jnthn Oh, of how many... :)
15:42 cognominal There is no .ops for moarvm, does that mean, that all ops are generated from QAStOperationsMAST.nqp   or am I confusing levels altogether?
15:42 jnthn 7 more steps on my lsit here :)
15:42 jnthn *list
15:42 nwc10 does that include the final beer?
15:42 jnthn cognominal: No, it just means we write interp.c directly in C ratehr than generating it
15:43 jnthn cognominal: Though the meta-data is generated
15:43 jnthn cognominal: See src/core/oplist
15:43 jnthn nwc10: Hm, hadn't counted that, no :)
15:43 cognominal ok. thx. I am rereading you slides. So helpful.
15:43 jnthn cognominal: Which ones, ooc?
15:43 nwc10 jnthn: that was a bit of an oversight
15:44 jnthn nwc10: Well, I'm not sure I'll finish it today, so there may be multiple beer steps along the way... :)
15:44 cognominal jnthn, these ones :  https://github.com/edumentab/rakudo-and-nqp-internals-course
15:44 jnthn cognominal: ah, ok :)
15:45 jnthn Seems we're at one new failing spectest as a result of the refactors so far, and it's clearly realted to me deleting one big chunk of code. :)
15:45 jnthn (That I didn't put back yet.)
15:46 cognominal jnthn, btw, is there links to a video of the talk you gave at fosdem or to the slides?
15:47 d4l3k_ joined #moarvm
15:52 japhb__ joined #moarvm
15:55 jnthn cognominal: yes
15:55 jnthn http://t.co/11ZbReiKah
15:56 jnthn is video
15:56 jnthn http://jnthn.net/papers/2014-fosdem-perl6-today.pdf is slides
15:58 cognominal jnthn++
16:03 ingy joined #moarvm
16:03 cognominal jnthn it, is missing from  http://www.jnthn.net/articles.shtml
16:04 jnthn cognominal: Yeah, noticed that. :) Will add it.
16:06 timotimo jnthn: wait, does this mean it's super easy to completely replace all IO functionality, for example if you're building a moarvm for a browser?
16:08 jnthn timotimo: Well, it certainly isolates things a good bit more
16:08 timotimo that's nice
16:08 timotimo cognominal: i have made a "fixed audio" version of that video
16:08 jnthn timotimo: Not sure it's quite "super easy" in so far as we're likely missing hooks
16:08 timotimo it's not perfect, but it won't destroy your ears
16:08 jnthn timotimo: But shouldn't be hard to make happen.
16:09 timotimo easier than porting libuv to run on top of emscripten/NaCl? ;)
16:09 jnthn Probably, yes ;)
16:09 timotimo <3
16:10 cognominal timitimo, I can put up with a lot of noise to listen to jnthn :)     But if you have an url for a fixed video, I would take it
16:10 jnthn I'm currently working on a nice bytes => chars streaming thingy. I'll integrate that with file I/O first, and then will be in a good place to take on the tty, pipes, sockets, etc.
16:10 jnap joined #moarvm
16:10 jnthn cognominal: Does listening to me not imply noise? ;)
16:10 timotimo http://t.h8.lv/Perl_6_what_can_you_do_today_fixed_audio.webm
16:11 cognominal jnthn: meaningul noise is signal
16:15 timotimo i can't find out which pieces of an object are pointers except by running the mark function, right?
16:16 jnthn timotimo: Correct.
16:16 jnthn timotimo: All mark actually does is add to a worklist, though.
16:16 timotimo right. i could probably create a worklist from inside the gdb python plugin
16:36 timotimo oh, not bad
16:36 timotimo nqp-m -e 'say(1)' doesn't even run the gc once
16:44 japhb__ timotimo: It seems like it would be actively pessimizing if gc was required in order to start up and run a trivial program.
16:44 japhb__ Now the real question is, does r-m GC in the same situation?
16:46 timotimo hehe.
16:46 timotimo yes, twice.
16:47 timotimo once i have my heap-analyzer in place, i'll be able to give you much more info.
16:48 timotimo ideally, it'll be able to diff the histograms of object sizes and reprs in the nursery and gen2 before and after a collection
16:48 timotimo moritz: Hold On by KT Tunstall seems very familiar. is it a cover or did i hear her version on the radio at some point perhaps?
16:55 japhb__ timotimo: Ooh, I like that idea (diffing the histograms for great justice)
16:55 timotimo nursery state:
16:55 timotimo [====================]  100 %
16:55 timotimo that's helpful! :D
17:05 timotimo now i'll have to do crazy casting magic using the python interface to gdb o_O
17:13 moritz timotimo: semes to be her own song; has been aired on the radio a bit
17:15 timotimo i see. that's pretty cool
17:16 timotimo hm.
17:16 timotimo in what case would the STable's REPR not be valid?
17:17 timotimo if the object itself is an STable?
17:18 jnthn STables are not objects
17:19 jnthn So yeah, if you try and REPR one, things won't end well
17:21 timotimo right. i'm now looking at the flag to see if it's an STable and only if it isn't try to get the REPR
17:21 timotimo Python Exception <class 'gdb.MemoryError'> Cannot access memory at address 0x10:
17:21 timotimo sadly, this happens when i try to access REPR ^
17:23 timotimo oops, i'm doing it totally wrong :)
17:27 timotimo jnthn: should i start looking from the fromspace or tospace pointer, ooc?
17:28 timotimo it seems like starting from the fromspace makes it stop immediately, because it's after the alloc_limit
17:28 jnthn tospace is where we're currently allocating.
17:28 timotimo but starting at the tospace it seems to take forever?!
17:28 * timotimo just lets it run
17:29 timotimo hm. well, the nursery *is* quite big, so ...
17:29 timotimo ah, dang.
17:40 timotimo i'm very unhappy that i don't get any details for those python-level exceptions except the type and message
17:46 jnthn err&
17:51 timotimo https://gist.github.com/timo/544d3d75bd92932e635d
17:52 timotimo doesn't look too bad, methinks
17:53 TimToady obviously we use too many P6opaques :)
17:53 timotimo that must be it! :)
17:53 TimToady a lotta P6codes too...
17:54 timotimo i shall build an extra histogram for P6opaque sizes, methinks
17:54 timotimo actually, i could even introspect the P6opaque to see what STables exactly have been inlined
17:55 moritz let's make more transparent objects instead!
17:56 TimToady I see what you did there.
18:06 timotimo https://gist.github.com/timo/544d3d75bd92932e635d
18:06 timotimo that's more helpful
18:06 timotimo though i think the sizes ought to be sorted by size rather than occurence frequency
18:07 timotimo i'm kinda surprised it outputs having only 1 stable
18:07 timotimo oh, not really
18:07 timotimo most stables are probably generated in gen2 from the very beginning
18:19 timotimo https://gist.github.com/timo/544d3d75bd92932e635d <- proper sorting now
18:30 benabik joined #moarvm
18:49 timotimo next step is comparison of the current nursery state with the previous one
20:44 jnthn joined #moarvm
21:33 timotimo jnthn: more huge commits coming up? :)
21:35 jnthn timotimo: Well, I hit the place where I needed to build the tricky thing.
21:36 jnthn timotimo: So been plugging away that that.
21:37 timotimo okay. glad to hear you're progressing, though :)
21:38 jnthn I'm around the point where I wire the big thingy up, and discover how many awful bugs it has :)
21:38 timotimo it's a relief, isn't it?
21:40 timotimo jnthn: do you have a specific wish for the heap analyzer?
21:40 timotimo except "now do it for the gen2, too!" :)
21:41 jnthn Well, the first bug appears to have been a really silly one :)
21:48 timotimo i was hoping i could continue my productivity at the hackspace
21:48 timotimo turns out i'm just slacking and socialising instead
21:50 jnthn bah
21:51 jnthn /* comment explaing why we don't free a buffer */
21:51 jnthn free(the_buffer);
21:55 lizmat joined #moarvm
21:57 timotimo :D
22:00 timotimo i think i want to build a semi-graphical representation of the allocation positions, so that we can see the fragmentation of the whole thing
22:01 timotimo the braille unicode thingies should be good for that
22:01 timotimo or the 1/4th blocks maybe
22:01 jnthn Well, the nursery is never fragmented
22:01 jnthn gen2 is a little more interesting.
22:03 timotimo that's what i meant
22:05 jnthn In theory it should not get too bad, though.
22:05 jnthn Becasue it's a bunch of sized heaps.
22:05 timotimo yup. we'll be able to see if that holds up well when i'm done with it :)
22:06 jnthn And it chains a freelist through it, thus taking the first one.
22:06 jnthn It would certainly be very cool to have data to tell us how that works out in practice.
22:06 timotimo yup
22:06 timotimo my stuff is currently mostly "cool stuff" rather than "useful stuff" :P
22:06 timotimo at le
22:06 timotimo ast it seems so to me
22:12 woolfy joined #moarvm
22:12 woolfy left #moarvm
22:14 jnthn Commits coming up, I think. :)
22:14 timotimo much excite!
22:19 tadzik muy interesante :)
22:22 jnthn Well..hm :)
22:25 timotimo hm. who else would be interested in heap analysis ...
22:25 timotimo jnthn: will the buckets that are free be nulled in addition to being in the free list?
22:26 timotimo or in other words do i have to walk the free list to figure out which slots exactly are free?
22:27 jnthn timotimo: No promises about nullness.
22:27 jnthn timotimo: In fact, we memset 'em at the point of allocation.
22:28 timotimo OK, i'll walk the free list then
22:28 timotimo it seems like accessing data from the inferior from a python program is *really* inefficient, though :(
22:44 lizmat joined #moarvm
23:09 dalek MoarVM/eieio: d69938f | jnthn++ | / (7 files):
23:09 dalek MoarVM/eieio: Add decode stream mechanism for bytes => chars.
23:09 dalek MoarVM/eieio:
23:09 dalek MoarVM/eieio: We'll use this for the various kinds of IO we do, allowing us to get
23:09 dalek MoarVM/eieio: buffers of whatever size in, potentially with characters being over
23:09 dalek MoarVM/eieio: buffer boundaries, and get chars out correctly. Not perfect, still
23:09 dalek MoarVM/eieio: some optimization and cleanups to go and no doubt some bugs to find.
23:09 dalek MoarVM/eieio: Also, only UTF-8 supports decode stream so far.
23:09 dalek MoarVM/eieio: review: https://github.com/MoarVM/MoarVM/commit/d69938f1c8
23:11 benabik Old McDonald had buffer, EIEIO.  And in that buffer he had UTF-8, EIEIO.
23:12 dalek MoarVM/eieio: ffeddd8 | jnthn++ | src/io/syncfile.c:
23:12 dalek MoarVM/eieio: Switch synchronous I/O over to use decode stream.
23:12 dalek MoarVM/eieio: review: https://github.com/MoarVM/MoarVM/commit/ffeddd87cd
23:15 jnthn Now readline doesn't call down to libuv for every single damn byte!
23:16 benabik \o/
23:16 timotimo \o/
23:17 benabik ^o^ oC /o\
23:17 jnthn One hang in spectest that I bet will be something silly, and one failure 'cus I only did the streaming decoder for UTF-8 so far.
23:17 timotimo m)
23:20 timotimo the free_list is null-terminated?
23:20 jnthn Believe so.
23:20 timotimo sounds likely, even.
23:20 jnthn It's the obvious way it'd be, anyway.
23:25 timotimo yes
23:36 jnthn Enough hacking for today, I think.
23:37 timotimo i've got a scratching/tingling in my throat :(
23:37 jnthn Tomorrow will be muchly swallowed by preparing/giving an evening talk...
23:37 jnthn timotimo: aww :(
23:37 jnthn timotimo: Cure it with beer? :)
23:38 jnthn Anyways, I'm optimistic I'll have the IO branch landed during the weekend.
23:38 timotimo not such a big beer fan, tbh ;)
23:42 jnthn 'night, #moarvm

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