¿Por qué Janet? (2023)

Sintaxis, estilo lispy y legibilidad

  • A muchos les gusta la nomenclatura de “Lisp modernizado” de Janet (fn, first, do, set) y las s-expressions consistentes, especialmente para árboles/JSON/DSLs.
  • Otros siguen detestando fuertemente los paréntesis de Lisp, encontrándolos difíciles de leer/editar, especialmente para expresiones largas o con mucho contenido matemático.
  • Algunos sostienen que las quejas sobre la sintaxis están exageradas dado que hay buenos editores (Parinfer, edición estructural) y que todos los lenguajes convencionales tienen sintaxis fea o inconsistente de distintas maneras.
  • Los corchetes usados para parámetros y vectores (al estilo Clojure) son polarizantes; algunos encuentran elegante la convención una vez aprendida, otros no pueden superarla.

Rendimiento e implementación

  • Se informa que Janet está aproximadamente en el territorio de Lua (PUC-Rio); algunos benchmarks muestran que es ~5–10x más rápido que Python en ejecuciones largas, ligeramente más lento que Fennel sobre LuaJIT, e incluso supera a Go para tareas pequeñas con mucho tiempo de compilación.
  • Tiene una VM de bytecode con hilos; no al nivel de JIT, pero se la considera “suficientemente rápida” para scripting y herramientas pequeñas.
  • El estado global es local al hilo; un janet_init() por hilo. Se debate su idoneidad para un embedding complejo con múltiples intérpretes/hilos (p. ej., plugins de audio).

Macros, DSLs y poder en tiempo de compilación

  • Las macros y la homoiconicidad son un gran atractivo. Los ejemplos incluyen DSLs de matemáticas infijas, DSLs de consultas tipo SQL/dataframe, vectorización estilo APL/J y DSLs de consultas web.
  • Janet facilita trasladar trabajo pesado al tiempo de compilación (p. ej., incrustar grandes tablas de datos como estructuras literales en el binario).
  • Algunos enfatizan que el “momento Lisp” viene del desarrollo guiado por REPL, la edición estructural y tratar el código como datos, no solo de las macros por sí solas.

Parseo: PEGs vs expresiones regulares

  • Janet promueve el parseo de texto basado en PEG en lugar de regex.
  • Quienes lo apoyan dicen que los PEG son más claros y más potentes para gramáticas complejas.
  • Los críticos llaman a los PEG un “callejón sin salida evolutivo”, señalan alternativas no conmutativas y depuración complicada, y observan que las gramáticas reales pueden exponer debilidades del parser.
  • Otros responden que los motores de regex también tienen comportamiento dependiente del orden y problemas de backtracking.

Integrabilidad, sandboxing y casos de uso

  • La integrabilidad es un punto de venta clave; la gente usa Janet para scripting, marcado con scripts incrustados, motores de juego, servicios web y binarios pequeños.
  • El sandboxing integrado (deshabilitar conjuntos de características de forma irreversible) es elogiado para incrustar código no confiable de forma segura o limitar las capacidades de utilidades.
  • La red integrada y un DSL de shell lo hacen atractivo como reemplazo de sh/Python/awk para scripts de sistema más grandes.

Ecosistema, herramientas y comparaciones

  • Positivos: núcleo pequeño y simple; arranque rápido; posibilidad de construir binarios estáticos; documentación y tutoriales de la comunidad; uso real en producción (apps web, herramientas, software artístico).
  • Negativos: ecosistema de bibliotecas limitado (p. ej., tooling HTTP, TLS, routing), versionado de paquetes débil y cierta confusión sobre “colecciones inmutables” que a menudo la stdlib devuelve de forma mutable.
  • Se compara a menudo con Clojure (inmutabilidad, foco en datos), Lua/Fennel (integración, velocidad), Tcl (DSLs, scripting) y Babashka (scripting de shell). Las preferencias varían según la plataforma, las necesidades de procesamiento de datos y los compromisos entre arranque y rendimiento.

IA, comunidades y metadiscusión

  • Un gran subhilo deriva hacia “comunidades sin IA”, defensas contra spam/bots (web-of-trust, verificación de identidad, muros de pago) y cómo la IA afecta a rankings y foros.
  • Algunos elogian los espacios moderados por humanos y expresan oposición ideológica al contenido generado por LLM; otros encuentran alienantes las prohibiciones absolutas o las pruebas de pureza.