Solod — eine Teilmenge der Programmiersprache Go, die in C übersetzt wird

Präsentiert Programmiersprache Solod (So), eine Teilmenge der Programmiersprache Go, die in eine C (C11) Darstellung transpiliert wird, die mit den Compilern GCC, Clang und zig cc kompatibel ist. Ein wesentliches Merkmal von Solod im Vergleich zu Go ist die manuelle Speicherverwaltung, die ohne Garbage Collector, automatische Speicherzuweisung und ohne Referenzzählung funktioniert. Der Transpiler für Solod ist in Go geschrieben und wird unter der GPLv3-Lizenz bereitgestellt. unter der BSD-Lizenz. Es wird Unterstützung für Linux, macOS und Windows geboten.

Die Sprache unterstützt Strukturen, Methoden, Schnittstellen, Slices, Rückgabewerte von Funktionen mit mehreren Werten (zum Beispiel Ergebnis + Fehlercode), Generika und verzögerte Aufrufe (defer). Zur Vereinfachung werden in der Sprache keine Kanäle, Koroutinen und Closures unterstützt. Bei der Entwicklung in Solod können bestehende LSP-Server, Linter, integrierte Entwicklungsumgebungen und Code-Editoren verwendet werden, die die Sprache Go unterstützen, sowie das Werkzeug „go test“.

Der in Solod geschriebene Code kann mit Anwendungen in C integriert werden (C kann Funktionen in Solod aufrufen und umgekehrt) und benötigt keine Runtime-Anbindung. Zu den Hauptanwendungsbereichen gehört die Systemprogrammierung mit C-ähnlichen Möglichkeiten, jedoch mit einem Go-ähnlichen Syntax und Typüberprüfung. Solod kann auch verwendet werden, um Go-Bibliotheken für Projekte in C zu portieren. Von Go portierte Pakete sind:

und usw. Neben Set Portierte Go-Bibliotheken können in Programmen in Solod über Bindings die Standard-C-Bibliothek libc genutzt werden.

Standardmäßig wird der gesamte Speicher auf dem Stack alloziert, jedoch können über die Funktionen Alloc / Free In der Standardbibliothek kann Speicher im Heap alloziert werden. Garbage Collection und Referenzzählung werden nicht verwendet, aber Solod bietet Funktionen zur Typprüfung und zur Abruchbehandlung beim Zugriff außerhalb des Arrays. dabei werden keine Überprüfungen auf das Zurückgeben von dangling pointers und die Freigabe von Speicher durchgeführt. Als Hauptmethode zur Identifizierung von Problemen bei der Arbeit mit Speicher wird die Verwendung von AddressSanitizer -fsanitize=address in modernen Compilern erwähnt.

In Bezug auf die Leistung sind kompilierte Programme, die in Solod geschrieben wurden, in den meisten Fällen schneller Programme in Go:

  • Die Leistung von Funktionen aus dem Paket Byte ist bei gleicher Speichernutzung 1,5-mal schneller;
  • Die Arbeit mit Byte-Puffern ist beim Lesen 1,3-mal schneller und beim Schreiben 2-4-mal schneller;
  • Im Paket Map ist die Abfrage bei ganzzahligen Schlüsseln 3,4-mal schneller, aber die Modifikation der Schlüssel ist 1,6-mal langsamer;
  • Die Abfrage bei Zeichenfolgen-Schlüsseln liegt auf dem gleichen Niveau wie die Sprache Go, jedoch ist die Modifikation 1,5-mal langsamer;
  • Das Parsen und Formatieren von Ganzzahlen ist 2-mal schneller, während es bei Fließkommazahlen 1,5/1,2-mal schneller ist;
  • Stringfunktionen sind 1,3-mal schneller, während die Erstellung von Strings 2- bis 4-mal schneller erfolgt und der Speicherverbrauch um 10-20 % sinkt.

Quelle: linux.org.ru

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster