Écosystème de pods : bosquet comme catalogue, pod comme unité de distribution
Statut : version préliminaire d'implémentation —
seed0.9.0,ridge0.2.0,grove~30libs Objectif :grovecomme un catalogue organisé depods(lib/app/tool/game),podcomme le Rustcrateéquivalent -srcoubinpartarget/profile;seedse résout en premier dans le cache central~/.seed//usr/local/seedet alors seulement sur lesite.
1. Concepts
- Grove: un index (
seed/docs/book/libs-reference.md:42) depodsavecname@x.y.z,kind(libapptool),capabilities,platforms,interface_hash. Il ne compile pas ; il ne fait que lister. - Possule :
name@ver+kind+emit(srclibbin) +target(linux-x86_64macos-aarch64*générique) +profile(debugrelease).src=seed.toml+src/lib.sd+sdi;bin=libPOD.so/a+POD.sdi+build.json. - Résolution :
use "pod"→seed.lock(pod@versha256emit) → cache central~/.seed//usr/local/seed→GET /archive/ab/cd/sha256(seed-site/src/registry.sd:504).
2. Disposition centrale ~/.seed (utilisateur) et /usr/local/seed (système, sudo)
~/.seed/src/<pod>/<ver>/<sha256>/—srcimmuable (seed.toml+src/+sdi+interface_hashdeseed/compiler/llvm/src/driver/library_store.c).~/.seed/bin/<pod>/<ver>/<sha256>/<target>/<profile>/—libPOD.so/a+POD.sdi+build.json(target+profile+interface_hash+SEED_CODE_SPLITdans le résumé, comme dansseed/seed:25).~/.seed/manifest.json+ par projetseed.lock(pod = "ridge" version = "^0.2" sha256 = "ab12...").~/.seed700,/usr/local/seed755root:staff(install_layoutdansseed/tools/seed_tooling.py:2333fait déjàsystem→/usr/local/binetc. ; étendre àsrc/bin).
seed install utilisateur par rapport au système
seed install pod@^0.2[:target]→~/.seed/srcmanqué →GET /archive/...→ se compile en~/.seed/bin/...(central, pas./target).sudo seed install pod@^0.2(EUID==0) →/usr/local/seed/src|bin(install -o root:staff),SUDO_USERconservé pour~/.seed/credentials.toml(seed/compiler/llvm/src/driver/toolchain.c:1681).
3. Gestion des versions du cache (sans conflit)
~/.seed/bin/ridge/0.2.1/ab12/linux-x86_64/debug/et.../0.3.0/cd34/...coexister;seed.locképinglesver+sha256,LD_LIBRARY_PATH/rpathindique exactementver.sonamelibridge.so.0.2/0.3éviteDT_NEEDEDcollisions.interface_hashchangements (rowcodecV30b114783) → nouveausha256→ manquer et recompiler uniquement les éléments concernéspod.
4. Chaîne d'outils et library_store
seed buildn'écrit pas./target;library_storeenregistre dans~/.seed/bin/...saisi parpod@ver+target+profile+interface_hash+SEED_CODE_SPLIT.debugetreleasepartagentsrcmais conserventbindistincts parprofile.
5. Registre seed-site
archive/ab/cd/<sha256>est déjà adressé par contenu (seed-site/src/registry.sd:504),index/<name>.json+catalog.jsonavecinterface_hashetyank/deprecated.GET /api/toolchain/latest(seed-site/src/main.sd:50) avec{"schema":1,"version":"0.9.0","files":{"linux-x86-64":{...}}}+interface_hash.
6. Prochaines étapes (2 semaines)
- déterministe
seed.lock+seed update - final
site_dbpg(ridge_open→pg_site_dblorsqueSEED_SITE_USE_PG=1) promote_prod.shavechuman-reviewedautomatique aprèstranslate_i18n.py