GNU Guile 3.0 ist erschienen

Hat stattgefunden Release GNU Guile 3.0, einer freien Implementierung einer funktionalen Programmiersprache Schema, die die Möglichkeit unterstützt, Code in Anwendungen anderer Programmiersprachen einzubetten. Guile kann als Sprache zur Erweiterung von Anwendungen, zur Definition von Konfigurationen oder zur Entwicklung von Komponenten verwendet werden, um verschiedene von der Anwendung bereitgestellte Primitivtypen zu verbinden. Guile ist die offizielle Erweiterungssprache des GNU-Betriebssystems.

Die Grundlage von Guile bildet eine leistungsfähige virtuelle Maschine, die einen portablen Befehlssatz ausführt, der von einem speziellen optimierenden Compiler erzeugt wird. Die Guile-Virtual-Machine lässt sich leicht mit Code von Anwendungen in C und C++ integrieren. Neben der Sprache Scheme, für die Unterstützung von Spezifikationen implementiert wurde, R5RS, R6RS und R7RS, wurden im Rahmen des Guile-Projekts auch Compiler für andere Sprachen entwickelt, wie ECMAScript, Emacs Lisp und Lua (in der Entwicklung). Das Paket enthält eine Modulbibliothek, in der typische Dienstfunktionen wie die Arbeit mit dem HTTP-Protokoll, das Parsen von XML und die Anwendung objektorientierter Programmierung implementiert sind.

Eine der Schlüsselneuheiten in GNU Guile 3.0 ist das Erscheinen eines JIT-Compilers, zusätzlich zu den zuvor angebotenen Interpreter und Bytecode-Compiler, die in einer speziellen virtuellen Maschine ausgeführt werden, die als Bibliothek an die Anwendung gebunden ist. JIT ermöglicht die Generierung von Maschinencode zur Laufzeit und beschleunigt die Ausführung von Guile-Anwendungen erheblich (Tests zeigen eine Beschleunigung von bis zu 4-fach). Der JIT-Compiler unterstützt Architekturen wie x86-64, i686, ARMv7 und AArch64.

Einige andere Verbesserungen:

  • Unterstützung der neuen Spezifikation der Sprache Scheme R7RS und der darin definierten Bibliotheksmodule;
  • Die Guile-Virtual-Machine unterstützt niedrigere Bytecode-Level, die erweiterte Optimierungen ermöglichen;
  • Unterstützung für die Kombination interner define-Definitionen und Ausdrücke (z. B. „(define _ (begin (foo) #f))“);
  • Eine einheitliche Implementierung des strukturierten Datentyps („records“) wurde vorgeschlagen;
  • Die Primitive zur Behandlung von Ausnahmen (throw und catch) wurden überarbeitet;
  • Es wurden Bindungen für die erweiterte Syntax „else“, „=>“, „…“ und „_“ definiert;
  • In http-request, http-get und anderen mit Web-Clients verbundenen Verfahren wurde die Möglichkeit hinzugefügt, Inhalte über einen verschlüsselten Kommunikationskanal mit TLS und korrekter Zertifikatprüfung zu laden.

Quelle: opennet.ru

60GB SSD 8Gb DDR4