Em 1994, um site dinâmico significava escrever um programa em C, colocá-lo em um diretório cgi-bin e deixar o Apache executá-lo com fork a cada requisição. Trinta e dois anos depois, o autor lançou um produto web comercial, o marketyour.games, usando basicamente a mesma tecnologia. O produto inclui contas de usuário, um painel de busca para criadores de conteúdo, pastas para organizá-los, pagamentos pelo Stripe e e-mails transacionais pelo Postmark. Ele segue a melhoria progressiva e não exige JavaScript.
A stack é BCHS: OpenBSD, C, httpd e SQLite. Não há framework, linguagem de templates nem servidor de banco de dados separado. O programa em C lê as variáveis de ambiente do CGI e gera HTML diretamente. O binário é linkado estaticamente e implantado substituindo um único arquivo, de modo que novas requisições simplesmente usam a nova versão, sem reinício do servidor ou indisponibilidade. Os recursos pledge e unveil do OpenBSD ajudam a proteger o programa, e o httpd serve a partir de um chroot. As dependências se limitam ao libcurl para requisições de saída, ao libsodium para identificadores, hash de senhas e verificação de webhooks do Stripe, e ao libcjson para análise de JSON. Uma compilação limpa leva alguns segundos.
O autor valoriza o CGI por seus fundamentos, e não por frameworks. A especificação 1.1, publicada em 2004, não mudou, e entender HTTP basta para entender CGI. Ela é independente de linguagem e plataforma, e mantém uma separação clara de responsabilidades, com um único servidor web chamando diretamente a lógica de negócio em vez de fazer proxy reverso para um servidor de aplicações separado. As aplicações são programas comuns que podem ser executados a partir de um shell e depurados com o gdb.
A abordagem também oferece risco mínimo na cadeia de suprimentos, uma vantagem importante diante de ataques recentes a repositórios de pacotes. Com tão poucas dependências, há menos exposição a pacotes comprometidos. O autor argumenta que o declínio do CGI era justificado em 2004, mas não se sustenta em 2026, e que um aplicativo web moderno pode de fato ser escrito em C.
Fonte: Hacker News · Resumido por HeadlinesBriefing