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 recolector de basura desde cero. Implementa marcado y barrido, rastrea objetos vivos y recupera memoria como los runtimes que usas a diario.
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.
Si programas en un lenguaje con recolector de basura, hay un componente que decide constantemente qué vive y qué muere en tu programa, y nunca lo has visto. Aquí lo escribes tú.
Construirás un heap propio con su asignador, un recolector mark-and-sweep sobre él y las mejoras que usan los runtimes reales: recolección generacional y compactación. Y medirás las pausas, que es donde está la parte difícil.
9 etapas repartidas en 4 fases. Cada etapa trae su guía y sus tests: avanzas cuando pasan.
Reserva memoria, escribe un asignador y representa objetos con cabecera.
Raíces, recorrido del grafo de objetos, marcado y liberación.
Lista de libres, fragmentación y disparo automático de la recolección.
Generacional con vivero, barreras de escritura y compactación medida.
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 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
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