Build your own container
namespaces, cgroups and chroot. Isolate a process by hand and understand what Docker does when it starts an image.
Go · C · Rust
fork, exec, pipes y redirecciones. Construye un intérprete de comandos POSIX que ejecute programas de verdad.
Build it in your language
The tester treats your program as a black box: any language works. These are just the most convenient ones for this project.
Un shell es el programa con el que hablas con tu sistema operativo todos los días: lee una línea, decide qué significa y pone al kernel a trabajar. Por dentro es sorprendentemente pequeño, y entenderlo cambia para siempre cómo lees un error de terminal.
En este reto construyes el tuyo: un intérprete que lanza procesos reales, encadena comandos con tuberías, redirige entrada y salida y devuelve códigos de salida correctos. Al final podrás ejecutar ls | grep .txt > salida.txt en un shell escrito por ti.
12 stages across 4 phases. Every stage comes with its guide and its tests: you move on when they pass.
Lee una línea, ejecuta un binario y espera a que termine. Tu primer proceso hijo.
cd, pwd y exit, búsqueda en el PATH y códigos de salida correctos.
Conecta procesos con pipe, redirige ficheros con dup2 y encadena varios comandos.
Ctrl-C que no te mata, trabajos en background y limpieza de zombis.
namespaces, cgroups and chroot. Isolate a process by hand and understand what Docker does when it starts an image.
Go · C · Rust
Build and train a neural network from first principles: forward pass, loss functions, and gradient descent optimization.
Python · TypeScript
Mark-and-sweep from scratch. Manage memory the way the runtimes you use daily do without you noticing.
C · C++ · Rust