Salsa es un framework para la programación incremental, diseñado para gestionar y optimizar el recálculo de valores derivados cuando sus dependencias cambian. Opera construyendo un grafo de dependencia explícito de funciones puras (queries) y sus resultados. Cuando una entrada o una dependencia intermedia cambia, Salsa invalida de manera eficiente solo las partes del grafo que se ven afectadas, evitando recálculos innecesarios. Esto se logra mediante un mecanismo de 'memoización' y 'revalidación' que marca los resultados como 'sucios' (dirty) o 'limpios' (clean), y solo recalcula los 'sucios' bajo demanda, propagando los cambios de forma perezosa (lazy).

Salsa es la base de sistemas de compilación y herramientas de desarrollo de alto rendimiento, especialmente en el contexto de lenguajes de programación con sistemas de tipos complejos o análisis estático intensivo. Un ejemplo prominente es el compilador de Rust, 'rustc', que utiliza una implementación de Salsa para gestionar la compilación incremental y el análisis semántico, permitiendo tiempos de compilación más rápidos para cambios pequeños. Otros proyectos que exploran o utilizan principios similares incluyen herramientas de análisis de código, IDEs y sistemas de construcción personalizados donde la eficiencia en la actualización de resultados derivados es crítica.

Para un arquitecto, Salsa es fundamental para diseñar sistemas que requieren alta reactividad y eficiencia en la gestión de cambios, como compiladores, IDEs, herramientas de análisis estático, o incluso pipelines de datos complejos. Su valor estratégico radica en la optimización del rendimiento al reducir drásticamente el trabajo redundante, lo que mejora la experiencia del desarrollador y la eficiencia de los recursos computacionales. Los trade-offs incluyen la complejidad inicial de modelar el problema en términos de 'queries' puras y la sobrecarga de mantener el grafo de dependencia. Sin embargo, el beneficio en sistemas con muchas interdependencias y cambios frecuentes suele superar estos costos, permitiendo la construcción de herramientas que serían inviables sin este tipo de optimización incremental.