Het Solod-project ontwikkelt een subset van de programmeertaal Go, die wordt omgezet naar de programmeertaal C

De programmeertaal Solod (So) is geĆÆntroduceerd en biedt een subset van de Go-taal, die getranscompileerd wordt naar een representatie in de C-taal (C11) en geschikt is voor compilatie door GCC, Clang en zig cc. Het belangrijkste verschil tussen Solod en Go en Tinygo is het gebruik van handmatig geheugenbeheer, dat zonder garbage collection werkt, zonder automatische geheugentoewijzing en zonder referentietelling. De transpiler voor Solod is geschreven in de Go-taal en wordt gedistribueerd onder de BSD-licentie. Het wordt ondersteund op Linux, macOS en Windows.

De taal ondersteunt structuren, methoden, interfaces, slices, het retourneren van meerdere waarden door functies (bijvoorbeeld resultaat + foutcode), generics en uitgestelde aanroepen (defer). Om het eenvoudiger te maken, ondersteunt de taal geen kanalen, coroutines en closures. Bij de ontwikkeling in de Solod-taal kunnen bestaande LSP-servers, linters, geĆÆntegreerde ontwikkelomgevingen en code-editors die de Go-taal ondersteunen, evenals de 'go test'-toolset, gebruikt worden.

Code geschreven in Solod kan geĆÆntegreerd worden met applicaties in de C-taal (de C-taal kan functies in Solod aanroepen en vice versa) en heeft geen runtime nodig. Belangrijke toepassingsgebieden zijn onder andere systeemprogrammering met C-achtige mogelijkheden, maar met een Go-stijl syntaxis en typecontrole. Solod kan ook gebruikt worden voor het porteren van Go-bibliotheken voor gebruik in C-projecten. Go-pakketten zoals strings, io, bytes, mem, slices, enzovoorts, zijn naar de C-taal geporteerd. Naast de set van geporteerde Go-bibliotheken kunnen in programma's geschreven in Solod ook wrappers bovenop de standaard C-bibliotheek libc worden gebruikt.

Standaard wordt al het geheugen op de stack toegewezen, maar via de functies Alloc / Free van de standaardbibliotheek kan geheugen op de heap worden toegewezen. Garbage collection en referentietelling worden niet gebruikt, maar Solod biedt mogelijkheden voor typecontrole en noodstop wanneer er buiten een array wordt aangesproken. Er worden echter geen controles uitgevoerd om zwevende pointers en het ontbreken van geheugenvrijgaven te detecteren. Als belangrijkste manier om problemen met geheugen te identificeren, wordt het gebruik van AddressSanitizer (-fsanitize=address) in moderne compilers vermeld.

Wat betreft prestaties zijn programma's die zijn gecompileerd met Solod in de meeste gevallen sneller dan programma's in Go. Bijvoorbeeld, de prestaties van functies uit het Byte-pakket zijn anderhalve keer sneller met hetzelfde geheugengebruik. Het werken met byte-buffers is 1,3 keer sneller bij lezen en 2 tot 4 keer sneller bij schrijven. In het Map-pakket is de selectie op een gehele sleutel 3,4 keer sneller, maar de wijziging van sleutels is 1,6 keer langzamer. Selectie op string-sleutels is op hetzelfde niveau als de taal Go, maar de wijziging is 1,5 keer langzamer. Het parseren en formatteren van gehele getallen is 2 keer sneller, en voor drijvende getallen is dit 1,5/1,2 keer. Stringfuncties zijn 1,3 keer sneller, terwijl het maken van strings 2 tot 4 keer sneller is met een vermindering van het geheugengebruik met 10-20%.

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers šŸ”„ Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster