Grove Árvore de compatibilidade
O diretório grove/ de nível superior contém o ecossistema da biblioteca convertida, além de aplicativos históricos e exemplos. Todos os 218 diretórios de bibliotecas agora têm uma disposição final G01–G22; aplicativos fora do grove/libs ainda exigem verificação de compatibilidade individual.
Estado atual
O compilador operacional e suas bibliotecas preparadas automaticamente residem em:
seed/compiler/llvm/
├── build/seed
└── libs/
O conjunto de bibliotecas atual está documentado em Library Reference. Esses pacotes usam sintaxe limpa de cobra inferior, produzem interfaces .sdi atuais e participam dos conjuntos de portas do compilador.
Cada pacote grove/libs possui um manifesto atual e um caso de portão. As fontes de biblioteca retidas não contêm comentários hash herdados, declarações nominais em maiúsculas ou FFI direto. Um pacote ainda pode ser deliberadamente archived: sua interface atual valida os limites configuration/ownership enquanto o antigo recurso de execução permanece indisponível.
Portanto:
- distinguir pacotes operational/ported daqueles deliberadamente arquivados;
- não copie exemplos Grove em guias de linguagem atuais sem compilar
eles com
./seed/seed check; - não infira um compilador integrado a partir de uma função não qualificada usada pelo legado Grove código;
- use
seed/tools/grove_gate.py gNNe a linha de base correspondente como o evidência de compatibilidade; - promova um pacote para o catálogo atual somente depois que ele analisar, verificar, constrói e tem um contrato ownership/effects/interface atual explícito.
Layout do repositório
A árvore de compatibilidade é organizada como:
grove/
├── libs/ # G01–G22 classified library corpus
├── apps/ # mixed-generation applications and tools
└── examples/ # examples that require individual compatibility verification
Para bibliotecas, a disposição mais a evidência do portão comprovam o limite de suporte declarado. A presença no diretório por si só permanece insuficiente para aplicativos e exemplos.
O recuperado Ridge família de comando mora em grove/apps/ridge/. Seus sete programas são compilados contra o ridge pacote. A pilha incorporada reconstruída inclui ridge_sql, cujo núcleo relacional limitado possui projeção digitada executável, intervalo, junção, agregação, subconsulta, índice, restrição, transação e SQLite/PostgreSQL cobertura diferencial. O daemon pgwire de loopback suporta consultas simples e um subconjunto limitado de consultas preparadas. grove/apps/ridge/ROADMAP.md separa a evidência histórica da capacidade atual: a v0.2 está congelada com evidência P13 dispensada incompleta, enquanto a v0.3 V3-G0-G17 local MVCC/relational, transação, SQL e index/planner/spill o caminho está concluído e a expansão está ativa em V3-G18. O trabalho do cluster v0.4 está bloqueado por meio da V3-G25 e não foi iniciado. É SQLite/PostgreSQL o equipamento de comparação vive ao lado dos aplicativos em grove/apps/ridge/benchmarks/.
O guia consolidado do usuário e do operador é Ridge Database.
Portando um Grove pacote
Use esta sequência ao mover um pacote para a linguagem limpa:
- Execute
./seed/seed check path/to/src/lib.sde retenha o diagnóstico como inventário de compatibilidade inicial. - Substitua a sintaxe herdada: nomes nominais de cobra inferior,
ret,//, ADTs atuais, e canais de biblioteca comuns em vez de recursos históricos. - Substitua os auxiliares de tempo de execução implícitos pelas operações seguras atuais do compilador ou por um
pacote comum sob
seed/compiler/llvm/libs. - Faça alocação, pânico, bloqueio, FFI, propriedade, clone e proveniência efeitos explícitos.
- Coloque ponteiros brutos, syscalls, FFI, uniões, atômicos, operações voláteis e
memória bruta por trás de wrappers
unsafeestreitos. - Adicione um
seed.toml; pacotes com declaraçõesexterndevem listar plataformas e forneça uma raizINSTALL.md. - Verifique a compilação direta da fonte e o consumo de
.sdicom origem excluída. - Adicione regressões positivas e negativas do compilador antes de documentar o pacote como operacional.
A portabilidade deve preservar o comportamento quando for útil, mas a sintaxe arquivada e os contratos de tempo de execução não são requisitos de compatibilidade para o compilador limpo.
Importações
Os pacotes atuais preparados pelo compilador usam importações de pacotes simples:
use "io"
use "parse"
use "vec"
Prefira importações de pacotes apoiadas por manifestos e .sdi interfaces. Uma importação do caminho de origem do repositório ignora esse limite do pacote e não deve ser introduzida em arquivos convertidos. Grove código.