Nix: el árbol infinito que convierte cada botón de Super Mario en una derivación
Super Mario Derivations

El lenguaje Nix es perezoso: solo evalúa lo que necesitas. Eso permite conjuntos de atributos infinitos, como los de Nixpkgs, que se contienen a sí mismos. El autor explota esta propiedad para crear un emulador de NES donde cada fotograma de Super Mario Bros. 3 es una derivación en el store de Nix. Pulsar botones equivale a recorrer un árbol infinito generado bajo demanda, y el store actúa como historial de estados guardados. El resultado: puedes reproducir el juego con Nix, y cada movimiento es reproducible y cacheable.
El camino de atributos es un paseo por un árbol generado perezosamente.
- setheron
Qué divertido ver esto aquí.
Lo escribí de camino (en el avión) a DEFCON34 y Nix Vegas[1]
¡Ni siquiera tuve la oportunidad de pasear y ver algo de DEFCON en sí porque la comunidad de Nix me tuvo cautivo todo el tiempo!
Di 3 charlas que actualizaré en mi sitio[2] una vez que las publiquen.
[1]: https://nix.vegas
- psyclyx
¡Genial! Muy triste haberme perdido Nix Vegas, parece que estuvo especialmente bueno este año. Yo[0] hackeé algo similar[1] para la Game Boy hace un par de meses[2], generando fotogramas con builtins.trace en lugar de imágenes, y resultó útil como prueba de presión de memoria mientras trabajaba en una implementación de evaluador de Nix[3].
Pokemon era tan lento que crear scripts TAS, incluso con guardados/cargas de estado para cada ejecución, se volvió inviable, así que terminé buscando contra una implementación en C del mismo emulador. Finalmente venció a Brock, pero era muy ineficiente en botones y habría tomado 10 horas reproducirlo bajo Nix, si es que hubiera llegado tan lejos. En mi implementación, si apago el recolector de basura, el script mucho más corto en [3] agota la memoria en una máquina con 128 GB aproximadamente a 2/3 del camino.
[0]: mis claudes
[1]: https://github.com/psyclyx/nixboy
[2]: https://x.com/psyclyx/status/2066249660046725213
[3]: https://github.com/psyclyx/fix#a-less-rigorous-benchmark
- JHonaker
Qué abuso de Nix tan deliciosamente loco. Disfruté muchísimo leyéndolo.