Moxnox: sistema operativo compatible con POSIX basado en btrfs

Moxnox es un sistema operativo de código abierto diseñado para funcionar como un sistema similar a Windows NT pero compatible con POSIX, ejecutándose sobre el sistema de archivos btrfs. Desarrollado por maharmstone, este proyecto permite la autoalojamiento (self-hosting) y soporta arquitecturas amd6

La API POSIX wordexp(3) presenta riesgos de seguridad críticos

La API POSIX wordexp(3) permite realizar expansiones de shell desde el lenguaje C, siendo frecuentemente recomendada para la expansión de tildes. Sin embargo, su uso con entradas no confiables es peligroso debido a la activación por defecto de la expansión de comandos. Para desactivar esta función,

Método portable para acceder a errno en lenguajes no C

El artículo describe una técnica técnica para acceder de forma portable al valor de errno desde lenguajes de programación que no son C, como Hare, sin recurrir a funciones wrapper escritas en C. Dado que errno es una macro no portable y las funciones estándar de la biblioteca C (libc) no devuelven s

Corrección de error en la documentación de initstate en glibc

Un desarrollador ha identificado y corregido una incoherencia en la documentación oficial de la función initstate en la biblioteca glibc. La man page de initstate(3) describía erróneamente el comportamiento de la función según el estándar POSIX, afirmando que devolvía NULL en caso de error, cuando e

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

Brut: un script de shell para crear programas Unix portables

Brut es un script de shell de un solo archivo que funciona como ejecutable frontal para la creación de programas de línea de comandos en sistemas Unix. Su objetivo principal es facilitar la construcción de herramientas altamente portables que dependen únicamente de las utilidades básicas especificad

Diferencias históricas entre -r y -R en el comando cp

El comando cp de GNU coreutils ha unificado las opciones -r y -R para copiar directorios recursivamente, eliminando la distinción técnica que existía en sus inicios. En 1992, la primera versión del software diferenciaba entre ambas: -r activaba la copia recursiva pero también trataba los directorios

Sistema de permisos de archivos y directorios en Unix y Linux

Los sistemas operativos Unix y Linux, así como macOS, utilizan un mecanismo de control de acceso basado en el estándar POSIX.1:2008 (Single Unix Specification). Este sistema asigna a cada archivo y directorio un propietario y un grupo, definiendo tres categorías de usuarios: propietario, grupo y otr

Ejecución de código mediante manipulación de DWARF en glibc

Este artículo técnico detalla un método avanzado para lograr la ejecución de código arbitrario en sistemas que utilizan glibc 2.44, sin necesidad de vulnerabilidades de desmemoria clásicas ni de romper ASLR. La técnica se basa en la manipulación de los puntos de cancelación de hilos POSIX y la ejecu

SplitFT: tolerancia a fallos en centros de datos descompuestos

SplitFT es una nueva arquitectura de tolerancia a fallos diseñada para aplicaciones centradas en el almacenamiento en centros de datos descompuestos. Su objetivo es permitir que las aplicaciones logren garantías de durabilidad fuertes sin sacrificar el rendimiento, resolviendo la limitación de los s

Reducir la repetición en httpd.conf con el preprocesador m4 en OpenBSD

En un artículo anterior, el autor explicó cómo migró sus sitios web a un VPS con OpenBSD y mencionó la necesidad de repetir bloques de código casi idénticos en httpd.conf para bloquear rutas maliciosas, ya que httpd carece de macros integradas. En esta nueva publicación detalla cómo resolver esa rep

Tu agente de IA tiene root: el riesgo oculto de los servidores MCP sin sandbox

Un servidor MCP (Model Context Protocol) ejecutado sin aislamiento corre con los mismos privilegios que el usuario que lo lanza, algo equivalente a entregar a un agente de inteligencia artificial acceso root al sistema. El artículo explica que herramientas como las shell MCP integradas en clientes c

Los LLM son la prueba de que Unix ganó

Los grandes modelos de lenguaje (LLM) representan, según esta reflexión, la culminación imprevista de la filosofía Unix: la idea de que el texto es una interfaz universal entre programas y usuarios. El artículo recorre la trayectoria personal del autor, que pasó de la interfaz gráfica de Windows 3.1

sce, un editor de consola minimalista escrito en Python

sce (simple-console-editor) es un editor de texto plano para consola creado en 2008 por el desarrollador conocido como volution y mantenido desde entonces con mejoras menores. Está escrito en Python, funciona con Python 3.6+ y también con 2.7, y su código ocupa apenas unas 3.500 líneas, sin más depe

El signo de exclamación en la shell no es para gritar: sirve para ser vago

El programador Filip Roséen explica en su blog personal cómo aprovechar los designadores de eventos (palabras que empiezan por `!`) y el comando POSIX `fc` para dejar de repetir comandos manualmente en bash, zsh, csh y tcsh. La idea central es aplicar el principio DRY también en la línea de comandos

