Central Docs
Catálogo Inicio

ABI y declaraciones externas

Índice

extern declara una firma que existe fuera de Bagron y registra la biblioteca con su dominio de target:

clause System 'windows'
clause Arch 'amd'

extern windows "kernel32":
    GetStdHandle(kind: uint32) *: void

Los dominios actuales son windows y c. Deben ser compatibles con System; ningún dominio externo se permite en baremetal.

Una firma externa puede usar escalares, void*, punteros tipados y agregados compatibles con la ABI. No puede recibir arrays, chain, buffer derivado ni Len_t/Size_t.

Directorios locales

Solo el módulo de entrada puede añadir directorios de enlace:

#link "./bins"
#link "vendor/SDL3/bins"

extern windows "SDL3":
    SDL_Init(flags: uint32) int32

Las rutas deben existir y quedar dentro del proyecto. core/compiler/links.py valida la ruta y core/backend/llvm/links.py resuelve la variante ABI.

Descriptores opaque

opaque HANDLE: void*

extern windows "kernel32":
    GetStdHandle(kind: uint32) HANDLE

Un descriptor opaque solo coincide con otro descriptor del mismo nombre. No se puede desreferenciar, indexar, convertir ni comparar como puntero común.