1) au meilleur de ma connaissance, dès le début de Novembre, en 2017, vous avez raison: il n'est pas couramment disponible pour compiler Swift à WebAssembly. Peut-être que certains entreprenant hacker, quelque part, a fait arriver, mais si elle n'a pas partagé son code avec nous encore.
2) afin de permettre WASM l'aide dont vous aurez probablement besoin de travailler sur quelques parties différentes. Je pense que vous pourriez le faire sans le savoir beaucoup de choses sur le fonctionnement interne du compilateur (par exemple, l'analyseur et des optimiseurs), mais vous auriez besoin d'apprendre sur la façon dont la chaîne d'outils fonctionne et comment il s'intègre à la plate-forme au moment de l'exécution.
Vous pouvez apprendre une tonne sur ce que vous devez faire par l'étude de la façon de Swift a été porté à Android. Heureusement, Brian Gesiak posté un vraiment détaillé billet de blog sur exactement comment ce port travaillé (avertissement: les petites Patreon don obligatoire):
https://modocache.io/how-to-port-the-swift-runtime-to-android
Sérieusement, vous serait de noix pour se lancer dans ce projet sans la lecture de cet article.
Bien que je ne suis PAS un expert sur la base de port et de mes (de base) de la compréhension de Swift, je pense que l'idée de l'endroit où vous auriez besoin de hack serait:
- La Swift compilateur
- Vous aurez besoin de les enseigner au sujet de la WASM "triple" utilisé par LLVM, il sait comment s'intégrer avec le reste de sa suite d'outils
- Vous aurez besoin de mettre en place un WebAssembly plate-forme de sorte que les gens peuvent écrire
#if os(WebAssembly)
dans des endroits qui nécessitent de compilation conditionnelle
- Vous aurez également besoin de mettre en place similaire au moment de la construction des macros. Le Android article explique ce genre de chose vraiment bien.
- La Swift runtime
- C'est écrit en C++ et qu'il doit exécuter sur WASM
- Depuis WASM est une plate-forme inhabituelle, il y aura probablement peu de travail ici. Vous pourriez avoir besoin afin d'assurer la compatibilité des cales pour les différents appels système et la comme.
- Des projets comme Emscripten ont démontré beaucoup de succès à la compilation C++ pour WASM.
- La Swift de la bibliothèque standard
- En théorie, vous pouvez écrire et exécuter le code Swift qui n'utilise pas la bibliothèque standard, mais qui en voudrait?
- Aussi, en théorie, il faut "juste travail" si l'exécution de travaux, mais vous aurez probablement besoin d'utiliser votre
#if os(WebAssembly)
fonctionnalité ici pour travailler autour de la plate-forme d'irrégularités
- Bonus: La Fondation et l'Expédition des bibliothèques
- Si vous souhaitez utiliser l'existant, code Swift ces deux bibliothèques seront essentiels.
Liens: