Nyx con Ejemplos
English
The best way to learn a language is to read real code. This collection of short, focused examples walks you through Nyx one concept at a time. Each recipe is self-contained: you can copy it, run it, and modify it to explore further.
No prior experience with Nyx is required. If you can read code in any C-like language, you will feel at home immediately.
Español
La mejor forma de aprender un lenguaje es leer código real. Esta colección de ejemplos cortos y enfocados recorre Nyx concepto por concepto. Cada receta es autocontenida: se puede copiar, ejecutar y modificar para explorar más.
No se requiere experiencia previa con Nyx. Si se puede leer código en cualquier lenguaje similar a C, resultará familiar de inmediato.
Fundamentos
01
Hola Mundo
El programa Nyx más simple — imprimir texto en la terminal.
02
Variables
let inmutable, var mutable, tipos básicos e interpolación de strings.03
Funciones
Definir funciones con parámetros, tipos de retorno y argumentos por defecto.
04
Flujo de Control
if/else, bucles while, for-range, for-in, break y continue.
05
Arrays
Crear, indexar, agregar elementos e iterar sobre arrays dinámicos.
06
Maps
Almacenamiento clave-valor con
Map.new(), insert, get, has e iteración de claves.07
Strings
trim, length, substring, toUpper, split, contains e interpolación.
08
Structs
Definir tipos de datos con campos y agregar métodos vía
impl.09
Enums
Tipos de datos algebraicos con variantes que portan datos y
match exhaustivo.10
Closures
Funciones de primera clase que capturan su entorno circundante.
E/S y Datos
11
Lectura y Escritura de Archivos
Leer y escribir archivos con
read_file y write_file.12
Entrada por Stdin
Leer entrada del usuario desde la terminal con
read_line.13
Argumentos de CLI
Acceder a los argumentos de línea de comandos con
get_args.14
Variables de Entorno
Leer variables de entorno con
getenv y getenv_default.15
Parseo de JSON
Parsear strings JSON hacia Maps y Arrays.
16
Serialización de JSON
Convertir estructuras de datos de vuelta a strings JSON.
17
Expresiones Regulares
Match, extracción y reemplazo con regex POSIX.
18
Parseo de CSV
Dividir líneas y campos para procesar datos tabulares.
19
Fecha y Hora
Timestamps, fechas formateadas y medición de tiempo.
20
Threads y Channels
Crear threads y comunicarse mediante channels.
Tipos y Patrones
21
Traits
Definir comportamiento compartido con
trait e impl ... for.22
Trait Bounds
Restringir genéricos con
<T: Display>.23
Derive Macros
Generar automáticamente implementaciones de Clone, Debug y otros traits.
24
Option
Manejar valores opcionales con
Some y None.25
Result
Manejo de errores con
Ok y Err.26
Operador Try
Propagación de errores con cortocircuito usando
?.27
If Let
Desestructurar enums en condiciones con
if let.28
Match Guards
Agregar condiciones a los brazos de match con guardas
if.29
Iterator: Map y Filter
Transformaciones perezosas con
.iter().filter().map().collect().30
Iterator: Fold
Reducir una secuencia a un único valor con
fold.Avanzado
31
Iterator: Enumerate
Obtener pares índice-valor durante la iteración.
32
Iterator: Take y Skip
Recortar secuencias con
take y skip.33
Recursión
Resolver problemas con funciones que se llaman a sí mismas.
34
Ordenamiento
Ordenar arrays de enteros y strings.
35
Manejo de Errores
Bloques try/catch para recuperarse de errores en tiempo de ejecución.
36
Defer
Limpieza garantizada con bloques
defer { ... }.37
Sleep y Timer
Pausar la ejecución y medir tiempo transcurrido.
38
Crypto: Hashing
SHA-256, MD5 y HMAC-SHA256 para verificación de integridad.
39
Random y UUID
Generar números aleatorios e identificadores únicos.
40
Thread Spawn
Ejecutar funciones de forma concurrente con
thread_spawn.Redes y Protocolos
41
Base64
Codificación/decodificación RFC 4648 — variantes estándar y URL-safe.
42
URL Encode
Percent-encoding, query strings y escape de entidades HTML.
43
Configuración TOML
Parsear strings de configuración con
std/toml.44
MessagePack
Serialización binaria — ~30% más liviana que JSON.
45
Resolución DNS
Convertir nombres de host a direcciones IP con
resolve.46
Cliente TCP
Conectar, escribir y leer sobre sockets TCP crudos.
47
Servidor TCP
Escuchar, aceptar y hacer eco con
tcp_listen.48
Socket UDP
Datagramas sin conexión con
udp_bind y udp_sendto.49
HTTP GET
Peticiones de cliente HTTP de alto nivel con
std/http.50
HTTP POST
Peticiones POST y métodos personalizados con
http_request.51
Servidor HTTP
Servidor mínimo con
http_serve y enrutamiento de peticiones.52
Middleware HTTP
Framework web con
App, rutas, logging y CORS.53
WebSocket
Framing RFC 6455, parseo y respuestas de handshake.
54
Protocolo RESP
Construir manualmente mensajes en el formato de cable de Redis.
55
SQLite
Base de datos SQL en memoria con
sqlite_open y sqlite_query.56
Escritura de CSV
Crear y serializar documentos CSV con
std/csv.Concurrencia
57
Mutex
Proteger estado compartido entre threads con locks.
58
Patrones de Channel
Paso de mensajes con channels con buffer y centinelas.
59
Worker Pool
Despachar tareas a N threads mediante channels compartidos.
60
Productor-Consumidor
Pipeline desacoplado con contrapresión de channel acotado.
61
WaitGroup
Esperar a múltiples threads con
wg_add/wg_done/wg_wait.62
Semáforo
Limitar el acceso concurrente con
sem_acquire/sem_release.63
Select Channel
Multiplexar channels con la sentencia
select.Sistemas
64
Fork y Exec
Ejecutar comandos externos con
fork, execvp y waitpid.65
Pipes
Conectar procesos con
pipe_new y dup2.66
Manejo de Señales
Registrar callbacks de señales con
signal_handle.67
Monitor de Archivos
Detectar cambios en archivos mediante polling con
stat.68
Control de Procesos
PID, directorio de trabajo, detección de terminal y stat de archivos.
69
Terminal Raw
Entrada carácter por carácter con
raw_mode_enter.70
Script con Shebang
Ejecutar archivos Nyx como scripts ejecutables con
#!/usr/bin/env nyx.nyx-kv (Almacén Clave-Valor)
71
KV Básico
Conectarse a nyx-kv y emitir comandos SET/GET/DEL sobre RESP.
72
KV Listas
RPUSH, LPOP, LRANGE, LLEN para colas FIFO y pilas.
73
KV Hashes
HSET/HGET/HLEN para datos estructurados como perfiles de usuario.
74
KV Auth
Autenticación multi-tenant con tokens y namespaces.
75
KV Pub/Sub
Mensajería en tiempo real con SUBSCRIBE y PUBLISH.
76
KV Expire
TTL con EXPIRE, PERSIST y SET EX para caché y sesiones.
77
KV Pipelined
Comandos en lote para un throughput de 250K+ ops/seg.
nyx-serve (Framework Web)
78
Rutas de Serve
Enrutamiento RESTful con GET/POST/PUT/DELETE y parámetros de ruta.
79
API JSON
Parsear cuerpos de petición y construir respuestas JSON con helpers.
80
Archivos Estáticos
Servir CSS, JS e imágenes con
app_static y detección de MIME.81
Sesiones
Sesiones basadas en cookies respaldadas por nyx-kv con TTL.
82
Multi-hilo
http_serve_mt con N threads de trabajo para 73K req/s.83
CORS
Headers cross-origin con
mw_cors y cors_configure.84
Full-stack
Servidor HTTP + API JSON + backend nyx-kv en un solo binario.
nyx-proxy (Proxy Reverso)
85
Configuración de Proxy
Parsear
proxy.toml con std/toml.86
Hosts Virtuales
Enrutar por el header Host hacia distintos upstreams.
87
Health Checks
Sondear upstreams por TCP con umbral y recuperación automática.
88
Rate Limit
Ventana deslizante por IP que devuelve HTTP 429 al exceder el límite.
89
TLS SNI
HTTPS multi-dominio en un solo puerto con certificados de Let's Encrypt.
Queue, DB y HTTP/2
90
Queue Enqueue
Cola de mensajes persistente con ENQUEUE y QLEN.
91
Queue Consumer
Bucle DEQUEUE + ACK/NACK con reentrega automática.
92
DB SQL
CREATE/INSERT/SELECT sobre el protocolo RESP de nyx-db.
93
Transacciones de DB
BEGIN/COMMIT/ROLLBACK para operaciones atómicas.
94
Servidor HTTP/2
Multiplexado de streams y compresión de headers con HPACK.
95
Frames de HTTP/2
Tipos de frame binarios: DATA, HEADERS, SETTINGS, PING.
Patrones Full-stack
96
API REST
API CRUD completa con middleware y backend nyx-kv.
97
Pub/Sub en Tiempo Real
WebSocket + Pub/Sub de nyx-kv para actualizaciones en vivo.
98
Microservicio
Consumidor de cola con patrón cache-aside vía nyx-kv.
99
API con Rate Limit
INCR + EXPIRE atómicos para límites de tasa por usuario.
100
Stack de Producción
Arquitectura completa de nyxlang.com: proxy + web + kv + queue.