In questa sezione

Ogni errore segnalato da lungo ha un codice stabile, stampato come error[LNGxxxx]: …. In Rust, lungo_build::Error::code() lo restituisce come lungo_build::ErrorCode. Un codice non viene mai riutilizzato per una condizione diversa.

Intervallo Fase
LNG01xx Progetto e toolchain
LNG02xx Lean
LNG03xx Worker
LNG04xx Extern
LNG05xx Generazione del codice
LNG06xx Politica di fiducia e di garanzia
LNG07xx Registrazioni di garanzia

Per risolvere i problemi più comuni, consulta Come diagnosticare una build di lungo che fallisce.

Progetto e toolchain

LNG0101

Progetto Lean non valido. Il progetto Lake è incompleto o incoerente: manca lakefile.toml/lakefile.lean, lake-manifest.json manca o non è valido, una dipendenza bloccata non è stata materializzata, lean-toolchain è malformato, oppure la configurazione di Lake è stata modificata durante la build.

error[LNG0101]: invalid Lean project: /work/app/lean/lake-manifest.json is missing; run `lake update` once and commit the manifest

LNG0102

Toolchain Lean non supportata. lean-toolchain indica una toolchain che lungo non supporta, compresi nomi mobili come stable. Il messaggio elenca le toolchain supportate; vedi piattaforme.

LNG0103

Toolchain Lean non installata. La toolchain fissata non è installata e la configurazione non ne consente l’installazione. Installala con elan toolchain install <toolchain> oppure con lungo setup.

LNG0104

Ambiente di build non supportato. Nell’ambiente manca qualcosa di cui lungo ha bisogno (una variabile di Cargo fuori da uno script di build, una directory home o di cache), oppure l’ambiente non può offrire una funzionalità richiesta: la modalità LeanOracle in cross-compilazione o su un target MSVC, un limite di memoria del worker dove non può essere applicato, una toolchain il cui lean --version non corrisponde a quella fissata.

LNG0105

Errore di input/output. Un’operazione sul file system è fallita. Il messaggio indica l’operazione e l’errore del sistema operativo.

LNG0106

Comando esterno fallito. È fallito uno strumento eseguito da lungo: lake env, la build del worker stesso oppure, in modalità LeanOracle, la generazione C di Lake, leanc o llvm-ar. Il messaggio contiene l’output del comando.

LNG0107

Configurazione non valida. La configurazione della build è malformata o non può avere effetto: una chiave sconosciuta o un valore errato in lungo.toml, un nome di modulo generato che non è composto da lettere, cifre, _ e - (compreso un nome di pacchetto Lake inutilizzabile senza name), due progetti Lean nello stesso script di build che genererebbero lo stesso modulo, nessun OUT_DIR e nessun out_dir fuori da uno script di build, oppure un’impostazione di modellazione (type_attribute, struct_attribute, enum_attribute, field_attribute, skip_debug, disable_comments, extern_type) il cui percorso non seleziona nulla.

error[LNG0107]: field_attribute path `Geometry.Point.z` selects no field of a generated type

LNG0108

Runtime di lungo non disponibile. Un binding di linguaggio richiede il runtime precompilato di lungo e nessuno è disponibile: questo lungo è una build di sviluppo, che non conosce alcuna release, e non è stata indicata una distribuzione locale del runtime con --runtime-dir; oppure la release non contiene un runtime per il target richiesto. Vedi il runtime.

LNG0109

Checksum dell’artefatto del runtime non corrispondente. Un artefatto del runtime scaricato da lungo runtime fetch (o trovato nella cache) non ha il digest SHA-256 registrato in questa release di lungo. L’artefatto non viene usato e la copia in cache viene rimossa. Una discrepanza persistente significa che il download è stato manomesso o corrotto durante il trasferimento.

LNG0110

Output generato non aggiornato. lungo generate --verify (o --link) ha trovato una directory di output i cui sorgenti generati sono diversi da quelli che il progetto genera ora; il messaggio elenca ogni file modificato, mancante o in più. Non vengono confrontati né il registro della build (build-info.json) né un prodotto di piattaforma (il program.wasm del binding TypeScript). Esegui lungo generate e fai il commit dei sorgenti che scrive.

LNG0111

Nessun aggiornamento disponibile per questo lungo. lungo self update non ha nulla da installare, oppure non è ciò che aggiorna questo lungo. Il messaggio dice quale dei casi: questo lungo non è una release del registro (è stato compilato dai sorgenti o con cargo install), e quindi non conosce alcuna linea di release; lo ha installato un gestore di pacchetti, e il messaggio indica il comando che lo aggiorna; il registro delle release non è raggiungibile, oppure non ha pubblicato nulla sul canale di questo lungo o per questa piattaforma. Il comando installato resta com’è. Vedi aggiornamento.

LNG0112

