Monorepositório com todos os compiladores completos da linguagem de programação Delégua, com o objetivo de gerar código nativo eficiente e otimizado para diversas plataformas.
| Pacote | Descrição |
|---|---|
@designliquido/delegua-llvm |
Geração de representação intermediária LLVM (IR) a partir de código Delégua |
delegua-nativo |
Compilação completa Delégua → LLVM IR → binário nativo via Clang |
delegua-x64 |
Compilação Delégua → NASM assembly → binário nativo x64, sem LLVM |
delegua-arm |
Compilação Delégua para binários ARM via GNU Assembler, sem LLVM |
delegua-risc-v |
Compilação Delégua para binários RISC-V via GNU Assembler, sem LLVM |
delegua-wasm |
Compilação Delégua para WebAssembly via WAT e wat2wasm, sem LLVM |
Os pré-requisitos adicionais variam conforme o pacote utilizado:
| Pacote | Ferramentas necessárias |
|---|---|
delegua-nativo |
LLVM (clang, clang++; opt e llc opcionais) |
delegua-x64 |
NASM + ld (Linux) ou gcc (Windows) |
delegua-arm |
GNU Assembler (as) + ld para ARM |
delegua-risc-v |
GNU Assembler (as) + ld para RISC-V |
delegua-wasm |
wat2wasm (wabt) |
pacotes/
├── delegua-nativo/ Compilador completo com toolchain Clang/LLVM
│ └── fontes/
│ ├── verificador-toolchain.ts Detecção de ferramentas no PATH
│ ├── compilador-nativo.ts Pipeline de compilação
│ ├── ilc.ts Ponto de entrada da CLI
│ └── index.ts Exportações da biblioteca
├── delegua-x64/ Compilador via NASM para x64, sem LLVM
│ └── fontes/
│ ├── verificador-toolchain.ts Detecção de nasm/ld/gcc no PATH
│ ├── compilador-x64.ts Pipeline de compilação
│ ├── ilc.ts Ponto de entrada da CLI
│ └── index.ts Exportações da biblioteca
├── delegua-arm/ Compilador via GNU Assembler para ARM, sem LLVM
│ └── fontes/
│ ├── verificador-toolchain.ts Detecção de as/ld no PATH
│ ├── compilador-arm.ts Pipeline de compilação
│ ├── ilc.ts Ponto de entrada da CLI
│ └── index.ts Exportações da biblioteca
├── delegua-risc-v/ Compilador via GNU Assembler para RISC-V, sem LLVM
│ └── fontes/
│ ├── verificador-toolchain.ts Detecção de as/ld no PATH
│ ├── compilador-riscv.ts Pipeline de compilação
│ ├── ilc.ts Ponto de entrada da CLI
│ └── index.ts Exportações da biblioteca
└── delegua-wasm/ Compilador para WebAssembly via WAT e wat2wasm
└── fontes/
├── verificador-toolchain.ts Detecção de wat2wasm no PATH
├── compilador-wasm.ts Pipeline de compilação
├── ilc.ts Ponto de entrada da CLI
└── index.ts Exportações da biblioteca
yarnyarn empacotaryarn testes-unitariosO repositório está configurado para usar release-it com o plugin @release-it-plugins/workspaces, publicando todos os pacotes em pacotes/* que não estejam com "private": true.
- Faça login no npm:
npm login- Execute um teste sem publicar:
yarn release:dry-run- Execute a release interativa:
yarn publicarEm CI/CD, use o modo não interativo:
yarn publicar:ciNotas:
- Cada pacote precisa ter
name,versione permissão para publicação no npm. - O script
prepublishOnlyde cada pacote deve preparar o artefato antes donpm publish. - O pacote raiz do monorepo não é publicado (
"npm": falsena configuração do release-it).
- Nomes de variáveis, comentários e documentação devem estar em português, pois o projeto é em português.
- Utilize o Yarn como gerenciador de pacotes. Não utilize o
npmdiretamente.