Saltar a contenido

Wheels

vcraft build escribe un wheel completo, desde cero: DEFLATE, ZIP, tar, SHA-256, CRC32, METADATA, WHEEL y RECORD, sin zlib.

$ vcraft build --release
dist/my_extension-0.1.0-cp314-cp314-linux_x86_64.whl

Tags

El tag nombra el intérprete, la ABI y la plataforma. Un build contra un intérprete free-threaded se etiqueta cp314t; un cross build se etiqueta para el target, no para el host.

ABI estable (abi3)

--abi3 <versión> construye un wheel usable desde versión en adelante, así que un solo wheel cubre varios CPython:

$ vcraft build --abi3 3.11
dist/my_extension-0.1.0-cp311-abi3-linux_x86_64.whl

El tag nombra el suelo, no el intérprete que lo construyó. Una extensión abi3 es .abi3.so en Unix y .pyd a secas en Windows, porque es el único sufijo que el cargador de Windows importa.

Políticas de Linux

Un wheel para Linux debería nombrar la libc contra la que se enlazó. Declararlo explícitamente:

$ vcraft build --target linux-x86_64-gnu --manylinux 2_17
$ vcraft build --target linux-x86_64-musl --musllinux 1_2

Sin política, el tag es linux_x86_64, que PyPI rechaza.

Compilación cruzada

--target construye para otra plataforma cuando su compilador está presente:

$ vcraft build --target linux-aarch64-gnu --manylinux 2_17
$ vcraft build --target windows-amd64

La misma lista de --target funciona en vcraft.toml (ver Configuración) y en la CI generada.

Publicar

$ vcraft publish

publish rechaza un build editable antes de elegir un uploader, así que una ruta local no puede llegar a PyPI por accidente.