8 ms·
Why would Apple write a Swift compiler in Objective-C, a language that it is in the process of phasing out in favor if Swift? And of course it is not possible
by titaniumdecoy 11y ago
Why would Apple write a Swift compiler in Objective-C, a language that it is in the process of phasing out in favor if Swift?
And of course it is not possible to write a Swift compiler in Swift before the language exists.
So no, not odd at all. Quite logical actually.
- fulafel 11y ago> of course it is not possible to write a Swift compiler in Swift before the language exists No, but you can do a self-hosting port after you have a first rudimentary compiler. Many compilers have been built like this. Some did it early in language development with a purpouse built one-off bootstrapping compiler, some did it after the language was somewhat stable (eg Go). ObWP: https://en.wikipedia.org/wiki/Bootstrapping_%28compilers%29 https://en.wikipedia.org/wiki/Bootstrapping_%28compilers%29
- twoodfin 11y agoI believe I saw Lattner once describe a self-hosting compiler for Swift as an anti-goal, at least before the design had stabilized. Aside from the value of maintaining LLVM as a shared codebase, the concern was that writing a compiler in Swift could bias early language design tradeoffs towards decisions that would make it easier to write a compiler at the expense of the larger universe of potential applications.
- koko775 11y agoSome people I know previously asked this question to one of the Swift developers. I believe the reasoning was along the lines of (very liberally paraphrased/interpreted): Even aside from the problem of bootstrapping the compiler's compilation to start, performant compilation on C++ is a very mature and well-explored problem space. C++ already compiles on a ton of systems, and maintaining a C++-to-Swift(bootstrap compiler)-to-Swift(final compiler) compilation process is added complexity and invites repeated work. From a language design point of view, the things needed to get a language to the point where it could successfully and efficiently compile itself would skew or re-order priorities in a much different fashion than if they were to focus on building and iterating on an applications and systems language. tl;dr: LLVM and Clang and their assorted toolsets do quite a bit of valuable work; reinventing that to serve the language they're building is a feedback loop is a downside that also removes some upside from the equation, too.
- cballard 11y agoObjective-C bridges to and from Swift easily, so it would be easily to incrementally replace Objective-C code with Swift code. Since C++ doesn't interact with Swift at all, it would either have to be wrapped in C/Objective-C, or the entire compiler would need to be rewritten at once. That being said, C++ is probably a better choice, because dynamic dispatch sucks and there's better platform support.