00:39
avuserow joined
01:58
FROGGS_ joined
04:55
lastofthe left
|
|||
sergot | morning o/ | 06:37 | |
06:51
tokuhirom left
07:04
brrt joined
|
|||
brrt | SuchVM.. /me likes | 07:04 | |
when it is time to deprecate MoarVM, we'll use that name | |||
07:06
woolfy left
07:13
xiaomiao joined
07:17
zakharyas joined
08:21
xiaomiao joined,
lizmat joined
|
|||
dalek | arVM: 65e7bfd | moritz++ | build/probe.pm: Avoid unaligned reads on ARMv7 closes issue 137. Patch courtesy of throwaway-moar-arm++ |
08:33 | |
nine | [Coke]: git maintains a commit id and a separate patch id which is just the hash of the diff. This way it can detect if a commit would do the exact same change and act sensibly. Helps for example when rebasing some branch and then rebasing a branch based on the previous one. | 08:50 | |
daxim | can yall look at the crash bugs I submitted on github and fix them? does anyone care? for austrian perl workshop, I'd like to show a comparison with some parsers like marpa and peg.js and also would like to include perl6 grammars | 10:39 | |
FROGGS | daxim: have you created new issues? | 10:44 | |
daxim | no, still untouched since a month. | ||
FROGGS | daxim: was that the opensuse build issue were I tried to package it but failed? | 10:45 | |
daxim | that's yet another unresolved one | ||
FROGGS | ahh, wait, let me try to find your issue | ||
daxim | moarvm #123 | 10:46 | |
FROGGS | github.com/MoarVM/MoarVM/issues/123 | ||
found it | |||
your libuv is newer... we use 0.11.18, you use 0.11.28 | 10:47 | ||
daxim: issue #81 is also related to libuv version mismatch... | 10:52 | ||
daxim | when can I expect a fix? mind that this is not only for me, but blocking packaging | 10:53 | |
FROGGS | I try to come up with a solution quickly | 10:54 | |
11:13
lizmat joined
11:35
lastofthe joined
|
|||
dalek | arVM: ae6fb2f | (Tobias Leich)++ | / (2 files): conditionally set include dirs and install rules (e.g. --has-libuv) |
11:36 | |
FROGGS | daxim: this should let us at least build against the uv headers we're linking to | 11:37 | |
lastofthe | moritz++: thank you for the clang/arm patch | ||
FROGGS | daxim: now I'd need a libuv on my system to test other versions then the bundled one :S | 11:38 | |
moritz | lastofthe: I just applied it, I think nwc10++ is to "blame" | 11:39 | |
lastofthe | I'm to blame, just saying thanks :) | 11:41 | |
(for the application) | |||
moritz | oh | 11:50 | |
lastofthe++ | |||
12:08
itz joined
|
|||
jnthn | FROGGS: Any reason you know of for us not to bump to a newer libuv? I could understand it if our HEAD was using something *newer* than distros are packaging. That we're using something older feels a little suboptimal... :) | 12:20 | |
FROGGS | jnthn: don't know of a reason, no | ||
jnthn | OK. | ||
FROGGS | jnthn: that was my plan B, update to that version if I cannot install such a version with apt | ||
because I'd like to reproduce the issue first | 12:21 | ||
jnthn | FROGGS: I'm happy enough if it's plan A, provided it builds... | ||
FROGGS: OK. I leave it with you. | |||
Lemme know if I need to look at something | |||
FROGGS | but it seems even a newer ubuntu offers an older libuv (I'm currently upgrading to 14.04) | ||
jnthn | grmbl | ||
FROGGS | k, will do it as plan A in a bit :o) | ||
jnthn | .oO( Bundling: the worst option except all the others... ) |
||
jnthn has a 3-day weekend | 12:26 | ||
Hopefully I don't spend all this one being ill, like last one... | |||
nwc10 | yay! | ||
what's the excuse for a public holiday? | |||
jnthn | No idea, guy at work said something about the moon :) | 12:27 | |
But it isn't even a full moon yet, so...hmm. :) | |||
FROGGS | ohh, then it is not "Mars is bright tonight" :o) | ||
13:00
lizmat joined
|
|||
jnthn | efff2fdbb8b8 breaks the build on MSVC | 14:46 | |
14:46
itz_ joined
|
|||
dalek | arVM: 16ecaa8 | jonathan++ | src/moar.h: Unbust the MSVC build. |
14:49 | |
15:05
lizmat joined
15:07
dalek joined
15:12
kjs_ joined
|
|||
[Coke] | jnthn++ | 15:15 | |
timotimo | oops, that was me ;( | 15:16 | |
[Coke] | you were fixing my bug! ;( | 15:17 | |
jnthn | timotimo: Yeah. Since MVM_PUBLIC doesn't equate to anything on non-Windows, there was no chance of a warning... | ||
The basic rule is that if MVM_PUBLIC is one a declaration of something, it has to go on a forward-decl of it elsewhere too | 15:19 | ||
Otherwise the compiler barfs over the inconsistent export semantics... | |||
s/one a/on a/ | |||
15:31
itz joined
|
|||
dalek | arVM: 64f5ecb | jonathan++ | src/core/oplist: Fix spell-o. |
15:42 | |
arVM: 92a3472 | jonathan++ | / (11 files): Add a way to specify a type needs finalization. Nothing is done with this information as of yet, except storing it on the type's STable. |
|||
timotimo | oooh, we're getting some more lazy initialization stuff | 15:44 | |
jnthn | No | ||
15:44
FROGGS joined
|
|||
jnthn | The stuff nine++ needs. | 15:44 | |
timotimo | ah! | 15:45 | |
aah, *finalization* | |||
as in ... finalization! | |||
jnthn | ... :P | 15:46 | |
Don't have the energy to actually get it in place tonight, but figured I'd do the easy prep work so I can dive into the heart of it tomorrow. :) | 15:47 | ||
timotimo | i wonder if we'd get better code-gen if we split the $key eq '$!from' || $key eq '$!to' into two ifs and use a constant string for bindattr inside ... | 15:48 | |
jnthn | timotimo: Maybe, but they're relatively rare... | 15:49 | |
Would JIT better though | |||
timotimo | then it's kinda not so cool to be checking for them each and every single iteration, eh? | 15:50 | |
jnthn | Yeah, that's the bigger issue... | ||
timotimo | maybe we can do the check with existskey twice first and kick them out of the hash if they are? | ||
jnthn | That's not such a bad idea... | ||
timotimo | hm, but the caps are probably not something we'd be allowed to mutate | ||
jnthn | Right | ||
Well | |||
timotimo | and cloning that... :\ | ||
jnthn | Other way is to do an ordat to get the first char of the name and check if it's the $ char... | ||
timotimo | + if $name && nqp::ordat($name, 0) == 36 && ($name eq '$!from' || $name eq '$!to') { | 15:51 | |
that's already what your patch does :) | |||
jnthn | oh o.O | ||
(jnthn of the optimization past)++ :P | 15:52 | ||
timotimo | though we have an optimization in place that'll turn an eqat with length 1 into an ordat *and* convert the character to its ordinal for you | ||
so it'd be nicer to look at in the code | |||
or at least i think we have that | |||
jnthn | Don't remember us having it. | ||
timotimo | at the very least in moar's code-gen. | ||
FROGGS | timotimo: might make sense to bench every change your make, what do you think? | 15:53 | |
timotimo | heh. | ||
15:54
itz_ joined
|
|||
TimToady | I assume that's finalization as in "destroy", not as is "class is closed, final" | 16:24 | |
jnthn | TimToady: Correct | 16:25 | |
TimToady | since you can't tell that a class needs finalization, only that it's allowed if no one wants it non-final | ||
jnthn | TimToady: Finalization is the widely used term for this in the GC world. | 16:26 | |
TimToady | ain't overloading wonderful... | ||
jnthn | Thankfully, language exists within a context... :) | 16:27 | |
The src/gc/ context in this case :) | |||
TimToady | maybe we need a different term for what happens to a class...closed and...copyrighted, so no derivative works | 16:28 | |
closed and...neutered... | 16:29 | ||
jnthn has seen "sealed" used for it | |||
TimToady | well, that's kind of like a vasectomy... | ||
jnthn | canonize... | ||
nwc10 | jnthn: if you keep ++ing nine we'll loose track of whether he's now seventeen, fourty two, or several hundren | ||
er, hundred | 16:30 | ||
TimToady | closed and "fixed" :) | ||
jnthn | dead...uh...stable :) | ||
TimToady | not dead yet! | ||
just...endangered, and resting... | 16:31 | ||
senescent... | |||
close and past caring :) | |||
closed and shuttered | 16:32 | ||
"not taking new patients" | 16:33 | ||
diakopter | cauterized? | 16:35 | |
heh, pun on sealed could be seared | 16:37 | ||
(also has the engrish connotation) | |||
timotimo | shelved, shelled? crusty? breaded? | 16:38 | |
TimToady | privatized and plundered, to go in the economics direction | 16:42 | |
diakopter | heh more like overregulated | 16:43 | |
to go in the other economics direction | 16:44 | ||
TimToady | don't mess with me, don't try to be like me | 16:47 | |
17:03
lastofthe joined
|
|||
[Coke] | moar is failing t/fudgeandrun t/spec/integration/99problems-51-to-60.t, but the test passes with MVM_SPESH_DISABLE=1 | 17:12 | |
jnthn | [Coke]: Yes, more specifically MVM_SPESH_INLINE_DISABLE, I believe | 17:15 | |
[Coke]: I didn't have much luck figuring out *why* yet, though :( | |||
17:27
zakharyas joined
|
|||
[Coke] | need a ticket? | 17:32 | |
japhb | After watching a job that processes output from a child process take half an hour to complete -- when I know the underlying child process runs in a minute at most -- I decided to try the profiler. And began to weep inside. | 17:37 | |
The list refactor can't come soon enough. Partly because trying to trace the call graph goes through so many levels of anon/gimme/reify/etc. that finding actual work done is painful. And partly because the GC list shows 13000 runs of "31KB / 11KB / 4053KB" for nursery retained/promoted/freed -- or even worse. | 17:39 | ||
TimToady | well, there will still be levels of closures, till the inliner kicks in | 17:40 | |
you can't just ignore that map in the middle | 17:41 | ||
.oO(map-in-the-middle attack!) |
|||
japhb | The input data is a little under 37_000 lines. Processing it creates 88_000_000 or so BOOTArray objects, or so the Allocations tab claims. I'm pretty sure my code isn't *that* insane. | 17:43 | |
TimToady | yes, one of the things we need to do is return raw arrays rather parcelizing at every level | 17:46 | |
"here's an unadorned batch of result" | 17:47 | ||
*sults | |||
or in the case of a negotiated lazy, this closure returns exactly one unadorned result | |||
and for the most part, batches have to be stealable, so you can just use the returned batch as your own basis of computation without copying it | 17:49 | ||
japhb | I'm a bit surprised by the next couple things on the list too ... 35_000_000 BOOTInt, 19_000_000 Int, 10_000_000 Whatever, 9_000_000 BOOTCode, 8_000_000 each of NQPArray, BOOTIter, and Scalar ... | ||
Right. | |||
TimToady | everyone's using indexing to reprocess each array | ||
the Whatevers are the .gimme(*) and .reify(*) probably | |||
we could really use smart pointers into arrays, a la Go | 17:50 | ||
japhb | Ah, yes. WBNI that case could use a singleton instead | ||
TimToady: You mean Go's "slice" concept? | |||
TimToady | yeah, something like that | 17:51 | |
an array pointer that knows its bounds, basically | |||
it's one of the C fixes that Go actually got right, I think | |||
and something we can probably use for pointers into native arrays | 17:52 | ||
on JVM, of course, you probably have to remember the original structure to index into | 17:53 | ||
but that can be largely transparent | |||
japhb | nodnod | 17:54 | |
TimToady | so among other things, our list refactor has to be able to return batches of natives as a native array | ||
timotimo | yes, please | 17:58 | |
TimToady | maybe 10_000_000 Whatever is LHF, since * is supposed to be a singleton | ||
are we doing Whatever.new all over the place? | |||
timotimo | hopefully not, but perhaps we clone() it all the time? | 17:59 | |
TimToady | clone on a singleton should just return self | ||
japhb | Whatever's method new() does nqp::create(self), and there's no clone override. | 18:01 | |
TimToady | go for it! | 18:03 | |
timotimo | japhb: i'd be interested to see how that script of yours behaves when you merge in my dynamic_gen2_tuning branch of MoarVM | 18:05 | |
since it usually just promotes 11kb it should only do a full collection very few times all in all | 18:06 | ||
i think it waits for 30 mb of promoted data to accumulate before doing a gen2 | |||
i'd kind of like to see a scatter plot of gc runs with x being kept and y being promoted or something | 18:07 | ||
though ... perhaps a scatter plot is usually used for data where x and y have some expected correlation | |||
TimToady | hmm, ./libmoar.so: undefined reference to `MVM_gc_finalize_set' | 18:09 | |
did jnthn forget to check something in? | 18:10 | ||
needs reconfig is all | 18:11 | ||
timotimo | ah | ||
TimToady | make clean ain't good enough | ||
TimToady is working on a reverse merge back into dynamic_gen2_tuning to keep it from getting too out of sync | 18:15 | ||
(spectesting) | 18:16 | ||
timotimo | i wonder what i should test to figure out if the branch is mergable | 18:19 | |
TimToady | well, it's certainly mergable, since the merge succeeds :P | 18:21 | |
dalek | Heuristic branch merge: pushed 25 commits to MoarVM/dynamic_gen2_tuning by TimToady | ||
18:22
brrt joined
18:28
teodozjan joined
|
|||
lastofthe waits for the ocean swell to fill in, and the car is in the shop, must be time to pick some toe jam and squash some compiler warnings... | 18:47 | ||
18:54
itz joined
19:06
kjs_ joined
19:09
brrt joined
|
|||
dalek | arVM/libuv-0.11.29: fce509b | (Tobias Leich)++ | / (6 files): update libuv from 0.11.18 to 0.11.29 This also includes minimal adjustments to our codebase, for example callbacks only get a handle and not an additional status and uv_fs_read wants an uv_but_t now instead of char*. |
19:23 | |
FROGGS | testing this now on windows... | ||
damn, now I get spectest fails :( | 19:26 | ||
ohh | 19:28 | ||
dalek | arVM/libuv-0.11.29: 8a98741 | (Tobias Leich)++ | src/io/syncfile.c: uv_fs_write also takes an uv_buf_t instead of char* |
19:35 | |
19:39
kjs_ joined
|
|||
nwc10 | jnthn: PPC spesh SEGV is because MVMint64 slot = try_get_slot(tc, repr_data, ch_facts->type, MVM_spesh_get_string(tc, g, ins->operands[3])); | 19:45 | |
for OP MVM_OP_getattrs_n, third ins is a register (if I understand this stuff correctly), so was written into the union in ins->operands[3] as (as far as I can work out) ani16 | 19:48 | ||
so on little endian systems: | |||
lit_i32 = 13, | |||
lit_i16 = 13, | |||
lit_str_idx = 13, | |||
and all is happy (MVM_spesh_get_string(...) returns non-NULL, try_get_slot() loops but returns -1 | 19:49 | ||
on big endian systems | |||
lit_i32 = 851968, lit_i16 = 13, | |||
lit_n32 = 1.19386145e-39, lit_str_idx = 851968, callsite_idx = 13, | |||
so MVM_spesh_get_string(...) is | 19:50 | ||
return g->sf->body.cu->body.strings[o.lit_str_idx]; | |||
and o.lit_str_idx is 851968 not 13 | 19:51 | ||
and g->sf->body.cu->body.strings[851968] is NULL | |||
and SEGV later on | |||
and, what I can't work out is what codeis wrong - is the write using lit_i16 wrong | |||
or the read using lit_str_idx | |||
as best I can work out, 3rd argument of MVM_OP_getattrs_n is 16 bit | 19:52 | ||
3rd argument of MVM_OP_getattr_n is 32 bit | |||
so, is that part of the confusion? | |||
lastofthe starts a portability slow clap | 19:53 | ||
nwc10 | what's that meant to acchieve? | 19:55 | |
lastofthe | me? | 19:56 | |
nwc10 | yes. I'm not sure what a slow clap is for | ||
TimToady suspects a slow clap implies that it might get faster later :) | 19:57 | ||
lastofthe | Oh, I get giddy when folks port. Any attempt at starting a slow clap is to get everyone to clap along :) | ||
nwc10 | ah OK | ||
lastofthe | Or even a subset of everyone :) | ||
I believe I've benefited from some of your PPC work while I've (just recently) jumped in and thwacked on some ARMv7 stuffs. The clap (not that kind!) is just me appreciating that work. | 19:58 | ||
nwc10 | I suspect you more likely benefitted from the my ARM work that preceded the PPC work | 19:59 | |
lastofthe | Ahh, make sense. | ||
nwc10 | and the PPC work was partly someone else - I forget who | 20:00 | |
I mostly just found and fixed the last missing bit | |||
lastofthe | It usually is :) (partly someone else) | ||
Do we have a way to share branches that doesn't involve creating a github account and clicking buttons? Is it cool to attach publicly available non github branches to tickets? | 20:04 | ||
FROGGS | nwc10: I'm going to merge the libuv-update branch... I don't see any fallout on windows and linux | ||
nwc10: but if something is going to get weird, please let me know | |||
dalek | arVM: fce509b | (Tobias Leich)++ | / (6 files): update libuv from 0.11.18 to 0.11.29 This also includes minimal adjustments to our codebase, for example callbacks only get a handle and not an additional status and uv_fs_read wants an uv_but_t now instead of char*. |
20:05 | |
arVM: 8a98741 | (Tobias Leich)++ | src/io/syncfile.c: uv_fs_write also takes an uv_buf_t instead of char* |
|||
nwc10 | FROGGS: for me, t/nqp/19-file-ops.t seems to be hanging | 20:12 | |
FROGGS | hmmm | ||
nwc10: it passes instantly on my box | 20:13 | ||
nwc10 | OK, some games with strace and ps suggest that moar was waiting on epoll with a zombie sh as a child | 20:14 | |
no, I don't know why | |||
FROGGS | O.o | 20:15 | |
20:29
itz_ joined
|
|||
lizmat | SPW shutting down for today... see you later& | 20:33 | |
japhb gets out of his block of meetings | 20:34 | ||
timotimo: While certainly the full collections are more expensive than nursery collections, I think that is actually dwarfed by the sheer churn of it all. Meaning if you don't get rid of the 13_000 or so nursery collections (and all the associated object construction and tear down), making the full collections rarer will only have a small effect on total run time. | 20:36 | ||
20:37
itz joined
|
|||
TimToady | japhb: we currently compile every * down to Whatever.new... >.< | 20:37 | |
japhb | Ouch. | 20:38 | |
Why do we even create a new object? Why not just pass the type object around? | |||
TimToady | as a datapoint, changing new to read our $star //= nqp::create(self) works, but is not yet optimal | ||
we should create a singleton early and just use it | |||
japhb | (Meaning, changing that to clone is nice and all, but why not have no method call at all?) | ||
TimToady | well, the type object itself is different from the instance | 20:39 | |
japhb | I guess I was asking, why does * need to be concrete? | ||
TimToady | we would like to have Whatever undefined and * defined | ||
japhb | Ah, interesting. | ||
Why? | |||
(I've got a guess as to the reasoning, but I'm curious ....) | 20:40 | ||
nwc10 | FROGGS: regular debugging build is fine | ||
there's something very screwy with ASAN | |||
under ASAN, things end up with that deadlock hang | |||
TimToady is trying to remember where the distinction is important | |||
but you certainly want Whatever for the manifest type check in signatures, not a literal * | 20:41 | ||
FROGGS | nwc10: this can of course be a problem upstream too :/ | ||
TimToady | oh, well, what about when you want to call *.^methods vs Whatever.^methods ? | 20:42 | |
20:42
itz_ joined
|
|||
japhb | Unless it's been mixed into, wouldn't that be the same? | 20:42 | |
TimToady | m: say *.DEFINITE | ||
nwc10 | FROGGS: well, I have no good idea, and I'm going to go to bed | ||
camelia | rakudo-moar fd9238: OUTPUTĀ«Trueā¤Ā» | ||
japhb | m: say (3.^methods) eqv (Int.^methods) | 20:43 | |
camelia | rakudo-moar fd9238: OUTPUTĀ«Trueā¤Ā» | ||
FROGGS | gnight nwc10 | ||
TimToady | no, what if you want to autoprime .^methods? | ||
m: say (*.^methods) eqv (Whatever.^methods) | |||
camelia | rakudo-moar fd9238: OUTPUTĀ«WhateverCode.new()ā¤Ā» | ||
TimToady | hah | 20:44 | |
japhb | Oh! | ||
Duh, I see what you mean. | |||
TimToady | use vs mention | ||
japhb | OK, so that does argue with the early-created singleton instance, and then use that whenever we see '*' used as Whatever:D | 20:45 | |
TimToady | anyway, yeah, we need to figure out how to create a Whatever.new singleton early enough to use it in src/Perl6/*.nqp | ||
japhb | Don't we already do that for e.g. Inf? | ||
TimToady | looks to me like we compie Inf and -Inf down to inf and neginf opcodes | 20:48 | |
nwc10 | FROGGS: I didn't. I think I have accidentally foundthe problem/solution | ||
git submodules | |||
20:48
itz joined
|
|||
nwc10 | the trick is not to end up with libuv compiled with ASAN | 20:48 | |
FROGGS | ahh! | ||
nwc10 | and the confusion is that git clean doesn't recurse into sub modules | ||
so the compilation flag state of the submodules may be wrong | 20:49 | ||
FROGGS | I also updated libuv twice just to let realclean revert it >.< | ||
TimToady | japhb: anyway the spectest passed with the memoized new and a clone self, so there's no semantic issue with having a singleton | ||
just wanna do it right to avoid extra .new calls | 20:50 | ||
TimToady wonders how soon in the setting it actually tries to evaluate a * | 20:52 | ||
hah, the first time it evaluates is trying to compile RESTRICTED, so there's circularity issues | 20:54 | ||
*no circularity | |||
I guess the setting does no autopriming | 20:56 | ||
that makes it easy, I hope | |||
japhb | Oh, nice. | 20:57 | |
TimToady | well, less difficult | 20:59 | |
lastofthe | Hrmph. Silencing pointer-sign warnings in a way that was meant to follow what the compiler might already be doing is busted. | 21:06 | |
At least my first representation of it is busted. | 21:07 | ||
21:21
itz_ joined
21:25
woolfy joined
21:32
itz joined
21:37
lizmat joined
21:38
itz_ joined
|
|||
lastofthe glances at write_varint* | 21:40 | ||
timotimo | :( | 21:44 | |
that was my work, sorry | |||
lastofthe | timotimo: it was just a glance :) | 21:46 | |
The four commits from different folks on different dates for a 15 line write_varint9 should mean that it's important :) | 21:48 | ||
s/should/must/ | 21:49 | ||
timotimo | no, it was just wrong a bunch of times :) | ||
21:50
itz joined
|
|||
japhb | Is it still the plan to enable jit by default for 2014.09? If so, we probably ought to flip the default to enabled now, to increase the number of people testing. | 23:00 | |
tadzik | +1 | 23:08 | |
timotimo | i think it'd be fine | 23:35 | |
TimToady | in what sense is it not default now? | 23:39 | |
tadzik | you need --enable-jit passed to Configure.pl | ||
TimToady | oh, you have to config | ||
right | |||
TimToady always just does ". config.status" so forgets | |||
23:40
lastofthe joined
|
|||
TimToady | so +1 from me too | 23:40 | |
japhb | Given that you can disable jit via the environment, do we still need to have an option to *not* build it in the configure step? | 23:41 | |
tadzik | depends. Do we still regard it as experimental? | 23:44 | |
(did we ever? :) | |||
23:46
itz_ joined
|