Projekt Solod vyvíja podmnožinu jazyka Go, ktorá je preložená do jazyka C.

Predstavený je programovací jazyk Solod (So). Poskytuje podmnožinu jazyka Go transkompilovanú do reprezentácie C (C11) vhodnej na kompiláciu s kompilátormi GCC, Clang a zig cc. Kľúčový rozdiel medzi Solodom a Go a Tinygo spočíva v použití manuálnej správy pamäte, ktorá funguje bez garbage collectoru, automatickej alokácie pamäte a počítania referencií. Transpiler pre Solod je napísaný v jazyku Go a je distribuovaný pod licenciou BSD. Podporuje... Linux, macOS и Windows.

Jazyk podporuje štruktúry, metódy, rozhrania, segmenty, funkcie, ktoré vracajú viacero hodnôt (napr. výsledok + chybový kód), generiká a odložené volania (defer). Pre jednoduchosť jazyk nepodporuje kanály, korutiny ani uzávery. Vývoj Solod môže využívať existujúce LSP servery, lintery, integrované vývojové prostredia a editory kódu, ktoré podporujú jazyk Go, ako aj nástrojovú sadu „go test“.

Kód napísaný v jazyku Solod je možné integrovať s aplikáciami v jazyku C (jazyk C môže volať funkcie jazyka Solod a naopak) a nevyžaduje si runtime prostredie. Medzi kľúčové oblasti použitia patrí systémové programovanie s podobnými možnosťami ako v jazyku C, ale so syntaxou a kontrolou typov v štýle jazyka Go. Solod je možné použiť aj na portovanie knižníc jazyka Go na použitie v projektoch v jazyku C. Do jazyka C boli portované balíky jazyka Go, ako napríklad reťazce, io, bajty, mem, slices a ďalšie. Okrem sady portovaných knižníc jazyka Go môžu programy v jazyku Solod používať väzby pre štandardnú knižnicu jazyka C, libc.

Štandardne je všetka pamäť alokovaná na zásobníku, ale alokácia haldy je možná pomocou funkcií Alloc / Free štandardnej knižnice. Zber odpadu a počítanie referencií sa nepoužívajú, ale Solod poskytuje funkcie na kontrolu typov a pádov pri prístupe k poľu mimo hraníc. Návraty visiacimi ukazovateľmi a nesprávne uvoľnenie pamäte sa nekontrolujú. Použitie AddressSanitizer (-fsanitize=address) v moderných kompilátoroch sa spomína ako primárna metóda na detekciu problémov s pamäťou.

Čo sa týka výkonu, kompilované programy napísané v jazyku Solod sú vo všeobecnosti rýchlejšie ako programy v jazyku Go. Napríklad funkcie z balíka Byte fungujú 1.5-krát rýchlejšie s rovnakou spotrebou pamäte. Operácie s bajtovým bufferom sú 1.3-krát rýchlejšie pri čítaní a 2-4-krát rýchlejšie pri zápise. V balíku Map je vyhľadávanie celočíselných kľúčov 3.4-krát rýchlejšie, ale modifikácia kľúčov je 1.6-krát pomalšia. Vyhľadávanie reťazcových kľúčov je porovnateľné s jazykom Go, ale modifikácia je 1.5-krát pomalšia. Analýza a formátovanie celých čísel je 2-krát rýchlejšie a analýza čísel s pohyblivou desatinnou čiarkou je 1,5/1.2-krát rýchlejšia. Reťazcové funkcie sú 1.3-krát rýchlejšie a vytváranie reťazcov je 2-4-krát rýchlejšie s 10-20% znížením spotreby pamäte.

Zdroj: opennet.ru

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