A promessa de um “melhor dos dois mundos” para a arquitetura x86 no Linux está oficialmente com os dias contados. Após 14 anos de existência marcados por baixíssima adoção, a ABI (Application Binary Interface) x32 está sendo removida do kernel Linux. A iniciativa partiu de Sebastian Andrzej Siewior, desenvolvedor da Linutronix e mantenedor da arquitetura x86, que submeteu um patch no dia 23 de maio para iniciar o processo de exclusão dessa tecnologia que, na prática, nunca decolou.
O que é o x32 ABI e por que ele foi criado?
Introduzido no kernel Linux 3.4, em maio de 2012, o x32 ABI foi uma tentativa engenhosa de resolver um dilema técnico da época. A ideia central era combinar a potência dos processadores de 64 bits com a economia de memória dos sistemas de 32 bits. Na prática, o x32 permitia que um programa rodasse usando todos os registradores e o barramento de dados de 64 bits, mas utilizando ponteiros (pointers) de apenas 32 bits. O resultado teórico era um código mais rápido que o nativo de 64 bits em algumas cargas de trabalho, especialmente aquelas com uso intensivo de memória, já que os ponteiros menores reduziam o consumo de cache e a largura de banda da RAM.
O embrião da ideia remonta a 2008, quando o lendário cientista da computação Donald Knuth criticou publicamente o desperdício de memória causado por ponteiros de 64 bits. Naquele contexto, onde a memória era mais cara e limitada, a proposta de um “32 bits turbinado” fazia sentido. No entanto, a realidade do mercado e da evolução tecnológica seguiu um caminho diferente.
O divórcio entre a teoria e a prática
O principal motivo para o fracasso do x32 é simples: ele se tornou uma solução em busca de um problema que deixou de existir. O custo da memória RAM caiu drasticamente, e a esmagadora maioria dos sistemas, mesmo aqueles com hardware modesto, passou a operar nativamente em 64 bits. O ganho de alguns poucos por cento na economia de memória prometido pelo x32 não foi suficiente para justificar a complexidade adicional.
No patch de remoção, Siewior é categórico: “x32 ABI foi introduzido na v3.4, mas não foi adotado. Não há um limite superior normal de uso de memória, e cargas de trabalho específicas não migraram para o x32 em quantidades que justificassem seu uso dedicado”. Em outras palavras, o ganho de desempenho teórico nunca se materializou em vantagem prática para a grande maioria dos desenvolvedores e usuários. As distribuições e os projetos de software nunca abraçaram a ABI como um alvo primário, criando um ciclo vicioso de baixa adoção.
Distribuições já haviam desistido: um problema de segurança
Antes mesmo do movimento no kernel principal, as principais distribuições Linux já haviam tomado a decisão de abandonar o x32. O motivo não era apenas a falta de uso, mas uma questão de segurança. Manter uma ABI secundária ativa, mesmo que não utilizada, expande a superfície de ataque do kernel. Cada chamada de sistema (syscall) é um ponto de entrada potencial para vulnerabilidades, e manter dezenas delas para uma arquitetura praticamente morta representava um risco desnecessário.
O Debian, por exemplo, já aplicava patches para desabilitar o x32 por padrão. Para ativá-lo, o usuário precisava explicitamente passar um parâmetro na linha de comando do boot. O Fedora seguiu a mesma linha, compilando seus kernels com a funcionalidade desativada. A decisão das distribuições foi um sinal claro de que o ecossistema já considerava o x32 uma herança técnica sem valor prático. O patch de Siewior, portanto, é mais um atestado de óbito formal do que uma surpresa.
O custo real de manter a chama acesa: o gargalo das syscalls
Talvez o argumento mais forte para a remoção seja o impacto no desenvolvimento futuro do kernel. O x32 ABI não era um código inerte e inofensivo. Ele ocupava um espaço de numeração de chamadas de sistema (syscall numbers) que é um recurso finito e precioso na arquitetura x86_64.
Atualmente, o x86_64 usa números de syscall até o 471. O x32, por sua vez, começa seus números a partir do 512. Isso significa que um bloco de aproximadamente 40 números de syscall estava sequestrado e inutilizável para a arquitetura principal. A cada nova funcionalidade que exigia uma nova syscall, os desenvolvedores viam esse espaço disponível diminuir. Embora o limite não fosse iminente, a remoção do x32 desobstrui esse caminho, permitindo que futuras inovações tenham mais liberdade e organização.
A existência do x32 não era apenas “não utilizada”, mas sim “ocupava espaço” — um custo de oportunidade real para a evolução da plataforma.
Um processo gradual e sem oposição
A remoção não será abrupta. O primeiro passo do patch é simples: remover a opção CONFIG_X86_X32_ABIcodecodecodecodecode do sistema de configuração do kernel (Kconfig), impedindo que novos kernels sejam compilados com suporte ao x32. A alteração inicial é enxuta: apenas 14 linhas de código deletadas.
Siewior propôs um prazo de “janela de arrependimento” de seis meses. Se não houver objeções substanciais no período, o código real da ABI será deletado por completo, provavelmente por volta de agosto deste ano. A discussão na lista de discussão do kernel (LKML) mostra um consenso raro: ninguém se opõe à remoção. As poucas réplicas tratam de detalhes técnicos sobre a política de reutilização dos números de syscall, não sobre a existência do x32 em si. Um sinal claro de que o destino da ABI já estava traçado.
Para a comunidade Linux, a saída de cena do x32 ABI é um marco. Ela simboliza o fim de uma era de transição e a consolidação definitiva do mundo 64 bits. A tecnologia, que nasceu de uma crítica pertinente de Knuth sobre eficiência, foi superada pela barateza do hardware e pela praticidade do ecossistema. Seu legado, no fim das contas, é o espaço que ela vai liberar para o futuro.

