Potential GSoC project - GC improvements
ZombineDev via Digitalmars-d
digitalmars-d at puremagic.com
Thu Mar 10 10:39:36 PST 2016
On Thursday, 10 March 2016 at 17:46:15 UTC, Daniel Kozak wrote:
>
>
> Dne 10.3.2016 v 18:15 ZombineDev via Digitalmars-d napsal(a):
>> On Thursday, 10 March 2016 at 16:46:59 UTC, Jeremy DeHaan
>> wrote:
>>> On Thursday, 10 March 2016 at 15:24:48 UTC, Andrei
>>> Alexandrescu wrote:
>>>> On 3/9/16 10:40 PM, NX wrote:
>>>>> I think the best possible improvement for GC is making it
>>>>> lock-free.
>>>>> Currently, GC lock cause some serious performance penalties
>>>>> for
>>>>> multithreaded code when frequent allocations take place.
>>>>
>>>> I agree. A first step would be easy to do with
>>>> std.allocator's thread-local freelists. -- Andrei
>>>
>>> I was looking into this, but I am slightly hesitant. Should
>>> the gc use something in std.experimental? Or should we think
>>> that's ok?
>>>
>>> I also know that there are some people that think we should
>>> avoid using Phobos in druntime.
>>
>> There's no problem in using std.experimental.* internally,
>> because if the API changes, the one who changes the API will
>> also need to change all internal usages, otherwise his pull
>> request won't compile.
>>
>> About using Phobos in Druntime - you can't directly import
>> Phobos, since it's files are not present when Druntime is
>> built.
> But we allready need existing D compiler to build D frontend,
> so maybe we can use this full D compiler for building druntime
> in the future?
The build process looks something like this currently:
(a bit simplified)
1. Download old dmd.
2. Build new dmd with 1.
3. Build druntime with 2.
4. Build phobos with 2 and link it with 3.
5. Package 2, 3 and 4 into a release zip
You can't use 1 for building 3 (or 4), because 3 (or 4) may
depend on a new feature only present in 2. Also you can't rely on
5 for building 3 (or 4) because you'll get a cyclic dependency.
More information about the Digitalmars-d
mailing list