Construye tu propio runtime de contenedores
Construye un runtime de contenedores desde cero. Aísla procesos con namespaces, cgroups y chroot para entender cómo Docker inicia una imagen.
Go · C · Rust
Construye un shell POSIX desde cero. Usa fork, exec, tuberías y redirecciones para escribir un intérprete de comandos que ejecute programas reales.
Constrúyelo en tu lenguaje
El tester trata tu programa como una caja negra: sirve cualquier lenguaje. Estos son los más cómodos para este proyecto.
Proyecto en preparación: estamos completando y verificando el recorrido de implementación y sus pruebas. Las capacidades descritas son el objetivo del proyecto; todavía no está habilitado para comenzar.
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 etapas repartidas en 4 fases. Cada etapa trae su guía y sus tests: avanzas cuando pasan.
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.
Construye un runtime de contenedores desde cero. Aísla procesos con namespaces, cgroups y chroot para entender cómo Docker inicia una imagen.
Go · C · Rust
Construye un recolector de basura desde cero. Implementa marcado y barrido, rastrea objetos vivos y recupera memoria como los runtimes que usas a diario.
C · C++ · Rust
Construye una red neuronal desde cero. Implementa propagación hacia adelante, funciones de pérdida y descenso de gradiente, y entrena tu propio modelo.
Python · TypeScript