Guia 47 de 53
Dependências estrangeiras e locks
Uma declaração de dependências com políticas explícitas de instalação, frozen e offline.
Nesta página
Declare dependências uma vez no escopo do arquivo. Providers precisam ser importados explicitamente; aliases escolhem o mesmo ambiente do provider original. Imports nativos ainda selecionam os símbolos usados em cada fragmento.
// Prepare once: zolo install examples/features/14-modules/47-unified-dependencies.zolo
// Requires Rust, C++/vcpkg and the JVM/Kotlin provider toolchains for preparation.
// parity-timeout-ms:300000
use plugin rust::{rust as rs}
use plugin native::{cpp}
use plugin jvm::{kotlin as kt}
deps {
rs::serde_json = "1.0.145"
cpp::fmt = { version = "11.0.2", default_features = true }
kt::"com.google.guava:guava" = "33.4.0-jre"
}
extern rs fn answer() -> int {
let value: serde_json::Value = serde_json::from_str(r#"{"answer":42}"#).unwrap();
value["answer"].as_i64().unwrap()
}
extern cpp fn formatted(value: int) -> str {
#include <fmt/format.h>
return fmt::format("exact {}", value);
}
extern kt fn join(values: [str]) -> str {
import com.google.common.base.Joiner
return Joiner.on(", ").join(values.asIterable())
}
print(answer())
print(formatted(9007199254740993))
print(join(["Kotlin", "Maven", "Zolo"]))
// expected:
// 42
// exact 9007199254740993
// Kotlin, Maven, ZoloPolítica de instalação¶
auto prepara dependências ausentes antes de executar código do usuário. manual exige um ambiente preparado e informa o comando de instalação quando faltar. offline usa apenas artefatos locais compatíveis. Abrir uma fonte no editor nunca instala pacotes nem executa seu código.
zolo install analysis.zolo
zolo install --frozen
zolo run analysis.zolo --offline --frozenLocks e execução offline¶
--frozen exige um lock compatível e proíbe alterações; sozinho, não impede baixar artefatos já fixados. Combine --offline e --frozen para impedir rede e mudanças no lock. As versões abaixo são pins exatos ilustrativos, não recomendações das versões mais recentes.
Adapters de ecossistemas¶
NuGet, pacotes Python, npm, Maven, Cargo, módulos Go e vcpkg mantêm suas regras de resolução. Java/Kotlin compartilham o ambiente JVM e JS/TS compartilham Node. Artefatos preparados preservam assets nativos e de runtime e metadados de integridade; copiar um executável não elimina automaticamente todas as dependências de runtime.
Integrações com linguagens de programação · Tipos entre linguagens
DOCS / OPINIÃO
Esta página deixou alguma pergunta?
Conte onde a explicação perdeu você. A documentação também faz parte da experiência da linguagem.