Go (which I think you&#x27;re alluding to) has language-level concurrency because its syntax is extremely rigid. Swift&#x27;s syntax is flexible enough that this isn&#x27;t needed.<p>Specifically:<p>* Support for annotations; the compiler&#x2F;runtime can be informed about safety and marshaling concerns.
* Anonymous function bodies. You can implement Go&#x27;s &quot;go func() { ... }()&quot; pattern yourself, and a concurrency runtime can implement it. Rust uses the exact same pattern.
* Generic iterators&#x2F;streams. No need for channels as language primitive since you can write a generic channel implementation.<p>Go is nice, but its language-level concurrency is very much a side-effect of its intentionally impoverished type system. For example, the built-in &quot;chan&quot; type exists because otherwise a generic channel implementation would have to use interface{}, which is not type-safe and would be hell to work with.<p>Here&#x27;s what&#x27;s lining up to become Swift 4.0&#x27;s concurrency support (all the concurrency models!): <a href="https:&#x2F;&#x2F;github.com&#x2F;apple&#x2F;swift&#x2F;blob&#x2F;master&#x2F;docs&#x2F;proposals&#x2F;Concurrency.rst" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;apple&#x2F;swift&#x2F;blob&#x2F;master&#x2F;docs&#x2F;proposals&#x2F;Co...</a>.