Un experimento reducido compara RVA23 y ARMv9

Un experimento reducido comparó el tamaño del código, el volumen dinámico de instrucciones y el número de microoperaciones generado por RISC-V y ARMv9. La prueba utilizó chibicc, un compilador de C de tamaño medio, compilado consigo mismo como carga de trabajo. Los binarios se evaluaron con RVA22, R

La optimización de tail calls en C es un avance relativamente reciente

La optimización de tail calls (llamadas de cola) en el lenguaje C no existía desde siempre, según argumenta un comentario firmado por anton (anton@) en LWN.net. La convención de llamadas de C exigía que el llamante retirase los argumentos de la pila tras la llamada, lo que convertía estas llamadas e

Una ambigüedad del estándar C89 que nunca se resolverá

El autor documenta una ambigüedad nunca resuelta del estándar C89/C90 sobre las declaraciones implícitas de funciones, una característica del lenguaje eliminada en C99. Explica que, cuando se invoca una función no declarada, el compilador la inserta en el ámbito como extern int () en lugar de produc

Por qué Clang triplicó el rendimiento de un validador UTF-8 y GCC no

El autor, Nemanja Trifunović, mantiene desde 2006 una biblioteca C++ de código abierto para manejar cadenas UTF-8 y recientemente reoptimizó su función validate_next, que decodifica un code point UTF-8 a partir de un iterador de bytes. La versión original determina la longitud de la secuencia según

Cómo compilar un cross-compiler para Itanium y ejecutar Windows XP en QEMU

Un blog técnico detalla el proceso para construir un compilador cruzado para Itanium en macOS y arrancar Windows XP 64 bits sobre una bifurcación de QEMU con emulación del procesador Merced. El autor parte del fork de Malte Kuhlmann sobre el trabajo previo de syunnPC, que añade soporte funcional de

Avances en gccrs para compilar el núcleo Linux con GCC

El proyecto gccrs, que desarrolla un frontend de Rust para el compilador GCC, dedicó la primera mitad de 2026 a intentar compilar el núcleo Linux, un esfuerzo que ha permitido detectar y corregir múltiples fallos en el compilador. Aunque de momento gccrs solo puede manejar programas sencillos y autó

La conversión de float a int en C++ puede ser comportamiento indefinido

En C++, convertir un valor en coma flotante a un entero mediante sintaxis tan habitual como `int i = f;` o `static_cast<int>(f)` constituye comportamiento indefinido cuando el valor truncado no cabe en el tipo destino. El estándar lo recoge en la página de conversiones implícitas de Cppreference, do

Cómo compilar GCC 1.27 en Ubuntu de 64 bits

Este artículo explica paso a paso cómo compilar la versión 1.27 del compilador GCC, publicada en 1988 y primera en ofrecer soporte para la arquitectura x86, sobre un sistema Ubuntu de 64 bits moderno. El autor parte del trabajo previo de Mikhail Maltsev, que documentó la compilación de un compilador

El modelo de código grande no puede con el TLS

Un análisis técnico demuestra que la opción -mcmodel=large de GCC y Clang, pensada para compilar binarios enormes sorteando los límites de direccionamiento de 32 bits, falla de forma sistemática con variables thread-local (__thread) y, por extensión, con la inmensa mayoría del software C/C++ real de

Escribir un programa en C válido sin función main(): tutorial paso a paso

Este tutorial técnico de iximiuz Labs muestra cómo construir un ejecutable en C que prescinde de la función main() y, opcionalmente, de toda la biblioteca estándar, recurriendo directamente a las llamadas al sistema del kernel de Linux. El recorrido parte de un programa «Hola, mundo» convencional co

Las trampas de analizar declaraciones con inferencia de tipos en C

En C moderno, la palabra clave auto permite declarar variables con tipo inferido, pero su análisis sintáctico encierra ambigüedades que enfrentan a GCC y Clang en sentidos opuestos. Cuando en un ámbito interno existe un typedef con el mismo nombre que el identificador de la declaración, ambos compil

Cron jobs en C desde cero: un tutorial práctico

Daniel Hirsch presenta una sesión de programación de algo más de una hora en la que construye desde cero un ejecutor de tareas programadas (cron jobs) en lenguaje C. El vídeo está dirigido a estudiantes y desarrolladores que quieran comprender el funcionamiento interno de las tareas automáticas en s

Cómo montar un entorno de desarrollo para AmigaOS en 2026 sobre Linux

