<story><title>Inside D&apos;s GC</title><url>http://olshansky.me/gc/runtime/dlang/2017/06/14/inside-d-gc.html</url></story><parent_chain></parent_chain><comment><author>dawg</author><text>The D language is currently heading towards deterministic and safe memory management, making it possible to avoid the GC overall, hence further work on GC improvements was deprioritized.
&lt;a href=&quot;http:&amp;#x2F;&amp;#x2F;dlang.org&amp;#x2F;blog&amp;#x2F;2017&amp;#x2F;06&amp;#x2F;16&amp;#x2F;life-in-the-fast-lane&amp;#x2F;&quot; rel=&quot;nofollow&quot;&gt;http:&amp;#x2F;&amp;#x2F;dlang.org&amp;#x2F;blog&amp;#x2F;2017&amp;#x2F;06&amp;#x2F;16&amp;#x2F;life-in-the-fast-lane&amp;#x2F;&lt;/a&gt;&lt;p&gt;The problems are known and indeed a full rewrite on this ancient GC would be in order. Since D 2.072.0 it&amp;#x27;s possible to link and use different GCs, so a faster one could be written as an external library which would be a very welcome effort.
&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;dlang.org&amp;#x2F;changelog&amp;#x2F;2.072.0.html#gc-runtimeswitch-added&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;dlang.org&amp;#x2F;changelog&amp;#x2F;2.072.0.html#gc-runtimeswitch-ad...&lt;/a&gt;&lt;p&gt;I&amp;#x27;d be interested in experimenting with a Connectivity-Based GC (&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;www.cs.purdue.edu&amp;#x2F;homes&amp;#x2F;hosking&amp;#x2F;690M&amp;#x2F;cbgc.pdf&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;www.cs.purdue.edu&amp;#x2F;homes&amp;#x2F;hosking&amp;#x2F;690M&amp;#x2F;cbgc.pdf&lt;/a&gt;), leveraging type information to do partial collections.
Write barriers come with a performance penalty (~3-5%) that we don&amp;#x27;t want to impose on people using deterministic memory management, but most GCs capable of performing partial collections, e.g. generational GCs, do require write barriers, Connectivity-Based GCs do not.&lt;p&gt;For the time being the pragmatic advise is to replace major sources of GC allocations with deterministic memory management when the GC heap grows too big (~1GB) and performance becomes a problem.&lt;p&gt;So far this hasn&amp;#x27;t prevented various people from writing extremely fast D programs.</text></comment>
<story><title>Inside D&apos;s GC</title><url>http://olshansky.me/gc/runtime/dlang/2017/06/14/inside-d-gc.html</url></story><parent_chain></parent_chain><comment><author>Dzugaru</author><text>D is the most promising &amp;quot;one to rule them all&amp;quot; languages for me, given it&amp;#x27;s expressive power, speed, compilation speed and support for multiple paradigms. That said, D severely lacks manpower in its development.&lt;p&gt;I&amp;#x27;d like to port author&amp;#x27;s effort to Windows, but I don&amp;#x27;t have OS-level programming experience, so I don&amp;#x27;t even know what are the differences and how they affect GC algorithms described.</text></comment>