将Swift编译为WebAssembly
LLVM基础结构现在支持从
LLVM IR to WebAssembly开始编译(至少是实验性的)。 Swift使用LLVM编译器基础结构,可以轻松编译为LLVM IR。所以我认为将一些Swift代码编译为LLVM IR然后编译为WebAssembly会很简单。
然而事实证明并非那么容易。看起来LLVM IR并不完全独立于平台?无论幕后的原因是什么,在将Swift编译为LLVM IR时,必须指定目标体系结构并且WebAssembly不可用。 那我有两个问题: 1)我是否正确当前(截至2017年10月)无法将Swift编译为WebAssembly? 2)如何使WebAssembly成为Swift到LLVM IR编译的受支持目标?
1)据我所知,截至2017年11月初,您是对的:没有通常可用的方法将Swift编译为WebAssembly。也许某个有进取心的黑客已经成功实现了它,但如果是这样,她还没有与我们分享她的代码。
2)为了启用WASM支持,您可能需要破解几个不同的部分。我认为你可以在不了解编译器内部的任何内容的情况下做到这一点(例如解析器和优化器),但是你需要了解工具链的工作原理以及它如何在运行时与平台集成。 通过研究Swift如何移植到Android,你可以了解到你需要做什么。幸运的是,Brian Gesiak发布了一篇非常详细的博客文章,讲述了该端口的确切运作方式(警告:需要小型Patreon捐赠): https://modocache.io/how-to-port-the-swift-runtime-to-android 说真的,如果没有阅读那篇文章,你就会疯狂地开始这个项目。 虽然我不是专家,基于该端口和我对Swift的基本理解,我认为你需要攻击的大概概述是: > Swift编译器 >你需要教它关于LLVM使用的WASM“三重”,所以它知道如何与其余的工具链集成 > Swift运行时 >这是用C语言编写的,它需要在WASM上运行 > Swift标准库 >理论上你可以写&运行Swift代码,不使用标准库,但谁想要? >奖金:基金会和派遣图书馆 >如果您想使用现有的Swift代码,这两个库将是必不可少的。 链接: > Brian Gesiak的精彩博文:https://modocache.io/how-to-port-the-swift-runtime-to-android (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |