[GSOC] Persistent Data Structures detailed information
Jay
jay24rajput at gmail.com
Mon Apr 8 11:32:01 UTC 2019
On Sunday, 7 April 2019 at 18:19:48 UTC, Stefanos Baziotis wrote:
> On Sunday, 7 April 2019 at 17:33:10 UTC, Jay wrote:
>> Yeah, I have already put by GitHub id and the projects, which
>> I have performed. To support by algorithms and data structure
>> knowledge, I am attaching the links to my Codechef and
>> Hackerrank ids. Would that be good to go??
>
> Hello Jay,
>
> Since I'm also applying for the persistent data structures, I
> may be
> able to offer some help. Here's my take on the matter:
> I should point out first that a lot of this understanding
> emerged
> from a response from Andrei. However, I'm still waiting for a
> review in the proposal and a response for some clarification,
> so take this with a grain of salt, this is only my current
> understanding.
>
> So, the main question in implementing persistent data structures
> in D is not "How do I implement persistent data structures?". I
> think
> this is well-studied and more of a general matter.
> Rather, the problem is more specific to D and it is
> "How do these data structures handle memory?".
> Somewhat quoting Andrei:
>> The thing is that most people would not want these DSs to use
>> the garbage collector, i.e. employ some sort of reference
>> counting.
>> However, changing the reference count destroys the concept of
>> immutability.
>
> Another way to look at it (for me) is that the DS has to
> allocate memory,
> but if this memory comes from GC, then the GC might at some
> point
> free a previous version of the DS. Now, one could reason that
> this
> breaks only the theoretical model (i.e. we lost one version, so
> the
> DS is not persistent) but not the practical since the GC will
> only
> free unreachable code. But the problem is that if we take
> a mark and sweep GC (I really don't know what techniques the D
> GC
> employs), the GC will actually compact the reachable memory
> pages, i.e.
> it will move memory around. That means that if you have a
> direct pointer
> to some of this memory then access, pointer arithmetic etc. goes
> out of the window. I think that this will be a problem since
> from what I have seen, in D the GC never works with direct
> pointers.
>
> All this results in that you have to allocate memory out of the
> type system. To
> be honest, this is where I start to lose it... I proposed that
> a simple
> strongly-typed allocator (i.e. not C Standard Library malloc
> returning void*)
> might help to do these allocations but doesn't seem like a good
> solution (both to me
> and I guess everyone else).
>
> Good luck!
Hey Stefanos, firstly thanks a lot for replying and helping out
even though you are submitting a proposal for the same project
:-p.
It hadn't even come to my notice that D does not have a
malloc-like function for dynamic address generation. All I can
think of as of now is interfacing c++ library in creating the
data structure, but as it won't be the best solution the only
option we have is implementing a <stdlib.h> like library. Would
love to hear your any other ideas on the same.
More information about the Digitalmars-d
mailing list