Grove Árbol de compatibilidad
<!-- verified-against: seed-llvm; examples: docs-examples-test -->
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 la sintaxis actual de Surface v2 (enum, return, else if, UpperCamelCase nominals/variants, Some/None/Ok/Err), producir interfaces .sdi actuales y participar en los conjuntos de puertas del compilador.
cada grove/libs El paquete tiene un manifiesto actual y un caso de puerta. Las fuentes de la biblioteca retenidas no contienen legado # comentarios, nominales de serpiente inferior, type/ret/elifo FFI directa. Un paquete todavía puede ser deliberadamente archived: su interfaz actual valida configuration/ownership límites mientras la antigua capacidad de ejecución sigue sin estar 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 initial compatibility inventory. - Reemplace la sintaxis heredada:
type→enum, nominales de serpiente inferior → UpperCamelCase,ret→return,elif→else if,Name.{ }→Name { },some/none→Some/None,ok/error→Ok/Err,#→//, and built-in channels/send/recv → ordinarytasklibrary. - 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.