On Friday, 19 November 2021 at 10:47:12 UTC, Ola Fosheim Grøstad wrote:
> On Friday, 19 November 2021 at 10:13:02 UTC, Paulo Pinto wrote:
> -- Dennis M. Ritchie on https://www.bell-labs.com/usr/dmr/www/chist.html
Dennis knew what he created, C advocates to this day apparently not.
Thanks for the link! Important quote, take notice Boehm GC-defenders:
«C is hostile to automatic garbage collection.»
HOSTILE! Nothing less. And I agree.
...
This is why D community should take care when celebrating designs in other languages like Objective-C and Swift's ARC.
As I already mentioned a couple of times, Objective-C ARC did not came out being the best technical option for Objective-C just like that, rather due to the failure of making Objective-C GC with a tracing GC based on Boehm work without issues.
Still available on the documentation archive,
https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/GarbageCollection/Introduction.html#//apple_ref/doc/uid/TP40002431
Check "Architecture", "Design Patterns to Use, and to Avoid", "Inapplicable Patterns", just for starters.
So when Apple rebooted their design, they followed up on what Visual C++ extensions already did for COM (e.g. _com_ptr_t), and made Objective-C compiler perform the retain/release Cocoa messages itself.
Coined their reference counting approach as ARC, and made a whole marketing message how ARC tops tracing GC, and the world of App devs cluessless of compiler design issues cheered in unison.
Swift as natural evolution from Objective-C, with 1:1 interoperability goals with the Cocoa ecosystem and Objective-C runtime, naturally had double down on ARC.
The alternative with a tracing GC would require an engineering effort similar to how .NET interops with COM,
https://docs.microsoft.com/en-us/dotnet/standard/native-interop/cominterop
So beware when discussing what D should adopt from other languages, usually there is more to the whole story than just RC vs tracing GC.