Módulo criptográfico Go FIPS 140-3 nativo: solução segura e simples

2025-07-16

O Go 1.24 e versões posteriores agora oferecem suporte nativo à conformidade FIPS 140-3 por meio de um novo módulo criptográfico desenvolvido em colaboração com a Geomys. Este módulo, validado pelo certificado CAVP A6650 e em revisão CMVP, elimina os pontos de atrito anteriores para usuários do Go em ambientes regulamentados. Oferece uma experiência perfeita para desenvolvedores, com segurança intransigente, usando ECDSA otimizado e um NIST DRBG baseado em AES-256-CTR. Ele suporta uma ampla gama de plataformas e algoritmos, superando as capacidades e a segurança de seu predecessor, Go+BoringCrypto. Este módulo nativo fornece o caminho mais fácil e seguro para a conformidade FIPS 140-3 para desenvolvedores Go.

Leia mais
(go.dev)
Desenvolvimento Módulo criptográfico

Interfaces Genéricas em Go: Usando Interfaces Genéricas para Estruturas de Árvore Eficientes e Adaptáveis

2025-07-10

Este artigo explora o uso avançado de interfaces genéricas em Go, especialmente como lidar elegantemente com restrições de tipo ao construir estruturas de dados como árvores de busca binária usando interfaces genéricas auto-referenciais. Usando uma estrutura de árvore como exemplo, ele compara três abordagens de implementação: usando `cmp.Ordered`, uma função de comparação personalizada e uma interface genérica auto-referencial. Finalmente, o artigo aprofunda a combinação de restrições `comparable` para construir conjuntos ordenados e evitar complexidades decorrentes de receptores de ponteiro, recomendando priorizar a simplicidade e legibilidade no design.

Leia mais
(go.dev)
Desenvolvimento Genéricos Go

A Saga do Tratamento de Erros em Go: O Fim de uma Guerra Sintática

2025-06-03

Após anos de tentativas para melhorar o tratamento de erros verboso em Go, a equipe do Go decidiu abandonar os esforços para mudar a sintaxe da linguagem. Propostas como "check/handle", "try" e o operador "?" falharam em obter consenso generalizado. O artigo detalha essa história, explicando a decisão com base na falta de consenso, altos custos de implementação e na adequação das abordagens existentes. A equipe argumenta que focar em melhores mecanismos e ferramentas de tratamento de erros é mais produtivo do que buscar açúcar sintático, enfatizando a praticidade e a legibilidade em vez da brevidade do código.

Leia mais
(go.dev)
Desenvolvimento

Go 1.25 Remove Tipos Core, Simplificando a Especificação da Linguagem

2025-03-26

O Go 1.18 introduziu genéricos e, com isso, o conceito de "tipos core" para simplificar o tratamento de operandos genéricos. No entanto, isso adicionou complexidade à especificação da linguagem e limitou a flexibilidade de certas operações. O Go 1.25 remove os tipos core, substituindo-os por regras mais claras e concisas, simplificando assim a especificação da linguagem e abrindo caminho para melhorias futuras da linguagem, como operações de fatia mais poderosas e inferência de tipo aprimorada. Essa alteração não afeta o comportamento de programas Go existentes.

Leia mais
(go.dev)

Go 1.24 Melhora Capacidades Wasm: Reatores WASI e Funções Exportadas

2025-02-14

O Go 1.24 aprimora significativamente o suporte ao WebAssembly (Wasm) com a introdução da diretiva `go:wasmexport` e a capacidade de construir reatores WASI. Isso permite que os desenvolvedores Go exportem funções para Wasm, possibilitando a integração perfeita com aplicativos host. O novo modo de reator WASI facilita a execução contínua de módulos Wasm que podem reagir a vários eventos ou solicitações sem reinicialização. Embora existam limitações, como a natureza de thread único do Wasm e restrições de tipo, as melhorias do Go 1.24 abrem caminho para aplicativos Wasm baseados em Go mais poderosos e versáteis.

Leia mais
(go.dev)
Desenvolvimento

Nova API Opaque do Go Protobuf Melhora o Desempenho e a Segurança

2024-12-16

A equipe do Go lançou uma nova API Opaque para o Go Protobuf, coexistindo com a API Open Struct existente. Essa nova API desacopla o código gerado de sua representação de memória subjacente, levando a melhorias de desempenho, redução de alocações de memória e permitindo otimizações como decodificação lenta. Ao ocultar os campos da estrutura e acessá-los apenas por meio de métodos de acesso, ela evita erros relacionados a ponteiros e compartilhamento acidental. A migração envolve habilitar a API híbrida, usar a ferramenta `open2opaque` e, em seguida, mudar para a API Opaque. A API Open Struct existente permanece com suporte.

Leia mais
(go.dev)
Desenvolvimento