Los obstáculos reales que impiden reemplazar al lenguaje C

El lenguaje C no solo es un estándar sintáctico: es todo un ecosistema de herramientas, compiladores, analizadores estáticos y soporte multiplataforma consolidado durante décadas. Sustituirlo exige que la alternativa aporte mejoras tangibles que justifiquen rehacer la cadena de producción. Este artí

Las dos facciones de C++: inercia del comité frente a presión por seguridad

El lenguaje C++ atraviesa una fractura interna entre dos formas incompatibles de entender su evolución. Por un lado, el Evolution Working Group (EWG) de WG21 alcanzó consenso con el documento P3466 R0 para reafirmar los principios de diseño del lenguaje: ningún cambio de ABI, mantenimiento de la com

Por qué hay que salvar la ABI para salvar a C

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

Comprender a fondo la ABI de C++

# Comprender a fondo la ABI de C++ Cuando un programa se compila y se distribuye como una biblioteca dinámica, existe un contrato invisible que garantiza que el código funcione correctamente al ser enlazado y ejecutado: la Interfaz Binaria de Aplicación, conocida como ABI por sus siglas en inglés.

Ni GCC ni Clang cumplen el estándar de C++ en el enlace de lenguajes

En C++, los tipos de función llevan asociado un «enlace de lenguaje» (language linkage) que puede ser «C++», «C» u otro definido por la implementación. El estándar establece con claridad que dos tipos de función con enlaces de lenguaje distintos son tipos diferentes aunque su firma sea idéntica, pre

Avances en GCC para eliminar los trampolines de las funciones anidadas en C

Las funciones anidadas de C —un caso particular del lenguaje soportado por GCC— han dependido históricamente de un fragmento de código auxiliar llamado trampolín que se genera en tiempo de ejecución sobre la pila. Para poder alojarlo, la pila debía ser ejecutable, algo que choca con una de las medid

Diferencias entre API y ABI en bibliotecas de software

Una respuesta de la lista de correo de Debian, firmada por Colin Watson en febrero de 2004, aclara de forma didáctica la distinción entre una API (Application Programming Interface) y una ABI (Application Binary Interface), dos conceptos que suelen confundirse porque ambos describen cómo los desarro

Criptografía en Cortex-M: incompatibilidad de punto flotante

Desarrolladores que trabajan con microcontroladores (MCUs) Arm Cortex-M están encontrando problemas de compatibilidad al usar bibliotecas criptográficas, específicamente al integrar sistemas de seguridad como el TrustZone CryptoCell 310. El problema surge de la incompatibilidad entre las diferentes

Rust: Propuesta optimiza la llamada de funciones

Este artículo explora una propuesta para mejorar la convención de llamada en Rust, especialmente en arquitecturas x86, y cómo esto impacta la eficiencia del código generado. La convención de llamada define cómo se pasan los argumentos a las funciones y cómo se devuelven los valores, y la actual conv