07:41
FROGGS joined
08:35
zakharyas joined
09:27
kjs_ joined
09:37
rurban joined
10:13
kjs_ joined
13:50
btyler joined
14:10
rurban joined
17:31
FROGGS joined
18:01
tgt joined
18:21
kjs_ joined
18:33
dalek joined,
FROGGS_ joined
18:42
rurban joined
19:46
zakharyas joined
|
|||
dalek | arVM: 786d0b8 | jnthn++ | src/platform/threads.h: Revert "Quiet pthread_yield() warnings." This reverts commit 0194409f7599850d73b8861cd26d2fe9b9f7f85b, which got rid of a warning on some platforms at the expense of breaking the build on others. |
20:13 | |
jnthn | If anybody fancies figuring out the right way to fix this, that'd be helpful :) | ||
dalek | arVM: bccbeac | jnthn++ | docs/6model-parametric-extensions.markdown: Start documenting the parametric 6model design. |
20:16 | |
arVM: 3bcab71 | jnthn++ | / (6 files): Stub parametricity-related ops. Fix a bunch of places real NULL escaped. As of a while ago, the VM's null sentinel should be used. This fixes various ways to end up with a SEGV due to a null pointer. |
|||
jnthn | d'oh | ||
But anyway, what's missed was: | |||
Merge branch '6pe' | |||
Comfortable enough with the overall design, after experimenting a | |||
bit with it in NQP and Rakudo. So there's no need to do what remains | |||
in a branch. | |||
20:17
dalek joined
20:24
brrt joined
|
|||
FROGGS_ | \o/ | 20:27 | |
nwc10 | All tests successful. | 20:36 | |
Result: PASS | |||
(spectest) | |||
jnthn | phew :) | 20:37 | |
FROGGS_ | just in case somebody thinks I am lazy: p6-XML-LibXML: 56 commits / 6,980 ++ / 1,349 -- | 20:38 | |
nwc10 | jnthn: I think you deserve a beer. | 20:39 | |
jnthn | The fridge is possessed. | ||
Uh | |||
The fridge possesses them. | |||
nwc10 | "The fridge is possessed" - if so, that would be a bad thing | 20:40 | |
jnthn | yeah, I dunno what my head was doing there... | ||
nwc10 wonders what sort of specialist you would need to get to exorcise Carlsberg | |||
20:41
zakharyas joined,
tgt joined
|
|||
nwc10 | jnthn: it was distracted by the thought of beer? | 20:41 | |
jnthn | Maybe :) | ||
TimToady | nqp bump needed? | 20:42 | |
nwc10 | quite possibly - I was testing master/master/nom | ||
TimToady | and does that mean we get Str(Any) too? | 20:43 | |
jnthn | TimToady: No, 6pe needs to stay in a branch in NQP for now. | ||
TimToady | aww | ||
jnthn | TimToady: I need to port it to Parrot, and the minimal serialization bits to JVM | ||
TimToady: And then my 6pe-mop branch in Rakudo has some regressions due to tripping over a previous unresolved bug. | 20:44 | ||
We'll probably get them all within a week or so, but not in time for the January monthly. | |||
FROGGS_ | that'd be tomorrow, right? | ||
jnthn | Right.; | 20:45 | |
The MoarVM branch is very low risk to merge, in so far as the things it adds are very isolated. | |||
FROGGS_ | yeah }ā¤ | ||
I guess I have to do a slidathon at the weekend :S | 20:46 | ||
21:03
ilbot3 joined
21:07
zakharyas joined
|
|||
dalek | arVM: f8a07d4 | nicholas++ | src/6model/serialization.c: Remove redundant call to varintsize() from write_array_int(). There's no need for write_array_int() to call varintsize() or expand_storage_if_needed() because the call it makes to write_varint_func() will do these checks as well. |
21:41 | |
arVM: f1aeb7d | nicholas++ | src/6model/serialization.c: A slightly simpler implementation of write_varint9(). |
|||
arVM: c308312 | nicholas++ | src/6model/serialization.c: Inline write_varint9() into its only caller, write_varint. Update the comment describing MVM_serialization_write_varint(). c8ba587 | nicholas++ | src/6model/serialization.c: In read_array_int(), use MVM_serialization_read_varint() in place of two other calls. This mirrors write_array_int(), which calls MVM_serialization_write_varint. |
|||
timotimo | probably not an amazing time win, eh? :) | 21:44 | |
jnthn | Well, didn't measure those but that final one I just did, 'cus it runs a load at startup | ||
timotimo | the one that got committed seconds before you wrote that? | 21:49 | |
but yeah, read_aray_int would very probably like to be fast | |||
jnthn | yes | ||
timotimo | OK | ||
jnthn | m: say 878062346 / 886463444 | ||
camelia | rakudo-moar 20aa85: OUTPUTĀ«0.9905229053ā¤Ā» | ||
jnthn | Well, 1% less CPU instructions at startup from that... :) | 21:50 | |
timotimo | mhm mhm | ||
could just as well be noise? | |||
but i'll take it :) | |||
jnthn | No | ||
timotimo | oh, CPU time would be more exact, eh? | ||
jnthn | Measured with callgrind | ||
timotimo | OK | ||
jnthn | Which, in theory, can tell me actual Irs. | 21:51 | |
timotimo | oh, cpu *instructions* | ||
could just as well be just cheap instructions :P | |||
nwc10 | 1% fewer CPU instrcutions from what? | ||
timotimo | read_array_int | ||
nwc10 | er, from which one? | ||
jnthn | nwc10: Rakudo startup | ||
With 0005 in the patch series | 21:52 | ||
c8ba587 | |||
21:52
dlem joined,
dlem left
|
|||
jnthn | These are taking a little applying but I'm hoping simpler code is not only better to maintain, but also faster or more optimizable :) | 21:52 | |
timotimo | i ... don't understand that last line | 21:53 | |
21:53
dlem joined
|
|||
jnthn | timotimo: Ages ago, nwc10++ sent me a bunch of patches for varint serialization. | 21:53 | |
I sat on them for ages, so now I get to apply them partially by hand... | 21:54 | ||
timotimo | oh? | ||
oh! | |||
jnthn | Well, sent to perl6-compiler... | ||
timotimo | i thought nwc just did those patches | ||
dlem | jnthn: Regarding pthread_yield warnings - can you use sched_yield instead? | 21:55 | |
dlem is lurking :-) | 21:56 | ||
jnthn | dlem: Good question. At the moment it looks for various things to be defined and uses sched_yield if they are, and then falls back to pthread_yield. | 21:59 | |
I wonder if there's anywhere that only has the latter, and not the former... | 22:00 | ||
dlem | Hmm, I wouldn't know, unfortunately. | 22:02 | |
dalek | arVM: fa01e02 | nicholas++ | src/6model/serialization.c: A simpler implementation of read_varint9(). |
||
jnthn | That's another 10 million instructions less too. | ||
nwc10 | oh, gosh | ||
jnthn | nwc10++ | 22:03 | |
The win makes juggling the patches worthwhile :) | |||
nwc10 | although if they aren't cache missees, does it matter that much? | ||
jnthn | Well, cache misses are expensiver, but 10 million instructions aren't free either. | 22:05 | |
22:09
travis-ci joined
|
|||
travis-ci | MoarVM build failed. Nicholas Clark 'In read_array_int(), use MVM_serialization_read_varint() in place of two other calls. | 22:09 | |
travis-ci.org/MoarVM/MoarVM/builds/47843994 github.com/MoarVM/MoarVM/compare/8...ba587399ab | |||
22:09
travis-ci left
|
|||
jnthn | ?? | 22:14 | |
nwc10 | yes, confused too | ||
worked on "my" machine | |||
jnthn | Other patches get it down to 854,696,557 | 22:17 | |
m: say 854696557 / 886463444 | 22:18 | ||
camelia | rakudo-moar 20aa85: OUTPUTĀ«0.9641644704ā¤Ā» | ||
jnthn | That's more than 3% less CPU instructions at startup. | ||
nwc10++ | |||
nwc10 | gosh, I had no idea it would do *that* | ||
dalek | arVM: 45a459f | nicholas++ | src/6model/serialization.c: Inline read_varint9() into its only caller, read_varint_func(). |
||
arVM: c7ca2ab | nicholas++ | src/6model/serialization.c: Inline assert_can_read_varint() into read_varint_func() To work at all, assert_can_read_varint() had to duplicate the variable length decode logic. Really we only want that logic in one place, so it's simpler to move the buffer bounds check inside the reader function itself. |
|||
arVM: befcddf | nicholas++ | src/6model/serialization.c: Slight simplification possible in read_varint_func() ChangeLog for 2015.01. |
|||
nwc10 | I just could see a way to write simpler code to get the same job done | 22:19 | |
jnthn | :) | 22:20 | |
callgrind tells some interesting things | 22:22 | ||
5,942,340 ???:rpo_idx [/home/jnthn/dev/rakudo/nqp/MoarVM/install/lib/libmoar.so] | 22:23 | ||
That's an interesting one, for example | |||
nwc10 | what does that mean? | 22:24 | |
jnthn | We spend nearly 6 million instructions linear-scanning the reverse post-order sorted list of basic blocks to get the index of the one we're looking for | 22:25 | |
I'd not have guessed that. | |||
(It's part of the SSA transform in spesh) | |||
Anyway, not going to do it now, but we can just annotate the nodes with their index rather than re-computing it. | 22:26 | ||
dlem remembers the time when 6 million instructions would take *a long time* to run... | 22:29 | ||
jnthn can only remember so far back :) | |||
First machine I know the processor speed of that I used was 25MHz | 22:30 | ||
But I know I programmed on a slower one before that, using a BASIC interpreter too :) | |||
dlem | My introduction to computers was the C64 - approximately 1MHz :-) | ||
nwc10 | First machine that I can remmeber was 3.5MHz | ||
that I can remember the figure for that is | |||
not first machine I used | 22:31 | ||
(can't remebmer the clock speed for a ZX81) | |||
jnthn is clearly the (relative) baby here :) | |||
nwc10 | but the spectrum still works (tested about a year ago) | ||
dlem | :-D | ||
nwc10 | the ZX81 was not mine | 22:32 | |
jnthn | Our startup time is muchly spent on serialization and, curiously, binding symbols into hashes. | ||
Well, deserialization | |||
And malloc. | |||
nwc10 | how much of (de)serialisation is copying data? | ||
and, particularly, copying data that it might be possible to use in-place? | |||
(that may not be an easy question to answer) | 22:33 | ||
I might be rambling off in completely the wrong direction | |||
jnthn | Not easy generally, because we're reconstructing an object graph | ||
nwc10 | but I wondered if the format of things in the serialised file should be either | 22:34 | |
1) stored in a way that can be used directly without copying | |||
or | |||
2) if it needs copying, stored in the most space effient way that is still quick to unpack | |||
but that's cheap for me to say. | |||
jnthn | Well, the varint stuff is about 2. | 22:36 | |
There may well be more things in that direction. | |||
1 I struggle to see since it's not a self-contained object graph, but it's got references into objects from other compilation units. | |||
22:37
travis-ci joined
|
|||
travis-ci | MoarVM build passed. Nicholas Clark 'Slight simplification possible in read_varint_func() | 22:37 | |
travis-ci.org/MoarVM/MoarVM/builds/47847730 github.com/MoarVM/MoarVM/compare/f...fcddfc7c9a | |||
22:37
travis-ci left
|
|||
nwc10 | when I was experimenting with fakecutables, there was a lot of repetative looking data in the dumped out files | 22:37 | |
"1" might be things like string constants | |||
jnthn | Yeah, that's potential to do better on those. | 22:38 | |
nwc10 | but I had no idea what part of the moarvm file the repetative data was in | ||
(looked like 0, value, 0, value, 0, value) | |||
jnthn | Hmm | ||
nwc10 | and didn't have time to stop and get sidetracked, if I wanted to get the fakecutable proof/prototype done | ||
jnthn | Aye. Well, another thing for somebody to look at sometime :) | 22:39 | |
nwc10 | use more 'somebodies' | ||
my trainee minion is only just 1, and whist enthusiastic, isn't very useful yet for this sort of task. | |||
jnthn | :) | ||
nwc10 | and, erk, might wake up in 7 hours, so probably I should brush my teeth and put the Internet back in its box | 22:41 | |
aha yes. | 22:42 | ||
All tests successful. | |||
that's what I was waitingfor | |||
dlem | Keep up the good work, jnthn++ and nwc10++ | ||
nwc10 | but that's not necessarily exciting, as it was the machine on which the patches were first tested | ||
jnthn | Doing a Windows build/test run now | ||
I'll cut the relesae tomorrow | 22:46 | ||
22:50
kjs_ joined
|
|||
jnthn | This'll be our 12th release :) | ||
Things we didn't have a year ago: native call support, spesh (or inlining, OSR, and JIT), I/O that handled codepoints dangling over byte boundaries, most of the concurrency and async I/O stuff, rope-y strings, profiling... :) | 23:25 |