Perl 6 - the future is here, just unevenly distributed

IRC log for #moarvm, 2015-02-12

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

All times shown according to UTC.

Time Nick Message
00:25 vendethiel joined #moarvm
00:49 vendethiel joined #moarvm
02:23 vendethiel joined #moarvm
02:24 colomon joined #moarvm
02:48 ilbot3 joined #moarvm
02:48 Topic for #moarvm is now https://github.com/moarvm/moarvm | IRC logs at  http://irclog.perlgeek.de/moarvm/today
03:01 vendethiel joined #moarvm
03:35 vendethiel joined #moarvm
04:10 vendethiel joined #moarvm
04:33 vendethiel joined #moarvm
05:02 vendethiel joined #moarvm
05:55 vendethiel joined #moarvm
06:22 vendethiel joined #moarvm
07:11 vendethiel joined #moarvm
07:33 colomon joined #moarvm
07:36 vendethiel joined #moarvm
07:43 FROGGS joined #moarvm
08:14 vendethiel joined #moarvm
08:37 vendethiel joined #moarvm
09:01 Ven joined #moarvm
09:05 vendethiel joined #moarvm
09:25 dalek MoarVM: 9fe0661 | lizmat++ | src/io/fileops.c:
09:25 dalek MoarVM: Symlinks always tested with lstat
09:25 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/9fe0661028
09:25 lizmat pretty sure this is correct
09:35 FROGGS what is the one that follows links? stat or lstat?
09:35 FROGGS stat I guess
09:38 lizmat the one that follows links is "stat"
09:38 lizmat lstat is the one that doesn't follow links
09:38 lizmat and the one that was used by default
09:38 FROGGS lizmat: but, if you follow links, how can the result be a symlink?
09:39 FROGGS so to ask something if it is a link you'd not have to follow
09:39 lizmat hence you must use lstat() to find out whether something is a symlink
09:40 lizmat from man 2 stat: The lstat() function is like stat() except in the case where the named
09:40 lizmat file is a symbolic link; lstat() returns information about the link,
09:40 lizmat while stat() returns information about the file the link references.
09:41 FROGGS so, stat follows
09:41 lizmat that's what I said, ?
09:41 FROGGS ahh, yes
09:41 FROGGS it all makes sense now that I re-read slowly :D
09:42 jnthn :)
09:42 lizmat it's confusing and counter-intuitive, at least to me
09:42 FROGGS it is
09:42 FROGGS I'll just blame the crying baby nearby
09:43 lizmat anyway, with these changes
09:43 lizmat if a symlink points to a directory
09:43 lizmat then .d is true (it used to be false)
09:44 FROGGS lizmat++
09:54 jnthn It's quite incredible how costly missed branch predictions are.
09:56 dalek joined #moarvm
09:57 * jnthn is noting this after seeing numbers from a demo he's prepared for $dayjob teaching
09:57 jnthn Tells us that everywhere we can eliminate polymorphic, and especially megamorphic, things, we're onto a winner, though.
09:58 nwc10 jnthn: curiously, when we tried adding __builtin_expect() to various "we know it's this way" paths in the perl core C code, we didn't manage to measure anything
09:59 nwc10 which seems to imply that the branch predictor on the CPUs we tested on are pretty good at figuring out the obvious ones
09:59 jnthn *nod*
09:59 Ven joined #moarvm
10:00 jnthn Yeah, I was going through an array of random true/false values and doing a conditional in the branch, which is, I guess the extreme case
10:00 nwc10 so, seems that your strategy is important - CPUs are doing better than humans at predicting branches when it's possible. Hence we need to reduce the number of branches
10:00 jnthn Well, other thing is that the branch predictor isn't infinitely large either.
10:01 nwc10 it's not? :-(
10:01 nwc10 [yes, I know I'm being silly]
10:02 nwc10 actually, second order maybe, but this seems to imply that a guard clause that is very rarely taken is effectively negligable CPU overhead.
10:02 nwc10 [as long as it remains in the cache]
10:03 nwc10 and also "RAM is cheap, but there aren't slots on the motherboard for more CPU cache"
10:03 FROGGS not anymore
10:03 nwc10 good point :-)
10:04 lizmat https://gist.github.com/lizmat/c237a42a812e5f10e412   # Moar changes for adding an "lstat" op, comments ?
10:04 nwc10 lizmat: I don't know enough to be useful to you here
10:05 lizmat FROGGS jnthn might tell me  :-)
10:07 jnthn lizmat: Looks reasonable to met. You put it just ahead of the spesh ops, which is the main thing :)
10:07 jnthn *me
10:07 lizmat ok  :-)
10:08 FROGGS aye, looks good
10:09 dalek MoarVM: 2d7eddb | lizmat++ | / (6 files):
10:09 dalek MoarVM: Add "lstat" op
10:09 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/2d7eddb385
10:12 kjs_ joined #moarvm
10:17 zakharyas joined #moarvm
10:22 kjs_ joined #moarvm
10:28 Ven joined #moarvm
10:33 Ven joined #moarvm
11:30 vendethiel joined #moarvm
11:36 harrow joined #moarvm
12:13 vendethiel joined #moarvm
12:49 vendethiel joined #moarvm
12:54 Ven joined #moarvm
14:34 vendethiel joined #moarvm
14:42 sivoais joined #moarvm
15:09 vendethiel joined #moarvm
15:45 vendethiel joined #moarvm
16:23 vendethiel joined #moarvm
16:32 rurban joined #moarvm
17:02 harrow joined #moarvm
18:00 vendethiel joined #moarvm
18:26 vendethiel joined #moarvm
18:55 vendethiel joined #moarvm
19:21 vendethiel joined #moarvm
19:50 zakharyas joined #moarvm
19:57 vendethiel joined #moarvm
20:39 tgt joined #moarvm
20:47 dalek MoarVM/cpp: 0ee65f4 | lizmat++ | src/ (3 files):
20:47 dalek MoarVM/cpp: Add flag to switch between stat/lstat
20:47 dalek MoarVM/cpp:
20:47 dalek MoarVM/cpp: Many file ops now use stat, rather than lstat as before.  This in preparation
20:47 dalek MoarVM/cpp: for an nqp::lstat op to be added in the near future.
20:47 dalek MoarVM/cpp: review: https://github.com/MoarVM/MoarVM/commit/0ee65f40a7
20:47 dalek MoarVM/cpp: 9fe0661 | lizmat++ | src/io/fileops.c:
20:47 dalek MoarVM/cpp: Symlinks always tested with lstat
20:47 dalek MoarVM/cpp: review: https://github.com/MoarVM/MoarVM/commit/9fe0661028
20:47 dalek MoarVM/cpp: 2d7eddb | lizmat++ | / (6 files):
20:47 dalek MoarVM/cpp: Add "lstat" op
20:47 dalek MoarVM/cpp: review: https://github.com/MoarVM/MoarVM/commit/2d7eddb385
22:04 FROGGS_ joined #moarvm
22:18 pyrimidi_ joined #moarvm
22:25 vendethiel joined #moarvm
22:48 dalek MoarVM/longish: 728a748 | FROGGS++ | src/6model/reprs/CStruct. (2 files):
22:48 dalek MoarVM/longish: improve handling of type int on 32bit systems
22:48 dalek MoarVM/longish:
22:48 dalek MoarVM/longish: We can now properly obtain the size of a float on the current machine to
22:48 dalek MoarVM/longish: handle attributes in C structs. Before we just read 64bits of memory of a
22:48 dalek MoarVM/longish: 32bit attribute slot, which led to garbage and failings tests in NativeCall.
22:48 dalek MoarVM/longish: Handling of int (C long) in CArrays is left as an excercise for the reader.
22:48 dalek MoarVM/longish: review: https://github.com/MoarVM/MoarVM/commit/728a748bd7
22:52 FROGGS gnight
22:52 jnthn FROGGS++
22:52 jnthn 'night
22:52 FROGGS jnthn: I wonder why I struggled to do exactly that in the past
22:53 FROGGS it seems so obvious right now that it makes me suspicious
22:53 jnthn FROGGS: Most things seem easy after you've done them ;)
22:53 FROGGS yeah, probably...
22:53 FROGGS well, gnight :o)
22:54 jnthn o/
23:00 vendethiel joined #moarvm
23:09 timotimo what's keeping us from making different ints and uints properly limit their contents to the given size?
23:11 jnthn Working out how to implement it
23:11 jnthn Implementing what we work out
23:13 timotimo :)

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