迅捷— LLVM的孩子

LLVM进步与迅捷

Swift的主要动机肯定是背负并继续利用LLVM工具链的进步。 值得注意的是,还有其他重要原因来引入一种更易于访问的新语言。 新的开发人员如虎添翼。 Obj-C不是最容易掌握的第一语言。

Swift开发的大概目标:

SIL

借助Swift,编译团队决定引入一种新的中间语言,以同时启用语言功能和改进的编译。 LLVM的灵活性使他们能够做到这一点,并将其放入现有的编译流程中

关于此的大量信息来源是2015年LLVM开发人员会议上的一次演讲-Swift的高级IR:案例研究…。 看一下这个。 令人着迷。

好处

如以上链接中所述,SIL在编译期间在源(Swift)语义和IR语义之间实现了更大的差距。 这有一些明显的好处:

语言演变 -SIL使Swift语言编写者可以使用该语言编写更多的语言

安全性 -SIL允许在未初始化var和无法访问的代码等方面出现编译器错误

泛型 -影响语言功能的编译策略的一个非常有趣的示例

  • SIL允许使用支持动态调度和单独编译的泛型模型。 这不是依赖于模板实例化(例如Obj-C和C ++),后者使用的运行时策略会降低执行速度。
  • 用更简单的语言来说,动态调度和单独编译是一种在编译时使用内联具体类型函数定义的策略。 这使得泛型在运行时的影响基本上不存在。 请查看(本页)[https://swift.org/blog/whole-module-optimizations/],了解其操作方法。
  • 仅供参考,这称为功能专门化

总结一下

作为一名使用Swift语言的工程师,了解它的设计与苹果在拥护该工具链期间对LLVM的改进有多么巨大的联系是极为重要的。 它不仅为到目前为止我们已经看到的语言功能提供了很好的背景信息,而且还为这种仍然很年轻的语言提供了可能的指示!