Solod — podskup jezika Go, transpilira se u jezik C

Predstavljen programski jezik Solod (So), koji pruža podskup jezika Go, transkompajliran u predstavu na jeziku C (C11), pogodnu za sastavljanje kompajlerima GCC, Clang i zig cc. Ključna razlika između Soloda i Go je korištenje ručnog upravljanja memorijom, koje radi bez primjene sakupljača smeća, bez automatske alokacije memorije i bez brojanja referenci. Transpajler za Solod napisan je na jeziku Go i distribuira se pod BSD licencom. Podržan je rad na Linuxu, macOS-u i Windowsu.

Jezik podržava strukture, metode, sučelja, rezlice, povratne funkcije s više vrijednosti (npr. rezultat + kod pogreške), generici i odložene pozive (defer). U cilju pojednostavljenja, jezik ne podržava kanale, kooperacije i zatvaranja. Prilikom razvoja na jeziku Solod mogu se koristiti postojeći LSP poslužitelji, linteri, integrirana razvojna okruženja i uređivači koda koji podržavaju jezik Go, kao i alat 'go test'.

Kod napisan na Solodu može se integrirati s aplikacijama na jeziku C (jezik C može pozivati funkcije na Solodu i obrnuto) i ne zahtijeva prateći runtime. Od ključnih područja primjene ističe se sistemsko programiranje s mogućnostima bliskim jeziku C, ali sa sintaksom u stilu Go i pružanjem provjere tipova. Solod se također može koristiti za portiranje Go biblioteka za korištenje u projektima na C-u. Na jezik C portirani su Go paketi:

i t. p. Osim skupa portiranih Go biblioteka u programima na jeziku Solod mogu se koristiti omotači iznad standardne C biblioteke libc.

Prema zadanim postavkama, svoja memorija se dodjeljuje na stogu, ali preko funkcija Alloc / Free standardne biblioteke može se dodjeljivati memorija na hrpi. Sakupljanje smeća i brojanje referenci se ne koriste, ali u Solodu su dostupne mogućnosti za provjeru tipova i izvanredno završavanje prilikom pristupa izvan granica niza. Pri tome se ne provode provjere za vraćanje visećih pokazivača i nedostatak oslobađanja memorije. Kao osnovna metoda otkrivanja problema prilikom rada s memorijom spominje se korištenje AddressSanitizer -fsanitize=address u modernim kompajlerima.

Po performansama, kompajlirani programi napisani na Solodu, u većini slučajeva brže programa na Go:

  • Izvedba funkcija iz Byte paketa brža je 1.5 puta uz identičnu potrošnju memorije;
  • Rad s bajtovnim bufferima brži je 1.3 puta prilikom čitanja i 2-4 puta prilikom pisanja;
  • U Map paketu, izdavanje po cjelobrojnim ključevima brže je 3.4 puta, ali modifikacija ključevima sporija je 1.6 puta;
  • Izdavanje po string ključevima na istoj razini kao i jezik Go, no modifikacija je sporija 1.5 puta;
  • Parsiranje i formatiranje cijelih brojeva brže je 2 puta, a s decimalnim brojevima — 1.5/1.2 puta;
  • Funkcije za stringove brže su 1.3 puta, a stvaranje stringova brže je 2-4 puta uz smanjenje potrošnje memorije za 10-20%.

Izvor: linux.org.ru

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster