00:34
dalek joined
01:48
FROGGS_ joined
02:21
raiph joined
|
|||
raiph | maybe of interest in years to come: "deterministic garbage collection algorithm that supports RAII (initialism) directly, evenin the case of recursive graphs of objects" www.reddit.com/r/ProgrammingLangua...ollection/ | 02:27 | |
06:29
rurban_ joined
07:03
zakharyas joined
|
|||
jnthn wonders what trade-offs it makes to do that :) | 08:28 | ||
konobi | there was that memory allocation and gc paper from a while back | 08:35 | |
nine | The programming language uses atomic reference counts along with an algorithm that detects and identifies the unique set of objects in a recursive graph of objects by performing graph scans in real-time, and then, when the last reference from an object outside the graph is removed (meaning that there are only references from objects that participate in the graph), the object being dereferenced is then destroyed, which causes a chain reaction which causes all obj | 09:20 | |
from the paper's announcement | |||
jnthn | heh, atomic reference counts :) | ||
We ripped those out of MoarVM last month :) | |||
Interesting idea, though. | 09:21 | ||
(The real-time graph scans, I mean) | 09:22 | ||
10:43
retupmoca joined
10:59
colomon joined
11:06
cognominal joined
11:35
rurban_ joined
|
|||
lizmat | jnthn: is there a reason we don't have any nqp::inc_i($a) / nqp::dec_i($b) ops ? | 11:49 | |
(basically providing prefix ++ and --_ | 11:50 | ||
) | |||
I was just wondering | |||
jnthn | Various reasons, among them working out what they should actually do :) | 11:58 | |
Note that they'd want to update their arg, but the way you want the do that in NQP vs Perl 6 aren't the same | |||
Then it's not clear if pre or post inc/dec semantics are wanted | 11:59 | ||
lizmat | to me, pre inc semantics are clear :-) | 12:05 | |
jnthn | That's 'cus it's what you want at the moment :P | ||
lizmat | true | 12:06 | |
jnthn | The "how should they even work2 is the bigger issue though. | ||
lizmat | ok, I got an answer :-) | ||
it just felt like such an omission to me | |||
and having them (in whatever way) would prove to be an easier optimization target, no ? | |||
jnthn | "It's complicated" :) | 12:07 | |
Note that it'd need to care about, say, attributes too | 12:08 | ||
Where you need to compile it into a read/add/write | |||
So it'd need case analysis to compile | |||
lizmat | ok, in my limited view, nqp::inc_i() would ever only take native ints | ||
jnthn | What's a native int? :) | 12:09 | |
lizmat | ok, gotcha :-) | ||
jnthn | Or more to the point: if it only *takes*, then it can't update :) | ||
That's why it gets tricky | |||
lizmat | I guess I was just thinking it essentially takes a pointer and does an inc there :-) | ||
jnthn | Well, it "could" by demanding an Int*Ref | 12:10 | |
Then we'd not like that and so end up trying to special-case it in various cases :) | |||
lizmat | ok, I get the "it's complicated" :-) | 12:11 | |
jnthn | I guess the kicker really being that, after all that work, it's not entirely clear that post-JIT we'd have better code anyway. :-) | 12:12 | |
nwc10 | or even post-spesh? | ||
jnthn | Or possibly that | ||
13:05
domidumont joined
13:10
cognominal joined
|
|||
dalek | arVM: 27fccc1 | (Will Coleda)++ | build/ (2 files): Smoke me/spaceybuild (#375) Make build in dir containing space work |
13:21 | |
nwc10 | [Coke]: sorry, no, I didn't test that earlier. I slack | 13:26 | |
I have now. It works. | |||
Thanks | |||
[Coke] | no worries. | 13:31 | |
13:35
colomon joined
14:12
cognominal joined
|
|||
timotimo | this is an interesting crash | 14:56 | |
0x00007ffff7959557 in MVM_spesh_osr (tc=0x6037c0) at src/spesh/osr.c:46 | |||
46 if (!tc->cur_frame->params.callsite->is_interned) | |||
(gdb) print tc->cur_frame->params | 14:57 | ||
$3 = {callsite = 0x0, arg_flags = 0x0, args = 0x0, named_used = 0x0, named_used_size = 0, arg_count = 0, | |||
num_pos = 0, flag_count = 0} | |||
i can easily put a null check in there, but what's the actual meaning of .params being completely nulled out? | |||
jnthn | Sounds rather busted | ||
Outdated pointer maybe? | |||
timotimo | (gdb) print MVM_dump_backtrace(tc) | 14:58 | |
at <unknown>:1 (/home/timo/perl6/install/share/perl6/runtime/CORE.setting.moarvm:count-only) | |||
from gen/moar/m-CORE.setting:13144 (/home/timo/perl6/install/share/perl6/runtime/CORE.setting.moarvm:elems) | |||
from triangle-numbers.p6:9 (<ephemeral file>:) | |||
i can try running it in valgrind to see if it messes with some data | |||
that'll take forever, of course. | 14:59 | ||
jnthn | yeah | ||
That should probably never be NULL for something on the call stack... | |||
timotimo | valgrind only reports the invalid read that also triggers the segfault, it seems like | 15:36 | |
15:51
domidumont joined
16:14
rurban_ joined
17:34
patrickz joined
17:38
raiph joined
18:00
cognominal joined
19:16
FROGGS joined
20:01
zakharyas joined
20:57
raiph left
|
|||
timotimo | www.youtube.com/watch?v=P3AyI_u66Bw - "removing the python GIL"; someone's working on a project called "gilectomy" (used to be "Confuse-A-Cat"), and it looks interesting | 21:41 | |
it seems like that approach adds one user-space lock per list, and per dict, and so on | 21:44 | ||
ouch. atomic incr and decr on every single object | 21:53 | ||
makes it incredibly slow compared to cpython with the gil | |||
arnsholt | timotimo: Yeah, that's the problem with removing the GIL | 22:38 | |
The CPython team look pretty committed to refcounting for the GC, both since having the implementation internals being simple is a goal for them as well as the fact that breaking *all* of the C extensions would be pretty crap | 22:39 | ||
timotimo | that's also explained in that very talk :) | 22:46 | |
arnsholt | Yeah, he covers it very well | 22:55 | |
It'll be interesting to see what they come up with to kill off the GIL | |||
timotimo | yup | 22:56 | |
arnsholt | I think they'll probably figure it out eventually, but I am pretty curious how they're going to do it | ||
timotimo | yeah | 23:05 | |
i wish pypy's STM effort would have gotten further by now | |||
or even by last year. or two years ago. | |||
before i came over to perl6 i was quite the pypy fanboy :) | 23:06 | ||
and i still think their project is just absolutely awesome | |||
i do find rakudo a bit simpler to develop for, though | |||
at least by now :D | |||
rpython had some really difficult to figure out failure modes | 23:07 | ||
or maybe i was just an expert at messing up in all different kinds of ways | |||
arnsholt | PyPy is awesome | 23:15 | |
It saved my skin on some Python code a while back | |||
Actually, one of the PyPy devs dropped by #perl6 at some point, trying to convince us that Rakudo should've targetted rpython rather than JVM/Moar | 23:16 | ||
timotimo | well, i kind of asked him about advice | ||
arnsholt | Ah, right | 23:18 |