Saltar al contenido

enable — Activando Funcionalidades Opcionales

En esta página

enable instruye al compilador para que acepte construcciones del lenguaje que están desactivadas por defecto. Sin la directiva, el parser rechaza el bloque en tiempo de compilación — no en tiempo de ejecución.

Feature flags comunes: simd (backends native/wasm), signals (vm/native), unsafe_blocks, inline_assembly y prefijos experimental.*. Activar una feature que el backend activo no soporta es un error fatal (E_FeatureNotAvailable). Las features desconocidas solo emiten una advertencia, manteniendo compatibilidad futura cuando nuevas versiones de Zolo añadan flags que aún no conoces.

El ejemplo siguiente activa signals para registrar un handler de SIGINT. Sin el enable, el bloque on signal sería rechazado por el parser en backends donde el tratamiento de señales no existe (como wasm):

enable signals desbloquea on signal SIGINT { ... } para todo el módulo.

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".

Desafío

Elimina la línea enable signals del archivo e intenta compilar. ¿Qué error se reporta? Ahora intenta reemplazar enable signals por enable unsafe_blocks — ¿qué cambia en el mensaje?

Buscar en Zolo

9 resultados

enespt-br