Solod este un subset al limbajului Go, transformat în limbajul C.

Prezentat limbaj de programare Solod (So), oferind un subset al limbajului Go, transcompilat într-o reprezentare în limbajul C (C11), potrivită pentru compilatoarele GCC, Clang și zig cc. Principala caracteristică distinctivă a Solod față de Go este utilizarea managementului manual al memoriei, funcționând fără un colector de gunoi, fără alocare automată a memoriei și fără contorizarea referințelor. Transpilerul pentru Solod este scris în limbajul Go și se răspândește sub licența BSD. Este suportat pe Linux, macOS și Windows.

Limbajul suportă structuri, metode, interfete, slice-uri, returnarea funcțiilor cu mai multe valori (de exemplu, rezultat + cod de eroare), generice și apeluri amânate (defer). Cu scopul de a simplifica, limbajul nu suportă canale, coroutine sau închideri. În dezvoltarea cu limbajul Solod pot fi utilizate servere LSP existente, lintere, medii de dezvoltare integrate și editori de cod care suportă limbajul Go, precum și instrumente „go test”.

Codul scris în Solod poate fi integrat cu aplicații în limbajul C (limbajul C poate apela funcții în Solod și viceversa) și nu necesită atașarea unui runtime. Printre domeniile cheie de aplicare se numără programarea sistemică cu capacități apropiate de C, dar cu o sintaxă în stil Go și asigurarea verificării tipurilor. Solod poate fi de asemenea utilizat pentru portarea bibliotecilor Go pentru utilizare în proiecte în C. Bibliotecile Go portate în limbajul C sunt:

și etc. În plus set de biblioteci Go portate în programele scrise în limbajul Solod pot fi utilizate îmbinarea deasupra bibliotecii standard C libc.

În mod implicit, toată memoria este alocată în stivă, dar prin funcțiile Alloc / Free ale bibliotecii standard, se poate aloca memorie în heap. Colectarea gunoaielor și contorizarea referințelor nu sunt utilizate, dar în Solod sunt oferite posibilități pentru verificarea tipurilor și terminarea bruscă în cazul accesării în afara matricei. Totuși, verificările pentru întoarcerea pointerilor suspendați și lipsa eliberării memoriei nu sunt efectuate. Ca metodă principală de identificare a problemelor de lucru cu memoria, se menționează utilizarea AddressSanitizer -fsanitize=address în compilatoarele moderne.

În ceea ce privește performanța, programele compilate scrise în Solod, în majoritatea cazurilor mai rapid se compară cu programele scrise în Go:

  • performanța funcțiilor din pachetul Byte este cu 50% mai rapidă, având un consum de memorie identic;
  • lucrul cu buferele de bytes este cu 1.3 ori mai rapid la citire și de 2-4 ori mai rapid la scriere;
  • în pachetul Map, selectarea după chei întregi este cu 3.4 ori mai rapidă, dar modificarea cheilor este cu 1.6 ori mai lentă;
  • selectarea pe chei de stringuri este la același nivel cu limbajul Go, dar modificarea este mai lentă cu 1.5 ori;
  • parsingul și formatarea numerelor întregi sunt cu 2 ori mai rapide, iar cele cu virgulă mobilă - cu 1.5/1.2 ori;
  • funcțiile de stringuri sunt cu 1.3 ori mai rapide, iar crearea stringurilor este cu 2-4 ori mai rapidă, cu o reducere a consumului de memorie de 10-20%.

Sursa: linux.org.ru

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster