Pular para o conteúdo

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, Zolo

Polí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 --frozen

Locks 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.

Índice global

Encontre seu caminho pela Zolo

Experimente uma ideia

Comece por aqui

9 resultados

9 resultados

enespt-br