Pular para o conteúdo

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.

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?

Buscar no Zolo

9 resultados

enespt-br