Grove Árbol de compatibilidad
El directorio de nivel superior grove/ contiene el ecosistema de biblioteca convertido además de aplicaciones y ejemplos históricos. Los 218 directorios de bibliotecas ahora tienen una disposición final G01-G22; Las aplicaciones fuera de grove/libs aún requieren verificación de compatibilidad individual.
Estado actual
El compilador operativo y sus bibliotecas preparadas automáticamente se encuentran en:
seed/compiler/llvm/
├── build/seed
└── libs/
El conjunto de bibliotecas actual está documentado en Referencia de biblioteca. Esos paquetes utilizan una sintaxis limpia de serpiente inferior, producen interfaces .sdi actuales y participan en las suites de puerta del compilador.
Cada paquete grove/libs tiene un manifiesto actual y un caso de puerta. Las fuentes conservadas de la biblioteca no contienen comentarios hash heredados, declaraciones nominales en mayúscula ni FFI directo. Un paquete aún puede ser deliberadamente archived: su interfaz actual valida los límites de configuration/ownership mientras que la capacidad de ejecución anterior permanece no disponible.
Por lo tanto:
- distinguir los paquetes operational/ported de los archivados deliberadamente;
- no copie ejemplos de Grove en las guías de idiomas actuales sin compilar
ellos con
./seed/seed check; - no infiera un compilador integrado a partir de una función no calificada utilizada por el legado Grove código;
- utilice
seed/tools/grove_gate.py gNNy la línea base coincidente como evidencia de compatibilidad; - Promocione un paquete al catálogo actual solo después de que lo analice, verifique, construye y tiene una corriente explícita ownership/effects/interface contrato.
Diseño del repositorio
El árbol de compatibilidad está organizado como:
grove/
├── libs/ # G01–G22 classified library corpus
├── apps/ # mixed-generation applications and tools
└── examples/ # examples that require individual compatibility verification
Para las bibliotecas, la disposición más la evidencia de entrada prueban el límite de soporte declarado. La presencia en el directorio por sí sola sigue siendo insuficiente para aplicaciones y ejemplos.
los recuperados Ridge la familia de mando vive en grove/apps/ridge/. Sus siete programas se basan en el ridge paquete. La pila integrada reconstruida incluye ridge_sql, cuyo núcleo relacional acotado tiene proyección, rango, unión, agregado, subconsulta, índice, restricción, transacción y tipo ejecutable. SQLite/PostgreSQL Cobertura diferencial. El demonio loopback pgwire admite consultas simples y un subconjunto de consultas preparadas acotadas. grove/apps/ridge/ROADMAP.md separa la evidencia histórica de la capacidad actual: la v0.2 está congelada con evidencia P13 exenta incompleta, mientras que la v0.3 V3-G0-G17 local MVCC/relational, transacción, SQL, y index/planner/spill la ruta está completa y la expansión está activa en V3-G18. El trabajo del clúster v0.4 está bloqueado a través de V3-G25 y no se ha iniciado. su SQLite/PostgreSQL El arnés de comparación se encuentra al lado de las aplicaciones siguientes. grove/apps/ridge/benchmarks/.
La guía consolidada para usuarios y operadores es Ridge Base de datos.
Portar un Grove paquete
Utilice esta secuencia al mover un paquete al lenguaje limpio:
- Ejecute
./seed/seed check path/to/src/lib.sdy conserve los diagnósticos como inventario de compatibilidad inicial. - Reemplace la sintaxis heredada: nombres nominales de serpiente inferior,
ret,//, ADT actuales, y canales de biblioteca ordinarios en lugar de incorporados históricos. - Reemplace los ayudantes de tiempo de ejecución implícitos con operaciones de compilación seguras actuales o un
paquete ordinario bajo
seed/compiler/llvm/libs. - Realizar asignación, pánico, bloqueo, FFI, propiedad, clonación y procedencia efectos explícitos.
- Coloque punteros sin formato, llamadas al sistema, FFI, uniones, atómicas, operaciones volátiles y
memoria cruda detrás de estrecho
unsafeenvoltorios. - Agregue un
seed.toml; los paquetes con declaracionesexterndeben enumerar las plataformas y proporcione una raízINSTALL.md. - Verifique la compilación de fuente directa y el consumo de
.sdieliminado de fuente. - Agregue regresiones del compilador positivas y negativas antes de documentar el paquete como operativo.
La portabilidad debe preservar el comportamiento cuando sea útil, pero la sintaxis archivada y los contratos de tiempo de ejecución no son requisitos de compatibilidad para el compilador limpio.
Importaciones
Los paquetes actuales preparados por el compilador utilizan importaciones de paquetes básicos:
use "io"
use "parse"
use "vec"
Prefiere importaciones de paquetes respaldadas por manifiestos y .sdi interfaces. Una importación de ruta de origen del repositorio pasa por alto el límite del paquete y no debe introducirse en archivos convertidos. Grove código.