Swift is a pretty language that hits a sweet, sweet spot: it is a compiled language built around LLV, it is modern, it took advantage of decades of programming language design efforts, and it is esthetically pleasing.
It is the kind of language that could have taken a lot of market shares. It is kinda like C# or Kotlin, but it does not run on a Virtual Machine. It is kinda like Rust, but more “high-level” and more comfortable to learn. It is easy to prototype scripts on it, kinda like Python, but hundreds of times faster.
On paper, Swift had all the right parameters to be a widespread general-purpose language. Like Go, but done right. However, Swift was born with a capital sin: ignoring Windows.
For this reason, a huge chunk of developers ignored Swift and looked at it as the “language for iOS” and nothing more than that.
And allowing this was a mistake.
I know that Apple’s goal was to design a language for macOS and iOS development. So why spend resources for Windows? However, ignoring Windows comes with its price: smaller community, that means a smaller ecosystem, fewer packages, less interest in the language from other fields (web development, backend development, game engines?)
To have Windows support, we will have to wait for Swift 5.3. In fact, on the release plan for Swift 5.3, we can read:
Swift 5.3 is a release meant to include significant quality and performance enhancements. In addition, this release will expand the number of platforms where Swift is available and supported, notably adding support for Windows and additional Linux distributions.
Cool, you may say, finally! And yet… And yet I think it may be too late. The idea of Swift as the “iOS language” is already too strong, and there is much road to catch up. I wonder if it may be too much to catch up.
Swift was a beautiful language that could have deserved and attracted more attention, and – now that we finally allow it to be free in the world – we may find out nobody out of the Apple community is looking in its direction anymore.
And that’s would be shame.