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í

La experiencia de programar en Zig viniendo de Rust: una comparativa práctica

Un desarrollador con siete años de experiencia en Rust relata su transición a Zig al reimplementar en este lenguaje la librería jsonpath-rust, un procesador del lenguaje de consulta JSONPath definido en RFC 9535. El nuevo proyecto, llamado zig-jsonpath, le sirvió como banco de pruebas para comparar

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

Absolutistas de la seguridad de memoria: más allá de Rust

El artículo analiza el debate en torno a la seguridad de memoria en lenguajes de programación y arremete contra los llamados «absolutistas», que descalifican a Rust por contar con bloques `unsafe` sin aplicar el mismo rasero a C, C++ o Zig. El texto parte de una observación: aunque durante años la d

Por qué malloc reserva más memoria de la que pides

Un programador que pidió 13 bytes con malloc descubrió, mientras construía su propio asignador de memoria por curiosidad, que la reserva nunca coincide con lo solicitado. La respuesta está en los metadatos que el asignador guarda junto a cada bloque. El artículo parte de un bump allocator, el diseñ

Reflexiones sobre los tipos enteros en los lenguajes de programación

Este artículo analiza los sistemas de tipos enteros en los lenguajes de programación más extendidos y defiende el enfoque de Rust como modelo más riguroso. El autor repasa cómo C, C#, Go y Swift manejan los enteros: en C, el desbordamiento de enteros con signo es comportamiento indefinido y conviven

Solod (So): un subconjunto estricto de Go que compila a C

Solod (So): un subconjunto estricto de Go que compila a C En un ecosistema saturado de nuevos lenguajes de programación que prometen ser "como Go pero con más características" o "como Rust pero más simples", Solod (So) irrumpe con una propuesta radicalmente diferente: no añade complejidad, sino que

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

Zig by Example: un repositorio para aprender Zig con ejemplos anotados

El repositorio "Zig by Example", mantenido por el usuario boringcollege en GitHub, ofrece una introducción práctica al lenguaje de programación Zig mediante una colección de ejemplos anotados. La propuesta sigue la misma filosofía didáctica que el popular "Go by Example" de Mark McGranaghan, del que

Explorando la gestión automática de buffers con io_uring

UringMachine, una gema de Ruby para realizar operaciones de E/S mediante io_uring —la interfaz de Linux para E/S asíncrona de alto rendimiento—, está incorporando un sistema de gestión automática de buffers inspirado en el mecanismo de buffer rings del kernel. ¿Qué es io_uring y por qué importa? i

Rust para programadores de Python: guía completa de formación

Esta guía de formación titulada 'Rust for Python Programmers: Complete Training Guide' está dirigida a desarrolladores con experiencia en Python que quieran aprender Rust, el lenguaje de sistemas con tipado estático y seguridad de memoria garantizada en tiempo de compilación. El material parte de la

Rusty Penguin crea un sistema operativo ternario desde cero en Rust puro

Rusty Penguin es un sistema operativo completo desarrollado desde cero en Rust puro, sin depender del kernel Linux ni de libc. Su innovación clave reside en la adopción de la lógica ternaria (-1, 0, +1) como primitiva fundamental en todas las capas: desde el planificador hasta el motor de inferencia

Lone: intérprete de Lisp en C desde cero

Lone es un intérprete de Lisp escrito en C que se distingue por su desarrollo 'desde cero' sin utilizar librerías estándar como libc. Su sistema de gestión de memoria, conocido como el 'heap', es el tema central de esta explicación y representa un caso de estudio valioso sobre cómo se construyen los

Propuesta controvertida: limitar llms en zig days

Zig Days son eventos colaborativos de programación de un día, generalmente los sábados, que sirven como el formato insignia de la comunidad Zig. Su objetivo principal es fomentar un entorno donde los desarrolladores puedan aplicar el pensamiento de sistemas para crear software de alta calidad. Sin e

Arrays en C: entre datos y punteros

Los arrays en C son una fuente común de confusión para desarrolladores debido a su comportamiento híbrido entre tipos de datos y punteros. Técnicamente, un array `T[n]` representa una secuencia contigua de valores en memoria, pero en la práctica se 'decomponen' (decay) en punteros `T*` en casi todas

Firecracker: Crean Runtime Serverless Similar a AWS Lambda

Este artículo describe la construcción de un runtime de servidorless similar a AWS Lambda utilizando microVMs de Firecracker, un proyecto personal del autor Vivek Jadhav. El objetivo principal es entender el funcionamiento interno de las plataformas serverless, que a menudo se perciben como 'mágicas

De Lisp a Magia: La Evolución de un Recolector de Basura

Este artículo, escrito por Matheus Afonso Martins Moreira, narra la evolución de un recolector de basura llamado 'Baby's Second Garbage Collector', originalmente concebido como una solución simple y precisa en el lenguaje dinámico 'lone lisp'. La historia se presenta de forma alegórica, utilizando m

Programación: ¿Siempre es más lento lo de bajo nivel?

Este artículo explora el concepto de "costos ocultos" en la programación, desafiando la idea de que los lenguajes de alto nivel son inherentemente menos eficientes que los lenguajes de bajo nivel como C o C++. El autor observa que los programadores de sistemas a menudo evitan lenguajes con recolecci

C: la API de archivos más eficiente, según expertos

El artículo de maurycyz.com argumenta que C posee la mejor API para la manipulación de archivos, destacando una flexibilidad y eficiencia que carecen otros lenguajes de programación. La clave de esta superioridad reside en la capacidad de C para tratar los archivos como si fueran datos en memoria a

Rust: Una herramienta, no una solución mágica

Rust: Una herramienta útil pero no mágica El lenguaje de programación Rust, celebrado durante una década como el más admirado según las encuestas de Stack Overflow, no es la solución mágica que algunos defienden. Así lo aseguran dos voces del sector tecnológico que, desde perspectivas distintas, ad

TAL: Ensamblador seguro para software crítico

## Lenguaje Ensamblador Tipado (TAL): Un Puente Seguro entre Lenguajes de Alto Nivel y Hardware ¿Qué es y por qué es importante? En el mundo del desarrollo de software, especialmente en áreas críticas como sistemas operativos, kernels móviles y aplicaciones que requieren una seguridad extrema, la

Deno: Guía completa de Interfaz con Lenguajes de Bajo Nivel

El Denonomicon se presenta como una guía profunda sobre la Interfaz de Función Extranjera (FFI) de Deno, un tema que, aunque cubierto brevemente en la documentación oficial de Deno, requiere una explicación más detallada para su correcta utilización. La FFI es esencial para permitir que Deno, un ent

Software moderno: ¿Más grande, menos eficiente?

El artículo "The Apollo 11 Paradox" plantea una crítica contundente a la dirección actual del desarrollo de software, señalando una preocupante tendencia a la ineficiencia y la pérdida de conexión con los fundamentos de la computación. El ejemplo citado, la disparidad entre los 4KB de RAM utilizados