Projetos02 · Linguagem dinâmica
Aipo.
S2CONTRACTS-FIRST
Aipo é uma linguagem de propósito geral, dinâmica e fortemente tipada, com suporte a contratos e invariantes. Seu toolchain em Rust inclui uma VM de bytecode e um backend JavaScript.
01
A pergunta
Para que existe
Aipo investiga como manter a flexibilidade de uma linguagem dinâmica sem esconder incompatibilidades de tipos, e como aproximar contratos do código que eles protegem.
02
Algumas coordenadas
Princípios de projeto
- 01
Conversões intencionais
Valores incompatíveis não são convertidos silenciosamente; o programa precisa expressar a intenção.
- 02
Invariantes junto aos dados
Contratos estruturais podem ser declarados no próprio modelo que deve preservá-los.
- 03
Mais de um destino
O projeto mantém uma VM de bytecode em Rust e um backend que emite JavaScript.
03
Uma amostra estática
Primeira saída
io.println("Olá do Aipo!")Olá do Aipo!
Este bloco é apenas uma amostra de código. Esta página não compila nem executa Aipo no navegador.
04
Documentação
Leia os guias
Guia de uso23 páginas
Conceitos, primeiros passos e referência para usar o projeto.
Primeiros passos
Manual
Pacotes
Trajetória
Desenvolvimento75 páginas
Arquitetura interna, convenções e material para quem contribui.
Arquitetura
Decisões
- ADP-001 — Tipos Core e Bytes como Valores
- ADP-002 — Hooks de Construção e Contratos em Runtime
- ADP-003 — Orçamentos de Execução
- ADP-004 — Política de Identificadores Unicode
- ADP-005 — Limites de Recursão do Parser
- ADP-006 — Decisões Abertas de Wave 3 e Wave 4
- ADP-007 — Identidade e Distribuição de Pacotes
- ADP-008 — Delimitação da Release v0.1.0 da Linguagem
- ADP-009 — C ABI Síncrona Versionada
- ADP-010 — Provas Finas de Interoperabilidade (Rust, C, JS)
- ADP-011 — Roteiro de Performance Estrutural e Ergonomia
- ADP-012 — Especificação de Ergonomia Sintática e Filosofia de Design Canônico
- ADP-013 — Migração para Substrato de Execução WebAssembly e Roteiro de Self-Hosting
- ADR-001 — Sintaxe canônica Aipo
- Roteiro: decided · deferred · pending
Propostas (ADP)
- ADP-001 — Byte, Bytes e tipos como valores no Prelude V1
- ADP-002 — Hooks de construção, invariantes e contratos em runtime
- ADP-003 — Orçamentos de Execução para Programas Não Confiáveis (fuel, memória, interrupção)
- ADP-004 — Política de Identificadores Unicode e de Segurança
- ADP-005 — Limites de Recursão do Parser (Limites de Aninhamento)
- ADP-006 — Decisões em Aberto das Waves 3/4 (async, coleções, packing, host)
- ADP-007 — Package identity e distribuição
- ADP-008 — Release aipo v0.1.0 e fronteira de interoperabilidade
- ADP-009 — C ABI síncrona e versionada
- ADP-010 — Thin proofs de interoperabilidade Rust, C e JavaScript
- ADP-011 — Roteiro de Performance Estrutural e Ergonomia de Linguagem
Governança
Evidências
- Matriz de Conformance da Linguagem
- Benchmarks Cross-Language
- Evidência — P00-G09 / Slice S9 (Runtime & Stdlib Mínima)
- Evidência — P00-G10 / Conclusão do Backend (lacunas dentro de S1–S9)
- Evidência — P00-G11 / Slice S10 (CLI + Formatter)
- Evidência — P00-G12 / Slice S11 (Hardening de Conformidade & Gate do MVP)
- Evidência — P00-G13 / Hooks de Construção do MVP & Bytes
- Evidência — P00-G14 / Imposição de Contratos em Runtime
- Evidência — P00-G15 / Contratos Estáticos e Conformidade de Interfaces
- Evidência — P00-G16 / Revisão de Saída da Wave 1
- Evidência — P01-G01 / Paridade JS para o Subset Completo do MVP
- Evidência — P01-G02 / Deep Quality Gauntlet
- Evidência — P02-G01 / Wave 3 Tipos e Valores (Set, Sequence, Bytes Packing, Task, Duration)
- Evidência — P02-G02 / Wave 3 Stdlib: Combinadores Assíncronos e Operações de Task
- Evidência — P02-G03 / Wave 3 Infra: Sintaxe async fn, await do e Diagnósticos Estáticos
- Evidência — P03-G01 / Host ABI: Modelo de Capabilities, Valores do Host e Handles Geracionais
- Evidência — P03-G02 / Adapter Poppy e Demo Headless Determinística
- A Saga de Otimização & Rigor Metodológico
- Registro Histórico de Slices