Ogni modulo, con ciò che fa, ciò che è stato misurato e i limiti che conosciamo. Clicca su una scheda per vederla completa.
57 di 57 moduli · più FormaUI, in sviluppo
Introspezione del sistema: moduli, processi, thread, regioni e memoria di un altro processo, export, integrità dell'immagine, privilegi, informazioni su sistema e CPU, dischi, interfacce di rete e fingerprinting della macchina. Ogni componente è verificato contro un oracolo indipendente.
Memorizza e restituisce il nome e la versione dell'applicazione come stringa C, std::string o CAString.
std::string
CAString
Dispatch dei fallimenti delle asserzioni. I listener osservano il fallimento e una singola policy decide l'azione. Nessuna allocazione nel percorso di fallimento.
Warning ed errori formattati nello stile di std::format, e una classe di eccezione della libreria.
std::format
Logging su file, console e output del debugger, in modalità sincrona o asincrona.
Allocatori arena e pool, e un gestore centrale che traccia le allocazioni per tag.
Strutture a capacità fissa che non toccano mai l'allocatore dopo la costruzione. Solo template.
Manipolazione dei bit: operazioni di base, maschere, packing, scansione, codici di Morton e uno stream di lettura e scrittura a livello di bit.
Stringhe ASCII e wide scritte in casa con small-string optimization (fino a 64 caratteri), più funzioni di confronto e formattazione.
Generazione casuale veloce, deterministica a partire da un seed, o sicura tramite il generatore del sistema operativo.
Identificatori a 128 bit come valori: generazione, parsing, confronto, ordinamento e hash.
Descrizione dei tipi in fase di compilazione (struct, enum, flag), solo header, senza RTTI e senza allocazioni.
Macchina a stati finiti con tabella di transizioni dichiarata e dispatch run-to-completion.
Console, thread e misura di CPU, memoria e disco, per processo e per macchina.
Utility per file e cartelle, e un'API C per i file con memory mapping e percorsi UTF-8 su entrambe le piattaforme.
Durate, istanti, orologi, cronometro, scadenze, calendario, formattazione e parsing delle date, timer e sleep. Un modulo foglia.
Avvia processi figli e ne attende la fine, e fornisce IPC locale: un canale di messaggi a frame, memoria condivisa, un ring zero-copy e sincronizzazione con nome tra processi.
Caricamento dinamico di plugin con un contratto C, e un controllo ABI che rifiuta un plugin incompatibile senza eseguirne una sola riga. Hot swap con chiamate in corso.
Sistema di job con gruppi e modalità di esecuzione: worker thread persistenti o routine asincrone scollegate.
Mutex ricorsivo con tracciamento del proprietario e una guardia RAII.
Segnali e un bus di eventi senza std::function e senza shared_ptr. Uno slot è una coppia di contesto e puntatore a funzione in un vettore contiguo. La rientranza è gestita.
std::function
shared_ptr
Fiber con cambio di contesto in assembly e uno scheduler M:N con work stealing, con gruppi, cancellazione, sincronizzazione tra fiber e canali.
Calendario di job (per esempio, ogni giorno feriale alle 03:00 ora locale) senza un thread proprio. Usa gli orologi di time ed esegue su un executor fornito dall'integratore.
time
Policy che avvolgono una chiamata che può fallire: retry, circuit breaker, limite di concorrenza e rate limit, composti in un ordine fisso.
Cache in memoria con una tabella Robin Hood su un blocco preallocato, e una variante a shard per più thread.
Stream binario portabile e versionato con errore persistente: dopo il primo fallimento ogni lettura fallisce, invece di restituire dati spazzatura.
Compressione, decompressione e i checksum dei container. Il formato è un valore (Compress, Decompress, CompressBound), con rilevamento del formato dall'inizio dello stream.
Compress
Decompress
CompressBound
Converte byte in testo e viceversa: hex, base64, base32, percent-encoding, quoted-printable e transcodifica Unicode. Un modulo foglia senza dipendenze da altri moduli.
Carica la configurazione da molte sorgenti (TOML v1.0.0, INI, JSON rigoroso e tollerante, ambiente, riga di comando), le unisce a strati una sola volta e poi legge senza cercare.
Key-value store transazionale embedded con un B+ tree a pagine e un WAL a pagine intere. Un solo writer e molti reader che non lo aspettano mai. Non crea thread e non è SQL.
Tutto ciò che richiede di sapere cos'è ogni carattere in Unicode 18.0.0: proprietà, normalizzazione, maiuscole e minuscole, segmentazione, interruzione di riga, larghezza, collation, IDNA e bidi. Le tabelle sono generate dall'UCD e nessun percorso usa memoria dinamica.
Espressioni regolari basate su automi senza backtracking, sempre lineari nella lunghezza dell'input. Testo e pattern UTF-8, con semantica RE2 e Perl.
Fa parlare un prodotto in più lingue: plurali CLDR 48.2, formattazione sensibile alla locale, messaggi ICU MessageFormat e cataloghi compilati generati dallo strumento etl-i18n.
etl-i18n
TCP, UDP, il protocollo affidabile su UDP ETL-RUDP scritto in casa, un event loop basato su completamento e un canale cifrato.
TLS 1.3 scritto in casa (RFC 8446), client e server, con l'X.509 che gli serve: DER, certificati, catene, nomi host, PEM e i root di sistema. Solo TLS 1.3, di proposito: la 1.2 raddoppierebbe la superficie d'attacco.
Client HTTPS sincrono (Ethereal::Web::CWeb). Costruisce una richiesta HTTP/1.1, la invia su TLS 1.3 tramite il modulo tls e legge l'intera risposta. Se il tuo codice non lo chiama mai, niente di esso entra nel binario.
Ethereal::Web::CWeb
tls
RPC con un frame binario fisso di 24 byte protetto da CRC, dispatch per numero di metodo negoziato una volta per connessione, stream con finestra, multiplexing e un bus a topic. Un identificatore per richiesta impedisce che una risposta in ritardo diventi la risposta alla chiamata successiva.
Checksum, digest, cifratura autenticata, derivazione di chiavi, accordo sulle chiavi, firme e offuscamento, tutto implementato dentro la libreria.
Le licenze di Ethereal stessa. Una chiamata per applicazione sblocca la libreria, e un'altra restituisce i dati della licenza.
Primitive di hardening contro il reverse engineering per software legittimo. Il modulo rileva, misura e protegge, ma non decide mai: non termina processi e non comunica con la rete. Tutto è disattivato per impostazione predefinita, con un'opzione CMake per ciascun componente.
Kit di licenze Ed25519 da integrare nel tuo prodotto per concedere licenze ai tuoi utenti. Il prodotto verifica solo con la chiave pubblica, e l'emittente firma sul server del venditore. È separato da bundle, che concede in licenza Ethereal stessa.
bundle
Canale di aggiornamenti firmato: Ed25519 su un manifest, più SHA-256 per artefatto e per file. Non crea thread e non apre socket da solo. La rete entra tramite interfacce, e tutto avanza tramite Tick.
Tick
Report degli errori e loro invio. Il contesto viene registrato in un blocco preallocato in Init, e l'invio avviene solo con il consenso dell'utente.
Init
Framework di test senza dipendenze. Asserzioni e registrazione solo header (C++17), più un runner e un main pronti. Non usa eccezioni né RTTI, e le asserzioni non allocano.
main
L'infrastruttura di misura. Calibra il batch, esegue il warm-up finché la frequenza si stabilizza, riporta mediana, p90, p99, minimo e MAD, registra l'ambiente e ha un controllo statistico delle regressioni. Include lo strumento etl-bench.
etl-bench
Output su terminale con buffer proprio, colore e stile con degrado graduale, larghezza delle colonne, barra di avanzamento, editor di riga e un parser di argomenti che non alloca.
Scalari, vettori, matrici e primitive geometriche, con il SIMD concentrato in funzioni a batch che trasformano, normalizzano e moltiplicano migliaia di elementi alla volta.
Entità, componenti e sistemi con storage per archetipi, in chunk da 16 KB con un array contiguo per componente, ed entità generazionali a 64 bit.
Tempi per sezione, con report ed esportazione CSV.
Statistiche descrittive su flussi di campioni.
Metriche, trace secondo lo standard W3C Trace Context ed esportazione verso Prometheus, OTLP (protobuf e JSON), StatsD e JSON lines. Non ha thread, socket o indirizzi integrati: l'esportazione avviene quando l'integratore chiama Tick.
Carica un modello ad alberi addestrato in LightGBM o XGBoost e predice con gli stessi numeri della libreria di origine. Il modello viene convertito una sola volta dallo strumento etl-trees in un formato mappato in memoria, senza parsing al caricamento.
etl-trees
Riceve eventi per entità e fornisce il vettore che il modello si aspetta, nell'ordine della specifica. Esiste per evitare disallineamenti tra le feature di addestramento e quelle di produzione.
Rileva anomalie e cambiamenti senza etichette. Produce un punteggio calibrato con una motivazione, per una coda di revisione. Il modulo non agisce mai. Richiede Ml::Trees.
Ml::Trees
Inferenza di piccole reti (MLP, convoluzioni, LSTM e GRU) dentro il binario, da un formato proprietario convertito da ONNX dallo strumento etl-neural. Il client non legge mai ONNX.
etl-neural
Tratta il modello come un asset protetto. Lo firma con Ed25519, lo cifra a riposo con ChaCha20-Poly1305, lo vincola a una licenza, vi applica il watermark del licenziatario, lo carica in una regione protetta e verifica i pesi caricati in memoria.
Ricerca dei vicini più prossimi integrabile: HNSW in stile hnswlib, affiancato dalla forza bruta esatta. Sotto circa 10,000 vettori la modalità automatica sceglie la forza bruta.
Un modulo di interfaccia utente, in sviluppo. Sarà incluso nell'edizione Full.
Tutti i moduli sono nell'edizione Standard. Provali tutti per 30 giorni.