NovaLang0.2 alpha

Módulos, projetos e pacotes

mod nome { ... } cria módulo inline. pub marca visibilidade; sem ele, a visibilidade registrada é privada, mas sua aplicação entre módulos é parcial.

import math
import math::sum
import math::*
import math::sum as add

A resolução procura, em termos gerais:

  1. .nova/deps/<nome> com nova.toml;
  2. <diretório-da-entrada>/<nome>.nova;
  3. diretório irmão com manifesto, <nome>.nova, lib.nova ou main.nova;
  4. pacote de mesmo nome sob a raiz do projeto.

Imports circulares são diagnosticados. O linker atual clona/combina declarações, sem HIR com identidades globais e namespaces completos. Portanto, visibilidade, colisões, aliases e imports transitivos têm cobertura limitada. use está reservado, não implementado.

Projetos usam nova.toml; por convenção a entrada é src/main.nova ou a declarada no manifesto. Dependências locais ficam em .nova/deps e nova.lock registra a resolução.

O sistema de pacotes é local e experimental: não promete resolução SemVer transitiva completa, checksums obrigatórios, versões imutáveis, registro remoto ou instalação transacional.

nova init <nome>
nova package [caminho]
nova install [caminho]
nova deps [caminho]
nova publish [caminho]
nova search [consulta]
nova clean [caminho] [--deps]

publish/search usam o registro local, não um serviço público.