Egel est un langage de script fonctionnel concurrent non typé basé sur une réécriture de combinateurs avide avec une syntaxe concise mais remarquablement puissante.
Cet interpréteur est développé sur Linux/MacOS/BSD et utilise icu4c pour la prise en charge d'Unicode, fmt pour le formatage, ffi comme interface de fonction étrangère et GNU Lightning comme backend avancé.
L'interpréteur peut être compilé avec un compilateur C++ actuel et utilise cmake pour le construire. En général, vous aurez besoin d'un accès root pour créer egel.
Il existe environ deux manières dont les systèmes d'exploitation et les gestionnaires de packages fournissent des bibliothèques C++.
Le modèle open source (divers Unix et BSD) où les bibliothèques C++ sont compilées et diffusées par le distributeur du système d'exploitation. Utilisez votre gestionnaire de paquets pour installer libicu, libffi, fmt et GNU Lightning.
Attention : exceptionnellement, Ubuntu/Debian n'est pas livré avec GNU Lightning. Vous êtes censé compiler et installer ce package avant de compiler l'interpréteur.
Le modèle basé sur le fournisseur (MacOS et Windows) dans lequel les bibliothèques C++ ne sont généralement pas fournies car il est difficile de les lier, et où l'on compile généralement ces bibliothèques à partir de zéro et les lie statiquement ou les distribue avec l'application. Les liens vers les fournisseurs sont fournis sous forme de sous-modules git dans le répertoire des fournisseurs et, vous êtes seul ici, vous devrez télécharger et compiler ces bibliothèques. Il existe un fichier README.md distinct dans le répertoire du fournisseur qui devrait aider quelque peu.
Les fichiers CMake sont fournis pour les deux modèles, sélectionnez celui que vous souhaitez utiliser et renommez-le en CMakeLists.txt
.
Un script cmake de construction statique basé sur le modèle du fournisseur est également fourni.
Après cela, l'interprète est créé avec cmake
de la manière standard. Exécutez les commandes suivantes sur un système Linux.
mkdir build
cd build
cmake ..
make
remarque : pour les anciens GCC, vous devez parfois décommenter la règle stdc++fs
.
Cela devrait vous donner un interpréteur nommé egel
et un certain nombre de fichiers objets Egel chargeables dynamiquement dans le répertoire build
.
Pour une installation à l’échelle du système, exécutez make install
après une compilation en tant que root.
(MacOS dyld ne regarde plus dans /usr/local/lib, définissez le chemin.)
Sur certains systèmes, la variable d'environnement EGEL_PATH
doit être définie. Consultez la page de manuel pour plus d'informations à ce sujet.
Si vous ne souhaitez pas faire cela, veuillez noter que vous n'avez besoin que de l'interpréteur nommé egel
et du prélude dans le répertoire include
pour des tâches simples.
Les makefiles générés par Cmake permettent une installation locale avec la commande :
make DESTDIR=~ install
Dans ce cas, les composants Egel seront installés dans les répertoires ~/usr/local
et vous pourrez faire référence à ces composants en ajoutant les commandes suivantes à votre fichier de ressources shell, bien que la syntaxe spécifique puisse différer.
export PATH=~/usr/local/bin:$PATH
export EGEL_PATH=.:~/usr/local/lib/egel
Il y a une page de manuel que vous pouvez consulter, elle doit être installée, ou lire la courte introduction suivante à l'interpréteur sur Internet.
Pour une liste des combinateurs intégrés, regardez ici.
L'interpréteur ne fournit pas d'édition en ligne de commande, vous souhaiterez peut-être l'envelopper avec l' alias egel="rlwrap egel"
.
L'interprète alloue de nombreux objets éphémères. Si vous souhaitez un peu plus de vitesse, il peut s'avérer payant de changer d'allocateur.
J'utilise jemalloc
sous Linux en définissant LD_PRELOAD=`jemalloc-config --libdir`/libjemalloc.so.`jemalloc-config --revision
.