Pod Ecosystem: boschetto come catalogo, pod come unità di distribuzione
Stato: bozza di implementazione —
seed0.9.0,ridge0.2.0,grove~30lib Obiettivo:grovecome catalogo curato dipods(lib/app/tool/game),podcome Rustcrateequivalente —srcobinpertarget/profile;seedsi risolve prima nella cache centrale~/.seed//usr/local/seede solo successivamente susite.
1. Concetti
- Grove: un indice (
seed/docs/book/libs-reference.md:42) dipodsconname@x.y.z,kind(libapptool),capabilities,platforms,interface_hash. Non compila; elenca solo. - Pod:
name@ver+kind+emit(srclibbin) +target(linux-x86_64macos-aarch64*generico) +profile(debugrelease).src=seed.toml+src/lib.sd+sdi;bin=libPOD.so/a+POD.sdi+build.json. - Risoluzione:
use "pod"→seed.lock(pod@versha256emit) → cache centrale~/.seed//usr/local/seed→GET /archive/ab/cd/sha256(seed-site/src/registry.sd:504).
2. Layout centrale ~/.seed (utente) e /usr/local/seed (sistema, sudo)
~/.seed/src/<pod>/<ver>/<sha256>/— immutabilesrc(seed.toml+src/+sdi+interface_hashdaseed/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_SPLITin il digest, come inseed/seed:25).~/.seed/manifest.json+ per progettoseed.lock(pod = "ridge" version = "^0.2" sha256 = "ab12...").~/.seed700,/usr/local/seed755root:staff(install_layoutinseed/tools/seed_tooling.py:2333fa giàsystem→/usr/local/binecc.; estendere asrc/bin).
seed install utente rispetto al sistema
seed install pod@^0.2[:target]→~/.seed/srcmiss →GET /archive/...→ compila in~/.seed/bin/...(centrale, non./target).sudo seed install pod@^0.2(EUID==0) →/usr/local/seed/src|bin(install -o root:staff),SUDO_USERpreservato per~/.seed/credentials.toml(seed/compiler/llvm/src/driver/toolchain.c:1681).
3. Controllo delle versioni della cache (senza conflitti)
~/.seed/bin/ridge/0.2.1/ab12/linux-x86_64/debug/e.../0.3.0/cd34/...coesistere;seed.lockperniver+sha256,LD_LIBRARY_PATH/rpathpunta all'esattover.sonamelibridge.so.0.2/0.3evitaDT_NEEDEDcollisioni.interface_hashcambiamenti (rowcodecV30b114783) → nuovosha256→ perdere e ricompilare solo quelli interessatipod.
4. Catena degli strumenti e library_store
seed buildnon scrive./target;library_storeregistra in~/.seed/bin/...digitato dapod@ver+target+profile+interface_hash+SEED_CODE_SPLIT.debugereleasecondividonosrcma mantengonobinseparato perprofile.
5. Registro seed-site
archive/ab/cd/<sha256>è già indirizzato per contenuto (seed-site/src/registry.sd:504),index/<name>.json+catalog.jsonconinterface_hasheyank/deprecated.GET /api/toolchain/latest(seed-site/src/main.sd:50) con{"schema":1,"version":"0.9.0","files":{"linux-x86-64":{...}}}+interface_hash.
6. Passi successivi (2 settimane)
- deterministico
seed.lock+seed update - finale
site_dbpg(ridge_open→pg_site_dbquandoSEED_SITE_USE_PG=1) promote_prod.shcon automaticohuman-revieweddopotranslate_i18n.py