swift的编译过程究竟是怎样的?
很多高级语言都会经编译器编译生成C这种低层次语言,然后再根据C编译成汇编再到二进制,swift语言的编译过程是怎么样的?从哪些地方能窥探一下?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
很多高级语言都会经编译器编译生成C这种低层次语言,然后再根据C编译成汇编再到二进制,swift语言的编译过程是怎么样的?从哪些地方能窥探一下?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(2)
2000年,克里斯·拉特纳自奥勒冈州波特兰大学(University of Portland)计算机科学系毕业。之后进入伊利诺伊大学厄巴纳-香槟分校(UIUC)就读。在此期间,他经年累月学习《Compilers: Principles, Techniques, and Tools》这本龙书,并与维克拉姆·艾夫(Vikram Adve)发起LLVM(Low Level Virtual Machine)项目,并于2003年发表,新式的LLVM compiler使用GCC进行语义分析产生IF(Intermediate Format),然后LLVM使用分析结果完成源码最优化的工作。
Apple也是LLVM计划的主要资助者。早年Apple一直使用GCC作为官方的编译器,但Apple对GCC的性能不满意,再者Objective-C在GCC中优先级低,GCC对Objective-C语言新特性的支持程度也不高。因此Apple一直在寻找compiler的开源替代品,于是他们将目光转移到LLVM身上。2005年,Apple直接雇用了克里斯·拉特纳及他的团队,为了苹果电脑开发应用程序系统[1]。克里斯一开始将LLVM运行时的编译架构在OpenGL stack之上,这样OpenGL stack可以产出更高效率的图形代码。OpenGL stack成为JIT compiler, Xcode 3.1实现了llvm-gcc compiler, Xcode 3.2实现了Clang 1.0,克里斯再接再励, Xcode 4.0实现了Clang 2.0.后来的Mac OS X 10.6 Snow Leopard即大量使用LLVM的编译技术。
接着克里斯发起Clang项目,希望完全取代GCC。Clang在性能评比上的多项指针,如编译Object-C的速度,超过GCC,LLVM 3.0发布已完整支持所有ISO C++标准,代表着LLVM正式走向成熟。
2010年7月开始,克里斯开始设计Swift。完成基础架构后,克里斯带领开发小组陆续完成语法设计、编译器、运行时、框架、IDE和文档等相关工作。这个语言在2014年WWDC大会上公开。
完整的Swift及其编译器源代码参考 Swift 在 Github上的源代码 https://github.com/apple/swift
另外这个简书写的也很有意思 Swift Runtime 编译和运行时原理初探
Swift 经由 LLVM,编译成LLVM中间码,最后编译成本地机器代码(二进制)。目前运行的时候会依赖 Objective-C 的运行时。