Biff.core: la nueva librería que articula el framework Biff en Clojure

Fuentes: Biff.core: the glue library for the Biff framework
Imagen generada por IA con el prompt: Clean editorial illustration of interlocking translucent Clojure module blocks merging into a central system map, soft pastel gradient background, isometric style, no text or logos.
Imagen generada con IA

Biff.core es la primera de las doce librerías en las que se está dividiendo el framework Biff, un proyecto en Clojure para componer aplicaciones web. Su función principal es servir de pegamento entre el resto de módulos: ofrece las interfaces comunes y el sistema de composición que cualquier proyecto basado en Biff necesita para arrancar.

El núcleo de la librería gira en torno al concepto de funciones de inicialización (init functions). Cada módulo expone un mapa con una clave :biff.core/init cuya función toma el conjunto de módulos del proyecto y devuelve un fragmento listo para incorporarse al mapa de sistema. De este modo, añadir una nueva pieza se reduce a incluir un módulo, sin tener que pegar código repetitivo en el espacio de nombres principal.

La versión 2 de Biff mantiene la estructura clásica de módulos y componentes, pero elimina buena parte del boilerplate que la versión original arrastraba. Para preservar el enlace tardío (late binding) que se obtenía al definir un var handler en el código de la aplicación, la librería introduce un sistema de claves y funciones asociado al mapa de sistema: por ejemplo, el valor :com.example/my-thing se obtiene mediante :com.example/get-my-thing, lo que permite recalcular recursos en caliente.

El propio autor reconoce que existen diseños más ambiciosos —como declarar dependencias entre componentes o fusionar módulos y ciclo de vida en una sola abstracción—, pero los descarta por motivos pedagógicos: mantener componentes como una secuencia explícita de funciones sobre un mapa resulta más fácil de entender y razonar. El proyecto se publica junto a una demo y a un starter que ya ordena los componentes, y en el anuncio se incluye una oferta de empleo para un puesto senior de ClojureScript y Python en Tyba, una empresa de software de modelado para proyectos de energías renovables.