O projeto Swift está introduzindo novas imagens da cadeia de ferramentas Swift para download para Windows! Estas imagens contêm componentes de desenvolvimento necessários para construir e executar o código Swift no Windows.
Há mais de um ano, tem havido um esforço significativo para portar o Swift para o Windows em conjunto com a comunidade de desenvolvedores em swift.org. O suporte ao Windows está agora em um ponto onde os primeiros usuários podem começar a usar Swift para construir experiências reais nesta plataforma.
Bringing Swift to Windows
Portar Swift para Windows não é simplesmente portar o compilador, mas sim assegurar que o ecossistema completo esteja disponível na plataforma. Isto inclui o compilador, a biblioteca padrão e as bibliotecas centrais (dispatch, Foundation, XCTest). Estas bibliotecas são parte do que permite aos desenvolvedores escrever aplicações poderosas com facilidade e sem ter que se preocupar com muitos dos detalhes do sistema subjacente. Há muitos detalhes técnicos na história de trazer o Swift para um estado utilizável no Windows, e se você estiver interessado neles, eu recomendaria checar minha palestra sobre o tópico na LLVM Developer Conference.
Com essas bibliotecas centrais e a interoperabilidade flexível do Swift com C, é possível desenvolver aplicações no Windows puramente no Swift enquanto se aproveita o corpus de bibliotecas existentes nas plataformas Windows.
Example Application
Esta calculadora demo é escrita inteiramente em Swift, com o código flipping sem problemas entre o código da aplicação escrito em Swift e as bibliotecas do sistema:
Este projeto foi construído usando:
-
A cadeia de ferramentas Swift no Windows
-
Uma instalação do Visual Studio 2019 que fornece as outras peças necessárias na forma de CMake, Ninja, e o Windows SDK
Embora o aplicativo demo seja construído com CMake, o suporte ao Swift Package Manager no Windows está surgindo. Em breve será possível obter a construção do aplicativo usando swift build
sem precisar de CMake ou Ninja.
Aqui você pode ver o passo através do aplicativo usando lldb
:
Aplicações Multiplataforma
Automizadores como Readdle estão experimentando com aplicações multiplataforma escritas em Swift, trazendo facilmente muitas das bibliotecas Swift existentes para o Windows para suportar suas aplicações.
Tinha estado a trabalhar com o Alexander na Readdle sobre o trabalho da sua equipa, e ele enviou-me esta nota:
Nós na Readdle começámos a experimentar com a Swift no Windows há mais de um ano atrás, no segundo trimestre de 2019. Nessa época já lançamos o Spark para Android que usa o Swift para compartilhar código central com iOS/macOS, e a oportunidade de estender para mais uma plataforma era realmente tentadora.
Apesar de algumas funcionalidades ainda não estarem prontas, o Swift no Windows acabou satisfazendo totalmente as nossas necessidades. Na verdade, algumas dependências C/C++ de terceiros nos deram mais dores de cabeça do que a própria Swift nos deu. Toda a lógica comercial da Spark está localizada em um módulo Core separado. Um pacote de módulos, na verdade, mas nós nos referimos a eles como Core. Isto permite-nos usar qualquer estrutura de IU na plataforma alvo: AppKit no MacOS, UIKit no iOS, kit de ferramentas nativo de IU no Android. Então, basicamente, nós tivemos que portar o Spark Core no Windows. Depois de todos os conceitos iniciais terem sido provados, era na maioria das vezes um trabalho rotineiro no dia-a-dia para dar vida a ele no Windows.
O que nós temos agora:
- 9 Módulos Swift (255 739 SLOC, 2 133 ficheiros fonte)
- 3 módulos swift de terceiros
- 1452 testes (powered by XCTest)
- CIC baseado no Windows para manter todos os testes verdes
- Sistema de construção heterogéneo (parcialmente CMake, scripts parcialmente personalizados)
Como um bom exemplo, módulos Swift puros como CryptoSwift e OAuthSwift quase funcionaram logo de cara. Fizemos ajustes triviais de importação, excluímos algumas referências AppKit/UIKit e voilà!
Outro desafio foi decidir como implementar a interface do usuário. Depois de um longo discurso acabamos com Electron como a parte frontal da futura Spark for Windows. Isso significava que não só precisávamos ser capazes de construir o Spark Core no Windows mas também usá-lo como um addon carregável para o Node.js.
Node.js addon em Swift puro? Isso pareceu ser surpreendentemente fácil. Swift importa perfeitamente os cabeçalhos N-API. Ainda precisamos de três linhas de código C mais um pequeno cabeçalho C para definir o ponto de entrada do addon, mas toda a lógica está no Swift. Devido à natureza multi-plataforma do Node.js, fomos capazes de usar macOS como plataforma de desenvolvimento com Xcode como IDE, e então usar a agilidade do CMake para construir o mesmo código no Windows.
Desde o primeiro dia que começamos, o Swift no Windows deu um passo gigantesco em termos de suporte e estabilidade da plataforma. Eu diria, se você está pensando em estender sua base de código de aplicativos existente para outras plataformas além do MacOS/iOS – você pode absolutamente fazê-lo com o Swift agora, ou, pelo menos, em breve. Se você estiver mantendo uma pequena biblioteca Swift – você já poderia facilmente adicionar suporte ao Windows!
– Alexander Smarus; Product Engineering Lead at Spark Team, Readdle Inc
Mais detalhes estão disponíveis no blog da Readdle.
Adicionar suporte para Windows à Swift é o começo de uma jornada. O suporte atual estabelece o primeiro marco onde o idioma é utilizável. Há ainda outra parte ainda mais ampla do ecossistema como lldb e o Gerenciador de Pacotes Swift que ainda precisa de mais trabalho para ser tão completo em seu suporte para esta plataforma diferente.
Começando e Envolvendo-se!
A seção Iniciando foi atualizada com novas informações sobre o uso do Swift no Windows! Para os primeiros usuários que estão começando e encontrando problemas, por favor informe-os ao Swift Bug Tracker.
Há muitas oportunidades para aqueles interessados em ajudar a empurrar o Swift no Windows para frente. Uma das coisas que tornam o Swift fácil de usar são as bibliotecas: publicar novas bibliotecas e pacotes para o Swift no Windows ou portar as existentes é outra forma de se envolver e ajudar a fazer do trabalho com o Swift um prazer cada vez maior.
Para os interessados em trabalhar com as principais ferramentas, há muito trabalho a ser feito para melhorar o depurador e para melhorar o suporte ao Windows no Gerenciador de Pacotes Swift. Nós convidamos você a verificar o Swift Bug Tracker para os problemas atuais e enviar correções para os repositórios do GitHub. Há também uma nova seção nos fóruns Swift para discutir o desenvolvimento do Swift no Windows. Lá a comunidade pode discutir os problemas ou você pode se apresentar e deixar os outros saberem em que área das ferramentas você está focando. Esta é a oportunidade perfeita para se envolver no projecto e ajudá-lo a crescer num ecossistema forte, vibrante e multiplataforma. Mal podemos esperar para ver que coisas emocionantes você constrói com a Swift!