{"id":13609454,"url":"https://github.com/egel-lang/egel","last_synced_at":"2025-04-12T20:32:00.025Z","repository":{"id":40910002,"uuid":"75933311","full_name":"egel-lang/egel","owner":"egel-lang","description":"The Egel Programming Language","archived":false,"fork":false,"pushed_at":"2025-03-24T14:40:30.000Z","size":3478,"stargazers_count":84,"open_issues_count":0,"forks_count":4,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-24T15:39:35.644Z","etag":null,"topics":["c-plus-plus","egel-language","functional-programming","interpreter","programming-language"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/egel-lang.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-12-08T11:53:40.000Z","updated_at":"2025-03-24T14:40:34.000Z","dependencies_parsed_at":"2024-04-16T07:48:03.057Z","dependency_job_id":"d0ba84e5-972f-4695-8de8-5cb3099f94eb","html_url":"https://github.com/egel-lang/egel","commit_stats":null,"previous_names":[],"tags_count":23,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/egel-lang%2Fegel","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/egel-lang%2Fegel/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/egel-lang%2Fegel/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/egel-lang%2Fegel/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/egel-lang","download_url":"https://codeload.github.com/egel-lang/egel/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248629749,"owners_count":21136305,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["c-plus-plus","egel-language","functional-programming","interpreter","programming-language"],"created_at":"2024-08-01T19:01:35.082Z","updated_at":"2025-04-12T20:32:00.017Z","avatar_url":"https://github.com/egel-lang.png","language":"C++","funding_links":[],"categories":["Uncategorized"],"sub_categories":["Uncategorized"],"readme":"\u003cimg src=\"contrib/assets/egel-black-white.svg\" height=\"50px\"/\u003e  The Egel Language\n=================\n\nEgel is an untyped concurrent functional scripting language based on eager\ncombinator rewriting with a concise but remarkably powerful syntax.\n\nInstallation\n------------\n\nThis interpreter is being developed on Linux/MacOS/BSD and uses icu4c for \nUnicode support, fmt for formatting, ffi as a foreign function interface,\nand GNU lightning as a ahead-of-time backend. \n\nThe interpreter can be compiled with a current C++ compiler and employs\ncmake to build. In general, you will need root access to build egel.\n\nThere are roughly two manners in which operating systems and package\nmanagers provide C++ libraries.\n\n1. The open source model (various Unixes and BSDs) where C++ libraries are\n   compiled and dissimated by the operating system distributor. Use your\n   package manager to install libicu, libffi, fmt, and GNU lightning.\n\n   Warning: exceptionally, Ubuntu/Debian doesn't ship with GNU Lightning.\n   You are supposed to _compile and install_ that package prior to\n   compiling the interpreter.\n\n2. The vendor based model (MacOS and Windows) where C++ libraries are \n   usually not provided since they are brittle to link against, and where\n   one usually compiles these libraries from scratch and statically links\n   them in or distributes them with the application. \n   Links to the vendors are provided as git submodules in the\n   vendor directory and, you're on your own here, you'll need to download\n   and compile those libraries. There's a separate README.md in the vendor\n   directory that should help somewhat.\n\nCMake files are provided for both models, select the one you want to use\nand rename either to `CMakeLists.txt`.\n\nA static build cmake script based of the vendor model is also provided.\n\nAfter that the interpreter is made with `cmake` in the standard manner. Run\nthe following commands on a Linux system.\n\n```\n    mkdir build\n    cd build\n    cmake ..\n    make\n```\n\nnote: for older GCC you sometimes need to uncomment the\n`stdc++fs` rule.\n\nThat should give you an interpreter named `egel`\nand a number of dynamically loadable Egel object files in the\n`build` directory.\n\nFor a system-wide install run `make install` after a build\nas root. \n\n(MacOS dyld doesn't look in /usr/local/lib anymore, set the path.)\n\nOn some systems the `EGEL_PATH` environment variable needs to be set.\nSee the man page for further information on that.\n\nIf you don't want to do that, please note that you only need the interpreter\nnamed `egel` and the prelude in the `include` directory for simple tasks.\n\nCmake generated makefiles allow for a local install with the command:\n\n```\n    make DESTDIR=~ install\n```\n\nIn this case Egel components will be installed into `~/usr/local` directories\nand you might refer to those components by adding the following commands\nto your shell resource file, though the specific syntax may differ.\n\n```\n    export PATH=~/usr/local/bin:$PATH\n    export EGEL_PATH=.:~/usr/local/lib/egel\n```\n\nUsage\n-----\n\nThere's a [manual](https://egel-lang.github.io/egel.1.html) page you can\nconsult, it should be installed, or read the following short \n[introduction](http://egel.readthedocs.io/) to the interpreter on\nthe internet.\n\nFor a list of builtin combinators look \n[here](https://github.com/egel-lang/egel-gen/blob/main/combs.md).\n\nAlso\n----\n\nThe interpreter doesn't provide command line editing, you might\nwant to wrap it with the command `alias egel=\"rlwrap egel\"`.\n\nThe interpreter allocates lots of short-lived objects. If you want\na bit of extra speed, it might pay off to switch the allocator.\n\nI use `jemalloc` on Linux by setting\n``LD_PRELOAD=`jemalloc-config --libdir`/libjemalloc.so.`jemalloc-config --revision``.\n\nMacOS additional remarks\n------------------------\n\nNewer MacOS versions have a more stringent security model, and also \nyou might not have HomeBrew installed for the prebuilt.\n\nIn that case, run any of the following commands to fit your needs.\n\nTo bypass the quarantine:\n\n    sudo xattr -rd com.apple.quarantine ./egel\n    sudo xattr -rd com.apple.quarantine *.ego\n    sudo xattr -rd com.apple.quarantine *.dylib\n\nTo relabel dynlibs to the local supplied files:\n\n    xcode-select --install\n    install_name_tool -change /opt/homebrew/opt/ffi/lib/libffi.8.dylib @executable_path/libffi.8.dylib ./egel\n    install_name_tool -change /opt/homebrew/opt/lightning/lib/liblightning.2.dylib @executable_path/liblightning.2.dylib ./egel\n    install_name_tool -change /opt/homebrew/opt/fmt/lib/libfmt.11.dylib @executable_path/libfmt.11.dylib ./egel\n    install_name_tool -change /opt/homebrew/opt/icu4c/lib/libicuuc.74.dylib @executable_path/libicuuc.74.dylib ./egel\n    install_name_tool -change /opt/homebrew/opt/icu4c/lib/libicudata.74.dylib @executable_path/libicudata.74.dylib ./egel\n    install_name_tool -change /opt/homebrew/opt/icu4c/lib/libicuio.74.dylib @executable_path/libicuio.74.dylib ./egel\n    install_name_tool -change /opt/homebrew/opt/icu4c/lib/libicui18n.74.dylib @executable_path/libicui18n.74.dylib ./egel\n    install_name_tool -change /opt/homebrew/opt/icu4c/lib/libicutu.74.dylib @executable_path/libicutu.74.dylib ./egel\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fegel-lang%2Fegel","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fegel-lang%2Fegel","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fegel-lang%2Fegel/lists"}