Sistema
lompi
El gestor de paquetes de Loment. Viene con el conjunto de herramientas y
no es un subcomando de loment — un programa aparte, con su
propia versión y su propia guía.
Una biblioteca es un directorio
No hay ningún formato de manifiesto que aprender ni un segundo lenguaje en el que escribirlo. Una biblioteca es un directorio lleno de archivos Loment, y las tres cosas que un sistema de paquetes normalmente inventa ya están en el lenguaje, se derivan de él o se generan:
Exportaciones — ya en el lenguaje
pub. Nada nuevo que declarar, nada que mantener sincronizado con el
código fuente.
Dependencias — las líneas use
No hay ninguna lista de dependencias. El resolutor lee las importaciones que el código fuente ya tiene, así que "declarado pero no usado" y "usado pero no declarado" no son errores que pueda siquiera producir — no son estados que existan.
Identidad — un hash de contenido recursivo
La identidad de un paquete se calcula a partir de su propio código fuente y de las identidades de todo aquello de lo que depende, hasta el fondo. Hashear solo los archivos propios de un paquete sería erróneo: el mismo código fuente ligado a dependencias distintas es otra cosa, y se fusionaría por error.
Eso último es lo que elimina toda una categoría de complejidad. No hay lenguaje de rangos de versión, ni resolutor, ni conflicto de resolución, porque dos versiones de una biblioteca son simplemente dos identidades — y pueden coexistir.
El archivo de etiqueta es Loment
Un paquete puede llevar un archivo .lomp. No es un manifiesto en el sentido
habitual: es código fuente Loment, con a lo sumo un nombre y una versión
que reportar, y no tiene sección de dependencias — porque las dependencias nunca se
declararon en un archivo para empezar. Si se omite, el nombre del directorio es el nombre
del paquete.
Los números de versión que contiene son etiquetas para las personas. La máquina no los usa para elegir nada; el hash de contenido ya lo hizo.
Por qué no el diseño habitual
Las bibliotecas no pueden distribuirse como binarios
Los genéricos se monomorfizan por instanciación, así que el compilador tiene que ver el código fuente para decidir qué generar. Un blob compilado más cabeceras no es una opción — y tampoco la clase de problemas que trae mantener en sintonía dos descripciones de una misma interfaz.
Sin servicio de registro
Los puntos de extensión son archivos en disco. No hay un servidor central que decida qué significa un nombre.
No forma parte de loment
lompi se instala junto al conjunto de herramientas y está en tu
PATH, pero se mantiene fuera de la superficie de comandos —
loment help no lo lista, y loment nunca le reenvía nada.
Esa separación es deliberada y se hace cumplir.
Lo que acepta hoy. Bibliotecas de código fuente Loment. Las bibliotecas
C reales se alcanzan mediante choose hosted — tú nombras la biblioteca en la
compilación —, pero todavía no son una dependencia instalable. Instalar
bibliotecas ajenas es para lo que sirve la próxima versión del gestor de paquetes.