dalek arVM: 90b70eb | jimmy++ | src/core/coerce.c:
Make MVM_radix return an array of integers
01:19
01:34 chipdude joined
dalek arVM: 05050fd | jimmy++ | src/math/bigintops.c:
small fixes to MVM_bigint_radix
01:37
01:56 lue joined 06:48 woosley joined 07:28 woosley left 07:35 FROGGS joined 08:07 lizmat joined 08:10 nn8tr joined 08:11 lizmat_ joined
dalek arVM: fa49bd8 | jimmy++ | src/core/coerce.c:
s/MVMnum64/MVMint64/
08:18
08:37 odc joined
nwc10 jnthn: in assert_can_read() in serialisation.c, shouldn't this: 08:53
if (read_end > *(reader->cur_read_end))
be >=
?
oh wait, am I undercaffineated? 08:54
I think both are exclusive bounds, not inclusive
jnthn nwc10: Yes, I've glanced that code before then concluded it's right as it is... :) 10:09
timotimo before i continue work on the string stuff, i'll build a heap analyzer. 14:06
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
dalek arVM/eieio: 598d1ab | jnthn++ | / (6 files):
Preparations for refactoring I/O code.

Adds a table of I/O operations, and starts preparing MVMOSHandle for working in this way. No functional changes yet.
14:09
arVM/eieio: 9f8b2f1 | jnthn++ | / (7 files):
Start moving sync file I/O to new factoring.

Goes far enough to pass NQP tests and Rakudo sanity tests, though some pieces are left to move over.
timotimo oh yay! :) 14:10
old mcjnthn had a refarm
tadzik eieio sounds either like www.youtube.com/watch?v=ZZ5LpwO-An4 or www.youtube.com/watch?v=2h8569IrLgY :P 14:13
timotimo I LOVE THAT SONG (heyyeyaaeyaaaeyaeyaa) 14:14
moritz had to think of www.youtube.com/watch?v=SQfMg0ejewk 14:17
tadzik wow, this guitar has two strings 14:18
timotimo she took off all the other strings? 14:19
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
timotimo really hard to make out in 240p
moritz she does lots of cool stuff
timotimo at one point the camera zoomb in pretty close and it does indeed look like that
pretty cool
tadzik hello again, spotify
moritz she sings the background herself, records it and plays it back in a loop
yes, the top two strings are still there 14:21
tadzik oh, the "Suddenly I see" hit is hers, nice
moritz I think "Black Horse and the Cherry Tree" is her best-known hit 14:22
timotimo shuffles all her stuff 14:23
moritz she's one of those artists where I get the impression that they really do it for the love of the music 14:25
tadzik it feels that way 14:26
JimmyZ jnthn++ 14:31
timotimo made a questhub quest for what he's doing 14:32
JimmyZ jnthn: I think we can flatten MVMIOOps too, same as MVMREPROps
jnthn JimmyZ: No. We're not.
JimmyZ: There it made sense for performance. Here there's no need.
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...
FROGGS jnthn++
JimmyZ jnthn: I meant s/handle->body.ops->seekable->tell/handle->body.ops.seekable->tell/ 14:37
jnthn JimmyZ: Yeah, but why do it? 14:38
JimmyZ: It makes it harder to maintain when you can't have something say "oh, I do none of that section" 14:39
timotimo i think i ought to get some more food so i can finish my breakfast ~_~ 14:40
JimmyZ is going to say good night :P 14:41
timotimo good night JimmyZ :) 14:42
jnthn 'night, JimmyZ 14:44
dalek arVM/eieio: 2b60c48 | jnthn++ | src/io/ (3 files):
Move the rest of the file I/O into the new place.

Except the logic in MVM_file_read_fhs, which is sufficiently wrong to just toss and do over.
14:52
arVM/eieio: a330d08 | jnthn++ | src/io/ (3 files):
Refactor file handle case of standard streams.
arVM/eieio: f5d2313 | jnthn++ | src/ (2 files):
Clean up most of old file I/O bits.

Still can't quite get rid of fd in MVMOSHandle, as a few more things need moving first. 9a49896 | jnthn++ | src/io/ (3 files): Move truncate to new scheme.
15:29 FROGGS joined
arVM/eieio: 14a7b99 | jnthn++ | src/ (4 files):
Move file lock/unlock code.
arVM/eieio: fcb87b4 | jnthn++ | src/ (2 files):
Final steps of moving file I/O out.

