In questa sezione

Un pacchetto generato dipende dal runtime di lungo della release che lo ha generato, che la libreria di supporto del linguaggio (oppure, per C, il progetto CMake) scarica e verifica. Può essere pubblicato come qualsiasi pacchetto del suo linguaggio. Generalo con una release di lungo (non con una distribuzione locale, i cui pacchetti si compilano solo sulla macchina che li ha prodotti), e rigeneralo quando il progetto Lean o lungo cambiano; la directory di output contiene build-info.json, che registra da che cosa è stata generata.

Go

Genera in una directory del tuo modulo e fanne il commit:

lungo generate --go_out=internal/geometry --go_opt=package=geometry
go mod tidy   # aggiunge github.com/machinefabric/lungo-go alla versione della release

Gli utenti del tuo modulo hanno bisogno di cgo e di un compilatore C, nient’altro. Mantieni lungo-go alla versione con cui il pacchetto è stato generato: il pacchetto non compila con un’altra.

Python

lungo generate --python_out=geometry-py --python_opt=distribution=geometry,version=1.2.0
python -m build --wheel geometry-py

La wheel è py3-none-<platform> (una per piattaforma, per ogni Python 3): costruiscila su ogni piattaforma per cui pubblichi, per esempio con cibuildwheel. Su Linux, riparala con auditwheel repair --exclude liblungo.so: il runtime viene da lungo-py, da cui la wheel dipende. Su macOS, anche delocate deve escludere liblungo.dylib. Pubblica le wheel come al solito (twine upload, oppure la pubblicazione fidata).

Swift

Genera nel suo repository (o in una sua directory) e crea un tag:

lungo generate --swift_out=GeometryKit --swift_opt=module=Geometry

Le applicazioni lo aggiungono con .package(url: …, exact: …) e usano il prodotto Geometry; il codice Objective-C usa il prodotto GeometryProgram. La sua dipendenza da lungo-swift porta il runtime come XCFramework per macOS, iOS e il simulatore iOS.

npm

lungo generate --ts_out=geometry-js --ts_opt=package=@acme/geometry,version=1.2.0
cd geometry-js && npm publish --access public

Il pacchetto contiene program.wasm e funziona su Node.js e nei browser (i bundler devono copiare program.wasm accanto a index.js, oppure l’applicazione passa il modulo a load({ module })). program.wasm è un prodotto della build, collegato quando il pacchetto viene generato: pubblica dalla directory scritta da lungo generate e non mettere il modulo sotto commit (vedi prodotti di piattaforma).

C e C++

Distribuisci la directory generata (per esempio come submodule Git o archivio dei sorgenti) e includila con add_subdirectory; il suo progetto CMake scarica e verifica il runtime. Le build offline installano il runtime (lungo runtime fetch, oppure l’archivio della release) e configurano con -D<ID>_FETCH_LUNGO=OFF -DCMAKE_PREFIX_PATH=<runtime>.