Low-Level Atlas II
De “entiendo la máquina” a “construí sistemas reales con ella”
La continuación práctica del Low-Level Atlas: nueve sistemas reales construidos desde cero en C — un shell, un malloc, un motor de regex, un clon de Git, un servidor HTTP y un motor de base de datos con B-Tree, WAL y capa SQL. Sin frameworks, sin atajos. Asume que ya hiciste el atlas I.
Leelo como cola de build, no como catálogo de cursos.
Calentá motores con un shell, un malloc y un motor de regex, después pasá a datos (un clon de Git), redes (un servidor HTTP) y concurrencia en la práctica — y dejá que el motor de base de datos tire de todo el hilo, de v0 a v3.
Orientación
Por dónde empezar, qué atlas I necesitás antes, y cómo se organiza este atlas como cola de construcción.
Proyectos de Calentamiento
Builds cortos y autocontenidos que ponen a trabajar los fundamentos del atlas I: un shell, un malloc, un motor de regex — una a dos semanas cada uno.
Shell desde Cero
Un shell mínimo tipo bash: parsing de comandos, fork/exec, pipes, redirección de I/O, manejo de señales y jobs — foreground/background, Ctrl-Z.
Explorarmalloc desde Cero
Un malloc/free/realloc de verdad: free list, coalescing, sbrk vs mmap, alineación, fragmentación — medido contra el allocator real de glibc.
ExplorarMotor de Regex desde Cero
Un motor de expresiones regulares mínimo (Thompson NFA): de un patrón a una máquina de estados, sin backtracking exponencial. Parsing y autómatas en un proyecto autocontenido.
ExplorarDatos y Serialización
Almacenamiento direccionado por contenido y serialización: un Git mínimo, hashing, el grafo de commits — estructuras de datos con un resultado que podés usar de verdad.
Sistemas en Red
Un servidor HTTP/1.1 real desde sockets crudos: parsing del protocolo a mano, un event loop epoll/kqueue, keep-alive, conexiones concurrentes.
Concurrencia y Performance II
La teoría de concurrencia del atlas I anclada en el servidor y el motor de base de datos: thread pools, estructuras lock-free, false sharing, benchmarking real bajo carga.
El Motor de Base de Datos
El proyecto vertebrador: un KV store persistente sobre un B-Tree, durabilidad y crash recovery, una capa relacional y un motor SQL mínimo — de v0 a v3.
KV Store y Durabilidad
Primera mitad del motor de datos: un key-value store persistente sobre un B-Tree copy-on-write, durabilidad con fsync, write-ahead log, crash recovery, gestión de espacio libre.
ExplorarCapa Relacional y Motor de Consultas
Segunda mitad, encima del KV store: tablas e índices sobre el B-Tree, un subconjunto mínimo de SQL, un planner/executor y transacciones concurrentes copy-on-write.
ExplorarSiempre Activo
TDD y craftsmanship para sistemas con estado: testear parsers de protocolo, bugs de concurrencia, fuzzing de formatos binarios, property-based testing, TDD cuando el estado vive en disco.
El motor de base de datos, v0 → v3
Construido en dos ramas — un KV store persistente y después una capa relacional encima — de la misma forma en que el atlas I construyó un OS desde cero: por hitos, no de una sola vez.
KV store en memoria
Un B-Tree, sin persistencia todavía. Solo la estructura de datos.
Persistencia real
fsync, write-ahead log, crash recovery. Ahora es una DB de verdad.
Capa relacional
Tablas e índices secundarios, encima del KV store.
SQL + transacciones
Parser SQL mínimo, planner/executor, transacciones concurrentes, benchmarks bajo carga.
Registros y memoria operativa
Los registros mantienen referencias externas, specs, herramientas y material fuente normalizados detrás de notas atómicas cortas.