// dev log · WIP 2026
⚡SM-Soda
Servidor HTTP estático nativo. Binario único, cero dependencias.
Equivalente a python3 -m http.server sin Python, sin runtime, sin kraken de dependencias.
Doble implementación Lazarus/FPC + C — misma spec, dos toolchains, métricas reales.
Spec
// comportamiento esperado · ambas implementaciones
index.htmlhtml · css · js · png · jpg · svg · pdf · txt404 limpio en fichero no encontradoMétricas comparativas
| Métrica | FPC | C |
|---|---|---|
| Binario (stripped) | pendiente | pendiente |
| RSS idle | pendiente | pendiente |
| Startup hasta primer byte | pendiente | pendiente |
| req/s (wrk, 10 conn) | pendiente | pendiente |
| Compilador | fpc 3.2+ |
gcc · C99 |
| Deps externas | ninguna |
ninguna |
Dev log
⚡Origen del proyecto publicado
Jun 2026
Todo empieza con una necesidad real: servir ficheros estáticos en local durante desarrollo
sin depender de que haya un intérprete Python disponible. python3 -m http.server
funciona, pero requiere runtime. En un entorno donde el objetivo es binarios nativos sin
zoológico de dependencias, la solución obvia es escribirlo.
La doble implementación FPC + C no es redundancia — es el punto. Mismo comportamiento especificado, dos toolchains distintos, métricas reales comparables. Si difieren, hay un bug. Si coinciden, la spec está bien cubierta.
⚡Decisión: C puro sobre C++ cerrado
Jun 2026
Pregunta obvia: ¿C o C++? El proyecto es I/O + strings + sockets BSD.
No hay nada que justifique C++: sin clases, sin templates, sin STL.
socket() · bind() · listen() · accept() · send() · stat() · read() — todo POSIX estándar.
C++ añadiría std::string para evitar strncpy/snprintf.
No es suficiente motivo. C99, gcc, sin flags raros. Binario más pequeño,
comparación más justa con FPC, aprendizaje más limpio.
⚡Implementación feature 1: servir fichero estático en curso
Jun 2026
Primera iteración: GET /fichero.html → leer del disco → responder con headers HTTP/1.0 mínimos.
Sin directory listing aún, sin MIME types, sin 404 elaborado. Solo el flujo básico funcionando
en ambas implementaciones antes de añadir nada más.
Métricas tras esta feature: pendiente de compilación y medición.