Clang es un front end de compilador para los lenguajes de programación C, C++, Objective-C y Objective-C++. Usa LLVM como su back-end y ha sido parte del ciclo de lanzamiento de LLVM desde la versión 2.6.

Ver en Wikipedia

Noticias que mencionan Clang

LLVM, la infraestructura de compiladores que sostiene la informática moderna

El artículo repasa la historia, el diseño y el impacto de LLVM, la infraestructura de compiladores de código abierto nacida en 2000 como proyecto de investigación en la Universidad de Illinois Urbana-Champaign y publicada por primera vez en octubre de 2003. Financiada inicialmente por la Fundación N

Cobertura binaria por el camino difícil: instrumentar ramas con INT3 sobre KVM

El artículo describe un método poco ortodoxo para obtener cobertura precisa de código en binarios sin código fuente (black-box), inspirado en la necesidad del autor de construir un fuzzer propio sin dynamic recompilation ni un portátil con Intel PT. Explica primero la evolución del fuzz testing: des

Optimización de push_back en SmallVector de LLVM: ruta rápida sin frame

LLVM, el compilador de Clang, ha introducido una optimización en SmallVector::push_back para tipos aproximadamente copiables triviales, su operación más caliente. Antes, la ruta rápida del push_back reservaba capacidad, almacenaba el elemento y luego llamaba a grow_pod, lo que obligaba a guardar thi

C++26 elimina el veto al constexpr en la herencia virtual

C++26 da un paso más en la trayectoria de expansión de constexpr, la palabra clave que permite evaluar expresiones en tiempo de compilación. La propuesta P3533R2, autoría de Hana Dusíková, levanta una de las últimas restricciones sintácticas: la prohibición de declarar constexpr los constructores y

Cómo se codifican realmente las instrucciones ARM64

Este artículo explica, paso a paso y sobre ejemplos reales ejecutados en Apple Silicon, cómo el procesador ARM64 codifica cada instrucción en una palabra fija de 32 bits. A diferencia de x86, donde las instrucciones pueden ocupar entre uno y quince bytes, AArch64 utiliza siempre cuatro bytes por ins

Fil-C presenta ensamblador inline con seguridad de memoria

Fil-C, una variante de C y C++ con seguridad de memoria desarrollada por pizlonator, incorpora compatibilidad con ensamblador inline manteniendo las garantías de seguridad. La función, aún en fase preliminar y no incluida en el lanzamiento 0.679, requiere compilar desde el código fuente. El proyect

Por qué odio los compiladores: la odisea de los builds reproducibles en Anubis

Este artículo relata los problemas técnicos que el autor, desarrollador del proyecto Anubis, tuvo que resolver para integrar comprobaciones de prueba de trabajo basadas en WebAssembly con fallback a JavaScript puro. La idea es definir la lógica de comprobación una sola vez y compilarla a JavaScript

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

Se estrena en YouTube 'C++: The Documentary', crónica de 40 años del lenguaje

El documental 'C++: The Documentary' se estrenó hoy en YouTube con un recorrido por los 40 años de historia del lenguaje de programación C++, desde su creación en los laboratorios Bell de AT&T a manos de Bjarne Stroustrup hasta su actual adopción global. El filme reúne a figuras clave del lenguaje y

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

blqsort: quicksort sin ramas con redes de ordenación en C y C++

blqsort es una implementación de quicksort sin saltos condicionales (branchless) escrita en C y C++ que aprovecha redes de ordenación para clasificar pequeños subconjuntos de datos. El proyecto, distribuido en GitHub como biblioteca de cabecera única, está dirigido a desarrolladores que necesitan ru

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

ChatGPT y Claude hallan errores en compiladores de forma sorprendente

Este artículo detalla un experimento sorprendente sobre la búsqueda de errores en compiladores, utilizando modelos de lenguaje avanzados como ChatGPT y Claude. Justin Lebar, un experto en compiladores con experiencia en Google, Waymo y OpenAI, descubrió que podía encontrar una cantidad significativa

Desarrollan herramienta para BPF en Go: más fácil y eficiente

Un nuevo proyecto llamado 'gobee' permite a los desarrolladores escribir programas BPF (Berkeley Packet Filter) en Go, en lugar de C. Esta herramienta transpila un subconjunto estricto de código Go a BPF C, generando también enlaces de Go tipados para el espacio de usuario y verificando la compatibi

