Skip to content
EN

Cópia estática

Copiado de docs/getting-started/what-is-aipo.md em https://github.com/poppy-team/aipo-lang (MIT). Fixado na revisão ce47c4e070404fc41722ccd8e2b7b808b99062a8, blob b17a385c320e4cde16eb699520ac1db99decc73b. O repositório de origem permanece canônico; esta cópia é atualizada por um pull request de sincronização, não em tempo real.

O que é Aipo? ​

O Aipo é uma linguagem de programação moderna de propósito geral, com tipagem dinâmica e forte, dotada de suporte nativo a contratos de assinatura e invariantes estruturais.

Projetada com uma filosofia de simplicidade, robustez e previsibilidade, o Aipo foi construído do zero em Rust com arquitetura limpa e sem dependências ocultas.


Pilares Fundamentais ​

1. Tipagem Dinâmica e Forte ​

No Aipo, valores possuem tipos concretos e o sistema não realiza conversões arbitrárias ou silenciosas entre tipos incompatíveis:

aipo
let x = "42"
let y = 10

# Erro de tipo em tempo de execução:
# Operador '+' não aplica concatenação entre String e Int
let z = x + y # Falha explícita!

Para concatenar ou converter valores, exige-se intenção explícita ou formatação declarada.

2. Contratos Estruturais, Invariantes e Enums ​

Enquanto linguagens tradicionais exigem que você espalhe asserções ou validações manuais em todos os métodos, o Aipo introduz o hook invariant associado diretamente ao tipo:

aipo
struct Temperature {
    var celsius: Float = 0.0
}

Temperature:invariant {
    self.celsius >= -273.15 # Não pode ser inferior ao zero absoluto
}

Além de structs, o Aipo oferece enums como tipos de soma fechados com verificação obrigatória de exaustividade em match:

aipo
enum ModoOperacao {
    Manual,
    Automatico { intervalo_ms: Int },
}

Qualquer mutação que viole a invariante é interceptada na fronteira da operação. Dentro de blocos de transação attempt { ... } failed err { ... }, as alterações sofrem rollback atômico para o estado anterior.

3. Concorrência Determinística ​

O modelo de concorrência do Aipo é baseado em fibras cooperativas e tempo virtual. As chamadas assíncronas usam async fn e combinadores de alto nível (task.spawn, task.sleep, task.all, task.race), orquestrados por um scheduler determinístico que permite testes 100% reproduzíveis.

4. Dois Destinos: VM Nativa e JavaScript ​

O compilador do Aipo foi desenvolvido com duas metas principais:

  1. VM de Bytecode em Rust: Execução veloz, serialização binária determinística (.aibc) e inspeção de baixo nível com desassemblador de linha/coluna.
  2. Backend JavaScript (aipo-js): Emissão direta de JavaScript moderno (ES2022) com runtime shim modular e paridade diferencial bit a bit garantida por suíte de testes.

Comparativo Rápido ​

RecursoAipoPythonLuaJavaScript
TipagemDinâmica e ForteDinâmica e ForteDinâmica e FracaDinâmica e Fraca
Invariantes NativasSim (invariant())Não (manual)NãoNão
Rollback TransacionalSim (attempt)NãoNãoNão
Async NativoSim (Determinístico)Sim (asyncio)Corrotinas (baixo nível)Sim (Event Loop)
Módulos / DependênciasSHA Pinada + OfflinePip / VirtualenvExterna (Luarocks)NPM / Node Modules
ImplementaçãoRust (Compilador + VM)C / C++ANSI CC++ (V8) / Rust (Deno)