Pular para o conteúdo

20 · Diretivas de Módulo

enable — Ativando Funcionalidades Opcionais

Use `enable <feature>` para desbloquear partes da linguagem que o compilador mantém desativadas por padrão.

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.

03-enable-feature.zolo
Playground
// 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?

Índice global

Encontre seu caminho pela Zolo

Experimente uma ideia

Comece por aqui

9 resultados

9 resultados

enespt-br