ClickHouse presenta Silk: nuevo planificador de fibras para Linux

Silk es un planificador de fibras cooperativas para Linux desarrollado por ClickHouse, diseñado para ofrecer alto rendimiento y concurrencia eficiente en sistemas modernos. Las fibras son corutinas de pila ligera que suspenden en lugar de bloquear sus hilos del sistema operativo, permitiendo concurr

NumExpr multiplica velocidad en cálculos NumPy con optimización multitarea

La biblioteca NumExpr, desarrollada por David M. Cooke, Francesc Alted y otros bajo la dirección del mantenedor Francesc Alted, ofrece aceleración significativa para cálculos numéricos con arrays de NumPy en Python. La herramienta evita asignar memoria para resultados intermedios, lo que mejora el u

Jank crea IR personalizada para optimizar código Clojure

El compilador de Clojure 'jank' ha implementado su propia representación intermedia (IR) personalizada, diseñada específicamente para optimizar el código a nivel de semántica del lenguaje Clojure. Anteriormente, jank delegaba toda la optimización a LLVM, pero debido a que LLVM IR opera a un nivel mu

El misterio de a++ + ++a: por qué el mismo código C da resultados diferentes

El contenido explora el comportamiento indefinido (UB) en expresiones C/C++ que combinan operadores de incremento pre (++a) y post (a++). El caso central analizado es a = a++ + ++a. Se demuestra teóricamente cómo existen múltiples posibilidades de evaluación: el orden de captura de valores y cuándo

Geekbench 6: ¿nueva referencia para medir rendimiento?

Este artículo de Chips and Cheese evalúa Geekbench 6, una suite de benchmarks diseñada para pruebas de rendimiento en sistemas modernos, comparándola con el estándar de la industria SPEC CPU2017. Geekbench, a diferencia de SPEC CPU2017 que se distribuye en código fuente, se entrega en formato binari

Turbo Vision revive: Unicode y compatibilidad moderna

Un desarrollador ha revitalizado Turbo Vision, un marco clásico para interfaces de usuario basadas en texto, con una nueva versión que ofrece soporte Unicode y compatibilidad multiplataforma. El proyecto, iniciado a finales de 2018, busca replicar la funcionalidad del original mientras lo adapta a e

Aplicaciones más seguras: optimizan llamadas al sistema

El artículo de Amit Limaye explora un problema fundamental en la seguridad y eficiencia de las aplicaciones modernas, especialmente aquellas que se ejecutan dentro de contenedores. La mayoría de las aplicaciones, incluso las más simples, se ejecutan sobre un kernel de Linux completo, que ofrece alre

Truco XOR: ¿ingenioso o innecesario?

Este artículo de Heather.cafe desmitifica el truco de intercambio XOR, una técnica de programación que utiliza la operación XOR para intercambiar el valor de dos variables sin necesidad de una variable temporal. Aunque a menudo se presenta como una solución ingeniosa, el artículo explora a fondo su

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

Doom en la terminal: ¡juega con curl!

Un desarrollador ha creado una forma inusual de jugar el clásico videojuego Doom: a través de la línea de comandos utilizando `curl`. El sistema, alojado en un servidor HTTP, transmite los fotogramas del juego como bloques ANSI a la terminal, permitiendo a los usuarios interactuar con el juego envia

WireGuard actualiza: más rápido, estable y moderno

Se ha lanzado una actualización importante para WireGuard en Windows, incluyendo WireGuardNT v0.11 y WireGuard para Windows v0.6. El anuncio, realizado por Jason A. Donenfeld, destaca mejoras significativas en la estabilidad, rendimiento y modernización del código base, eliminando compatibilidades a

Xilem: Nuevo Framework Rust Simplifica Apps Nativas

Desarrolladores han presentado Xilem, un nuevo framework de interfaz de usuario (UI) para Rust que busca simplificar el desarrollo de aplicaciones nativas. Xilem, junto con Masonry (una base para construir frameworks de UI), ofrecen una arquitectura de alto nivel inspirada en React, SwiftUI y Elm. X

Solod: Nuevo Lenguaje Fusiona Go y C para Sistemas

Un nuevo lenguaje de programación llamado Solod (So) ha sido anunciado, diseñado para sistemas que requieren la eficiencia de C pero con la sintaxis y las herramientas de Go. Desarrollado por Solod-Dev en GitHub, So es un subconjunto estricto de Go que se traduce directamente a código C11 legible, e

