Predloženej programovací jazyk Solod (Takže), ktorý poskytuje podmnožinu jazyka Go transkompilovanú do reprezentácie C11 vhodnej na kompiláciu s kompilátormi GCC, Clang a zig cc. Kľúčovým rozdielom medzi Solodom a Go je použitie manuálnej správy pamäte, ktorá funguje bez garbage collectoru, automatickej alokácie pamäte alebo počítania referencií. Transpiler pre Solod je napísaný v jazyku Go a distribuovaný pod licenciou BSD. Práca v Linux, macOS и Windows.
Jazyk podporuje štruktúry, metódy, rozhrania, segmenty, funkcie vracajú viacero hodnôt (napríklad výsledok + chybový kód), generiká a odložené hovory (odložiť). Pre jednoduchosť jazyk nepodporuje kanály, korutiny ani uzávery. Vývoj v Solode 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 (C môže volať funkcie jazyka Solod a naopak) a nevyžaduje si runtime. Medzi kľúčové oblasti použitia patrí systémové programovanie s možnosťami podobnými jazyku C, ale so syntaxou a kontrolou typov v štýle Go. Solod je možné použiť aj na portovanie knižníc Go na použitie v projektoch v jazyku C. Nasledujúce balíky Go boli portované do jazyka C:
- reťazce
- io (antonz.org)
- bajtov
- Člen
- plátky
и atď. Okrem sada Portované knižnice Go je možné použiť v programoch Solod páskovanie cez štandardnú knižnicu jazyka C libc.
Štandardne je všetka pamäť alokovaná na zásobníku, ale prostredníctvom funkcií Pridelené / Voľné Štandardná knižnica umožňuje alokáciu haldy. Zber odpadu a počítanie referencií sa nepoužívajú, ale Solod poskytuje kontrolu typov a detekciu zlyhaní pri prístupe k poliam mimo hraníc. Nevykonávajú sa však žiadne kontroly vrátenia visiacich ukazovateľov alebo zlyhania pri uvoľnení alokácie pamäte. 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.
Z hľadiska výkonu sú kompilované programy napísané v jazyku Solod vo väčšine prípadov... rýchlejšie Programy Go:
- Výkon funkcií z balíka Byte je jeden a pol krát rýchlejší pri identickej spotrebe pamäte;
- práca s bajtovými vyrovnávacími pamäťami je 1.3-krát rýchlejšia pri čítaní a 2-4-krát rýchlejšia pri zápise;
- V balíku Map je vyhľadávanie pomocou celočíselného kľúča 3.4-krát rýchlejšie, ale modifikácia kľúčov je 1.6-krát pomalšia;
- vyhľadávanie pomocou 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 čísla s pohyblivou desatinnou čiarkou sú 1.5/1.2-krát rýchlejšie;
- Funkcie pre prácu s reťazcami sú 1.3-krát rýchlejšie a vytváranie reťazcov je 2 až 4-krát rýchlejšie s 10 až 20 % znížením spotreby pamäte.
Zdroj: linux.org.ru
