Projekt Solod rozvíja podmnožinu jazyka Go, prekladanú do jazyka C

Bol jazyk programovania Solod (So), ktorý poskytuje podmnožinu jazyka Go, transkompilovateľnú do reprezentácie na jazyku C (C11), vhodnej na zostavenie kompilátormi GCC, Clang a zig cc. Kľúčovým rozdielom medzi Solod a Go a Tinygo je používanie manuálneho správy pamäte, ktoré funguje bez použitia garbage collectora, bez automatického pridelenia pamäte a bez počítania odkazov. Transpiler pre Solod je napísaný v jazyku Go a je distribuovaný pod licenciou BSD. Podporovaná je práca v Linuxe, macOS a Windows.

Jazyk podporuje štruktúry, metódy, rozhrania, rezy, vracanie funkcií s viacerými hodnotami (napríklad výsledok + kód chyby), generiky a odložené volania (defer). S cieľom zjednodušiť jazyk sa v ňom nepodporujú kanály, súborové programy a uzávierky. Pri vývoji v jazyku Solod sa môžu využívať existujúce LSP servery, lintery, integrované vývojové prostredia a editory kódu, ktoré podporujú jazyk Go, ako aj nástroje „go test“.

Kód napísaný v Solod môže integrovať aplikácie v jazyku C (jazyk C môže volať funkcie v Solod a naopak) a nevyžaduje pripojenie runtime. Z kľúčových oblastí aplikácie sa uvádza systémové programovanie s blízkymi k schopnostiam C, ale so syntaxou v štýle Go a zabezpečením kontroly typov. Solod môže byť tiež použitý na portovanie Go knižníc na použitie v projektoch v C. Na jazyk C boli portované Go balíky strings, io, bytes, mem, slices a pod. Okrem portovaných Go knižníc je možné v programoch v jazyku Solod používať obalové knižnice nad štandardnou C knižnicou libc.

Vo väčšine prípadov sa celá pamäť prideľuje na zásobníku, ale pomocou funkcií Alloc / Free štandardnej knižnice je možné prideľovať pamäť na halde. Garbage collector a počítanie odkazov sa nepoužívajú, ale v Solod sú poskytované možnosti na kontrolu typov a havarijné ukončenie pri prístupe za hranice poľa. Pre kontrolu visiacich ukazovateľov (dangling pointer) a nedostatku uvoľnenia pamäte sa však nevykonávajú žiadne kontroly. Ako hlavný spôsob identifikácie problémov s riadením pamäte sa spomína používanie AddressSanitizer (-fsanitize=address) v moderných kompilátoroch.

Pokiaľ ide o výkon, kompilované programy napísané v jazyku Solod sú vo väčšine prípadov rýchlejšie než programy napísané v Go. Napríklad výkon funkcií z balíka Byte je o 50 % rýchlejší pri rovnakom využití pamäte. Práca s bajtovými buffermi je rýchlejšia 1,3-krát pri čítaní a 2-4-krát pri zápise. V balíku Map je výber podľa celých čísel rýchlejší 3,4-krát, ale modifikácia kľúčov je o 1,6-krát pomalšia. Výber podľa reťazcových kľúčov je na úrovni jazyka Go, ale modifikácia je o 1,5-krát pomalšia. Parsovanie a formátovanie celočíselných hodnôt je rýchlejšie 2-krát, a pre plávajúce čísla 1,5/1,2-krát. Reťazcové funkcie sú rýchlejšie 1,3-krát, pričom vytváranie reťazcov je rýchlejšie 2-4-krát so znížením spotreby pamäte o 10-20%.

Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster