Solod – Go keele alamhulk, mis kompileeritakse C keelde

Esitletud programmeerimiskeel Solod (So), mis pakub Go keele alamsubset, mis transpileeritakse C keele (C11) vormingusse, sobides GCC, Clang ja zig cc kompilatorite koostamiseks. Solodi peamine erinevus Go-st on kĂ€sitsi mĂ€lu haldamise kasutamine, ilma prĂŒgikoristajat, automaatse mĂ€lu eraldamise ja viidete arvestamiseta. Solodi transpiler on kirjutatud Go keeles ja levitatakse on BSD litsentsi all. Toetab töötlust Linuxis, macOS-is ja Windowsis.

Keel toetab struktuure, meetodeid, liideseid, viipasid, funktsioonide mitme vÀÀrtuse tagastamist (nĂ€iteks tulemus + veakood), eranditele ja viivitusi (defer). Keel ei toeta kanaleid, kooperatiivprogrammeerimist ja sulgureid, et lihtsustada. Solodi programmid vĂ”ivad kasutada olemasolevaid LSP-servereid, lintereid, integreeritud arenduskeskkondi ja koodi tulemĂŒĂŒre, mis toetavad Go keelt, samuti tööriistu „go test”.

Solodis kirjutatud kood vĂ”ib integreeruda C keeles rakenduste ja vastupidi (C keel saab kutsuda Solodi funktsioone ja vastupidi) ning ei vaja runtime'i. Olulised rakendusalad hĂ”lmavad sĂŒsteemiprogrammeerimist, mis sarnaneb C vĂ”imalustega, kuid Go stiilis sĂŒntaksiga ja tĂŒĂŒpide kontrollimise tagamisega. Solodi saab kasutada ka Go raamatukogude portimiseks C projektidesse. Go paketid, mis on portitud C keelele:

ja jne. Lisaks Solodis saab kasutada portitud Go raamatukogude kogumit ĂŒldise C raamatukogu libc peal. ĂŒmbermoodustust Vaikimisi eraldatakse kogu mĂ€lu virna, kuid standardraamatuka lĂ€bi funktsioonide

Alloc / Free saab eraldada mĂ€lu ka kuhja. PrĂŒgikoristus ja viidete arvestamine ei ole kasutusel, kuid Solodis on olemas tĂŒĂŒpide kontrollimise ja massiivi piiriĂŒletusel vigade tuvastamise vĂ”imalused. KĂŒll aga ei tehta kontrolli rippuvate nĂ€idikutega (dangling pointer) ja mĂ€lu vabastamise puudumise osas. Peamine viis mĂ€luprobleemide tuvastamiseks on AddressSanitizer -fsanitize=address modernsetes kompilaatorites. Kompileeritud programmid, mis on kirjutatud Solodis, on enamasti

kiiruselt sarnased Go programmidele: kiirem rakendusi Go-l:

  • Byte paketi funktsioonide töö efektiivsus on 1,5 korda kiirem sama mĂ€lu kasutuse juures;
  • Töötlemine baitide puu-dega on 1,3 korda kiirem lugemisel ja 2-4 korda kiirem kirjutamisel;
  • Map paketis on tĂ€isarvuliste vĂ”tmete valiku kiirus 3,4 korda kiire, kuid vĂ”tmete muutmine on 1,6 korda aeglasem;
  • Stringi vĂ”tmete valiku kiirus on samal tasemel Go keelega, kuid vĂ”tmete muutmine on 1,5 korda aeglasem;
  • TĂ€isarvude parsimine ja vormindamine on 2 korda kiirem, ujukomade puhul 1,5/1,2 korda kiirem;
  • Stringide funktsioonid on 1,3 korda kiirem, ja stringide loomine on 2-4 korda kiirem, samas mĂ€lu tarbimine vĂ€heneb 10-20%;

Allikas: linux.org.ru

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster