Swift only has reference counting because it made sense as the language shares the Objective-C runtime.
Objective-C only got ARC because Apple never managed to make their GC work properly without crashes in the context of Objective-C code, given its C underpinnings.
CS literature is full of examples on how to achieve performance comparable with GC with reference counting, the solution ends up being a mini-GC anyway. And reference counting cannot compete with GC implementations in lock free algorithms, even with deferred counting.
Swift only has reference counting because it made sense as the language shares the Objective-C runtime.
Objective-C only got ARC because Apple never managed to make their GC work properly without crashes in the context of Objective-C code, given its C underpinnings.
CS literature is full of examples on how to achieve performance comparable with GC with reference counting, the solution ends up being a mini-GC anyway. And reference counting cannot compete with GC implementations in lock free algorithms, even with deferred counting.