Dune es el sistema de compilación de referencia en el ecosistema OCaml y un paso esencial para empezar a trabajar con este lenguaje. Este artículo ofrece una guía práctica dirigida a personas que se inician en OCaml, basada en un proyecto de ejemplo minimalista llamado "helloer", con el objetivo de explicar cómo construir bibliotecas, ejecutables y pruebas, y cómo organizar la estructura del proyecto.
Toda proyecto basado en Dune debe incluir en su raíz un archivo "dune-project", que actúa como punto de entrada y contiene los metadatos del proyecto: la versión de Dune utilizada, URL relevantes, dependencias, configuración de licencias y opciones para la generación automática del archivo opam. La primera línea debe ser obligatoriamente "(lang dune X.Y)", sin comentarios ni espacios adicionales, ya que determina las funcionalidades y la sintaxis que Dune reconocerá.
Dentro de los directorios del proyecto se colocan los archivos "dune", que son ficheros de especificación de compilación. Habitualmente hay uno por subdirectorio, aunque en el ejemplo se sitúa en la raíz. Estos archivos se componen de "stanzas", bloques declarativos que indican a Dune qué artefacto construir: una biblioteca, un ejecutable, un conjunto de pruebas, documentación o un binario instalable.
El artículo detalla tres stanzas clave: "library", que define una biblioteca reutilizable a partir de sus módulos OCaml; "executable", que empaqueta código en un binario ejecutable indicando sus dependencias y, opcionalmente, su nombre público para su distribución; y "test", que registra un objetivo de pruebas vinculado al alias "runtest". La guía se complementa con referencias a la documentación oficial de Dune y al foro de la comunidad OCaml.
