GUI e Windowed
Nesta página
Aplicativos sem console
No Windows, um executável padrão abre uma janela de terminal ao ser executado.
Para apps desktop que usam janela nativa (via winit/wgpu, por exemplo), isso é
indesejado. A flag --windowed (ou o alias --gui) linka o .zex contra o
subsistema GUI do Windows, suprimindo a janela de console:
--standalone --windowed gera um .zex sem console no Windows; em outras
plataformas a flag é aceita mas não tem efeito visível.
// Feature: console-free GUI build — `--windowed` / `--gui`
// Syntax: `zolo build file.zolo --emit zex --standalone --windowed`
// When to use: ship a desktop/GUI app on Windows that should NOT pop up
// a console window when launched.
// Run (Windows):
// zolo build 31-distribution/04-windowed-gui.zolo --emit zex --standalone --windowed
// # `--gui` is an alias for `--windowed`.
//
// `--windowed` builds a standalone Windows `.zex` linked against the GUI
// subsystem, so double-clicking it opens no console window. On other
// platforms the flag is accepted but a console app is the norm.
//
// You can also set this in zolo.toml instead of passing the flag:
// [build]
// gui = true
// A GUI program typically opens a window (winit/wgpu) rather than printing.
// This stub just shows the build invocation; for a real window see the
// graphics examples under ../../../examples/.
print("Built as a windowed app — no console on Windows.")
// expected (when run from a terminal): the line above.
Requer a CLI/host do Zolo — abra no playground ou rode localmente.
A mesma configuração pode ser definida em zolo.toml para não precisar passar
a flag a cada build:
[build]
gui = true
Executando arquivos prontos
O comando zolo run aceita tanto arquivos-fonte .zolo quanto arquivos já
compilados .zex ou .zar — detecta o formato automaticamente e carrega o
bytecode embutido. Isso é o lado do consumidor do fluxo de distribuição: o
autor entrega o .zex, o usuário executa sem precisar do fonte:
zolo run app.zex executa o bytecode empacotado — nenhum fonte necessário.
// Feature: run a built archive — `zolo run <archive>`
// Syntax: `zolo run app.zex` | `zolo run lib.zar`
// When to use: execute a `.zex`/`.zar` you (or someone else) built,
// without rebuilding from source.
// Workflow:
// zolo build 31-distribution/05-run-archive.zolo --emit zex
// zolo run target/05-run-archive-0.0.0.zex
//
// `zolo run` accepts a `.zolo` source file OR a prebuilt `.zex`/`.zar`
// archive — it detects the format and loads the embedded bytecode. This
// is the consumer side of the distribution flow:
//
// author: zolo build app.zolo --emit zex (produces app.zex)
// consumer: zolo run app.zex (no source needed)
let parts = ["dist", "ribut", "ion"]
print(parts.join(""))
// expected: distribution
Requer a CLI/host do Zolo — abra no playground ou rode localmente.
Desafio
Compile 05-run-archive.zolo com --emit zex e depois execute o .zex
gerado com zolo run. Confirme que a saída é distribution sem recompilar.
Veja também