Librerías `.lib`
Índice
- Modelo y estructura
- lib1: fuente validada
- lib2: objeto nativo
- Consumo y namespaces
- Integridad y herramientas
La interfaz actual para crear paquetes es:
vnma run main.py library --v1 source -o libs/Math.lib --name Math --version 1.0.0
vnma run main.py library --v2 source -o libs/Math.lib --name Math --version 2.0.0
vnma run main.py inspect libs/Math.lib
vnma run main.py verify libs/Math.lib
vnma run main.py unpack libs/Math.lib unpacked
package y package2 ya no son comandos válidos.
lib1: fuente validada
--v1 conserva módulos, tabla pública, snapshot frontend, IR serializado y
dependencias nativas. La validación usa la semántica normal, pero no exige un
main del usuario.
Una aplicación importa la librería desde el módulo de entrada:
library "Math.lib" as Math
func main() int32:
return Math.square(3)
El paquete se resuelve bajo libs/ del proyecto y solo exporta declaraciones
public.
lib2: objeto nativo
--v2 compila los módulos a un objeto nativo y empaqueta símbolos, target y
dependencias para el enlace final. El consumidor aporta su propio main y un
target compatible. core/library.py implementa ambos formatos; las pruebas de
formato están en tests/test_libraries.py y las de nombres estables en
tests/test_mangling.py.
verify comprueba cabecera, manifiesto, secciones y hashes. unpack rechaza
entradas ZIP que escapen del destino mediante ...