Zpět na domů

Solod: Go bez GC s kompilací do C

Solod — otevřený jazyk, podmnožina Go s transkompilací do C11 a ruční správou paměti. Podporuje klíčové konstrukce Go bez GC, kanálů a gorutin. Vyšší výkon než Go v operacích s pamětí a řetězci.

Otevřený Solod: Podmnožina Go pro vývoj v C
Advertisement 728x90

# Solod: podmnožina Go s manuálním řízením paměti a kompilací do C

Solod (So) — otevřený projekt, který představuje podmnožinu Go transpilovanou do C11. Kód se kompiluje pomocí GCC, Clang nebo zig cc bez runtime a sběrače odpadu. Transpiler je napsán v Go pod licencí BSD, podporuje Linux, macOS, Windows.

Manuální řízení paměti vylučuje GC, automatické alokování a počítání referencí. Paměť se ve výchozím nastavení umisťuje na zásobník, halda je dostupná přes Alloc/Free ze standardní knihovny. Kontroly typů a kontroly hranic polí jsou zabudované, ale visící ukazatele a úniky paměti nejsou sledovány. Pro ladění se doporučuje AddressSanitizer (-fsanitize=address).

Podporované konstrukce

Solod si zachovává klíčové vlastnosti Go pro pohodlí:

Google AdInline article slot
  • Struktury a metody.
  • Rozhraní.
  • Plátky.
  • Vícenásobný návrat hodnot (výsledek + chyba).
  • Generika.
  • Defer.

Chybí kanály, gorutiny, uzávěry — důraz na determinismus a výkon.

Integrace s existujícími nástroji Go: LSP servery, lintery, IDE, go test. Kód v Solod lze volat z C a naopak bez runtime.

Knihovny a použití

Přeportované balíčky Go pro C:

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

Dostupné obálky nad libc. Hlavní scénáře:

  • Systémové programování s syntaxí Go a typovou bezpečností C.
  • Převod knihoven Go do projektů C.
  • Vysoce výkonné aplikace bez režie GC.

Výkon

Benchmarky ukazují výhodu oproti Go:

| Operace | Zrychlení oproti Go | Spotřeba paměti |

Google AdInline article slot

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

| Funkce na bajty | 1.5x | shodná |

| Bajtové buffery (čtení) | 1.3x | - |

| Bajtové buffery (zápis) | 2–4x | - |

| Mapa (získání int klíč) | 3.4x | - |

| Mapa (modifikace int klíč) | 0.6x (pomalší) | - |

| Mapa (získání string klíč) | rovnocenné | - |

| Mapa (modifikace string klíč) | 0.67x | - |

| Parsování/formátování int | 2x | - |

| float | 1.5/1.2x | - |

| Řetězcové funkce | 1.3x | - |

| Vytváření řetězců | 2–4x | -10–20% |

Solod je vhodný pro středně pokročilé a senior developery, kteří hledají rovnováhu mezi výrazností Go a nízkouúrovňovou kontrolou C.

Co je důležité

  • Bez GC: manuální řízení paměti pro předvídatelný výkon.
  • C-interoperabilita: přímé volání bez runtime.
  • Nástroje Go: kompatibilita s ekosystémem.
  • Výkon: v 1.3–4 násobku rychlejší než Go v klíčových operacích.
  • Kontrola: kontroly hranic a typů bez režie runtime.

— Editorial Team

Advertisement 728x90

Číst dál