Retour à l'accueil

Solod : Go sans GC avec compilation vers C

Solod est un langage ouvert, un sous-ensemble de Go avec transcompilation vers C11 et gestion manuelle de la mémoire. Prend en charge les constructions clés de Go sans GC, canaux et goroutines. Performances supérieures à Go en opérations mémoire et chaînes.

Solod open source : sous-ensemble Go pour le développement C
Advertisement 728x90

# Solod : Sous-ensemble de Go avec gestion manuelle de la mémoire et compilation en C

Solod (So) est un projet open-source qui fournit un sous-ensemble de Go transcompilable en C11. Le code se compile avec GCC, Clang ou zig cc sans runtime ni garbage collector. Le transpiler est écrit en Go sous licence BSD et prend en charge Linux, macOS et Windows.

La gestion manuelle de la mémoire supprime le GC, l'allocation automatique et le comptage de références. La mémoire est placée sur la pile par défaut, le tas étant accessible via Alloc/Free de la bibliothèque standard. Les vérifications de type et de bornes pour les débordements de tableaux sont intégrées, mais les pointeurs pendants et les fuites ne sont pas traqués. Pour le débogage, AddressSanitizer est recommandé (-fsanitize=address).

Constructs pris en charge

Solod conserve les principales fonctionnalités de Go pour plus de commodité :

Google AdInline article slot
  • Structs et méthodes.
  • Interfaces.
  • Slices.
  • Retours de valeurs multiples (résultat + erreur).
  • Generics.
  • Defer.

Channels, goroutines et closures sont absents — l'accent est mis sur le déterminisme et les performances.

Intégration avec les outils Go existants : serveurs LSP, linters, IDEs, go test. Le code Solod peut être appelé depuis C et vice versa sans runtime.

Bibliothèques et cas d'usage

Paquets Go portés en C :

Google AdInline article slot
  • strings
  • io
  • bytes
  • mem
  • slices

Des wrappers sur libc sont disponibles. Principaux cas d'usage :

  • Programmation système avec la syntaxe Go et le typage niveau C.
  • Portage de bibliothèques Go vers des projets C.
  • Applications haute performance sans surcharge GC.

Performances

Les benchmarks montrent des avantages par rapport à Go :

| Opération | Accélération vs Go | Consommation de mémoire |

Google AdInline article slot

|---------------------------------|--------------------|-------------------------|

| Fonctions sur les octets | 1.5x | identique |

| Tampons d'octets (lecture) | 1.3x | - |

| Tampons d'octets (écriture) | 2–4x | - |

| Map (clé int get) | 3.4x | - |

| Map (clé int mod) | 0.6x (plus lent) | - |

| Map (clé string get) | équivalent | - |

| Map (clé string mod) | 0.67x | - |

| Analyse/mise en forme int | 2x | - |

| float | 1.5/1.2x | - |

| Fonctions sur les chaînes | 1.3x | - |

| Création de chaînes | 2–4x | -10–20% |

Solod convient aux développeurs de niveau intermédiaire et senior cherchant un équilibre entre l'expressivité de Go et le contrôle bas niveau de C.

Points clés

  • Pas de GC : gestion manuelle de la mémoire pour des performances prévisibles.
  • Interop C : appels directs sans runtime.
  • Outils Go : compatibilité avec l'écosystème.
  • Performances : 1,3–4x plus rapide que Go dans les opérations clés.
  • Vérifications : vérification des bornes et sécurité des types sans surcharge runtime.

— Editorial Team

Advertisement 728x90

Lire ensuite