Saltar al contenido
Volver al catálogo
Proyecto garbage-collectorSistemasExpertoPróximamente

Construye tu propio recolector de basura

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.

Idioma del temario

Las guías de las etapas se leen en este idioma. Solo aparecen los idiomas en los que este proyecto ya está traducido completo; el idioma de la interfaz no cambia.

De qué trata 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.

Hoja de ruta

9 etapas repartidas en 4 fases. Cada etapa trae su guía y sus tests: avanzas cuando pasan.

  1. Fase 12 etapas

    Un heap propio

    Reserva memoria, escribe un asignador y representa objetos con cabecera.

  2. Fase 23 etapas

    Marcar y barrer

    Raíces, recorrido del grafo de objetos, marcado y liberación.

  3. Fase 32 etapas

    Que no se degrade

    Lista de libres, fragmentación y disparo automático de la recolección.

  4. Fase 42 etapas

    Como los de verdad

    Generacional con vivero, barreras de escritura y compactación medida.

Antes de empezar

Un gestor de memoria completo para una máquina virtual de juguete: asignador propio sobre un heap reservado, recorrido de raíces desde la pila y los registros, marcado y barrido, lista de libres, recolección generacional con vivero y una fase de compactación que elimina la fragmentación.

  • container-runtime
    Próximamente

    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.

    Experto8 etapas~16 hSistemas
    namespacescgroupsprocesos

    Go · C · Rust

  • neural-network
    Beta

    Construye tu propia red neuronal

    Construye una red neuronal desde cero. Implementa propagación hacia adelante, funciones de pérdida y descenso de gradiente, y entrena tu propio modelo.

    Principiante6 etapas~6 hSistemas
    aprendizaje automáticoredes neuronalesmatemáticas+1

    Python · TypeScript

  • shell
    Próximamente

    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.

    Intermedio12 etapas~14 hSistemas
    procesosforkexec+2

    C · Rust · Go · Zig