Ecosistema Pod: arboleda como catálogo, pod como unidad de distribución
Estado: borrador de implementación —
seed0.9.0,ridge0.2.0,grove~30bibliotecas Objetivo:grovecomo catálogo seleccionado depods(lib/app/tool/game),podcomo equivalente de Rustcrate—srcobinportarget/profile;seedse resuelve primero en el caché central~/.seed//usr/local/seedy solo luego ensite.
1. Conceptos
- Grove: un índice (
seed/docs/book/libs-reference.md:42) depodsconname@x.y.z,kind(libapptool),capabilities,platforms,interface_hash. No compila; solo enumera. - Pod:
name@ver+kind+emit(srclibbin) +target(linux-x86_64macos-aarch64*genérico) +profile(debugrelease).src=seed.toml+src/lib.sd+sdi;bin=libPOD.so/a+POD.sdi+build.json. - Resolución:
use "pod"→seed.lock(pod@versha256emit) → caché central~/.seed//usr/local/seed→GET /archive/ab/cd/sha256(seed-site/src/registry.sd:504).
2. Diseño central ~/.seed (usuario) y /usr/local/seed (sistema, sudo)
~/.seed/src/<pod>/<ver>/<sha256>/— inmutablesrc(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_SPLITen el resumen, como enseed/seed:25).~/.seed/manifest.json+ por proyectoseed.lock(pod = "ridge" version = "^0.2" sha256 = "ab12...").~/.seed700,/usr/local/seed755root:staff(install_layoutenseed/tools/seed_tooling.py:2333ya lo hacesystem→/usr/local/binetc.; extender asrc/bin).
seed install usuario vs sistema
seed install pod@^0.2[:target]→~/.seed/srcmiss →GET /archive/...→ compila en~/.seed/bin/...(central, no./target).sudo seed install pod@^0.2(EUID==0) →/usr/local/seed/src|bin(install -o root:staff),SUDO_USERconservado para~/.seed/credentials.toml(seed/compiler/llvm/src/driver/toolchain.c:1681).
3. Control de versiones de caché (libre de conflictos)
~/.seed/bin/ridge/0.2.1/ab12/linux-x86_64/debug/y.../0.3.0/cd34/...coexistir;seed.lockalfileresver+sha256,LD_LIBRARY_PATH/rpathapunta a lo exactover.sonamelibridge.so.0.2/0.3evitaDT_NEEDEDcolisiones.interface_hashcambios (rowcodecV30b114783) → nuevosha256→ perder y volver a compilar solo los afectadospod.
4. Cadena de herramientas y library_store
seed buildno escribe./target;library_storeregistra en~/.seed/bin/...con la clavepod@ver+target+profile+interface_hash+SEED_CODE_SPLIT.debugvsreleasecompartensrcpero mantienenbinpor separado porprofile.
5. Registro seed-site
archive/ab/cd/<sha256>ya tiene la dirección de contenido (seed-site/src/registry.sd:504),index/<name>.json+catalog.jsonconinterface_hashyyank/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. Próximos pasos (2 semanas)
- determinista
seed.lock+seed update - final
site_dbpg(ridge_open→pg_site_dbcuandoSEED_SITE_USE_PG=1) promote_prod.shconhuman-reviewedautomático después detranslate_i18n.py