English {#english}
Auto-Install the CrabPascal Compiler on Windows
Installing a compiler manually — download, extract, edit PATH, restart terminal — kills onboarding. Modern editor extensions (Rust Analyzer, Python, Go) download tooling automatically. CrabPascal v2.22.0 follows the same pattern through the crabpascal.crabpascal VS Code extension.
The problem we solved
Before auto-install, the flow was:
- Install the VS Code extension
- Download
crab-pascal.exeseparately - Configure
crabpascal.compilerPathby hand - Hope PATH is correct
Too many steps. Auto-install reduces this to: install extension → open a .pas file → press Build.
How detection works
When you trigger a CrabPascal task, the extension searches in order:
-
User-configured path —
crabpascal.compilerPathin settings -
System PATH —
where crab-pascal.exe -
Extension cache —
%USERPROFILE%\.vscode\extensions\crabpascal\bin\ - Prompt download — if nothing found on Windows
Advanced users who compile from source (cargo build --release) are respected — if the binary exists, no download happens.
First-run experience
You install crabpascal.crabpascal
↓
Open ProdutoService.pas
↓
Ctrl+Shift+B (Build)
↓
Popup: "CrabPascal needs to download the compiler (~5 MB). Continue?"
↓
[Yes] → Download v2.22.0 → Extract → Run check
[No] → Show manual setup instructions
The download pulls the matching release binary for win32-x64. After install, subsequent builds skip the prompt.
Manual override
Prefer your own build? Set settings explicitly:
{
"crabpascal.compilerPath": "C:\\Users\\You\\Documents\\crabpascal\\target\\release\\crab-pascal.exe",
"crabpascal.autoInstall": false
}
Or add to PATH permanently:
$path = "C:\Tools\crabpascal\crab-pascal.exe"
[Environment]::SetEnvironmentVariable(
"Path",
$env:Path + ";$(Split-Path $path)",
[EnvironmentVariableTarget]::User
)
Verify installation
After auto-install or manual setup:
crab-pascal --version
# CrabPascal v2.22.0
crab-pascal check examples\crud\crud.dpr
In VS Code, open Output → CrabPascal to see which binary path was selected.
Offline and enterprise scenarios
Auto-install requires network access on first run. For air-gapped machines:
- Copy
crab-pascal.exeto a shared folder - Distribute a
.vscode/settings.jsonwithcrabpascal.compilerPath - Or pre-populate the extension
bin/folder via deployment script
Comparison with other extensions
| Extension | Strategy |
|---|---|
| Rust Analyzer | Downloads rust-analyzer on demand |
| CrabPascal | Downloads crab-pascal.exe on demand |
| C/C++ (MS) | Bundles large toolchains |
CrabPascal keeps the VSIX small (~1 MB) and fetches the compiler separately — easier to update per sprint without republishing the entire extension.
What's next
Linux and macOS auto-install follow the same detection logic with platform-specific release assets. Until then, use cargo build --release or download from releases.
Auto-install is about removing friction, not hiding the compiler. You always know where the binary lives, and you can override it anytime. Install the extension, press Build, write Pascal. 🦀
Português {#portugus}
Auto-instalação do compilador CrabPascal no Windows
Instalar compilador na mão — baixar, extrair, editar PATH, reiniciar terminal — mata o onboarding. Extensões modernas (Rust Analyzer, Python, Go) baixam ferramentas automaticamente. O CrabPascal v2.22.0 segue o mesmo padrão pela extensão VS Code crabpascal.crabpascal.
O problema que resolvemos
Antes da auto-instalação, o fluxo era:
- Instalar extensão VS Code
- Baixar
crab-pascal.exeseparadamente - Configurar
crabpascal.compilerPathmanualmente - Torcer para o PATH estar certo
Passos demais. A auto-instalação reduz a: instalar extensão → abrir .pas → pressionar Build.
Como funciona a detecção
Ao disparar uma task CrabPascal, a extensão busca nesta ordem:
-
Caminho configurado —
crabpascal.compilerPathnas settings -
PATH do sistema —
where crab-pascal.exe -
Cache da extensão —
%USERPROFILE%\.vscode\extensions\crabpascal\bin\ - Oferecer download — se nada for encontrado no Windows
Usuários avançados que compilam do fonte (cargo build --release) são respeitados — se o binário existe, não há download.
Experiência na primeira execução
Você instala crabpascal.crabpascal
↓
Abre ProdutoService.pas
↓
Ctrl+Shift+B (Build)
↓
Popup: "CrabPascal precisa baixar o compilador (~5 MB). Continuar?"
↓
[Sim] → Download v2.22.0 → Extrai → Executa check
[Não] → Mostra instruções de setup manual
O download traz o binário de release para win32-x64. Depois, builds seguintes pulam o prompt.
Override manual
Prefere seu próprio build? Configure explicitamente:
{
"crabpascal.compilerPath": "C:\\Users\\Voce\\Documents\\crabpascal\\target\\release\\crab-pascal.exe",
"crabpascal.autoInstall": false
}
Ou adicione ao PATH permanentemente:
$path = "C:\Tools\crabpascal\crab-pascal.exe"
[Environment]::SetEnvironmentVariable(
"Path",
$env:Path + ";$(Split-Path $path)",
[EnvironmentVariableTarget]::User
)
Verificar instalação
Após auto-instalação ou setup manual:
crab-pascal --version
# CrabPascal v2.22.0
crab-pascal check examples\crud\crud.dpr
No VS Code, abra Output → CrabPascal para ver qual caminho de binário foi selecionado.
Cenários offline e corporativos
Auto-instalação exige rede na primeira execução. Em máquinas isoladas:
- Copie
crab-pascal.exepara pasta compartilhada - Distribua
.vscode/settings.jsoncomcrabpascal.compilerPath - Ou pré-popule a pasta
bin/da extensão via script de deploy
Comparação com outras extensões
| Extensão | Estratégia |
|---|---|
| Rust Analyzer | Baixa rust-analyzer sob demanda |
| CrabPascal | Baixa crab-pascal.exe sob demanda |
| C/C++ (MS) | Embute toolchains grandes |
O CrabPascal mantém o VSIX pequeno (~1 MB) e busca o compilador separadamente — mais fácil atualizar por sprint sem republicar a extensão inteira.
Próximos passos
Auto-instalação em Linux e macOS segue a mesma lógica de detecção com assets por plataforma. Até lá, use cargo build --release ou baixe dos releases.
Auto-instalação remove atrito, não esconde o compilador. Você sempre sabe onde o binário está e pode sobrescrever quando quiser. Instale a extensão, pressione Build, escreva Pascal. 🦀
Published on dev.to/@crabpascal · Código em CrabPascal
Top comments (0)