Bemutatva programozási nyelv Solod (So), amely a Go nyelv egy almintáját nyújtja, amely C nyelvű (C11) kimenetre transzkompilálható, alkalmas a GCC, Clang és zig cc fordítók által való fordításra. A Solod legfőbb különbsége a Go-tól a manuális memóriakezelés használata, amely nem alkalmaz szemétgyűjtőt, automatikus memóriaallokációt vagy referencia-számlálást. A Solod transzpiler Go nyelven íródott és terjesztésre kerül BSD licence alatt áll. Támogatott rendszerek: Linux, macOS és Windows.
A nyelv támogatja a struktúrákat, metódusokat, interfészeket, szeleteket, több érték visszatérését (pl. eredmény + hibakód), generikusokat és a késleltetett hívásokat (defer). Az egyszerűsítés érdekében a nyelv nem támogat csatornákat, összehúzókat és zárványokat. A Solod nyelven történő fejlesztéshez a meglévő LSP-szerverek, lintelők, integrált fejlesztői környezetek és Go nyelvet támogató kód szerkesztők, valamint a „go test” eszköz használhatók.
A Solod nyelven írt kód integrálható C nyelvű alkalmazásokkal (a C nyelv hívhatja a Solod funkcióit és fordítva), és nem igényel runtime csatolást. A fő alkalmazási területek között említést nyer a rendszerszintű programozás, amely C-hez közeli lehetőségeket kínál, de Go-stílusú szintaxissal és típuskontrollal rendelkezik. A Solod nyelv használható a Go könyvtárak C nyelvű projektekbe való portolására is. A Go csomagok közül portolták:
- strings
- io (antonz.org)
- bytes
- mem
- slices
és stb. Különösen a portolt Go könyvtárak a Solod nyelvű programokban használhatók a szabványos libc C könyvtárral. csomagolása Alapértelmezés szerint minden memória a veremben kerül lefoglalásra, de a
Alloc / Free szabványos könyvtár funkcióival a halomban is lehet memóriát allokálni. Szemétgyűjtés és referencia-számlálás nem használatos, de a Solod lehetőségeket biztosít a típuskontrollra és a határokon túli hozzáférés miatti balesetek felfedezésére. A lógó mutatók és a memóriafelszabadítás hiánya ellenőrzésére nem kerül sor. A memóriahasználati problémák azonosításának fő módjaként az AddressSanitizer -fsanitize=address modern fordítókban való alkalmazásának említése ajánlott. Teljesítmény szempontjából a Solod nyelven írt lefordított programok többsége
a Go programokkal összevetve: gyorsabb программ на Go:
- A Byte csomag funkcióinak teljesítménye másfél szer gyorsabb az azonos memóriafogyasztás mellett;
- A bájtokkal való munkavégzés 1,3-szor gyorsabb olvasáskor és 2-4-szer gyorsabb íráskor;
- A Map csomagban az egész számú kulccsal történő lekérdezés 3,4-szer gyorsabb, de a kulcsok módosítása 1,6-szor lassabb;
- A karakterlánc kulcsokkal történő lekérdezés a Go nyelv szintjén van, de a módosítás 1,5-szor lassabb;
- Az egész számok elemzése és formázása 2-szer gyorsabb, míg a lebegőpontos számok esetében 1,5/1,2-szer;
- A karakterlánc-funkciók 1,3-szor gyorsabbak, a karakterláncok létrehozása pedig 2-4-szer gyorsabb, miközben 10-20%-kal csökkenti a memóriafogyasztást.
Forrás: linux.org.ru