With this, it's all now encapsulated in syncfile.c, and detangled from everything else.
jnthn Well, that was step 1...
FROGGS of ? 15:40
jnthn I/O cleanup/refactor 15:41
BinGOs step 1 is admitting you have a problem
jnthn Oh, of how many... :)
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 :)
*list
nwc10 does that include the final beer?
jnthn cognominal: No, it just means we write interp.c directly in C ratehr than generating it
cognominal: Though the meta-data is generated 15:43
cognominal: See src/core/oplist
nwc10: Hm, hadn't counted that, no :)
cognominal ok. thx. I am rereading you slides. So helpful.
jnthn cognominal: Which ones, ooc?
nwc10 jnthn: that was a bit of an oversight
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 : github.com/edumentab/rakudo-and-nq...als-course
jnthn cognominal: ah, ok :)
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
(That I didn't put back yet.)
cognominal jnthn, btw, is there links to a video of the talk you gave at fosdem or to the slides? 15:46
15:47 d4l3k_ joined 15:52 japhb__ joined
jnthn cognominal: yes 15:55
t.co/11ZbReiKah
is video 15:56
jnthn.net/papers/2014-fosdem-perl6-today.pdf is slides
cognominal jnthn++ 15:58
16:03 ingy joined
cognominal jnthn it, is missing from www.jnthn.net/articles.shtml 16:03
jnthn cognominal: Yeah, noticed that. :) Will add it. 16:04
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:06
jnthn timotimo: Well, it certainly isolates things a good bit more 16:08
timotimo that's nice
cognominal: i have made a "fixed audio" version of that video
jnthn timotimo: Not sure it's quite "super easy" in so far as we're likely missing hooks
timotimo it's not perfect, but it won't destroy your ears
jnthn timotimo: But shouldn't be hard to make happen.
timotimo easier than porting libuv to run on top of emscripten/NaCl? ;) 16:09
jnthn Probably, yes ;)
timotimo <3
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
jnthn cognominal: Does listening to me not imply noise? ;) 16:10
timotimo t.h8.lv/Perl_6_what_can_you_do_toda...audio.webm
cognominal jnthn: meaningul noise is signal 16:11
timotimo i can't find out which pieces of an object are pointers except by running the mark function, right? 16:15
jnthn timotimo: Correct. 16:16
timotimo: All mark actually does is add to a worklist, though.
timotimo right. i could probably create a worklist from inside the gdb python plugin
oh, not bad 16:36
nqp-m -e 'say(1)' doesn't even run the gc once
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
Now the real question is, does r-m GC in the same situation?
timotimo hehe. 16:46
yes, twice.
once i have my heap-analyzer in place, i'll be able to give you much more info. 16:47
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
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?
japhb__ timotimo: Ooh, I like that idea (diffing the histograms for great justice) 16:55
timotimo nursery state:
[====================] 100 %
that's helpful! :D
now i'll have to do crazy casting magic using the python interface to gdb o_O 17:05
moritz timotimo: semes to be her own song; has been aired on the radio a bit 17:13
timotimo i see. that's pretty cool 17:15
hm. 17:16
in what case would the STable's REPR not be valid?
if the object itself is an STable? 17:17
jnthn STables are not objects 17:18
So yeah, if you try and REPR one, things won't end well 17:19
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
Python Exception <class 'gdb.MemoryError'> Cannot access memory at address 0x10:
sadly, this happens when i try to access REPR ^
oops, i'm doing it totally wrong :) 17:23
jnthn: should i start looking from the fromspace or tospace pointer, ooc? 17:27
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.
timotimo but starting at the tospace it seems to take forever?!
timotimo just lets it run
hm. well, the nursery *is* quite big, so ... 17:29
ah, dang.
i'm very unhappy that i don't get any details for those python-level exceptions except the type and message 17:40
jnthn err& 17:46
timotimo gist.github.com/timo/544d3d75bd92932e635d 17:51
doesn't look too bad, methinks 17:52
TimToady obviously we use too many P6opaques :) 17:53
timotimo that must be it! :)
TimToady a lotta P6codes too...
timotimo i shall build an extra histogram for P6opaque sizes, methinks 17:54
actually, i could even introspect the P6opaque to see what STables exactly have been inlined
moritz let's make more transparent objects instead! 17:55
TimToady I see what you did there. 17:56
timotimo gist.github.com/timo/544d3d75bd92932e635d 18:06
that's more helpful
though i think the sizes ought to be sorted by size rather than occurence frequency
i'm kinda surprised it outputs having only 1 stable 18:07
oh, not really
most stables are probably generated in gen2 from the very beginning
gist.github.com/timo/544d3d75bd92932e635d <- proper sorting now 18:19
18:30 benabik joined
timotimo next step is comparison of the current nursery state with the previous one 18:49
20:44 jnthn joined
timotimo jnthn: more huge commits coming up? :) 21:33
jnthn timotimo: Well, I hit the place where I needed to build the tricky thing. 21:35
timotimo: So been plugging away that that. 21:36
timotimo okay. glad to hear you're progressing, though :) 21:37
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?
jnthn: do you have a specific wish for the heap analyzer? 21:40
except "now do it for the gen2, too!" :)
jnthn Well, the first bug appears to have been a really silly one :) 21:41
timotimo i was hoping i could continue my productivity at the hackspace 21:48
turns out i'm just slacking and socialising instead
jnthn bah 21:50
/* comment explaing why we don't free a buffer */ 21:51
free(the_buffer);
21:55 lizmat joined
timotimo :D 21:57
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:00
the braille unicode thingies should be good for that 22:01
or the 1/4th blocks maybe
jnthn Well, the nursery is never fragmented
gen2 is a little more interesting.
timotimo that's what i meant 22:03
jnthn In theory it should not get too bad, though. 22:05
Becasue it's a bunch of sized heaps.
timotimo yup. we'll be able to see if that holds up well when i'm done with it :)
jnthn And it chains a freelist through it, thus taking the first one. 22:06
It would certainly be very cool to have data to tell us how that works out in practice.
timotimo yup
my stuff is currently mostly "cool stuff" rather than "useful stuff" :P
at le
ast it seems so to me
22:12 woolfy joined, woolfy left
jnthn Commits coming up, I think. :) 22:14
timotimo much excite!
tadzik muy interesante :) 22:19
jnthn Well..hm :) 22:22
timotimo hm. who else would be interested in heap analysis ... 22:25
jnthn: will the buckets that are free be nulled in addition to being in the free list?
or in other words do i have to walk the free list to figure out which slots exactly are free? 22:26
jnthn timotimo: No promises about nullness. 22:27
timotimo: In fact, we memset 'em at the point of allocation.
timotimo OK, i'll walk the free list then 22:28
it seems like accessing data from the inferior from a python program is *really* inefficient, though :(
22:44 lizmat joined
dalek arVM/eieio: d69938f | jnthn++ | / (7 files):
Add decode stream mechanism for bytes => chars.

We'll use this for the various kinds of IO we do, allowing us to get buffers of whatever size in, potentially with characters being over buffer boundaries, and get chars out correctly. Not perfect, still some optimization and cleanups to go and no doubt some bugs to find. Also, only UTF-8 supports decode stream so far.
23:09
benabik Old McDonald had buffer, EIEIO. And in that buffer he had UTF-8, EIEIO. 23:11
dalek arVM/eieio: ffeddd8 | jnthn++ | src/io/syncfile.c:
Switch synchronous I/O over to use decode stream.
23:12
jnthn Now readline doesn't call down to libuv for every single damn byte! 23:15
benabik \o/ 23:16
timotimo \o/
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.
timotimo m)
the free_list is null-terminated? 23:20
jnthn Believe so.
timotimo sounds likely, even.
jnthn It's the obvious way it'd be, anyway.
timotimo yes 23:25
jnthn Enough hacking for today, I think. 23:36
timotimo i've got a scratching/tingling in my throat :( 23:37
jnthn Tomorrow will be muchly swallowed by preparing/giving an evening talk...
timotimo: aww :(
timotimo: Cure it with beer? :)
Anyways, I'm optimistic I'll have the IO branch landed during the weekend. 23:38
timotimo not such a big beer fan, tbh ;)
jnthn 'night, #moarvm 23:42