Egel ist eine untypisierte gleichzeitige funktionale Skriptsprache, die auf eifriger kombinatorischer Umschreibung mit einer prägnanten, aber bemerkenswert leistungsstarken Syntax basiert.
Dieser Interpreter wird unter Linux/MacOS/BSD entwickelt und verwendet icu4c für Unicode-Unterstützung, fmt für die Formatierung, ffi als Fremdfunktionsschnittstelle und GNU Lightning als zeitgemäßes Backend.
Der Interpreter kann mit einem aktuellen C++-Compiler kompiliert werden und verwendet zum Erstellen cmake. Im Allgemeinen benötigen Sie Root-Zugriff, um egel zu erstellen.
Es gibt ungefähr zwei Arten, wie Betriebssysteme und Paketmanager C++-Bibliotheken bereitstellen.
Das Open-Source-Modell (verschiedene Unixe und BSDs), bei dem C++-Bibliotheken vom Betriebssystemverteiler kompiliert und verteilt werden. Verwenden Sie Ihren Paketmanager, um libicu, libffi, fmt und GNU Lightning zu installieren.
Warnung: Ausnahmsweise wird Ubuntu/Debian nicht mit GNU Lightning ausgeliefert. Sie sollten dieses Paket kompilieren und installieren, bevor Sie den Interpreter kompilieren.
Das herstellerbasierte Modell (MacOS und Windows), bei dem C++-Bibliotheken normalerweise nicht bereitgestellt werden, da die Verknüpfung mit ihnen schwierig ist, und bei dem man diese Bibliotheken normalerweise von Grund auf kompiliert und sie statisch in der Anwendung verknüpft oder mit ihr verteilt. Links zu den Anbietern werden als Git-Submodule im Anbieterverzeichnis bereitgestellt. Da Sie hier auf sich allein gestellt sind, müssen Sie diese Bibliotheken herunterladen und kompilieren. Es gibt eine separate README.md im Herstellerverzeichnis, die etwas helfen sollte.
Für beide Modelle werden CMake-Dateien bereitgestellt. Wählen Sie die Datei aus, die Sie verwenden möchten, und benennen Sie sie in CMakeLists.txt
um.
Ein statisches Build-Cmake-Skript basierend auf dem Herstellermodell wird ebenfalls bereitgestellt.
Danach wird der Interpreter mit cmake
auf die übliche Weise erstellt. Führen Sie die folgenden Befehle auf einem Linux-System aus.
mkdir build
cd build
cmake ..
make
Hinweis: Für ältere GCC müssen Sie manchmal die stdc++fs
-Regel auskommentieren.
Dadurch sollten Sie einen Interpreter namens egel
und eine Reihe dynamisch ladbarer Egel-Objektdateien im build
-Verzeichnis erhalten.
Für eine systemweite Installation führen Sie make install
nach einem Build als Root aus.
(MacOS sucht nicht mehr in /usr/local/lib, legen Sie den Pfad fest.)
Auf einigen Systemen muss die Umgebungsvariable EGEL_PATH
festgelegt werden. Weitere Informationen hierzu finden Sie auf der Manpage.
Wenn Sie das nicht möchten, beachten Sie bitte, dass Sie für einfache Aufgaben nur den Interpreter namens egel
und das prelude im include
-Verzeichnis benötigen.
Von Cmake generierte Makefiles ermöglichen eine lokale Installation mit dem folgenden Befehl:
make DESTDIR=~ install
In diesem Fall werden Egel-Komponenten in ~/usr/local
-Verzeichnissen installiert und Sie können auf diese Komponenten verweisen, indem Sie die folgenden Befehle zu Ihrer Shell-Ressourcendatei hinzufügen, obwohl die spezifische Syntax unterschiedlich sein kann.
export PATH=~/usr/local/bin:$PATH
export EGEL_PATH=.:~/usr/local/lib/egel
Es gibt eine Handbuchseite, die Sie konsultieren können. Sie sollte installiert sein oder die folgende kurze Einführung zum Interpreter im Internet lesen.
Eine Liste der integrierten Kombinatoren finden Sie hier.
Der Interpreter bietet keine Befehlszeilenbearbeitung. Möglicherweise möchten Sie ihn mit dem alias egel="rlwrap egel"
umschließen.
Der Interpreter weist viele kurzlebige Objekte zu. Wenn Sie etwas mehr Geschwindigkeit wünschen, kann es sich lohnen, den Allokator zu wechseln.
Ich verwende jemalloc
unter Linux, indem ich LD_PRELOAD=`jemalloc-config --libdir`/libjemalloc.so.`jemalloc-config --revision
festlege.