Cada módulo, con lo que hace, lo que se midió y los límites que conocemos. Cada tarjeta abre la ficha completa.
57 de 57 módulos · más FormaUI, en desarrollo
Introspección del sistema: módulos, procesos, hilos, regiones y la memoria de otro proceso, exports, integridad de la imagen, privilegios, datos del sistema y de la CPU, discos, interfaces de red y huella de la máquina. Cada pieza se contrasta con un oráculo independiente.
Guarda y devuelve el nombre y la versión de la aplicación como C-string, std::string o CAString.
std::string
CAString
Despacho de fallos de aserción. Los listeners observan el fallo y una única política decide la acción. Sin asignaciones en el camino del fallo.
Advertencias y errores formateados al estilo de std::format, y una clase de excepción de la biblioteca.
std::format
Logging a archivo, consola y salida del depurador, en modo síncrono o asíncrono.
Asignadores arena y pool, y un gestor central que rastrea las asignaciones por etiqueta.
Estructuras de capacidad fija que nunca tocan el asignador tras la construcción. Solo templates.
Manipulación de bits: operaciones básicas, máscaras, empaquetado, escaneo, códigos Morton y un stream de lectura y escritura a nivel de bit.
Cadenas ASCII y anchas propias con optimización de cadenas cortas (hasta 64 caracteres), más funciones de comparación y formateo.
Generación aleatoria rápida, determinista a partir de una semilla, o segura mediante el generador del sistema operativo.
Identificadores de 128 bits como valores: generar, parsear, comparar, ordenar y hashear.
Descripción de tipos en tiempo de compilación (structs, enums, flags), solo headers, sin RTTI y sin asignaciones.
Máquina de estados finita con tabla de transiciones declarada y despacho run-to-completion.
Consola, hilos y medición de CPU, memoria y disco, por proceso y por máquina.
Utilidades de archivos y carpetas, y una API C de archivos con mapeo en memoria y rutas UTF-8 en ambas plataformas.
Duraciones, instantes, relojes, cronómetro, plazos, calendario, formateo y parseo de fechas, temporizadores y sleep. Un módulo hoja.
Lanza procesos hijos y los espera, y ofrece IPC local: un canal de mensajes con framing, memoria compartida, un anillo zero-copy y sincronización con nombre entre procesos.
Carga dinámica de plugins con contrato en C, y una barrera ABI que rechaza un plugin incompatible sin ejecutar ni una línea de él. Intercambio en caliente con llamadas en curso.
Sistema de jobs con grupos y modos de ejecución: hilos worker persistentes o rutinas asíncronas desacopladas.
Mutex recursivo con seguimiento del propietario y un guard RAII.
Señales y un bus de eventos sin std::function y sin shared_ptr. Un slot es un par de contexto y puntero a función en un vector contiguo. La reentrada está contemplada.
std::function
shared_ptr
Fibras con cambio de contexto en ensamblador y un planificador M:N con work-stealing, con grupos, cancelación, sincronización entre fibras y canales.
Calendario de jobs (por ejemplo, cada día laborable a las 03:00 hora local) sin hilo propio. Usa los relojes de time y despacha en un executor que aporta el integrador.
time
Políticas que envuelven una llamada que puede fallar: reintentos, circuit breaker, límite de concurrencia y límite de tasa, compuestos en un orden fijo.
Caché en memoria con una tabla Robin Hood sobre un bloque preasignado, y una variante particionada para varios hilos.
Stream binario portable y versionado con error persistente: tras el primer fallo, todas las lecturas fallan en lugar de devolver basura.
Compresión, descompresión y los checksums de los contenedores. El formato es un valor (Compress, Decompress, CompressBound), con detección del formato a partir del inicio del stream.
Compress
Decompress
CompressBound
Convierte bytes a texto y viceversa: hex, base64, base32, percent-encoding, quoted-printable y transcodificación Unicode. Un módulo hoja sin dependencia de ningún otro módulo.
Carga la configuración desde muchas fuentes (TOML v1.0.0, INI, JSON estricto y tolerante, entorno, línea de comandos), las fusiona por capas una sola vez y después lee sin buscar.
Almacén clave-valor transaccional embebido con un árbol B+ por páginas y un WAL de página completa. Un escritor y muchos lectores que nunca lo esperan. No crea hilos y no es SQL.
Todo lo que requiere saber qué es cada carácter en Unicode 18.0.0: propiedades, normalización, mayúsculas y minúsculas, segmentación, saltos de línea, anchura, colación, IDNA y bidi. Las tablas se generan a partir de la UCD, y ningún camino usa memoria dinámica.
Expresiones regulares basadas en autómatas, sin backtracking, siempre lineales en la longitud de la entrada. Texto y patrones UTF-8, con semántica de RE2 y Perl.
Hace que un producto hable más de un idioma: plurales de CLDR 48.2, formateo según la configuración regional, mensajes ICU MessageFormat y catálogos compilados generados por la herramienta etl-i18n.
etl-i18n
TCP, UDP, el protocolo fiable propio ETL-RUDP sobre UDP, un bucle de eventos basado en completions y un canal cifrado.
TLS 1.3 propio (RFC 8446), cliente y servidor, con el X.509 que necesita: DER, certificados, cadenas, nombres de host, PEM y las raíces del sistema. Solo TLS 1.3, a propósito: 1.2 duplicaría la superficie de ataque.
Cliente HTTPS síncrono (Ethereal::Web::CWeb). Construye una petición HTTP/1.1, la envía sobre el TLS 1.3 del módulo tls y lee la respuesta completa. Si el código nunca lo llama, nada de él entra en el binario.
Ethereal::Web::CWeb
tls
RPC con una trama binaria fija de 24 bytes protegida por CRC, despacho por número de método negociado una vez por conexión, streams con ventana, multiplexación y un bus de topics. Un identificador por petición impide que una respuesta tardía se convierta en la respuesta a la siguiente llamada.
Checksums, digests, cifrado autenticado, derivación de claves, acuerdo de claves, firmas y ofuscación, todo implementado dentro de la biblioteca.
El licenciamiento del propio Ethereal. Una llamada por aplicación desbloquea la biblioteca, y otra devuelve los datos de la licencia.
Primitivas de protección contra ingeniería inversa para software legítimo. El módulo detecta, mide y protege, y nunca decide: no termina procesos ni se comunica con la red. Todo viene desactivado, con una opción de CMake por pieza.
Kit de licencias Ed25519 para integrar en el producto propio y licenciar a sus usuarios. El producto verifica solo con la clave pública, y el emisor firma en el servidor del vendedor. Es independiente de bundle, que licencia el propio Ethereal.
bundle
Canal de actualizaciones firmado: Ed25519 sobre un manifiesto, más SHA-256 por artefacto y por archivo. No crea hilos ni abre sockets por su cuenta. La red entra a través de interfaces, y todo avanza mediante Tick.
Tick
Informes de errores y su envío. El contexto se registra en un bloque preasignado en Init, y el envío ocurre solo con el consentimiento del usuario.
Init
Framework de tests sin dependencias. Aserciones y registro solo en headers (C++17), más un runner listo y un main. No usa excepciones ni RTTI, y las aserciones no asignan memoria.
main
El arnés de medición. Calibra el lote, calienta hasta que la frecuencia se estabiliza, informa de mediana, p90, p99, mínimo y MAD, registra el entorno y tiene un control estadístico de regresiones. Incluye la herramienta etl-bench.
etl-bench
Salida de terminal con buffer propio, color y estilo con degradación elegante, anchura de columnas, barra de progreso, editor de línea y un parser de argumentos que no asigna memoria.
Escalares, vectores, matrices y primitivas geométricas, con el SIMD concentrado en funciones por lotes que transforman, normalizan y multiplican miles de elementos a la vez.
Entidades, componentes y sistemas con almacenamiento por arquetipos, en chunks de 16 KB con un array contiguo por componente, y entidades generacionales de 64 bits.
Medición de tiempos por sección, con informe y exportación a CSV.
Estadística descriptiva sobre flujos de muestras.
Métricas, trazas en el estándar W3C Trace Context y exportación a Prometheus, OTLP (protobuf y JSON), StatsD y líneas JSON. No tiene hilo, socket ni dirección integrados: la exportación se ejecuta cuando el integrador llama a Tick.
Carga un modelo de árboles entrenado en LightGBM o XGBoost y predice con las mismas cifras que la biblioteca de origen. El modelo se convierte una vez con la herramienta etl-trees a un formato mapeado en memoria, sin parseo al cargar.
etl-trees
Recibe eventos por entidad y entrega el vector que espera el modelo, en el orden de la especificación. Existe para evitar desfases entre las features de entrenamiento y las de producción.
Detecta anomalías y cambios sin etiquetas. Produce una puntuación calibrada con un motivo, para una cola de revisión. El módulo nunca actúa. Requiere Ml::Trees.
Ml::Trees
Inferencia de redes pequeñas (MLP, convoluciones, LSTM y GRU) dentro del binario, a partir de un formato propio convertido desde ONNX con la herramienta etl-neural. El cliente nunca lee ONNX.
etl-neural
Trata el modelo como un activo protegido. Lo firma con Ed25519, lo cifra en reposo con ChaCha20-Poly1305, lo vincula a una licencia, le pone la marca de agua del licenciatario, lo carga en una región protegida y verifica en memoria los pesos cargados.
Búsqueda de vecinos más cercanos integrable: HNSW al estilo de hnswlib, con fuerza bruta exacta al lado. Por debajo de unos 10,000 vectores, el modo automático elige la fuerza bruta.
Un módulo de interfaz de usuario, en desarrollo. Saldrá con la edición Full.
Todos los módulos están en la edición Standard. Pruébalos todos durante 30 días.