Arrêtez de recoller des bibliothèques.
Commencez à livrer.
Ethereal est une bibliothèque C++20 de 57+ modules pour le logiciel système : mémoire, concurrence, réseau avec son propre TLS 1.3, cryptographie, stockage, Unicode 18, télémétrie et machine learning. Zéro dépendance tierce. Des chiffres mesurés, des limites publiées.
Chaque projet C++ paie pour la colle. Ethereal la supprime.
Un logger d'un côté, une pile TLS de l'autre, une bibliothèque de compression, une bibliothèque Unicode, un parseur de configuration, un stockage clé-valeur. Chacun avec ses propres erreurs, son propre allocateur et son propre calendrier de versions. La colle entre eux, c'est du code que personne n'avait envie d'écrire.
Une pile typique 10 bibliothèques
- Dix conventions d'erreur et dix modèles d'allocation
- Dix cycles de versions et flux de sécurité à suivre
- Des scripts de build qui cassent au prochain compilateur
- Aucune idée réelle du coût de chaque appel
Ethereal 1 bibliothèque
- Une seule convention d'erreur dans tous les modules
- Aucun thread de travail ni singleton qui démarre seul
- Les modules que vous n'appelez pas n'entrent jamais dans le binaire
- Chiffres et limites publiés pour chaque module
57+ modules. Une seule convention.
Utilisez-les ensemble ou un par un. Le SDK est une bibliothèque statique, donc votre binaire ne contient que les modules que votre code appelle.
Fondations
La base sur laquelle reposent tous les autres modules : plateforme, assertions, diagnostics, journalisation, mémoire, structures à capacité fixe, bits, chaînes, aléatoire, identifiants, description de types et machines à états. Tout cela compile toujours.
platformversionassertdiagnosticslogmemorycontainersbits+512Système et concurrence
Système d'exploitation, fichiers, temps, processus, plugins, threads, fibres et politiques qui protègent un appel susceptible d'échouer. Aucun de ces modules ne crée de thread que l'appelant n'a pas demandé.
systemfiletimeprocesspluginconcurrencymutexevent+405Données et formats
Sérialisation, compression, encodage, configuration et stockage transactionnel. Tout cela compile toujours, sans option à régler.
serializationcompressionencodingconfigstorage03Texte et langue
Unicode 18, expressions régulières en temps linéaire et internationalisation avec les données CLDR. Aucun des trois n'alloue sur son chemin principal.
textregexi18n04Réseau
Sockets et boucle d'événements, un TLS 1.3 maison avec X.509, un client HTTPS par-dessus et du RPC binaire. Rien de tout cela n'utilise OpenSSL ni aucune autre bibliothèque TLS.
networktlshttprpc06Sécurité et produit
Une cryptographie maison, les licences d'Ethereal elle-même et quatre modules optionnels pour votre propre produit : protection, licences, mises à jour et rapports de plantage. Désactivés, ils laissent le build identique.
cryptographybundleguardlicensingupdatercrashreport03Outils de développement
Le framework de test et le banc de mesure avec lesquels Ethereal elle-même est vérifiée, plus la bibliothèque de terminal.
testingbenchcli05Maths, jeu et observabilité
Calcul SIMD par lots, un ECS à archétypes et de quoi mesurer un processus : profileur, statistiques système et télémétrie.
mathecsprofilerstatstelemetry06Machine learning
Six modules pour l'inférence classique, la protection de modèles et la recherche vectorielle, tous désactivés par défaut, sans dépendance et sans Python à l'exécution.
Ml::TreesMl::FeaturesMl::AnomalyMl::NeuralModelGuardVectorIndex01Interface
FormaUI, un futur module d'interface utilisateur, en développement pour l'édition Full.
FormaUIParcourir tous les modules, avec leurs chiffres et leurs limites
Conçue pour les équipes qui doivent savoir ce que coûte chaque appel.
Zéro dépendance
Aucune bibliothèque tierce, seulement celles du système d'exploitation. SHA-2, ChaCha20-Poly1305, AES-GCM, Ed25519, X25519, P-256 et TLS 1.3 sont écrits en interne. Pas d'OpenSSL, pas de libsodium.
Mesurée et documentée
La documentation du module donne ses chiffres, la machine et le compilateur dont ils proviennent, et les objectifs qu'il n'atteint pas. Le changelog liste chaque changement cassant, avec un guide de migration.
SIMD, mêmes bits
Chemins SSE2 à SSE4.2, AES-NI et AVX2 choisis à l'exécution dans l'encodage, le calcul par lots, les regex, les sommes de contrôle, les chiffrements et la recherche vectorielle. Là où c'est promis, SIMD et scalaire donnent des bits identiques.
C et C++
L'API principale est en C++20. Quarante-neuf modules ont aussi une couche C avec des handles opaques, testée en C11 et C17, prête pour Rust, C#, Python ou tout langage qui parle C.
Opt-in par conception
Rien ne s'empare de main, et aucun thread de travail ne démarre sans que vous le demandiez. Un module que vous n'appelez jamais n'atteint jamais le binaire.
Échoue bruyamment
Les formats sur disque portent une version dans leur en-tête. Un fichier plus récent que le lecteur est refusé au lieu d'être lu à l'aveugle, et une lecture corrompue échoue au lieu de renvoyer n'importe quoi.
La vitesse, c'est un chiffre. Voici les nôtres.
Builds Release sur le même i7-6700, MSVC 19.51 sous Windows et GCC 15.2 sous WSL2. Chaque chiffre provient du README d'un module, avec ses conditions.
Regex vs std::regex. Temps linéaire, sans backtracking. 10× à 351× plus rapide que libstdc++ sur six motifs sur sept. (a+)+b sur 100,000 lettres : moins de 1 ms.
Corruptions sur 5,052 plantages. Le stockage transactionnel a survécu à des coupures de courant simulées en 1,263 points sur 4 disques. Parcours séquentiel : jusqu'à 23 M entrées/s sous Linux.
Une lecture de configuration par handle. Zéro allocation sur dix mille lectures, et aucune lecture déchirée sur environ 50 millions pendant des rechargements à chaud.
Nous publions aussi les échecs. La compression LZ4 par blocs tourne entre 365 et 380 MB/s pour un objectif de 600 MB/s. Le README le dit, avec la machine et le compilateur. Voir les 24
Une suite qui passe ne prouve pas grand-chose. Alors nous essayons de la casser.
Des défauts sont introduits exprès et les tests doivent les détecter. Partout où une référence externe existe, Ethereal est vérifiée face à elle, en volume.
| Quoi | Vérifié face à | Résultat |
|---|---|---|
| Ed25519 | OpenSSL, référence Python en entiers exacts, RFC 8032 | 11,848 · 0 écart |
| SHA-384/512, HMAC, HKDF, AES-GCM | OpenSSL 3.5, Python cryptography 46 | 127,502 · 0 écart |
| X25519, P-256, P-384, RSA | mêmes oracles, RFC 7748 et 6979 | 59,001 · 0 écart |
| TLS 1.3 | Trace RFC 8448, openssl s_server et s_client, Python ssl | 31 · 0 échec |
| Compression | liblz4, zlib, libxxhash | 79,864 · 0 écart |
| Unicode 18 | fichiers de conformité officiels | 100% |
274 tests sous ASan et UBSan, 274 sur 274 sous TSan, aucun rapport.
100 millions d'entrées de compression, 85,000 cas TLS et 100,000 mutations de certificats.
Une panne injectée à chaque opération disque d'une mise à jour : aucune installation laissée à moitié écrite.
Les modules de machine learning à état ont tourné une journée entière sans aucune erreur et avec une mémoire stable.
Votre prochain projet démarre
sur des fondations achevées.
Évaluez l'édition Standard complète gratuitement pendant 30 jours. Sans inscription, sans carte bancaire.