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.
// 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?
Consulta también