En un artículo de opinión técnica con tono desenfadado, el autor —que ya había arremetido contra la estabilidad de la ABI del C++ en una pieza anterior titulada "Binary Banshees and Digital Demons"— reconoce que, pese a sus reticencias, la Interfaz Binaria de Aplicación (ABI) debe ser preservada si se quiere que el lenguaje C avance. Reconoce además que coincidir con Jason Turner en su defensa de la ABI no contradice su crítica previa: ambos señalan que los implementadores, condicionados por compromisos de compatibilidad heredados, bloquean mejoras de rendimiento y de diseño.
El texto explica de forma didáctica qué es la ABI: el contrato invisible que el compilador fija al traducir el código C, incluyendo la disposición de los miembros de un struct, los tipos de los argumentos y el valor de retorno de una función, y la convención de uso de los registros del procesador. Para ilustrarlo, el autor compara el código ensamblador x86_64 generado por una función do_stuff que recibe un long long (un único registro, rdi) con la misma función declarada con __int128_t (dos registros, rdi y rsi). Ese cambio mínimo en el código fuente altera la convención de llamada, lo que demuestra que la ABI se forja a nivel binario, no en el código fuente.
El artículo contrasta este comportamiento con el de C++, cuyo mecanismo de name mangling permite a la ABI absorber cambios de tipo sin colisiones; un main idéntico que llama a do_stuff con __int128_t produce en C++ un símbolo diferenciado como _Z8do_stuffn. La pieza concluye que la fragilidad de la ABI de C —y por extensión la de C++, que la hereda— afecta a prácticamente todo el ecosistema de software, y que cualquier intento de mejorarla pasa por tratarla con cuidado en lugar de romperla unilateralmente.
