enable — Ativando Funcionalidades Opcionais
Nesta página
enable instrui o compilador a aceitar construções de linguagem que estão
desativadas por padrão. Sem a diretiva, o parser rejeita o bloco no momento
da compilação — não em tempo de execução.
Feature flags comuns: simd (backends native/wasm), signals (vm/native),
unsafe_blocks, inline_assembly, e prefixos experimental.*. Ativar uma
feature que o backend ativo não suporta é um erro fatal (E_FeatureNotAvailable).
Features desconhecidas apenas emitem um aviso, mantendo compatibilidade futura
quando novas versões do Zolo adicionarem flags que você ainda não conhece.
O exemplo abaixo ativa signals para registrar um handler de SIGINT. Sem o
enable, o bloco on signal seria rejeitado pelo parser em backends onde
tratamento de sinais não existe (como wasm):
enable signals desbloqueia on signal SIGINT { ... } para o módulo inteiro.
// Feature: opt into language features via `enable <feature>`.
//
// `enable` activates features the parser/lowering otherwise rejects.
// Unknown features emit a warning (forward-compat); enabling a feature
// that the active backend doesn't support is a hard error.
//
// Common feature flags (see specs/enable-requires-directives.md):
// enable simd // SIMD intrinsics — native/wasm backends
// enable signals // `on signal SIGINT { ... }` — vm/native
// enable unsafe_blocks // raw memory + FFI escape hatch
// enable experimental.tracing // forward-looking, subject to change
enable signals
use std::process
on signal SIGINT {
print("Ctrl+C — graceful shutdown")
process.exit(0)
}
print("press Ctrl+C to test the signal handler")
// Without `enable signals`, the `on signal SIGINT` block above would
// be rejected at parse time on backends where signal handlers aren't
// available (e.g. wasm). Putting the flag at the top of the file is
// the single source of truth for "this module wants signals".
Desafio
Remova a linha enable signals do arquivo e tente compilar. Qual erro é
reportado? Agora tente trocar enable signals por enable unsafe_blocks — o
que muda na mensagem?
Veja também