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:

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:

  1. Ejecute ./seed/seed check path/to/src/lib.sd y conserve los diagnósticos como inventario de compatibilidad inicial.
  2. Reemplace la sintaxis heredada: nombres nominales de serpiente inferior, ret, //, ADT actuales, y canales de biblioteca ordinarios en lugar de incorporados históricos.
  3. 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.
  4. Realizar asignación, pánico, bloqueo, FFI, propiedad, clonación y procedencia efectos explícitos.
  5. Coloque punteros sin formato, llamadas al sistema, FFI, uniones, atómicas, operaciones volátiles y memoria cruda detrás de estrecho unsafe envoltorios.
  6. Agregue un seed.toml; los paquetes con declaraciones extern deben enumerar las plataformas y proporcione una raíz INSTALL.md.
  7. Verifique la compilación de fuente directa y el consumo de .sdi eliminado de fuente.
  8. 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.