Solod on Go keele alamsĂŒsteem, mis tĂ”lgitakse C keelde.

Esitletud programmeerimiskeel Solod (So), mis pakub Go keele alamsĂŒsteemi, mis transkompileeritakse C keele (C11) vormingusse, mille koostamiseks sobivad GCC, Clang ja zig cc kompilatsioonid. Solodi peamine erinevus Go-st on kĂ€sitsi mĂ€lu haldamise kasutamine, mis töötab ilma prĂŒgikorjaja, automaatse mĂ€lu ja viidatud arvu haldamiseta. Transpiler Solodile on kirjutatud Go keeles ja GNU Üldine Avaliku litsentsi alusel. BSD-litsentsi alusel. Toetatakse tööd Linuxi, macOS-i ja Windowsiga.

Keel toetab struktuure, meetodeid, liideseid, lĂ”ike, mitme vÀÀrtuse tagastamist funktsioonidega (nt tulemus + vea kood), geenereid ja edasi lĂŒkatud kutsesid (defer). Keele lihtsustamise eesmĂ€rgil ei toetata kanaleid, kergprogrammid ja sulgemisi. Solodi arendamisel vĂ”ivad kasutada olemasolevaid LSP-servereid, linte, integreeritud arenduskeskkondi ja koodi redaktoreid, mis toetavad Go keelt, samuti tööriista "go test".

Solod'i kirjutatud kood saab integreeruda C-keeles rakendustega (C keel saab kutsuda Solod'i funktsioone ja vastupidi) ning ei vaja runtime'i sidumist. Peamised rakendusvaldkonnad hĂ”lmavad sĂŒsteemiprogrammeerimist, mis pakub C-le lĂ€hedasi vĂ”imalusi, kuid Go stiilis sĂŒntaksiga ja tĂŒĂŒbikontrolliga. Solod'i saab kasutada ka Go raamatukogude portimiseks C projektide jaoks. C keelde on portitud jĂ€rgmised Go paketid:

ja jne. Lisaks koguja portitud Go raamatukogusid Solod keeles programmides saab kasutada moodulit standardse C raamatukogu libc kohal.

Vaikimisi eraldatakse kogu mĂ€lu virnast, kuid funktsioonide kaudu Alloc / Free tavaline raamatukogu vĂ”imaldab mĂ€lu eraldamist kuhjas. Prahtude kogumine ja viidete arvestus ei ole kasutuses, kuid Solod pakub vĂ”imalusi tĂŒĂŒpide kontrollimiseks ja ÀÀrmuslike lĂ”ppemise vĂ€ltimiseks massiivi vahetus. Samas ei kontrollita viidete rippumise ja mĂ€lu vabastamise puudumist. Peamiseks viisiks mĂ€lu probleemide tuvastamiseks on AddressSanitizer -fsanitize=address kasutamine kaasaegsetes kompilaatorites.

Töösuhtes genereeritud programmid, mis on kirjutatud Solodis, on enamikul juhtudel kiirem programmid Go keeles:

  • Byte paketi funktsioonide töötluse jĂ”udlus on poolteist korda kiiremad sama mĂ€lu tarbimise juures;
  • byte-buffereid töödeldakse 1,3 korda kiiremini lugemisel ja 2-4 korda kirjutamisel;
  • Map paketis tĂ€isarvuliste vĂ”tmete valimine on 3,4 korda kiirem, aga vĂ”tmete muutmine on 1,6 korda aeglasem;
  • stringi vĂ”tmete valimine on Go keele tasemel, aga muutmine on 1,5 korda aeglasem;
  • tĂ€isarvude parsimine ja vormindamine on 2 korda kiirem, aga ujuva komaga 1,5/1,2 korda kiirem;
  • stringifunktsioonid on 1,3 korda kiirem ja stringide loomine 2–4 korda kiirem, samas kui mĂ€lu tarbimine vĂ€heneb 10–20%.

Allikas: linux.org.ru

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster