On Tuesday, 10 April 2018 at 18:31:28 UTC, Jacob Carlborg wrote:
On 2018-04-10 08:47, Jonathan M Davis wrote:
Regardless, I think that it's clear that in order to do
anything with
thread-local pools, we'd have to lock down the type system
even further to
disallow casts to or from shared or immutable, and that would
really be a
big problem given the inherent restrictions on those types and
how shared is
intended to be used.
Apple's GC for Objective-C (before it had ARC) was using
thread-local pools. I wonder how they manged to do that in a
language that doesn't have a type system that differentiates
between TLS and shared memory.
They were doing it quite bad.
One of the reasons that always gets lost when discussing the
merits of ARC over GC in Objective-C, is that Apple never managed
to make the GC work without issues given its underlying C
semantics.
So naturally having the compiler do what developers were already
doing by hand with Framework derived classes was a safer way than
ensuring Objective-C's GC would never crash.
Apple used to have a GC caveats document that was long taken down
from their site.
This is one of the few surviving ones,
https://developer.apple.com/library/content/releasenotes/Cocoa/RN-ObjectiveC/#//apple_ref/doc/uid/TP40004309-CH1-DontLinkElementID_1