Here are two very good reasons to avoid extensive ref-counting:
1. transactional memory ( you don't want a lock on two reads ) 2. cache coherency ( you don't want barriers everywhere )Betting everything on ref counting is the same as saying no to upcoming CPUs.
IMO that means ARC is DOA. It might be useful for some high level objects… but I don't understand why one would think that it is a good low level solution. It is a single-threaded solution.
