1/n As the designer of libdispatch, I just want to say: I get why people feel this way and I'm sorry that we/I oversold libdispatch to some degree at the time.

(And just to be clear, I left Apple many years ago and I still deeply respect them.) https://twitter.com/tclementdev/status/1330893090069106689
2/n I also feel bad because I knew that blocking was a pain point and I had plans/ideas for how to minimize that pain but I burned out after GCD 1.0 and took a leave of absence. I don't think those ideas ever got recorded or implemented. So ya, I'm sorry about that too.
3/n That being said, what we had before libdispatch was awful. POSIX and derived threading APIs are both more difficult to use and more inefficient. I do feel proud that we made life easier for people in this regard and helped people clean up their existing threading code.
4/n Stepping back a bit, I think the industry goes through cycles where new design patterns emerge, are made easier to adopt, are then over-adopted, and finally people moderate and develop new design patterns.
5/n I think async — as a concurrency primitive — is in a long-term over-adoption phase. This isn't bad, it's just how we learn as an industry. The industry will move on once all the popular languages have async/await as keywords and more people have exhausted this design approach
6/n By comparison, the industry over-adopted class inheritance in the 1990s but eventually moderated considerably in the 2010s by moving on to protocol oriented design. For an industry that moves "fast", that change took about 20 years!
You can follow @davezarzycki.
Tip: mention @twtextapp on a Twitter thread with the keyword “unroll” to get a link to it.

Latest Threads Unrolled:

By continuing to use the site, you are consenting to the use of cookies as explained in our Cookie Policy to improve your experience.