# 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:
- 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:
- 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 |
|------------------------------|------------------------|-------------------|
| 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
Noch keine Kommentare.