Release non attendibile. lungo self update ha scaricato qualcosa che non accetta come release di lungo: la firma del manifest della release non risale alle chiavi con cui questo lungo è stato compilato, oppure l’archivio non è il file che il manifest descrive (la dimensione o il digest SHA-256 differiscono), oppure il comando che contiene non dichiara la versione con cui è stato pubblicato. Non viene installato nulla e il download viene scartato. Un errore persistente significa che il registro, o la connessione verso di esso, sta servendo qualcosa che non è stato pubblicato.

Lean

LNG0201

Lean ha rifiutato il programma. L’elaborazione, il controllo delle dimostrazioni da parte del kernel o il compilatore di Lean sono falliti. Il messaggio contiene la diagnostica di Lean con le posizioni nel sorgente.

error[LNG0201]: Lean elaboration failed

error: Shapes.lean:12:75: unsolved goals

Worker

LNG0301

Richiesta non soddisfacibile. La configurazione chiede qualcosa che il programma non fornisce, per esempio un export inesistente o un modulo radice fuori dal pacchetto radice del progetto.

LNG0302

Output del compilatore non rappresentabile. L’adattatore del worker per la toolchain non riesce a codificare l’output del compilatore di Lean come Bridge IR. Indica una lacuna nel supporto di lungo per quella toolchain.

LNG0303

Il worker si è interrotto. Il processo del worker è terminato senza una risposta: è andato in crash, è uscito o è stato terminato. Il messaggio contiene lo stato di uscita, l’output e gli eventuali limiti di risorse in vigore.

LNG0304

Tempo del worker scaduto. Il worker non ha terminato entro worker_timeout; il worker e tutti i processi che aveva avviato sono stati terminati.

LNG0305

Limite di risorse del worker superato. Il sistema operativo ha fermato il worker perché ha superato worker_cpu_limit.

LNG0306

Errore di protocollo del worker. La risposta del worker è malformata, oppure la versione del protocollo, della Bridge IR o dell’adattatore, o il suo commit di Lean, differisce da ciò che lungo si aspetta. Un worker in cache non aggiornato viene ricompilato automaticamente; errori di protocollo persistenti indicano un problema di installazione.

Extern

LNG0401

Simbolo extern non risolto. Una dichiarazione @[extern] raggiungibile dai moduli radice non è implementata né da una definizione Lean @[export] né dal runtime di lungo, e non è un’operazione di una facility (@[lungo_operation C]), che solo l’host implementa; oppure è un’operazione per cui l’output Rust non ha una mappatura rust_extern. Il messaggio indica la dichiarazione, il suo simbolo, il tipo Lean, la rappresentazione richiesta e la posizione nel sorgente.

error[LNG0401]: unresolved Lean external symbol

Declaration: Unknown.providerSend
Symbol: provider_send
Lean type: Nat → Nat
Expected runtime representation: (tobj) -> tobj
Source: lean/Unknown.lean:3:1

Provide a Rust mapping with Builder::rust_extern("provider_send", "crate::path::to::function")

LNG0402

Simbolo extern implementato due volte. Un simbolo implementato da una definizione Lean @[export] è fornito anche dal runtime o da una mappatura rust_extern.

LNG0403

Simbolo del runtime rimappato. Una mappatura rust_extern indica un simbolo implementato dal runtime di lungo; le primitive del runtime non possono essere sostituite.

LNG0404

Rappresentazione dell’extern non corrispondente. Le rappresentazioni dei parametri o del risultato di una primitiva del runtime differiscono da quelle della dichiarazione Lean che ne usa il simbolo. Indica un difetto di lungo.

LNG0405

Mappatura rust_extern inutilizzata. Una mappatura indica un simbolo che nessuna dichiarazione extern raggiungibile dai moduli radice utilizza.

LNG0406

L’extern non ha una firma Rust. Una mappatura rust_extern punta a un extern il cui tipo Lean non determina una firma di funzione Rust (per esempio uno senza una costante a livello di sorgente). Questi extern possono essere implementati solo in Lean o dal runtime.

LNG0407

Forma di extern non supportata in modalità LeanOracle. In modalità LeanOracle, le funzioni dell’applicazione possono implementare solo extern dichiarati @[extern "symbol"].

LNG0408

Primitiva non supportata sul target. Il programma raggiunge una primitiva del runtime che il target non può fornire. Su WebAssembly (il binding TypeScript) non ci sono thread, processi figli né socket: IO.asTask e le altre primitive dei task, IO.Process e la rete non sono disponibili. Il messaggio indica la primitiva e la dichiarazione che la usa.

Generazione del codice

LNG0501

Bridge IR non valida. Il programma viola un invariante su cui si basa il backend (scope, arietà, rappresentazioni, letterali, completezza delle chiusure). Indica un difetto nel worker o nel suo adattatore.

LNG0502

Output del compilatore non supportato. L’output del compilatore contiene un costrutto che il backend non implementa, come i tipi struct o union dell’IR.

LNG0503

Errore interno del generatore di codice. È stato violato un invariante interno del generatore di codice. Indica un difetto di lungo.

