Solod è un sottoinsieme del linguaggio Go, trascompilato nel linguaggio C

Presentato linguaggio di programmazione Solod (So), che fornisce un sottoinsieme del linguaggio Go, traspilabile in una rappresentazione in linguaggio C (C11) che è adatta per la compilazione con i compilatori GCC, Clang e zig cc. La principale differenza tra Solod e Go è l'uso della gestione manuale della memoria, senza l'uso di un garbage collector, senza allocazione automatica della memoria e senza conteggio dei riferimenti. Il transpiler per Solod è scritto in linguaggio Go e distribuito è sotto licenza BSD. Supporta il funzionamento su Linux, macOS e Windows.

Il linguaggio supporta strutture, metodi, interfacce, slice e funzioni che restituiscono più valori (ad esempio, risultato + codice di errore), generics e chiamate ritardate (defer). Per semplificare, il linguaggio non supporta canali, goroutine e chiusure. Durante lo sviluppo in linguaggio Solod possono essere utilizzati server LSP esistenti, linters, ambienti di sviluppo integrati e editor di codice che supportano il linguaggio Go, oltre agli strumenti 'go test'.

Il codice scritto in Solod può integrarsi con applicazioni in linguaggio C (il linguaggio C può richiamare funzioni in Solod e viceversa) e non richiede l'attacco di runtime. Tra le principali aree di applicazione si evidenzia la programmazione di sistema con capacità simili a quelle del C, ma con una sintassi in stile Go e con garanzia di verifica dei tipi. Solod può anche essere utilizzato per il porting di librerie Go da utilizzare in progetti in C. I pacchetti Go portati sono:

e ecc. Oltre a insieme le librerie Go portate nei programmi in linguaggio Solod possono essere utilizzate un wrapper sopra la libreria standard C libc.

Per impostazione predefinita, tutta la memoria è allocata nello stack, ma attraverso le funzioni Alloc / Free Nella libreria standard, è possibile allocare memoria nel heap. Non vengono utilizzati il garbage collection e il conteggio dei riferimenti, ma Solod offre funzionalità per il controllo dei tipi e per il termine anomalo in caso di accesso oltre i limiti dell'array. Tuttavia, non vengono effettuati controlli per il ritorno di puntatori sospesi e per la mancata liberazione della memoria. Come principale metodo per identificare problemi nella gestione della memoria, si raccomanda di utilizzare AddressSanitizer -fsanitize=address nei compilatori moderni.

In termini di prestazioni, i programmi compilati in Solod, nella maggior parte dei casi, più veloce programmi in Go:

  • le funzioni del pacchetto Byte sono 1.5 volte più veloci con un consumo di memoria identico;
  • la manipolazione dei buffer di byte è più veloce di 1.3 volte in lettura e da 2 a 4 volte in scrittura;
  • nella mappa Map, la selezione per chiavi intere è più veloce di 3.4 volte, ma la modifica delle chiavi è più lenta di 1.6 volte;
  • la selezione per chiavi stringa è pari a quella del linguaggio Go, ma la modifica è più lenta di 1.5 volte;
  • il parsing e il formattamento di numeri interi sono più veloci di 2 volte, mentre per i numeri a virgola mobile sono più veloci di 1.5/1.2 volte;
  • Le funzioni stringa sono più veloci di 1,3 volte, mentre la creazione di stringhe è più rapida di 2-4 volte con una riduzione del consumo di memoria del 10-20%.

Fonte: linux.org.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster