Solod — podmnožina jazyka Go, překládající se do jazyka C

Představení programovací jazyk Solod (So), poskytující podmnožinu jazyka Go, transkompilovanou do podoby v jazyce C (C11), vhodnou pro sestavení překladači GCC, Clang a zig cc. Klíčovým rozdílem Solodu od Go je použití ruční správy paměti, fungující bez použití garbage collectoru, bez automatického přidělování paměti a bez počítání odkazů. Transpiler pro Solod je napsán v jazyce Go a distribuováno pod licencí BSD. Podporováno je fungování v Linuxu, macOS a Windows.

Jazyk podporuje struktury, metody, rozhraní, řezy, vracení funkcemi několika hodnot (například výsledek + kód chyby), generiku a odložené volání (defer). Aby byl jazyk jednodušší, nejsou v něm podporovány kanály, kooperativní úlohy a uzávěry. Při vývoji v jazyce Solod lze používat existující LSP servery, lintery, integrovaná vývojová prostředí a editory kódu podporující jazyk Go, stejně jako nástroj 'go test'.

Kód napsaný v Solodu může integrovat s aplikacemi v jazyce C (jazyk C může volat funkce v Solodu a naopak) a nevyžaduje připojení runtime. Mezi klíčové oblasti použití patří systémové programování s blízkými možnostmi jazyka C, ale se syntaxí ve stylu Go a zajištěním kontroly typů. Solod může být také použit k portování Go knihoven pro použití v projektech v jazyce C. Do jazyka C byly portovány Go balíčky:

a atd. Kromě sady portovaných Go knihoven v programech na jazyce Solod lze použít obálky nad standardní C knihovnou libc.

Ve výchozím nastavení je veškerá paměť alokována na zásobníku, ale pomocí funkcí Alloc / Free standardní knihovny lze alokovat paměť na haldě. Garbage collection a počítání odkazů se nepoužívají, ale v Solodu jsou k dispozici možnosti pro kontrolu typů a havarijní ukončení při přístupu za hranice pole. Kontroly na návrat visících ukazatelů dangling pointer a nevolnění paměti se neprovádějí. Hlavním způsobem, jak odhalit problémy při práci s pamětí, je použití AddressSanitizer -fsanitize=address v moderních překladačích.

Co se týče výkonu, na většině případů jsou zkompilované programy napsané v Solodu rychlejší programů na Go:

  • Výkon funkcí z balíku Byte je o 50 % rychlejší při identické spotřebě paměti;
  • Práce s byty je rychlejší o 1,3× při čtení a o 2-4× při zápisu;
  • V balíku Map je výběr podle celočíselného klíče rychlejší o 3,4×, ale modifikace klíčů je pomalejší o 1,6×;
  • Výběr podle řetězcových klíčů je na stejné úrovni jako v jazyce Go, ale modifikace je pomalejší o 1,5×;
  • Parsing a formátování celých čísel je rychlejší o 2×, a u čísel s plovoucí desetinnou čárkou o 1,5/1,2×;
  • Funkce pro řetězce jsou rychlejší o 1,3× a vytváření řetězců je rychlejší o 2-4× při snížení spotřeby paměti o 10-20 %.

Zdroj: linux.org.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster