🧪 Problem-Driven Systems Lab
Runtimes

Los 7 stacks del laboratorio

El mismo problema, la primitiva nativa de cada runtime. Donde un lenguaje no trae la herramienta โ€” el RwLock sin deadline de Rust, el pool que Go no tiene โ€” el perfil lo dice en vez de disimularlo con una capa propia.

๐Ÿ˜
Hub en el puerto 8100

PHP 8.3

Modelo de ejecucion: Proceso por peticion, sin estado compartido entre requests

Stack principal hoy para profundidad funcional y comparacion before/after.

Muestra los 20 casos con la mayor profundidad funcional del laboratorio: UI nativa, PostgreSQL real, Prometheus y Grafana.

20/20 casos php:8.3-cli-alpine
docker compose -f compose.root.yml up -d --build
curl -s http://localhost:8100/01/health
Perfil del lenguaje →
๐Ÿ
Hub en el puerto 8200

Python 3.12

Modelo de ejecucion: Threads reales con GIL: paralelismo de I/O, no de CPU

Stack operativo real sobre los 20 casos con primitivas de stdlib.

Permite contrastar rendimiento, N+1 y observabilidad en otro runtime sin abandonar la narrativa problem-first.

20/20 casos python:3.12-alpine
docker compose -f compose.python.yml up -d --build
curl -s http://localhost:8200/01/health
Perfil del lenguaje →
๐ŸŸข
Hub en el puerto 8300

Node.js 22

Modelo de ejecucion: Event loop de un solo hilo con I/O asincronico delegado

Stack operativo real en observabilidad comparada y cancelacion.

Ideal para mostrar transferibilidad del criterio fuera de PHP; monitorEventLoopDelay hace visible el bloqueo del hilo unico.

20/20 casos node:22-alpine
docker compose -f compose.nodejs.yml up -d --build
curl -s http://localhost:8300/01/health
Perfil del lenguaje →
โ˜•
Hub en el puerto 8400

Java 21

Modelo de ejecucion: Threads del SO con paralelismo real; JVM con JIT y GC generacional

Stack operativo real con primitivas concurrentes de java.util.concurrent.

Java 21 sirve los 20 casos detras del hub :8400; el tipado fuerte y el pool explicito hacen visible la capacidad que otros runtimes esconden.

20/20 casos eclipse-temurin:21-jdk-alpine
docker compose -f compose.java.yml up -d --build
curl -s http://localhost:8400/01/health
Perfil del lenguaje →
๐Ÿ”ต
Hub en el puerto 8500

.NET 8

Modelo de ejecucion: ThreadPool con async/await que libera el hilo durante la espera

Stack operativo real con primitivas BCL distintivas por caso.

.NET 8 sirve los 20 casos detras del hub :8500 con paridad funcional 1:1 frente a Java.

20/20 casos mcr.microsoft.com/dotnet/sdk:8.0
docker compose -f compose.dotnet.yml up -d --build
curl -s http://localhost:8500/01/health
Perfil del lenguaje →
๐Ÿน
Hub en el puerto 8600

Go 1.23

Modelo de ejecucion: Goroutines multiplexadas por el runtime sobre threads del SO

Stack operativo real donde canal + select cubren casi toda la concurrencia.

context.Context propaga deadlines que el callee si observa; sin pool de threads que dimensionar.

20/20 casos golang:1.23-alpine
docker compose -f compose.go.yml up -d --build
curl -s http://localhost:8600/01/health
Perfil del lenguaje →
๐Ÿฆ€
Hub en el puerto 8700

Rust 1.83

Modelo de ejecucion: Threads del SO sin GC; liberacion deterministica por Drop

Stack operativo real sin recolector de basura ni runtime asincronico.

La ausencia de GC hace medible en el caso 05 lo que en otros runtimes es una promesa; la contrapartida es que std no trae HTTP ni JSON.

20/20 casos rust:1.83-alpine
docker compose -f compose.rust.yml up -d --build
curl -s http://localhost:8700/01/health
Perfil del lenguaje →

Cobertura real

Los diagramas se generan desde el mismo catalogo que alimenta esta pagina, con scripts/generate_diagrams.py. Un octavo stack los redibuja solo.

Cobertura de los 20 casos en los 7 stacks
Modelos de ejecucion comparados por stack