À propos du projet

dash-em est une bibliothèque de manipulation de chaînes de caractères conçue avec un objectif unique, inébranlable et délibérément absurde : supprimer les tirets em (U+2014) du texte codé en UTF-8. Le projet se décrit comme "de qualité entreprise" et "prêt pour la production", mais divulgue explicitement qu'il s'agit d'une exploration tongue-in-cheek de la sur-ingénierie. Malgré le statut de meme, la base de code est écrite avec une rigueur d'ingénierie authentique, tirant parti des techniques avancées de vectorisation du processeur pour atteindre des caractéristiques de performance profondément inutiles pour la tâche à accomplir. Le cœur de dash-em est une implémentation pure en C avec zéro dépendance externe. Il détecte automatiquement les capacités du processeur hôte et délègue à l'ensemble d'instructions SIMD le plus optimisé disponible. Les chemins pris en charge comprennent AVX-512F (64 octets par itération), AVX2 (32 octets), SSE4.2 (16 octets) et ARM NEON (16 octets), avec une fallback scalaire pour les anciens matériels. La bibliothèque comprend des micro-optimisations telles que le déroulement de boucles, la préfetchisation de cache, la correspondance de masques de bits et des chemins rapides pour les petites chaînes pour minimiser les frais généraux. Des benchmarks de performances sont fournis sur plusieurs architectures (Linux, Windows, macOS sur Intel et Apple Silicon). La bibliothèque C principale démontre des vitesses de débit allant de 1,27 Go/s à plus de 42 Go/s, selon la densité des tirets em dans l'entrée et l'architecture du processeur spécifique. Les liaisons linguistiques montrent des accélérations significatives par rapport à l'itération native au niveau des octets dans leurs écosystèmes respectifs ; par exemple, les liaisons Python sont signalées jusqu'à 766 fois plus rapides que la manipulation d'octets purement Python, tandis que les liaisons JavaScript offrent jusqu'à 40 fois des accélérations par rapport à la manipulation de Buffer. Le projet prend en charge un large éventail de liaisons linguistiques, notamment JavaScript/TypeScript (Node.js), Python, Go, Rust, Java, C#/.NET, PHP, Ruby, Swift, Kotlin, R, Dart, Scala, Perl, Lua, Haskell, Elixir, Zig et Objective-C. De plus, il est compilé en WebAssembly (wasm32 et WASI) pour les environnements de navigateur et sans serveur. L'API est simple, exposant généralement une fonction `remove()` qui prend une chaîne ou un tampon et retourne la sortie nettoyée. Les liaisons JavaScript offrent également `removeBuffer()` et `removeBufferInPlace()` pour des opérations sans copie ou en place, respectivement. L'installation est fournie via des gestionnaires de packages standard pour la plupart des langues (par exemple, `npm install dash-em`, `pip install dash-em`) ou via CMake pour la bibliothèque C principale. Le projet comprend des suites de tests exhaustives et des pipelines d'intégration continue qui vérifient l'exactitude et les performances sur toutes les plates-formes et liaisons prises en charge. Bien que l'utilité d'une telle bibliothèque spécialisée soit discutable, elle sert de démonstration des techniques d'optimisation SIMD et d'architecture de liaison inter-langues dans un contexte hautement divertissant.