LNG0504

Plugin generatore fallito. Un plugin generatore (lungo-gen-<language> nel PATH, vedi plugin) non è stato possibile eseguirlo, è uscito con un errore, ha scritto una risposta che non è una GenerateResponse valida oppure ha segnalato errori. Il messaggio contiene il suo standard error o i suoi errori.

Politica di fiducia e di garanzia

LNG0601

Violazione della politica di fiducia. Un export, o la prova di un’affermazione su di esso, viola deny_sorry, deny_axioms o deny_unsafe. Il messaggio elenca ogni violazione con le dipendenze responsabili.

error[LNG0601]: exported declarations violate the configured trust policy:
  Formal.step depends on `sorry` (deny_sorry)

LNG0602

Export senza un’affermazione dimostrata. require-claims ([assurance] di lungo.toml, Builder::require_claims) seleziona un export che non è il soggetto di alcuna affermazione dimostrata: nessun teorema con @[lungo_claim … subject <export> …] la cui prova sia priva di sorry. Enunciate che cosa fa l’export e dimostratelo, oppure restringete la politica.

error[LNG0602]: the export Formal.step has no proved claim (`require-claims` selects it with "."); state what it does with `@[lungo_claim]` on a theorem about it

LNG0603

Assunzione proibita. Un’affermazione dimostrata prende come ipotesi un’assunzione che forbid-assumptions nomina (o un’assunzione di una facility che nomina), oppure un export chiama un’operazione di una facility che nomina.

Registrazioni di garanzia

LNG0701

Registrazione di garanzia malformata. Una registrazione (decl._lungo_…) non è nella forma che scrive la libreria Lean di lungo, oppure nomina un tipo di specifica, una relazione, un ruolo o un identificatore di facility che non è una stringa con spazio dei nomi ben formata, o che non è tra quelli che lungo definisce nello spazio dei nomi lungo. Le registrazioni le scrivono gli attributi @[lungo_…]; una scritta a mano è letta e verificata allo stesso modo.

LNG0702

Riferimento di garanzia pendente. Una registrazione nomina una dichiarazione che non esiste, un’affermazione cita una specifica senza @[lungo_spec], oppure un’operazione o un’assunzione nomina qualcosa che non è una facility.

LNG0703

Affermazione non valida. La prova di un’affermazione non è un teorema, il suo soggetto è un teorema, oppure l’enunciato della prova non ha la forma che la sua relazione lungo.* richiede (per lungo.decides, f … = true ↔ P …).

LNG0704

Soggetto dell’affermazione assente dal suo enunciato. L’enunciato della prova di un’affermazione non menziona uno dei suoi soggetti o delle sue specifiche: il teorema non riguarda ciò che l’affermazione dice.

LNG0705

Identificatore di garanzia duplicato. Due facility hanno lo stesso identificatore.

LNG0706

Incoerenza di facility. Un’operazione di una facility non è una dichiarazione @[extern] con una voce per C, appartiene a una facility asincrona, oppure ha un simbolo che Lean (@[export]) o il runtime di lungo implementano già; oppure una mappatura rust_extern nomina un extern che non è un’operazione di una facility.

LNG0707

Interfaccia asincrona non valida. Un export restituisce un programma asincrono (Lungo.Async.Program op α) la cui istanza Lungo.Async.Interface op non è registrata con @[lungo_facility], le cui operazioni non possono passare all’host, o il cui tipo di risposta dipende dagli argomenti dell’operazione; oppure un programma asincrono compare dentro un valore invece che come risultato di una funzione.

LNG0708

Impronta di garanzia discordante. lungo assurance --compose: due documenti di garanzia descrivono in modo diverso una registrazione con lo stesso nome (una specifica, un’affermazione, una facility o un’assunzione): da un altro pacchetto Lake, oppure con un altro significato. I pacchetti sono stati generati da definizioni diverse; rigenerateli dagli stessi sorgenti Lean.

LNG0709

Libreria di garanzia incompatibile. La libreria Lean di lungo (Lungo.Registry.schemaVersion) scrive le registrazioni in un formato che questo lungo non legge. Usate la libreria rilasciata con questo lungo.

LNG0710

Il programma dipende dall’inizializzazione di un modulo non collegato. Il programma usa un valore che un modulo calcola quando viene inizializzato (una dichiarazione initialize o [init]), e lungo non collega quel modulo: è caricato solo per le sue registrazioni di garanzia (assurance-modules), oppure è raggiunto solo attraverso la parte di sola compilazione della libreria Lean di lungo (Lungo.Attr), quindi nulla inizializzerebbe il valore. Importate il modulo dai moduli del programma. (L’altro codice di un tale modulo, che il compilatore di Lean può riusare, viene eseguito così com’è.)

LNG0711

Documento di garanzia non valido. Un assurance.json passato a lungo assurance --compose non si può leggere, oppure ha una versione di schema che questo lungo non legge.