转载

POWER Linux 上的 Swift

苹果公司最近开放了 Swift 语言的源代码,而我一直想看看将 Swift 移植到 POWER Linux 需要做多少工作。

和许多使用 LLVM 的语言一样,Swift 是一种相对简单的语言。几天前,我提交了一个补丁,非常感谢 Dmitri Gribenko 帮助我完成审校工作,而支持小端 PowerPC64 已使 Swift 位于 上游位置 。

顺利完成该移植需要注意一些事项。首先,编译器需要是用 C++ 编写的,而不是用 Swift 编写的。似乎 用 Swift 重写 Swift 编译器 是一个共同请求,但坚持使用 C++ 可以让引导过程变得更简单。我还必须引导其他编译器 (Rust),这些编译器是用各自的目标语言编写的,而这要求从受支持的架构执行交叉构建,此操作从来都不会顺利完成。

通常,各种语言需要链接到 C 对象和库,所以它们需要知道 C 调用约定规则。很多这方面的知识并不适用于 LLVM(它位于 Clang 前端),结果,大部分基于 LLVM 的语言最终仍会重复老路( Rust 、Julia)。Uli Weigand 向我展示,Swift 避开了 Clang 来提供这种逻辑,这真的很有帮助。因为各种语言中存在的所有重复,将这种逻辑引入到 LLVM 库而不是 Clang 中可能很有意义。

尽管该移植属于上游操作,但 此处 仍有一个必要的 LLVM 更改—— Swift 有一些调用约定不同于 C,我希望某个 POWER LLVM 团队能够可怜可怜我,帮我解决这个问题。

在 POWER 上构建 Swift 可在 Ubuntu 15.10 上轻松完成,只需记得在签出源代码后添加上述 LLVM 补丁。 该测试包的运行只有几个故障:

清单 1.Failing Tests (2):

Failing Tests (2):      Swift :: 1_stdlib/VarArgs.swift      Swift :: IRGen/c_layout.sil     Expected Passes    : 7061    Expected Failures  : 78    Unsupported Tests  : 699    Unexpected Failures: 2

更重要的是,hello world 在正常运行:

清单 2.Fhello world 在正常运行

# uname -m   ppc64le    # cat hello.swift   print("Hello, world!")    # swift hello.swift   Hello, world!

还需要做一些工作来支持大端 PowerPC64,但小端似乎就能满足任何 hello world 需求。

原文请访问 IBM developerWorks / Developer CentersSwift@IBM。

原文  http://www.ibm.com/developerworks/cn/mobile/zones/swift-on-power-linux/index.html?ca=drs-
正文到此结束
Loading...