El humilde dos puntos de la shell: un truco que vale la pena recordar

En programación de shell, el carácter dos puntos (:) es mucho más útil de lo que aparenta. Funciona como el llamado "comando nulo" (null command), un built-in del shell que no ejecuta ninguna acción pero sí evalúa sus argumentos, hereda su comportamiento desde la Thompson shell de 1971, donde servía

Concurrencia al estilo Go implementada en C con pthreads

El lenguaje Go debe gran parte de su atractivo a su modelo de concurrencia: las goroutines, los canales y un planificador en tiempo de ejecución que permite ejecutar miles de tareas ligeras sobre unos pocos hilos del sistema operativo. En C, sin embargo, no existe nada equivalente de fábrica. Este a

Terminal, Shell, TTY, Consola: El Stack Completo Explicado

A menudo se usan indistintamente los términos terminal, shell, TTY y consola, pero cada uno designa una capa distinta en el ecosistema de la línea de comandos. Originalmente, en los años 60, todos se referían al mismo dispositivo físico: una máquina con teclado e impresora conectada al ordenador. Co

Por qué un script "/bin/sh" puede no ser portable aunque sea POSIX

El desarrollador Alexandre Gomes Gaigalas sostiene que la idea de escribir un guion "portable" en shell POSIX es engañosa, porque POSIX es una especificación, no un programa. Cada shell real —bash, dash, ash, ksh, yash y otros— implementa esa norma con lagunas, extensiones y particularidades históri

Zinnia: kernel POSIX escrito en Rust y arrancable desde UEFI

Zinnia es un kernel de código abierto desarrollado casi por completo en Rust, con el objetivo declarado de minimizar el uso de bloques unsafe siempre que sea posible. Implementa un conjunto amplio de llamadas al sistema conformes con POSIX e incorpora extensiones habituales en Linux y los BSD, como

X OS, un micronúcleo x86_64 minimalista sin compatibilidad POSIX

X OS es un sistema operativo de micronúcleo para arquitecturas x86_64 desarrollado desde cero, sin heredar código de Unix ni mantener compatibilidad POSIX. Su objetivo declarado es construir una plataforma nativa tanto para agentes de inteligencia artificial como para usuarios humanos, con un diseño

Mac Clásico Revive: Nuevo Proyecto Abre Puertas

Un nuevo proyecto de código abierto llamado Advanced Mac Substitute permite ejecutar aplicaciones clásicas de Macintosh en sistemas modernos sin necesidad de un ROM de Apple ni software del sistema. El proyecto, desarrollado por jjuran y disponible en GitHub, funciona reimplementando a nivel de API

Entendiendo los números en las páginas del manual Linux

Si trabajas con programación en Linux, seguramente has consultado las páginas del manual (man pages) para entender comandos, funciones del sistema o bibliotecas. A menudo, te habrás topado con números al final del nombre de la función, como en `sleep(3)` o `read(2)`. Este artículo explica el signifi

Desarrollar una app: retos y aprendizajes

Este artículo explora la experiencia de un desarrollador experimentado al intentar crear una aplicación sencilla (un generador de números aleatorios para simular tiradas de dados) en diversas plataformas modernas. El objetivo no es la complejidad de la aplicación en sí, sino analizar la configuració

Gawk 5.4.0: Nuevo motor de regex y mejoras

Se ha anunciado el lanzamiento de Gawk 5.4.0, una importante actualización del lenguaje de programación GNU Awk. La nueva versión, disponible desde el 22 de febrero de 2026, introduce el motor de expresiones regulares MinRX, desarrollado por Mike Haertel, como opción predeterminada, reemplazando a l

Vi: Evolución y problemas del comando 'undo'

El comando 'u' (undo) en el editor de texto Vi y sus derivados ha evolucionado significativamente a lo largo del tiempo, generando una interesante divergencia en su implementación y comportamiento. Originalmente, la versión de Vi creada por Bill Joy solo ofrecía un único nivel de deshacer, lo cual e

Zlob: Globbing más rápido para C, Zig y Rust

Un nuevo proyecto llamado 'zlob' ha lanzado una biblioteca de globbing (búsqueda de patrones en archivos) significativamente más rápida para C, Zig y Rust. La biblioteca, disponible como librería C, librería Zig y crate Rust, busca solucionar la lentitud y limitaciones de la función `glob()` de gli

Operaciones Atómicas en UNIX: Seguridad sin Bloqueos

Este artículo, publicado en 2010, es un catálogo de operaciones que los sistemas operativos tipo UNIX/POSIX pueden realizar de forma atómica, lo que los hace útiles para construir programas seguros para hilos y procesos múltiples sin necesidad de mutexes o bloqueos de lectura/escritura. El autor enf