Repolode
apple

apple/swift-nio

Framework de rede multiplataforma e não bloqueante, baseado em eventos e escrito em Swift, para criar servidores e clientes de protocolos de alto desempenho, semelhante ao Netty.

Estrelas
8,538
Forks
816
Issues abertas
307
Último commit
há 3 dias

O que é?

O SwiftNIO é um framework de rede de baixo nível para Swift que usa I/O não bloqueante e event loops para criar servidores e clientes de protocolos. Em vez de dedicar uma thread a cada conexão, ele multiplexa muitas conexões em um pequeno número de event loops, o que é adequado para servidores que mantêm um grande número de conexões relativamente ociosas. É descrito como a contraparte do Netty em Swift.

O framework oferece os componentes básicos: EventLoopGroup e EventLoop para despachar I/O, Channel e ChannelPipeline com ChannelHandlers para processar dados, ByteBuffer para manipular bytes e futures e promises para resultados assíncronos. Os módulos abrangem I/O POSIX (NIOPosix), ferramentas auxiliares para testes (NIOEmbedded, NIOTestUtils) e implementações de baixo nível dos protocolos HTTP/1.1 e WebSocket. TLS, HTTP/2, SSH e outros protocolos ficam em repositórios complementares.

O SwiftNIO é voltado a quem desenvolve frameworks e a equipes que precisam de controle preciso sobre o desempenho de rede, e não ao desenvolvimento web para usuários finais. Bibliotecas de nível mais alto, como AsyncHTTPClient, gRPC Swift e PostgresNIO, são construídas sobre ele.

Recursos principais

  • 01I/O não bloqueante baseado em event loops, usando kqueue ou epoll conforme a plataforma.
  • 02Modelo de Channel e ChannelPipeline para compor handlers de protocolo reutilizáveis.
  • 03Implementações de baixo nível dos protocolos HTTP/1.1 e WebSocket.
  • 04ByteBuffer para manipulação eficiente de bytes com copy-on-write.
  • 05EmbeddedChannel e EmbeddedEventLoop para testar código de protocolo sem usar uma rede real.
  • 06Compatível com macOS e Linux, com suporte experimental a OpenBSD.

Casos de uso

  • Criar um servidor ou cliente de protocolo personalizado em Swift que precise lidar com muitas conexões simultâneas.
  • Desenvolver uma biblioteca de rede ou um framework web de nível mais alto sobre um núcleo não bloqueante.
  • Escrever serviços sensíveis ao desempenho, nos quais o modelo de uma thread por conexão é caro demais.
  • Testar handlers de protocolo isoladamente usando o canal incorporado.

Início rápido

  1. 1

    Adicione SwiftNIO às dependências do Package.swift usando um intervalo de versões como from: "2.0.0"

  2. 2

    Adicione o produto NIO ao target e importe NIO no seu código Swift

Antes de usar

  • É um kit de ferramentas de rede de baixo nível, não um framework web de alto nível, portanto exige um bom entendimento do modelo de event loop e canais.
  • As versões recentes exigem uma toolchain Swift mais nova; por exemplo, a versão 2.98.0 e posteriores exigem Swift 6.1.
  • O SwiftNIO 1 chegou ao fim da vida útil e não recebe novos recursos.

Tópicos

Perguntas frequentes

O que é swift-nio?
Framework de rede multiplataforma e não bloqueante, baseado em eventos e escrito em Swift, para criar servidores e clientes de protocolos de alto desempenho, semelhante ao Netty. O SwiftNIO é um framework de rede de baixo nível para Swift que usa I/O não bloqueante e event loops para criar servidores e clientes de protocolos. Em vez de dedicar uma thread a cada conexão, ele multiplexa muitas conexões em um pequeno número de event loops, o que é adequado para servidores que mantêm um grande número de conexões relativamente ociosas. É descrito como a contraparte do Netty em Swift.
swift-nio é gratuito? Qual é a licença?
swift-nio é open source sob a licença Apache-2.0. Confira os termos da licença antes de usá-lo em produtos comerciais.
swift-nio ainda é mantido?
Manutenção ativa. O último commit de swift-nio foi em 19 de out. de 2026.
Para que posso usar swift-nio?
Criar um servidor ou cliente de protocolo personalizado em Swift que precise lidar com muitas conexões simultâneas. Desenvolver uma biblioteca de rede ou um framework web de nível mais alto sobre um núcleo não bloqueante. Escrever serviços sensíveis ao desempenho, nos quais o modelo de uma thread por conexão é caro demais. Testar handlers de protocolo isoladamente usando o canal incorporado.
Como instalar swift-nio?
Adicione SwiftNIO às dependências do Package.swift usando um intervalo de versões como from: "2.0.0" Adicione o produto NIO ao target e importe NIO no seu código Swift
Onde consigo swift-nio?
O código-fonte e as instruções de instalação estão no GitHub: https://github.com/apple/swift-nio

Resumo gerado por IA a partir do README do projeto. As estatísticas do GitHub são atualizadas diariamente.

Projetos relacionados