Daniel Kochmański publica una guía paso a paso para configurar en Linux un entorno completo de desarrollo cruzado para AmigaOS, válido en 2026 y dirigido a usuarios familiarizados con la compilación desde código fuente. El artículo explica cómo construir la toolchain amiga-gcc (ramas amiga16.1 para

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

El código abierto sostuvo el progreso digital; la IA no debería cerrarlo

David Siegel, colega de Richard Stallman en el Laboratorio de IA del MIT, reconstruye cómo hace cuatro décadas el principio de software libre —expresado en el compilador GCC y en el sistema GNU/Linux— se convirtió en la base invisible de la industria tecnológica. Tras cerca de dos años de discusión,

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

Cómo compilar GDC en FreeBSD usando DMD gracias a un pequeño wrapper

GDC, el frontend de D para el compilador GCC, no dispone de un paquete oficial en FreeBSD. El Dr. Brian Robert Callahan necesitaba esa herramienta como soporte de su investigación y, ante la ausencia de documentación práctica, documenta él mismo el procedimiento que ideó para compilarla en el sistem

Borrado de tipos en C++26 con reflexión: la librería duck lo simplifica

La librería rjk::duck, publicada como un único header, aprovecha las anotaciones y la metaprogramación por reflexión introducidas en C++26 para implementar borrado de tipos sin la verbosidad habitual. En lugar de escribir a mano cientos de líneas de código propensas a errores —o recurrir a alternati

Un compilador de Rust completo, traducido a C y compilable con GCC

El repositorio crustc, publicado en GitHub por FractalFir, contiene una traducción completa del compilador rustc a código C, de modo que puede construirse con GCC y make sin necesidad de rustc como binario anfitrión. El proyecto sirve como demostración pública de cilly, una herramienta en desarrollo

La vida antes de main en Rust: inicialización y secciones de enlace

El artículo técnico 'There Is Life Before Main in Rust' explora en detalle lo que sucede antes de que se ejecute la función `main()` en un binario compilado con Rust. Se describe cómo el sistema operativo entrega el control al programa a través de un punto de entrada (`_start` o `WinMainCRTStartup`)

El algoritmo de rotación de gcc coincide con el de iteradores forward

El algoritmo de rotación unidireccional de gcc libstdc++ para iteradores de acceso aleatorio resulta ser, contra toda expectativa, el mismo que el algoritmo clásico empleado con iteradores forward. Así lo explica el blog técnico The Old New Thing en una nueva entrega, donde compara ambos procedimien

Cómo reducir al mínimo un binario en C con GCC

Este artículo analiza paso a paso cómo reducir el tamaño de un ejecutable ELF en x86-64 compilado con GCC partiendo de un programa mínimo que simplemente devuelve 0 al sistema. El autor, mediante una serie de iteraciones con banderas del compilador y código ensamblador inline, consigue reducir el bi

Reify: generador aleatorio de programas para probar compiladores de C

Reify es una herramienta de generación aleatoria de programas basada en reificación semántica, diseñada para poner a prueba compiladores de C y, potencialmente, otras máquinas virtuales. Su propósito es producir funciones y programas en C libres de comportamientos indefinidos (UB), de modo que cualq

GCC 16 se acerca a la paridad con LLVM en soporte para BPF

José Marchesi y los desarrolladores de GCC-BPF abrieron la sesión sobre BPF en el Linux Storage, Filesystem, Memory-management, and BPF Summit 2026 con un repaso de 90 minutos sobre los avances del último año en el soporte de BPF en la cadena de herramientas GNU. GCC estaría cerca de alcanzar la par

IA avanzada: ¿acceso limitado frena innovación?

La reciente aparición de modelos de lenguaje grandes (LLM) avanzados como Mythos, que supuestamente pueden identificar vulnerabilidades de seguridad, ha generado preocupación por la restricción del acceso a estas herramientas poderosas. El autor, un programador desde la infancia, reflexiona sobre có

División rápida: optimización en sistemas de 64 bits

Este artículo de investigación aborda un problema de optimización en la programación de computadoras: la división de números enteros sin signo de 32 bits por constantes en arquitecturas de 64 bits. Aunque la división por constantes es una operación común, su implementación eficiente puede ser un cue

QEMU: pruebas con sistemas big-endian

En el mundo de la informática, los términos *big-endian* y *little-endian* describen el orden en que se almacenan los bytes de un valor en la memoria. Imagina el número hexadecimal 0x12345678, compuesto por cuatro bytes. En un sistema *little-endian* (el más común, como los ordenadores personales y

Fatal Core Dump: Resuelve un misterio con código

Fatal Core Dump es una experiencia interactiva única que combina un misterio narrativo con la depuración de código real. En un futuro cercano, tras una catástrofe relacionada con el año 2038 (un problema de desbordamiento de enteros que afecta a sistemas que usan representaciones de tiempo de 32 bit

C++26: Reflexión impacta el tiempo de compilación

Un desarrollador ha explorado el impacto en el tiempo de compilación de la nueva característica de reflexión de C++26 (C++26 Reflection). Los resultados iniciales indican que, aunque la propia característica de reflexión tiene un impacto mínimo en el tiempo de compilación, su uso conlleva una signif

Singleton en C++: Optimización para Mejor Rendimiento

Este artículo de Andreas Fertig explora cómo optimizar el rendimiento de la implementación de un Singleton en C++. Un Singleton es un patrón de diseño que asegura que solo exista una instancia de una clase, controlando su acceso. El artículo se basa en un ejemplo práctico: un Display Manager (como G

Compiladores: ¿Siempre dan el mismo resultado?

El artículo explora la pregunta de si los compiladores son deterministas, un tema crucial en el desarrollo de software, especialmente con la creciente integración de modelos de lenguaje grandes (LLMs). La respuesta, según el autor, depende de si se considera desde una perspectiva teórica (ciencia de

Clang y GCC adoptan 'defer' para simplificar limpieza de código

La funcionalidad 'defer', una herramienta para gestionar la limpieza de recursos y evitar fugas de memoria en código C, está ahora disponible en el compilador Clang a partir de la versión 22, y está en proceso de integración en GCC. La especificación técnica (TS 25755) ha sido completada y está ava

Compiladores GCC y Clang: Código Ineficiente con Arrays

Investigadores han descubierto comportamientos inesperados e ineficientes en el código generado por los compiladores GCC y Clang al trabajar con arrays de diferentes tamaños. El problema surge al verificar si un array contiene solo ceros, una tarea aparentemente sencilla. Al variar el tamaño del arr

IA compila Linux: Anthropic desafía a GCC

Anthropic ha desarrollado un compilador de C llamado CCC (Claude’s C Compiler), construido íntegramente con Claude Opus 4.6, un modelo de lenguaje de IA. El objetivo era verificar la afirmación de que CCC podía compilar el kernel de Linux, un logro significativo dada la complejidad de los compilador

Mejor C: 6 Claves para Código Eficiente

El artículo explora seis reflexiones sobre la generación de código C, desde la perspectiva de un desarrollador de compiladores. Se destacan técnicas para mejorar la calidad y eficiencia del código generado, incluyendo el uso de funciones `static inline` para la abstracción de datos y evitar penaliza

Fedora: Error en actualización afecta a DOOM

Este artículo relata un problema inesperado encontrado al actualizar paquetes de software para Fedora Linux, específicamente relacionado con el juego clásico DOOM y su derivado Chocolate-DOOM. El incidente, denominado humorísticamente "The little bool of doom", surge durante un 'Mass Rebuild', un pr

Tiny C Compiler: Supera a GCC en Velocidad y Tamaño

Un nuevo compilador de C llamado Tiny C Compiler (TCC) está superando significativamente al compilador GCC en velocidad y tamaño. Desarrollado por Fabrice Bellard, TCC es notablemente pequeño (alrededor de 100KB para x86), lo que permite su uso en entornos con recursos limitados como discos de resca

ga68: Reviven Algol 68 con Compilador para GCC

## FOSDEM 2026: Descubriendo ga68, el Compilador Algol 68 para GCC **¿Qué es Algol 68 y por qué deberíamos prestarle atención?** Algol 68 es un lenguaje de programación histórico, diseñado a mediados de la década de 1960 como sucesor de Algol 50. Aunque nunca alcanzó la popularidad de otros lengua

Compilador de OpenAI falla con 'Hola Mundo'

Un nuevo compilador de código C, denominado 'Claudes-C-Compiler' (CCC), desarrollado por OpenAI, ha fallado al intentar compilar un programa básico de 'Hola Mundo', según reportes recientes. El problema, detectado en diferentes entornos (Fedora 43, Ubuntu 26.04 y Fedora 42), impide que el compilador