NovaLang0.2 alpha

Módulos, projetos e pacotes

Um módulo local pode ser um arquivo irmão:

// math_lib.nova
pub fn add(a: int, b: int) -> int {
    return a + b;
}
// main.nova
import math_lib::add;

fn main() -> void {
    print(add(20, 22));
}

Também existem import math, glob math::*, alias as e mod nome { ... }, mas aliases, privacidade e colisões entre módulos têm cobertura limitada. Imports circulares são diagnosticados.

Manifesto

[package]
name = "calculator"
version = "0.1.0"
entry = "main.nova"

[dependencies]
math_lib = { path = "../math_lib" }
nova install .
nova deps .
nova package .

O gerenciador é experimental: dependências são diretas, o registro é local em ~/.nova/registry, e ainda não há resolução SemVer transitiva, checksums obrigatórios nem instalação transacional. nova publish não publica na internet. Revise dependências manualmente e versione nova.lock.