6 pontos por GN⁺ 2024-06-13 | 2 comentários | Compartilhar no WhatsApp
  • O Swift oferece suporte não só às plataformas da Apple, mas também a Linux, Windows e outras
  • Com o Swift Static Linux SDK, é possível compilar executáveis totalmente vinculados estaticamente, sem dependências externas
    • Isso permite executá-los em qualquer distribuição Linux
    • Você pode desenvolver e testar no macOS e depois implantar em servidores baseados em Linux
  • Linking é o processo de reunir diferentes partes de um programa e conectar suas referências
    • O linking estático acontece no momento da compilação, enquanto o linking dinâmico acontece em tempo de execução
    • Bibliotecas estáticas são coleções de arquivos-objeto individuais, enquanto bibliotecas dinâmicas são monolíticas
  • Vantagens e desvantagens do linking estático:
    • Vantagens: sem overhead em tempo de execução, inclui apenas o código de biblioteca necessário, não exige bibliotecas dinâmicas instaladas separadamente, não há problemas de versão em runtime
    • Desvantagens: não há compartilhamento de código (aumentando o uso de memória), não é possível atualizar dependências sem recompilar o programa, aumento no tamanho do executável
  • Ao usar linking estático no Linux, é possível eliminar completamente as dependências de bibliotecas de sistema que variam entre distribuições
  • É necessário instalar o toolchain Open Source em swift.org (não é possível usar o toolchain fornecido pelo Xcode)
  • É possível instalar o Static Linux SDK com o comando swift sdk install
  • Com o comando swift build --swift-sdk x86_64-swift-linux-musl, é possível compilar binários Linux x86-64, e com swift build --swift-sdk aarch64-swift-linux-musl, binários Linux ARM64
  • Pacotes Swift que usam Foundation ou Swift NIO funcionam normalmente
  • Pacotes que usam bibliotecas C precisam ser modificados para importar Musl em vez de Glibc
    • Musl oferece bom suporte a linking estático e tem uma licença permissiva que facilita a distribuição de executáveis
  • É possível modificar dependências de pacotes com o comando swift package edit

2 comentários

 
cichol 2024-06-14

Agora dá a sensação de que, usando isso, pode surgir algo que suporte de forma mais fluida o desenvolvimento simultâneo para Android e iOS com Swift..

 
GN⁺ 2024-06-13
Opiniões do Hacker News
  • Novo suporte a plataformas personalizadas do Swift: O suporte do Swift a sistemas embarcados e WASM, junto com a mudança para uma organização no GitHub não ligada à Apple, representa um grande avanço na expansão do Swift para outras plataformas. Também é interessante a possibilidade de uso na verificação de segurança de sistemas operacionais de IA.

  • Binários Swift podem rodar em contêineres Alpine: Fico feliz que agora seja possível executar binários Swift em contêineres Alpine. O trabalho de suporte ao musl avançou mais rápido do que eu esperava. Compilação cruzada também é muito útil.

  • Expectativa por suporte ao Debian: Fico feliz em ver pacotes do Swift sendo adicionados ao Debian. Parece que vou acabar usando mais o Debian como VM de desenvolvimento.

  • Expectativa pelo uso do Swift em sistemas embarcados: Já trabalhei bastante com sistemas embarcados em C, mas gostaria de experimentar Swift em uma placa de desenvolvimento STM.

  • Desvantagens do link estático: O ASLR pode não funcionar corretamente, ou apenas um único objeto pode ser randomizado. Em uma linguagem com segurança de memória, isso talvez não seja uma grande desvantagem. Compartilhar objetos comuns também pode reduzir I/O.

  • Problemas de compatibilidade entre distribuições: Um programa compilado em uma distribuição ou versão específica pode não funcionar em outra. É bom que o Swift ofereça link estático, mas o ideal é que as distribuições possam escolher como querem distribuir pacotes.

  • Potencial para competir com Golang: Parece que o Swift pode competir com Golang em termos de facilidade de distribuição. Isso empurra a complexidade para longe do usuário final.

  • Apps GUI multiplataforma: Fico curioso sobre como seria criar apps GUI multiplataforma com Swift. SwiftUI provavelmente não pode ser usado, mas pretendo usar Swift para escrever scripts simples.

  • Aviso sobre uso de imagem CentOS 7: Parece loucura ainda oferecer imagens do CentOS 7. Um aviso para não usar isso.

  • Aumento da complexidade do Swift: O Swift poderia facilmente ter substituído o Python, mas a linguagem ficou mais complexa e agora virou uma imitação de C++.

  • Por que usar Swift em vez de Rust: Uma pergunta sobre por que alguém deveria usar Swift em vez de Rust.

  • Por que usar Swift sem iOS/SwiftUI: Uma pergunta sobre se existe motivo para usar Swift sem iOS/SwiftUI. Fora o caso de um desenvolvedor Swift querer usar uma linguagem familiar em projetos pequenos, parece que não há muito motivo.