IA crea codec de video alternativo a H.264

Un equipo de ingenieros simulados por inteligencia artificial, utilizando el agente Claude Code de Anthropic, ha desarrollado un nuevo codec de video experimental llamado vibecoded como alternativa sin patente a los codecs H.264 y H.265. El proyecto, descrito como un experimento de aprendizaje y no

Software: ¿por qué se ignora la portabilidad?

Este artículo aborda una problemática común en el mundo del software de código abierto: la resistencia a la portabilidad a arquitecturas consideradas 'antiguas' o menos relevantes. El autor, un desarrollador con experiencia en portabilidad, critica esta actitud, argumentando que a menudo se basa en

C++: Optimización de 'asin' Acelera Cálculos

Un desarrollador de C++ ha optimizado la función 'asin' (arcoseno) para mejorar el rendimiento, logrando mejoras significativas en algunas plataformas. El ajuste se basa en una técnica llamada 'Estrin's Scheme', que permite al compilador ejecutar operaciones en paralelo, aprovechando la arquitectura

Han: Nuevo lenguaje de programación con claves en coreano

Un nuevo lenguaje de programación llamado 'Han' ha sido desarrollado y se distingue por utilizar palabras clave en coreano, aprovechando el sistema de escritura Hangul. Creado por Xodn y basado en Rust, Han busca ofrecer una experiencia de programación única, combinando la belleza del diseño lingüís

Optimiza tu código C: rendimiento y portabilidad

Este artículo explora técnicas para optimizar el rendimiento de software C, especialmente en arquitecturas x86-64, donde la capacidad de la CPU juega un papel crucial. El problema radica en que el código optimizado para una CPU específica puede no funcionar bien en otras, limitando la portabilidad.

IA escribe código: ¿quién garantiza su seguridad?

La creciente adopción de la inteligencia artificial (IA) en el desarrollo de software, con empresas como Google y Microsoft utilizando IA para generar entre el 25% y el 30% de su código, plantea serias preocupaciones sobre la verificación y seguridad. Recientemente, Anthropic desarrolló un compilado

LFortran compila fpm: avance clave para su beta

LFortran ha logrado compilar con éxito el Fortran Package Manager (fpm), un proyecto complejo que ha permitido identificar y corregir numerosos errores y carencias en el compilador. Este logro, completado el 7 de febrero de 2026, marca un hito importante en el desarrollo de LFortran, acercándolo a s

C++: Optimiza el polimorfismo con desvirtualización

Este artículo explora el tema de la 'desvirtualización' y el 'polimorfismo estático' en C++, abordando un problema común de rendimiento en diseños polimórficos. La programación polimórfica, a través de funciones virtuales, permite que el código se adapte a diferentes tipos en tiempo de ejecución. Si

Nuevo algoritmo acelera cálculo de rutas en grafos

Este proyecto, llamado DMMSY-SSSP, representa un avance significativo en la resolución de problemas de camino más corto desde un solo origen (SSSP) en grafos grandes y dispersos. Tradicionalmente, los algoritmos SSSP, como el algoritmo de Dijkstra, se ven limitados por el costo de ordenar los nodos

JWasm: Ensamblador multiplataforma compatible con MASM

Un nuevo ensamblador llamado JWasm ha sido lanzado en GitHub, ofreciendo compatibilidad con el lenguaje MASM y la capacidad de funcionar en múltiples sistemas operativos. Desarrollado por Baron-von-Riedesel, JWasm es compatible con Windows, Linux, DOS y OS/2, y probablemente con otros sistemas opera

Swift 6.0: Retraso por Problemas Técnicos

El desarrollo de Swift 6.0 enfrenta importantes obstáculos técnicos que impiden su lanzamiento estable, según un análisis detallado publicado en GitHub por LadybirdBrowser. La lista de problemas abarca desde incompatibilidades con LLVM, errores en la gestión de tipos opcionales entre Swift y C++, ha

GPT en C: modelo más rápido para dispositivos

Un desarrollador ha creado una implementación en lenguaje C99 de un modelo GPT de estilo 'character-level', denominado MicroGPT-C, que permite un entrenamiento y generación de texto significativamente más rápidos que las implementaciones en Python. El proyecto, publicado en GitHub, busca ofrecer una

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