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

La instrucción vfmaddrnd231pd no existe en la CPU de Intel

La instrucción vfmaddrnd231pd, documentada en el Software Development Manual (SDM) de Intel, no es ejecutable en las CPU actuales. Aunque el manual describe una operación de multiplicación y adición fusionada (FMA) con control de redondeo por instrucción, la implementación real ha sido retirada del

Incompatibilidades entre el estándar C y las implementaciones de GCC y Clang

El lenguaje C, aunque estandarizado, presenta divergencias significativas entre su especificación teórica y las implementaciones prácticas de compiladores como GCC y Clang, así como de librerías como glibc y musl. Esta discrepancia afecta la portabilidad y la conformidad del código, especialmente en

Las ramas ocultas en el código constante de tiempo en RISC-V

El código escrito para ser constante de tiempo (constant-time) suele generar instrucciones de rama condicional en arquitecturas como RISC-V, comprometiendo la seguridad contra canales laterales. Este artículo técnico analiza cómo compiladores como Clang y GCC emiten ramas en operaciones aritméticas

Uecker analiza cómo reducir el comportamiento indefinido en C

El experto en software Uecker ha presentado en la conferencia Kernel Recipes una propuesta para mitigar el comportamiento indefinido en el lenguaje C, un problema que ha generado inconsistencias en la compilación y seguridad. Aunque C sigue siendo una herramienta valiosa por su portabilidad y veloci

Cómo invocar execve en C sin nombrar la función

En entornos de evaluación automatizada de código en C, los sistemas de corrección suelen restringir el uso de funciones específicas para detectar plagio o errores de sintaxis. Un desafío técnico surge cuando se requiere ejecutar código arbitrario mediante la llamada al sistema execve, pero el compil

Cómo el borrado de secretos puede generar fugas de datos

La práctica habitual de eliminar secretos de memoria tras su uso puede, paradójicamente, aumentar la superficie de ataque si no se implementa con precisión. El uso ciego de funciones de borrado, como memset() o funciones opacas, introduce copias no deseadas en la memoria que persisten tras la ejecuc

ProcInSh: inspector de procesos web para Linux

ProcInSh es una herramienta de inspección de procesos basada en la web diseñada para sistemas operativos Linux, permitiendo a los usuarios explorar el espacio de procesos de forma interactiva. El proyecto, desarrollado en Rust, ofrece una interfaz web accesible a través de la dirección local 127.0.0

Estructuras de datos genéricas y seguras en C mediante uniones

El artículo técnico detalla una técnica para implementar estructuras de datos genéricas y seguras de tipos en el lenguaje C, utilizando uniones para asociar información de tipo con la estructura de datos. El autor, que no encuentra esta aproximación ampliamente documentada, la ilustra mediante la im

El complemento de true es true en C++: un error de conformance en GCC

El artículo técnico analiza una anomalía en el comportamiento de las operaciones de complemento de bits en C++ cuando se aplican a tipos bool y enums. Según el estándar, el complemento de true debería ser true, pero en GCC se obtiene false, lo que constituye un error de conformance. El texto explica

Un desarrollador abandona la escritura manual de código por la IA

Un desarrollador de experiencia de 18 años ha dejado de escribir código manualmente, citando la adopción de herramientas de inteligencia artificial como el factor determinante. Tras años de práctica manual, el autor describe cómo la integración de asistentes como Claude Code y otros modelos de lengu

Yantra: generador de compiladores y parseadores LALR(1) en C++

Yantra es una herramienta de software escrita en C++ que actúa como un compilador de compiladores y generador de parseadores LALR(1). Su principal característica técnica es la capacidad de generar un árbol de sintaxis abstracta (AST) completo antes de ejecutar las acciones semánticas, lo que permite

EDG C/C++: compilador de código abierto con compatibilidad total

El proyecto EDG C/C++ es un compilador de código abierto centrado en el desarrollo de un front end que garantiza la compatibilidad de compilación con Clang, GCC y MSVC. Su principal característica es la emulación de errores, lo que permite que el código fuente que funciona en otros compiladores tamb

Por qué el punteado de tipos en C y C++ genera comportamientos indefinidos

El punteado de tipos, que consiste en interpretar la memoria como diferentes tipos entre lecturas y escrituras, es una técnica esencial para la serialización y el acceso a hardware, pero con riesgos críticos de comportamiento indefinido (UB). En C, las únicas formas seguras y definidas son el uso de

TXR: un lenguaje de programación para procesamiento de datos y extracción

TXR es un lenguaje de programación pragmático y versátil, diseñado para facilitar el procesamiento de datos y la extracción de información desde fuentes de texto arbitrarias. Desarrollado desde 2009, su manual de referencia, de 778 páginas, lo posiciona como una herramienta robusta para tareas de 'h

Análisis técnico explica la brecha de rendimiento entre Wild y Mold

El equipo de Wild ha publicado un análisis técnico para explicar la discrepancia en los resultados de rendimiento entre su propio linker y Mold, tras la inclusión de Wild en los benchmarks de Mold. Aunque Wild ha mejorado significativamente su velocidad en las últimas actualizaciones, los benchmarks

