Das Solod-Projekt entwickelt ein Teilmenge der Go-Sprache, die in die C-Sprache übersetzt wird.

Die Programmiersprache Solod (So) wurde vorgestellt, die ein Teilmenge der Go-Sprache bereitstellt, die in eine C11-kompatible Darstellung transkompiliert wird, die für die Compiler GCC, Clang und zig cc geeignet ist. Ein entscheidender Unterschied zwischen Solod und Go sowie Tinygo ist die manuelle Speicherverwaltung, die ohne Garbage Collector, automatische Speicherzuweisung und Referenzzählung funktioniert. Der Transpiler für Solod ist in Go geschrieben und wird unter der BSD-Lizenz verbreitet. Es werden Linux-, macOS- und Windows-Betriebssysteme unterstützt.

Die Sprache unterstützt Strukturen, Methoden, Schnittstellen, Slices, Rückgaben von Funktionen mit mehreren Werten (z.B. Ergebnis + Fehlermeldung), Generics und verzögerte Aufrufe (defer). Um die Einfachheit zu fördern, werden in der Sprache keine Channels, Koroutinen und Closures unterstützt. Bei der Entwicklung in Solod können bestehende LSP-Server, Linter, integrierte Entwicklungsumgebungen und Code-Editoren, die die Go-Sprache unterstützen, sowie das 'go test'-Tool verwendet werden.

Der in Solod geschriebene Code kann mit Anwendungen in C integriert werden (C kann Funktionen in Solod aufrufen und umgekehrt) und erfordert keine Runtime-Anbindung. Zu den Hauptanwendungsbereichen zählt die Systemprogrammierung mit nahezu C-ähnlichen Möglichkeiten, jedoch mit einer Syntax im Go-Stil und typensicherem Code. Solod kann auch verwendet werden, um Go-Bibliotheken für Projekte in C zu portieren. Die Go-Pakete strings, io, bytes, mem, slices usw. wurden für C portiert. Neben dem Set von portierten Go-Bibliotheken können in Solod-Anwendungen auch Wrapper über die Standard-C-Bibliothek libc verwendet werden.

Standardmäßig wird der gesamte Speicher im Stack zugewiesen, jedoch kann durch die Funktionen Alloc / Free der Standardbibliothek Speicher im Heap angefordert werden. Garbage Collection und Referenzzählung kommen nicht zum Einsatz, allerdings bietet Solod Funktionen zur Typüberprüfung und zum Notabschalten bei Zugriffen außerhalb der Array-Grenzen. Prüfungen auf hängende Zeiger (dangling pointer) und auf die korrekte Freigabe von Speicher werden nicht durchgeführt. Als wichtigstes Werkzeug zur Identifizierung von Problemen mit der Speicherverwaltung wird der Einsatz von AddressSanitizer (-fsanitize=address) in modernen Compilern empfohlen.

In Bezug auf die Leistung sind die in Solod kompilierten Programme in den meisten Fällen schneller als Programme in Go. Zum Beispiel ist die Leistung der Funktionen aus dem Byte-Paket 1,5-mal schneller bei identischem Speicherverbrauch. Die Arbeit mit Byte-Puffern ist 1,3-mal schneller beim Lesen und 2-4-mal schneller beim Schreiben. Im Map-Paket ist die Abfrage nach Ganzzahlenschlüsseln 3,4-mal schneller, jedoch ist die Modifikation der Schlüssel 1,6-mal langsamer. Die Abfrage nach String-Schlüsseln liegt auf dem Niveau von Go, aber die Modifikation ist 1,5-mal langsamer. Das Parsen und Formatieren von Ganzzahlen ist 2-mal schneller, während das für Gleitkommazahlen 1,5/1,2-mal schneller ist. String-Funktionen sind 1,3-mal schneller, und das Erstellen von Strings ist 2-4-mal schneller bei einer Reduzierung des Speicherverbrauchs um 10-20%.

Quelle: opennet.ru

Купить надежный хостинг для сайтов с защитой от DDoS, VPS VDS серверы 🔥 Купить надежный хостинг для сайтов с защитой от DDoS, VPS VDS серверы | ProHoster