Grove Albero di compatibilità
La directory grove/ di livello superiore contiene l'ecosistema di librerie convertito oltre ad applicazioni ed esempi storici. Tutte le 218 directory delle biblioteche hanno ora una disposizione finale G01–G22; le applicazioni esterne a grove/libs richiedono comunque una verifica di compatibilità individuale.
Stato attuale
Il compilatore operativo e le sue librerie organizzate automaticamente risiedono in:
seed/compiler/llvm/
├── build/seed
└── libs/
Il set di librerie corrente è documentato in Riferimento libreria. Questi pacchetti utilizzano una sintassi pulita lower-snake, producono le attuali interfacce .sdi e partecipano alle suite gate del compilatore.
Ogni pacchetto grove/libs ha un manifest corrente e un gate case. Le fonti della libreria conservate non contengono commenti hash legacy, dichiarazioni nominali in maiuscolo o FFI diretta. Un pacchetto può ancora essere deliberatamente archived: la sua interfaccia attuale convalida i limiti configuration/ownership mentre la vecchia capacità di esecuzione rimane non disponibile.
Pertanto:
- distinguere i pacchetti operational/ported da quelli deliberatamente archiviati;
- non copiare gli esempi Grove nelle guide linguistiche attuali senza compilarli
loro con
./seed/seed check; - non dedurre un compilatore integrato da una funzione non qualificata utilizzata da legacy Grove codice;
- utilizzare
seed/tools/grove_gate.py gNNe la linea di base corrispondente come prove di compatibilità; - promuovere un pacchetto nel catalogo corrente solo dopo averlo analizzato, controllato, costruisce e ha un contratto ownership/effects/interface corrente esplicito.
Disposizione del deposito
L'albero di compatibilità è organizzato come:
grove/
├── libs/ # G01–G22 classified library corpus
├── apps/ # mixed-generation applications and tools
└── examples/ # examples that require individual compatibility verification
Per le biblioteche, la disposizione e l'evidenza dei cancelli dimostrano il limite di supporto dichiarato. La sola presenza della directory rimane insufficiente per app ed esempi.
I guariti Ridge in cui vive la famiglia del comando grove/apps/ridge/. I suoi sette programmi vengono compilati rispetto a ridge pacchetto. Lo stack incorporato ricostruito include ridge_sql, il cui nucleo relazionale limitato ha proiezione tipizzata eseguibile, intervallo, join, aggregazione, sottoquery, indice, vincolo, transazione e SQLite/PostgreSQL copertura differenziale. Il demone pgwire di loopback supporta query semplici e un sottoinsieme limitato di query preparate. grove/apps/ridge/ROADMAP.md separa le prove storiche dalla capacità attuale: la v0.2 è congelata con prove P13 rinunciate incomplete, mentre la versione locale v0.3 V3-G0-G17 MVCC/relational, transazione, SQL, e index/planner/spill il percorso è completo e l'espansione è attiva su V3-G18. Il lavoro del cluster v0.4 è bloccato tramite V3-G25 e non è stato avviato. Suo SQLite/PostgreSQL l'imbracatura di confronto si trova accanto alle app di seguito grove/apps/ridge/benchmarks/.
La guida utente e operatore consolidata è Ridge Database.
Portare a Grove pacchetto
Utilizzare questa sequenza quando si sposta un pacchetto nel linguaggio pulito:
- Esegui
./seed/seed check path/to/src/lib.sde mantieni la diagnostica come inventario iniziale di compatibilità. - Sostituisci la sintassi precedente: nomi nominali del serpente inferiore,
ret,//, ADT attuali, e canali di biblioteca ordinari invece di built-in storici. - Sostituisci gli helper di runtime impliciti con le attuali operazioni del compilatore sicuro o un file
pacchetto ordinario sotto
seed/compiler/llvm/libs. - Effettua allocazione, panico, blocco, FFI, proprietà, clone e provenienza effetti espliciti.
- Inserisci puntatori grezzi, chiamate di sistema, FFI, unioni, atomi, operazioni volatili e
memoria cruda dietro stretto
unsafeinvolucri. - Aggiungi un
seed.toml; i pacchetti con dichiarazioniexterndevono elencare le piattaforme e fornire una radiceINSTALL.md. - Verificare la compilazione diretta del codice sorgente e il consumo di
.sdieliso dal codice sorgente. - Aggiungi regressioni positive e negative del compilatore prima di documentare il file pacchetto come operativo.
Il porting dovrebbe preservare il comportamento laddove utile, ma la sintassi archiviata e i contratti di runtime non sono requisiti di compatibilità per il compilatore pulito.
Importazioni
Gli attuali pacchetti gestiti dal compilatore utilizzano importazioni di pacchetti semplici:
use "io"
use "parse"
use "vec"
Preferisci le importazioni di pacchetti supportate da manifesti e .sdi interfacce. Un'importazione del percorso di origine del repository ignora il limite del pacchetto e non deve essere introdotta nella conversione Grove codice.