C++26 define bucles infinitos triviales como comportamiento definido

C++26 corrige una ambigüedad en el estándar que clasificaba como comportamiento indefinido (UB) los bucles infinitos triviales, como `while (true);`. Esta modificación, respaldada por la propuesta P2809R3, establece que estos bucles son ahora bien definidos, lo que impide que los compiladores los op

Los números flotantes subnormales son lentos en procesadores Intel

Los números de punto flotante subnormales, definidos por el estándar IEEE para valores muy pequeños, presentan un coste de rendimiento significativo en procesadores Intel. Un análisis técnico realizado por Daniel Lemire demuestra que estas operaciones pueden ralentizar las computaciones hasta 45 vec

Oilpan: el recolector de basura para C++ en Chromium

Oilpan es un recolector de basura escrito en C++ diseñado para gestionar la memoria en el motor de renderizado Blink de Chromium, donde gran parte del código no es JavaScript. A diferencia de los recolectores tradicionales, Oilpan utiliza un enfoque de trazado cruzado (cross-component tracing) que t

Por qué pkgsrc es la solución ideal para gestionar paquetes en Unix

pkgsrc es el gestor de paquetes de NetBSD, diseñado para ser compatible con cualquier sistema operativo Unix-like, incluyendo Linux, macOS y Solaris. A diferencia de otros gestores como MacPorts o Gentoo, pkgsrc permite construir paquetes desde el código fuente, no solo instalar binarios precompilad

Solod 0.4 mejora la interoperabilidad con C y soporta Windows

Solod 0.4 es una actualización de Solod, un subconjunto de Go que se traduce a C estándar sin tiempo de ejecución y con gestión manual de memoria. Esta versión está diseñada para ofrecer a los desarrolladores de Go un control de bajo nivel sin aprender otro lenguaje, y a los de C un estilo de progra

Optimizaciones del compilador eliminan protecciones de seguridad en código C

Investigadores de seguridad revelaron en la conferencia Black Hat USA 2026 que las optimizaciones legítimas de los compiladores pueden eliminar protecciones de seguridad en binarios de código C, incluso cuando el código fuente sigue las mejores prácticas. Chris Domas, investigador de seguridad, expl

Optimización paso a paso de un spin-lock en C++

Un spin-lock es el cerrojo de sincronización más simple que existe: en lugar de dormir y ceder el control al planificador del sistema, el hilo que lo espera permanece en la CPU girando en un bucle vacío. Esto evita llamadas al sistema y cambios de contexto, a cambio de quemar tiempo de procesador. E

C no es un lenguaje de bajo nivel: las CPU ya no son PDP-11 rápidos

Este artículo, publicado en ACM Queue por David Chisnall (Universidad de Cambridge), sostiene que C dejó de ser un lenguaje de bajo nivel hace décadas y que las vulnerabilidades Spectre y Meltdown son consecuencia directa de los esfuerzos de la industria por mantener esa ilusión. La definición de Al

Limitaciones de ThreadSanitizer en la detección de carreras de datos

ThreadSanitizer (TSan), el detector de carreras de datos estándar en compiladores como Clang, GCC y Go, presenta limitaciones arquitectónicas significativas que pueden llevar a omitir errores críticos. Aunque TSan es la herramienta predominante para identificar condiciones de carrera en código concu

jank mejora sus errores y lanza un repositorio oficial de paquetes nativos

jank ha ampliado su sistema de errores en C++ con trazas de excepciones en tiempo de ejecución, páginas de ayuda y mensajes más claros para resolver ambigüedades entre funciones candidatas. El compilador combina información de depuración del ejecutable actual, archivos compilados con anticipación y

Cómo evitar std::move en C++ y aun así mover objetos

Mover objetos en C++ rara vez exige escribir std::move de forma explícita: el propio lenguaje y el compilador ya se encargan en la mayoría de los casos, y recurrir a movimientos manuales solo cuando hace falta produce código más limpio y, en ocasiones, más rápido. La técnica preferible es la elisión

Errores de aliasing en BPF al usar vmlinux.h y CO-RE

Un cambio menor en un programa BPF, sustituyendo cabeceras del kernel por definiciones generadas con BTF (vmlinux.h), provocó fallos silenciosos en la validación de sumas de verificación L3. El problema no residía en la lógica de cálculo, sino en una optimización agresiva del compilador Clang basada

Técnica para evitar pila ejecutable en funciones anidadas de GCC

Martin Uecker detalla una técnica avanzada para gestionar funciones anidadas en compiladores GCC antiguos sin requerir una pila ejecutable, un problema común al usar callbacks. Aunque GCC 17 y Clang introducen macros específicas para este fin, los desarrolladores que deben soportar versiones previas

Mejoras de tiempo de compilación en LLVM 23: del -6,75% al detalle interno

LLVM 23 reduce el tiempo de compilación un 6,75% en compilaciones -O3, con un descenso del 10,53% en el caso concreto de sqlite3, según los datos del propio proyecto. La mayor parte de la ganancia procede de tres reformas de las tablas hash que LLVM utiliza intensivamente: el paso de sondeo cuadráti

