Grove Arbre de compatibilité

Le répertoire grove/ de niveau supérieur contient l'écosystème de bibliothèques converti ainsi que des applications et des exemples historiques. Les 218 répertoires de bibliothèques ont désormais une disposition finale G01 à G22 ; les applications en dehors de grove/libs nécessitent toujours une vérification de compatibilité individuelle.

Statut actuel

Le compilateur opérationnel et ses bibliothèques automatiquement mises en scène se trouvent sous :

seed/compiler/llvm/
├── build/seed
└── libs/

L'ensemble de bibliothèques actuel est documenté dans Library Reference. Ces packages utilisent une syntaxe propre de serpent inférieur, produisent les interfaces .sdi actuelles et participent aux suites de portes du compilateur.

Chaque grove/libs Le package a un manifeste actuel et un boîtier de porte. Les sources de bibliothèque conservées ne contiennent aucun commentaire de hachage hérité, aucune déclaration nominale en majuscule ou FFI direct. Un colis peut encore être délibérément archived: son interface actuelle valide configuration/ownership limites alors que l’ancienne capacité d’exécution reste indisponible.

Par conséquent :

Disposition du référentiel

L'arbre de compatibilité est organisé comme suit :

grove/
├── libs/      # G01–G22 classified library corpus
├── apps/      # mixed-generation applications and tools
└── examples/  # examples that require individual compatibility verification

Pour les bibliothèques, la disposition et la preuve de porte prouvent la limite de support déclarée. La présence dans l'annuaire à elle seule reste insuffisante pour les applications et les exemples.

Le récupéré Ridge la famille du commandement vit dans grove/apps/ridge/. Ses sept programmes compilent contre le ridge paquet. La pile intégrée reconstruite comprend ridge_sql, dont le noyau relationnel délimité a une projection, une plage, une jointure, une agrégation, une sous-requête, un index, une contrainte, une transaction et une projection typés exécutables. SQLite/PostgreSQL couverture différentielle. Le démon de bouclage pgwire prend en charge les requêtes simples et un sous-ensemble limité de requêtes préparées. grove/apps/ridge/ROADMAP.md sépare les preuves historiques des capacités actuelles : la v0.2 est gelée avec des preuves P13 incomplètes, tandis que la v0.3 V3-G0-G17 locale MVCC/relational, opération, SQL, et index/planner/spill le chemin est terminé et l’expansion est active sur V3-G18. Le travail du cluster v0.4 est bloqué via V3-G25 et n'a pas démarré. C'est SQLite/PostgreSQL Le harnais de comparaison vit à côté des applications ci-dessous grove/apps/ridge/benchmarks/.

Le guide consolidé de l'utilisateur et de l'opérateur est Ridge Database.

Portage d'un Grove paquet

Utilisez cette séquence lors du déplacement d'un package vers le langage propre :

  1. Exécutez ./seed/seed check path/to/src/lib.sd et conservez les diagnostics comme inventaire initial de compatibilité.
  2. Remplacer la syntaxe héritée : noms nominaux de serpent inférieur, ret, //, ADT actuels, et des canaux de bibliothèque ordinaires au lieu des éléments intégrés historiques.
  3. Remplacez les assistants d'exécution implicites par les opérations de compilation sécurisées actuelles ou un paquet ordinaire sous seed/compiler/llvm/libs.
  4. Effectuer l'allocation, la panique, le blocage, le FFI, la propriété, le clone et la provenance effets explicites.
  5. Mettez les pointeurs bruts, les appels système, les FFI, les syndicats, les atomes, les opérations volatiles et mémoire brute derrière l'étroit unsafe emballages.
  6. Ajouter un seed.toml; forfaits avec extern les déclarations doivent lister les plateformes et fournissez une racine INSTALL.md.
  7. Vérifiez la compilation de la source directe et la consommation .sdi élidée à la source.
  8. Ajoutez des régressions positives et négatives du compilateur avant de documenter le package comme étant opérationnel.

Le portage doit préserver le comportement lorsque cela est utile, mais la syntaxe archivée et les contrats d'exécution ne sont pas des exigences de compatibilité pour le compilateur propre.

Importations

Les packages actuellement préparés par le compilateur utilisent des importations de packages nus :

use "io"
use "parse"
use "vec"

Préférez les importations de packages soutenues par des manifestes et .sdi interfaces. Une importation du chemin source du référentiel contourne cette limite de package et ne doit pas être introduite dans le fichier converti. Grove code.