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:

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:

  1. Esegui ./seed/seed check path/to/src/lib.sd e mantieni la diagnostica come inventario iniziale di compatibilità.
  2. Sostituisci la sintassi precedente: nomi nominali del serpente inferiore, ret, //, ADT attuali, e canali di biblioteca ordinari invece di built-in storici.
  3. Sostituisci gli helper di runtime impliciti con le attuali operazioni del compilatore sicuro o un file pacchetto ordinario sotto seed/compiler/llvm/libs.
  4. Effettua allocazione, panico, blocco, FFI, proprietà, clone e provenienza effetti espliciti.
  5. Inserisci puntatori grezzi, chiamate di sistema, FFI, unioni, atomi, operazioni volatili e memoria cruda dietro stretto unsafe involucri.
  6. Aggiungi un seed.toml; i pacchetti con dichiarazioni extern devono elencare le piattaforme e fornire una radice INSTALL.md.
  7. Verificare la compilazione diretta del codice sorgente e il consumo di .sdi eliso dal codice sorgente.
  8. 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.