Zurück zur Startseite

Solod: Go ohne GC mit Kompilierung zu C

Solod ist eine offene Sprache, eine Untermenge von Go mit Transkompilierung zu C11 und manueller Speicherverwaltung. Unterstützt wichtige Go-Konstrukte ohne GC, Channels und Goroutines. Höhere Performance als Go bei Speicher- und String-Operationen.

Open Solod: Go-Untermenge für C-Entwicklung
Advertisement 728x90

# Solod: Go-Subset mit manuellem Speichermanagement und C-Kompilierung

Solod (So) ist ein Open-Source-Projekt, das einen Go-Subset bereitstellt, der auf C11 transkompiliert werden kann. Der Code kompiliert mit GCC, Clang oder zig cc ohne Runtime oder Garbage Collector. Der Transpiler ist in Go unter der BSD-Lizenz geschrieben und unterstützt Linux, macOS und Windows.

Manuelles Speichermanagement eliminiert GC, automatische Allokation und Referenzzählung. Speicher wird standardmäßig auf dem Stack platziert, der Heap ist über Alloc/Free aus der Standardbibliothek verfügbar. Typprüfungen und Bounds-Checks für Array-Überläufe sind integriert, aber dangling Pointer und Speicherlecks werden nicht erkannt. Fürs Debugging wird AddressSanitizer empfohlen (-fsanitize=address).

Unterstützte Konstrukte

Solod behält wichtige Go-Features für mehr Komfort bei:

Google AdInline article slot
  • Structs und Methods.
  • Interfaces.
  • Slices.
  • Mehrfach-Rückgabewerte (Ergebnis + Fehler).
  • Generics.
  • Defer.

Channels, Goroutines und Closures fehlen – der Fokus liegt auf Determinismus und Performance.

Integration mit bestehenden Go-Tools: LSP-Server, Linter, IDEs, go test. Solod-Code kann aus C aufgerufen werden und umgekehrt, ohne Runtime.

Bibliotheken und Anwendungsfälle

Go-Pakete auf C portiert:

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

Wrapper über libc sind verfügbar. Haupt-Anwendungsfälle:

  • Systems Programming mit Go-Syntax und C-Level-Typisierung.
  • Portieren von Go-Bibliotheken in C-Projekte.
  • High-Performance-Anwendungen ohne GC-Overhead.

Performance

Benchmarks zeigen Vorteile gegenüber Go:

| Vorgang | Beschleunigung ggü. Go | Speicherverbrauch |

Google AdInline article slot

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

| Byte-Funktionen | 1.5x | identisch |

| Byte-Buffer (Lesen) | 1.3x | - |

| Byte-Buffer (Schreiben) | 2–4x | - |

| Map (int-Schlüssel abrufen) | 3.4x | - |

| Map (int-Schlüssel ändern) | 0.6x (langsamer) | - |

| Map (string-Schlüssel abrufen)| vergleichbar | - |

| Map (string-Schlüssel ändern)| 0.67x | - |

| int-Parsing/Formatierung | 2x | - |

| float | 1.5/1.2x | - |

| String-Funktionen | 1.3x | - |

| String-Erstellung | 2–4x | -10–20% |

Solod eignet sich für Mid-Level- und Senior-Entwickler, die ein Gleichgewicht zwischen Go-Expressivität und C-Low-Level-Kontrolle suchen.

Wichtige Punkte

  • Kein GC: Manuelles Speichermanagement für vorhersehbare Performance.
  • C-Interop: Direkte Aufrufe ohne Runtime.
  • Go-Tools: Kompatibilität mit dem Ökosystem.
  • Performance: 1.3–4x schneller als Go bei wichtigen Operationen.
  • Checks: Bounds-Checking und Typsicherheit ohne Runtime-Overhead.

— Editorial Team

Advertisement 728x90

Weiterlesen