Ecossistema Pod – bosque como catálogo, pod como unidade de distribuição
Status: rascunho de implementação —
seed0.9.0,ridge0.2.0,grove~30bibliotecas Objetivo:grovecomo um catálogo com curadoria depods(lib/app/tool/game),podcomo Rust equivalente acrate—srcoubinportarget/profile;seedé resolvido primeiro no cache central~/.seed//usr/local/seede somente depois nosite.
1. Conceitos
- Grove: um índice (
seed/docs/book/libs-reference.md:42) depodscomname@x.y.z,kind(libapptool),capabilities,platforms,interface_hash. Não compila; apenas lista. - 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. - Resolução:
use "pod"→seed.lock(pod@versha256emit) → cache central~/.seed//usr/local/seed→GET /archive/ab/cd/sha256(seed-site/src/registry.sd:504).
2. Layout central ~/.seed (usuário) e /usr/local/seed (sistema, sudo)
~/.seed/src/<pod>/<ver>/<sha256>/—srcimutável (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_SPLITem o resumo, como emseed/seed:25).~/.seed/manifest.json+seed.lockpor projeto (pod = "ridge" version = "^0.2" sha256 = "ab12...").~/.seed700,/usr/local/seed755root:staff(install_layoutemseed/tools/seed_tooling.py:2333já fazsystem→/usr/local/binetc.; estender parasrc/bin).
seed install usuário versus sistema
seed install pod@^0.2[:target]→ falha~/.seed/src→GET /archive/...→ compila em~/.seed/bin/...(central, não./target).sudo seed install pod@^0.2(EUID==0) →/usr/local/seed/src|bin(install -o root:staff),SUDO_USERpreservado para~/.seed/credentials.toml(seed/compiler/llvm/src/driver/toolchain.c:1681).
3. Versionamento de cache (sem conflitos)
~/.seed/bin/ridge/0.2.1/ab12/linux-x86_64/debug/e.../0.3.0/cd34/...coexistir;seed.lockalfinetesver+sha256,LD_LIBRARY_PATH/rpathaponta para o exatover.sonamelibridge.so.0.2/0.3evitaDT_NEEDEDcolisões.interface_hashmudanças (rowcodecV30b114783) → novosha256→ perder e recompilar apenas os afetadospod.
4. Conjunto de ferramentas e library_store
seed buildnão grava./target;library_storeregistra em~/.seed/bin/...codificados porpod@ver+target+profile+interface_hash+SEED_CODE_SPLIT.debugcontrareleasecompartilharsrcmas mantenha-se separadobinporprofile.
5. Registro seed-site
archive/ab/cd/<sha256>já tem endereçamento de conteúdo (seed-site/src/registry.sd:504),index/<name>.json+catalog.jsoncominterface_hasheyank/deprecated.GET /api/toolchain/latest(seed-site/src/main.sd:50) com{"schema":1,"version":"0.9.0","files":{"linux-x86-64":{...}}}+interface_hash.
6. Próximas etapas (2 semanas)
- determinístico
seed.lock+seed update - final
site_dbpg(ridge_open→pg_site_dbquandoSEED_SITE_USE_PG=1) promote_prod.shcomhuman-reviewedautomático apóstranslate_i18n.py