Windows上的SWIFT

2020-09-23 02:51:02

SWIFT项目正在为Windows推出新的可下载SWIFT工具链映像!这些映像包含在Windows上构建和运行SWIFT代码所需的开发组件。

一年多来,SWIFT与swft.org上的开发人员社区一起为将SWIFT移植到Windows做出了重大努力。Windows支持现在已经到了早期采用者可以开始使用SWIFT在此平台上构建真实体验的阶段。

将SWIFT移植到Windows不是简单地移植编译器,而是要确保整个生态系统在平台上可用。这包括编译器、标准库和核心库(Dispatch、Foundation、XCTest)。这些库是使开发人员能够轻松编写功能强大的应用程序的一部分,而不必担心底层系统的许多细节。让SWIFT在Windows上达到可用状态的故事中有许多技术细节,如果您对此感兴趣,我建议您查看我在LLVM开发者大会上关于该主题的演讲。

借助这些核心库和SWIFT与C的灵活互操作性,完全可以在SWIFT中开发Windows上的应用程序,同时利用Windows平台上现有的库语料库。

此演示计算器完全用SWIFT编写,代码在用SWIFT编写的应用程序代码和系统库之间无缝切换:

Visual Studio 2019的安装,它以CMake、忍者和Windows SDK的形式提供了其他所需的组件。

虽然演示应用程序是使用CMake构建的,但Windows上的SWIFT Package Manager支持正在增加。很快就可以在不需要CMake或忍者的情况下使用快速构建来构建应用程序了。

像Readdle这样的早期采用者正在试验用SWIFT编写的跨平台应用程序,可以轻松地将许多现有的SWIFT库引入Windows来支持他们的应用程序。

我一直在Readdle与亚历山大一起为他的团队工作,他给我发了一张便条:

我们Readdle在一年多前,也就是2019年第二季度开始在Windows上试验SWIFT。到那时,我们已经发布了Spark for Android,它使用SWIFT与iOS/MacOS共享核心代码,扩展到另一个平台的机会真的很诱人。

尽管有些功能到目前为止还没有准备好,但Windows上的SWIFT最终完全满足了我们的需求。事实上,与SWIFT本身相比,一些第三方C/C++依赖项给我们带来了更多令人头疼的问题。Spark的所有业务逻辑都位于单独的核心模块中。实际上是一包模块,但我们称它们为核心。这允许我们在目标平台上使用任何UI框架:MacOS上的AppKit、iOS上的UIKit、Android上的原生UI Toolkit。因此,基本上,我们必须在Windows上移植Spark Core。在证明了所有最初的概念之后,在Windows上实现它主要是例行的日常工作。

作为一个很好的例子,纯SWIFT模块(如CryptoSwift和OAuthSwift)几乎开箱即用。我们做了微不足道的导入调整,排除了一些AppKit/uIKit引用,瞧!

另一个挑战是决定如何实现用户界面。经过广泛的讨论,我们最终选择了Electron作为未来Spark for Windows的前端部分。这意味着我们不仅需要能够在Windows上构建Spark Core,还需要将其用作Node.js的可加载插件。

纯SWIFT中的Node.js插件?这似乎出人意料地容易。SWIFT完美地导入N-API标题。我们仍然需要三行C代码和一个小的C头来定义插件入口点,但所有逻辑都在SWIFT中。由于Node.js的跨平台特性,我们能够使用MacOS作为开发平台,使用Xcode作为IDE,然后使用CMake的敏捷性在Windows上构建相同的代码。

从我们开始的第一天开始,Windows上的SWIFT在平台支持和稳定性方面向前迈出了一大步。我要说的是,如果您正在考虑将现有的应用程序代码库扩展到MacOS/iOS以外的平台-您现在绝对可以使用SWIFT实现这一点,或者至少很快就可以做到。如果您正在维护一个小型SWIFT库-您可以轻松添加Windows支持!

向SWIFT添加对Windows的支持是旅程的开始。当前的支持设置了该语言可用的第一个里程碑。生态系统中还有另一个更广泛的部分,如lldb和SWIFT Package Manager,它们对这个不同平台的支持还需要做更多的工作才能完成。

入门部分已更新为有关在Windows上使用SWIFT的新信息!对于开始使用并发现问题的早期采用者,请向SWIFT Bug Tracker报告。

对于那些有兴趣帮助推动SWIFT on Windows向前发展的人来说,有很多机会。使SWIFT易于使用的一件事是库:在Windows上为SWIFT发布新的库和包或移植现有的库和包是参与进来的另一种方式,有助于使与SWIFT的合作变得更加愉快。

对于那些对核心工具感兴趣的人来说,要改进调试器和改进SWIFT包管理器中的Windows支持,还有很多工作要做。我们邀请您查看SWIFT Bug Tracker了解当前问题,并将补丁程序发送到GitHub存储库。SWIFT论坛上还有一个新的部分,讨论Windows上的SWIFT开发。在那里,社区可以讨论问题,或者您可以自我介绍,让其他人知道您关注的工具领域。这是参与该项目并帮助其成长为强大、充满活力的跨平台生态系统的绝佳机会。我们迫不及待地想看看你和斯威夫特一起创造了什么令人兴奋的东西!