DIP60: @nogc attribute

Paulo Pinto via Digitalmars-d digitalmars-d at puremagic.com
Thu Apr 17 02:32:51 PDT 2014


On Thursday, 17 April 2014 at 08:52:28 UTC, Ola Fosheim Grøstad 
wrote:
> On Thursday, 17 April 2014 at 08:22:32 UTC, Paulo Pinto wrote:
>> Of course it was sold at WWDC as "ARC is better than GC" and 
>> not as "ARC is better than the crappy GC implementation we 
>> have done".
>
> I have never seen a single instance of a GC based system doing 
> anything smooth in the realm of audio/visual real time 
> performance without being backed by a non-GC engine.
>
> You can get decent performance from GC backed languages on the 
> higher level constructs on top of a low level engine. IMHO the 
> same goes for ARC. ARC is a bit more predictable than GC. GC is 
> a bit more convenient and less predictable.
>
> I think D has something to learn from this:
>
> 1. Support for manual memory management is important for low 
> level engines.
>
> 2. Support for automatic memory management is important for 
> high level code on top of that.
>
> The D community is torn because there is some idea that 
> libraries should assume point 2 above and then be retrofitted 
> to point 1. I am not sure if that will work out.
>
> Maybe it is better to just say that structs are bound to manual 
> memory management and classes are bound to automatic memory 
> management.
>
> Use structs for low level stuff with manual memory management.
> Use classes for high level stuff with automatic memory 
> management.
>
> Then add language support for "union-based inheritance" in 
> structs with a special construct for programmer-specified 
> subtype identification.
>
> That is at least conceptually easy to grasp and the type system 
> can more easily safeguard code than in a mixed model.
>
> Most successful frameworks that allow high-level programming 
> have two layers:
> - Python/heavy duty c libraries
> - Javascript/browser engine
> - Objective-C/C and Cocoa / Core Foundation
> - ActionScript / c engine
>
> etc
>
> I personally favour the more integrated approach that D appears 
> to be aiming for, but I am somehow starting to feel that for 
> most programmers that model is going to be difficult to grasp 
> in real projects, conceptually. Because they don't really want 
> the low level stuff. And they don't want to have their high 
> level code bastardized by low level requirements.
>
> As far as I am concerned D could just focus on the structs and 
> the low level stuff, and then later try to work in the high 
> level stuff. There is no efficient GC in sight and the language 
> has not been designed for it either.
>
> ARC with whole-program optimization fits better into the 
> low-level paradigm than GC. So if you start from low-level 
> programming and work your way up to high-level programming then 
> ARC is a better fit.
>
> Ola.

Looking at the hardware specifications of usable desktop OSs 
built with automatic memory managed system programming languages, 
we have:

Interlisp, Mesa/Cedar, ARC with GC for cycle collection, running 
on Xerox 1132 (Dorado) and Xerox 1108 (Dandelion).

http://archive.computerhistory.org/resources/access/text/2010/06/102660634-05-05-acc.pdf

Oberon running on Ceres,

ftp://ftp.inf.ethz.ch/pub/publications/tech-reports/1xx/070.pdf

Bluebottle, Oberon's sucessor has a primitive video editor,
http://www.ocp.inf.ethz.ch/wiki/Documentation/WindowManager?action=download&upname=AosScreenshot1.jpg

Spin running on DEC Alpha, http://en.wikipedia.org/wiki/DEC_Alpha

Any iOS device runs circles around those systems, hence why I 
always like to make clear it was Apple's failure to make a 
workable GC in a C based language and not the virtues of pure ARC 
over pure GC.

Their solution has its merits, and as I mentioned the benefit of 
generating the same code, while releasing the developer of pain 
to write those retain/release themselves.

Similar approach was taken by Microsoft with their C++/CX and COM 
integration.

So any pure GC basher now uses Apple's example, with a high 
probability of not  knowing the technical issues why it came to 
be like that.

--
Paulo


More information about the Digitalmars-d mailing list