Porting Go's strings package to C
L'auteur a entrepris de porter la bibliothèque standard de Go en C, en commençant par io puis par les packages bytes et strings pour obtenir des fonctionnalités utiles au-delà du simple sous-ensemble traduisible. Il a d'abord porté des dépendances pures comme math/bits et unicode/utf8 en prenant soin des différences de syntaxe, notamment la priorité des opérateurs de décalage entre Go et C. Pour la gestion mémoire il a introduit un interface d'allocateur mem_Allocator avec Alloc, Realloc et Free, fourni une instance système fondée sur calloc/realloc/free et fait de l'allocateur un paramètre explicite pour les fonctions qui allouent. Il a porté les types (Buffer, Builder, Reader) et ajouté un framework de benchmarks et un Tracker d'allocations, puis corrigé des régressions de performance en remplaçant des parcours naïfs par memchr et en réglant des problèmes de type de retour et d'inlining pour strings.Builder. Au final les versions C l'emportent souvent en performances sur Go, la conversion a mêlé traductions simples et défis d'architecture mémoire et d'optimisation, et l'auteur propose Solod pour écrire du Go compilable en C avec gestion manuelle de la mémoire.