Construye tu propio shell
Construye un shell POSIX desde cero. Usa fork, exec, tuberías y redirecciones para escribir un intérprete de comandos que ejecute programas reales.
C · Rust · Go · Zig
Construye un runtime de contenedores desde cero. Aísla procesos con namespaces, cgroups y chroot para entender cómo Docker inicia una imagen.
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 contenedor no es una máquina virtual ni una tecnología nueva: es un proceso normal de Linux al que el kernel le ha mentido sobre lo que puede ver. Este reto te enseña a contar esas mentiras.
Vas a aislar un proceso a mano con namespaces, cambiarle la raíz del sistema de ficheros, limitarle CPU y memoria con cgroups y quitarle privilegios. Al final tendrás un run propio capaz de arrancar el sistema de ficheros de una imagen real.
8 etapas repartidas en 4 fases. Cada etapa trae su guía y sus tests: avanzas cuando pasan.
Lanza un hijo con namespaces propios de PID, UTS y mount.
rootfs extraído, pivot_root y montaje de /proc.
cgroups v2 para CPU y memoria, y comportamiento al alcanzarlos.
Namespace de red, user namespaces y reducción de capabilities.
run.Construye un shell POSIX desde cero. Usa fork, exec, tuberías y redirecciones para escribir un intérprete de comandos que ejecute programas reales.
C · Rust · Go · Zig
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