Egel 是一種無類型並發函數腳本語言,基於急切的組合器重寫,具有簡潔但非常強大的語法。
該解釋器正在 Linux/MacOS/BSD 上開發,使用 icu4c 進行 Unicode 支持,使用 fmt 進行格式化,使用 ffi 作為外部函數接口,使用 GNU lighting 作為提前後端。
這個解釋器可以使用目前的 C++ 編譯器進行編譯,並使用 cmake 來建置。一般來說,您需要 root 存取權才能建立 egel。
作業系統和套件管理器提供 C++ 函式庫的方式大致上有兩種。
開源模型(各種 Unix 和 BSD),其中 C++ 程式庫由作業系統發行商編譯和消除。使用套件管理器安裝 libicu、libffi、fmt 和 GNU lighting。
警告:特殊情況下,Ubuntu/Debian 不附帶 GNU Lightning。您應該在編譯解釋器之前編譯並安裝該套件。
基於供應商的模型(MacOS 和 Windows),通常不提供 C++ 庫,因為它們連結起來很脆弱,並且通常從頭開始編譯這些庫,並將它們靜態連結到應用程式中或將它們與應用程式一起分發。供應商的連結作為供應商目錄中的 git 子模組提供,您需要自行下載並編譯這些庫。供應商目錄中有一個單獨的 README.md 應該會有所幫助。
兩個模型都提供了 CMake 文件,選擇您要使用的模型並將其重新命名為CMakeLists.txt
。
也提供了基於供應商模型的靜態建置 cmake 腳本。
之後,用cmake
以標準方式製作解譯器。在Linux系統上執行以下命令。
mkdir build
cd build
cmake ..
make
注意:對於較舊的 GCC,您有時需要取消註解stdc++fs
規則。
這將為您提供一個名為egel
的解釋器,並在build
目錄中提供許多可動態載入的 Egel 物件檔案。
對於系統範圍的安裝,在建置後以 root 身分執行make install
。
(MacOS dyld 不再在 /usr/local/lib 中查找,請設定路徑。)
在某些系統上,需要設定EGEL_PATH
環境變數。有關詳細信息,請參閱手冊頁。
如果您不想這樣做,請注意,您只需要名為egel
的解釋器和include
目錄中的 prelude 來執行簡單任務。
Cmake 產生的 makefile 允許使用下列命令進行本機安裝:
make DESTDIR=~ install
在這種情況下,Egel 元件將安裝到~/usr/local
目錄中,您可以透過將以下命令新增至 shell 資源檔案來引用這些元件,但具體語法可能有所不同。
export PATH=~/usr/local/bin:$PATH
export EGEL_PATH=.:~/usr/local/lib/egel
您可以查閱一個手冊頁,應該安裝它,或者在互聯網上閱讀以下關於解釋器的簡短介紹。
有關內建組合器的列表,請查看此處。
解釋器不提供命令列編輯,您可能需要使用命令alias egel="rlwrap egel"
來包裝它。
解譯器分配大量短期物件。如果您想要一點額外的速度,切換分配器可能會有所收穫。
我透過設定LD_PRELOAD=`jemalloc-config --libdir`/libjemalloc.so.`jemalloc-config --revision
在 Linux 上使用jemalloc
。