Login
Newsletter
Werbung

Fr, 17. Januar 2020, 12:12

Software::Entwicklung

GNU Guile 3.0.0 erschienen

Der freie Scheme-Interpreter GNU Guile ist in Version 3.0.0 erschienen. Die neue Version steigert die Geschwindigkeit mit einem Just-In-Time-Compiler massiv und bringt zahlreiche weitere Verbesserungen.

Victor Siame

Die Programmiersprache Scheme ist eine stark von LISP beeinflusste Programmiersprache, die überwiegend, aber nicht ausschließlich funktionale Paradigmen verwendet. Eine der freien Implementationen von Scheme stammt von GNU und nennt sich Guile. Guile ist portabel, kann eigenständig oder als eingebettete Programmiersprache in Anwendungen verwendet werden und ist in C geschrieben. Es kann als Skript-Interpreter, interaktiv und als Scheme-Compiler genutzt werden. Für GNU-Software ist Guile die bevorzugte Erweiterungssprache. Guile implementiert viele der Scheme-Standards, darunter R5RS, R6RS, R7RS und eine Anzahl von SRFIs. Zusätzlich bringt Guile ein eigenes Modulsystem, vollständigen Zugriff auf POSIX-Systemaufrufe, Netzwerk-Unterstützung, Thread-Unterstützung, dynamisches Linken, eine Schnittstelle zum Aufrufen von Funktionen in C-Bibliotheken und leistungsfähige Stringverarbeitung mit.

Fast drei Jahre nach der Freigabe von Guile 2.2.0 ist jetzt Guile 3.0.0 verfügbar. Die Liste der Neuerungen und Verbesserungen in der neuen Version ist relativ lang. Die wichtigste davon dürfte die Einführung eines Just-In-Time (JIT)-Compilers sein. Dieser erzeugt nativen Code und soll dafür sorgen, dass Guile-Programme bis zu viermal so schnell laufen wie bisher. Die eval-Anweisung soll nun wieder nahezu so schnell sein wie im historischen Guile 1.8, als sie noch in C geschrieben war.

Die Instruktionen der virtuellen Maschine von Guile wurden ein weiteres Mal überarbeitet und arbeiten nun auf niedrigerer Ebene, was bessere Optimierungen ermöglicht und die JIT-Code-Generierung vereinfacht. Wird Guile als Interpreter genutzt, können manche Programme langsamer sein als zuvor, da sie mehr Instruktionen der virtuellen Maschine abarbeiten müssen.

Guile erlaubt in der neuen Version, interne Definitionen und Ausdrücke zu mischen. Zuvor mussten interne Definitionen vor allen Ausdrücken stehen. Die verschiedenen Implementationen von strukturierten Datentypen, die es verwirrenderweise früher gab, wurden jetzt in einer einzigen zusammengeführt. Auch die Ausnahmebehandlung wurde neu implementiert, um sich vornehmlich an der Spezifikation R6RS orientieren. Für die Benutzer soll dies aber keine Änderung mit sich bringen.

Das »guard«-Konstrukt ändert nun nicht mehr den Stack, um Bedingungen zu prüfen. Dadurch wird es effizienter, ändert aber auch die Semantik geringfügig. Die meisten Anwender sollten dies aber nicht bemerken. Eine weitere Änderung ist, dass GOOPS-Klassen standardmäßig nicht mehr umdefiniert werden können. Ferner wurden die Symbole else, =>, ... und _ definiert, wie im Standard vorgesehen. G_ wurde als Abkürzung für gettext eingeführt, denn das früher gern verwendete _ ist jetzt nicht mehr möglich. R7RS wurde in Guile implementiert und eine Kommandozeilenoption --r6rs für mehr Kompatibilität zu R6RS eingeführt.

Die vielen weiteren Änderungen kann man in der Ankündigung nachlesen. Guile 3.0 kann parallel zu Guile 2.2.x installiert werden und steht unter der GPLv3 auf der Projektseite zum Download bereit.

Werbung
Kommentare (Insgesamt: 0 || Kommentieren )
Pro-Linux
Unterstützer werden
Neue Nachrichten
Werbung