Por qué el ensamblador inline de Odin es el mejor frente a GCC, Clang y Rust

El lenguaje Odin incorpora un ensamblador inline diseñado desde cero, no añadido como un parche sobre una cadena de texto. A diferencia de las soluciones de GCC, Clang o Rust —basadas en plantillas de texto y restricciones tipo DSL—, el sistema de Odin trata el ensamblador como plantillas asm invoca

Portar la biblioteca estándar de Go a entornos sin sistema operativo

Un programador que creó Solod, un Subconjunto de Go que se traduce a C, ha logrado portar 37 paquetes de la biblioteca estándar de Go, de los cuales 31 funcionan en modo freestanding, es decir, sin depender de ninguna implementación de libc ni de un sistema operativo concreto. El artículo describe l

Por qué compilar Rust a WebAssembly es lento con información de depuración

Compilar Rust a WebAssembly con información de depuración completa puede resultar hasta 40 veces más lento de lo esperado. Un caso concreto: un programa mínimo de 40 líneas pasa de 1,5 segundos sin depuración a 50 segundos al activar debug = 2 (DWARF completo), el ajuste por defecto del perfil dev d

Una forma más rápida de calcular el día de la semana

Calcular el día de la semana a partir de un día-continuo (rata-die) parece trivial, pero esconde una complejidad inesperada. Este artículo presenta una familia de funciones optimizadas en ensamblador que obtienen el día de la semana con muy baja latencia y alto rendimiento, superando a las solucione

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

mcpp: una herramienta de construcción moderna para C++23 basada en módulos

mcpp es una herramienta de construcción de software pensada desde el origen para proyectos C++23 que usan módulos. Está escrita íntegramente en módulos C++23 y, según sus autores, ya se autohospeda: más de 43 módulos C++23 componen la propia herramienta y se compilan con su propio pipeline, lo que s

Cómo funciona la infraestructura en la nube de Compiler Explorer

Compiler Explorer, el popular sitio web que permite compilar y examinar código ensamblador en el navegador, opera sobre una infraestructura totalmente abierta en Amazon Web Services. Matt Godbolt, su creador, detalla los servicios que intervienen en cada petición del usuario, desde CloudFront y WAF

#embed en C++26: cómo incrustar binarios sin herramientas externas

C++26 incorpora #embed, una directiva de preprocesador que permite incrustar el contenido de un archivo binario —imágenes, certificados, configuraciones por defecto— directamente en el código fuente como una secuencia de expresiones constantes enteras, sin recurrir a herramientas externas como xxd,

build2 iguala e incluso supera a Ninja en velocidad de compilación

El desarrollador del sistema de compilación build2 presenta una comparativa de rendimiento frente a Ninja, considerado la referencia de velocidad en builds de C++. Para una prueba en igualdad de condiciones eligió Xerces-C++, un parser XML en C++ con 299 unidades de traducción, y realizó una compila

Kakehashi: capa de traducción para ejecutar binarios macOS en Linux ARM64

Kakehashi es una herramienta de código abierto escrita en Rust que permite ejecutar binarios de macOS ARM64 (Darwin) sobre Linux aarch64 sin necesidad de emulación completa ni JIT. Funciona como una capa de traducción en espacio de usuario: carga archivos Mach-O, mapea una versión libSystem independ

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++26 reduce el comportamiento indefinido en el núcleo del lenguaje

C++26 marca un avance significativo en seguridad del lenguaje. El comité ha abordado la reducción del comportamiento indefinido (UB) tanto en el núcleo del lenguaje como en la biblioteca estándar. La propuesta P3144R2 convierte en error de compilación la eliminación de un puntero a un tipo incomplet

Construir software de sistemas con Nix: entornos reproducibles para Rust y BPF

Nix es, a la vez, un gestor de paquetes, un sistema de compilación, un lenguaje para definir builds y la base de la distribución Linux NixOS. Su pieza más práctica para equipos de desarrollo son los flakes, que funcionan como un lockfile universal: fijan una revisión concreta del repositorio nixpkgs

All Your Codebase: paquetes C/C++ listos para el sistema de build de Zig

All Your Codebase es una iniciativa que empaqueta proyectos C y C++ para el sistema de build de Zig, permitiendo compilarlos y compilarlos cruzadamente con un único comando. La organización aloja repositorios que sustituyen las cadenas de herramientas tradicionales (Make, CMake, autoconf, scripts de

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

scriptc: compilador de TypeScript a ejecutables nativos sin motor JavaScript

scriptc es un compilador experimental, desarrollado por vercel-labs, que traduce código TypeScript ordinario a ejecutables nativos pequeños y rápidos, sin necesidad de Node ni de un motor de JavaScript incluido en el binario. La promesa central es que el mismo TypeScript que se ejecuta sobre Node —t

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

clx: un compilador ahead-of-time de Lua con ejecutables nativos en C++20

clx es un compilador y runtime de Lua multiplataforma que genera ejecutables nativos independientes a partir de código Lua mediante cadenas de herramientas modernas de C++. Su objetivo no es competir por ser la implementación más rápida de Lua en todos los escenarios, sino ofrecer compilación ahead-

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