Skip to main content

Install ELP

The easiest way to install to ELP is from binary. It is also possible to compile it from source.

From Binary

Visit our releases page and download the elp tarball for the latest releases.

Packages are available in the Assets section below each release. Each tarball name has the format:

elp-[OS]-[ARCH]-[c]-otp-[OTP_VERSION].tar.gz

Pick the appropriate version according to your Operating System (OS), Architecture (ARCH) and Erlang/OTP version (OTP_VERSION). For example, for my Darwin MacBook Pro where I have installed Erlang/OTP 25, I will pick:

elp-macos-x86_64-apple-darwin-otp-25.3.tar.gz
tip

Unsure about your architecture? Try the uname -a command. Unsure about your Erlang/OTP version? Try erl -eval 'erlang:display(erlang:system_info(otp_release)), halt().' -noshell

Untar the package and place the elp binary in a place visible by your `PATH``. For example:

cd ~/Downloads
tar -xvzf elp-macos-x86_64-apple-darwin-otp-25.3.tar.gz
mv elp ~/bin
export PATH=$PATH:~/bin

Follow these steps to verify ELP is correctly installed.

From Source

Clone the ELP repository, including submodules:

git clone --recurse-submodules https://github.com/WhatsApp/erlang-language-platform.git
cd erlang-language-platform

Enter the eqwalizer submodule and build it. Notice the double eqwalizer in the pushd command.

pushd eqwalizer/eqwalizer
sbt assembly
popd

Point the ELP_EQWALIZER_PATH environment variable to the path of the produced eqwalizer.jar file:

export ELP_EQWALIZER_PATH=$(find "$(pwd)" -name eqwalizer.jar)

Point the EQWALIZER_DIR environment variable to the path of the eqwalizer_support directory:

export EQWALIZER_DIR=$(find "$(pwd)" -name eqwalizer_support)

Now we can compile ELP:

tip

The commands below will produce a release build, which has the best runtime performance, at the price of a slower compilation time. If you are developing ELP, consider using cargo build --profile release-thin, as it provides a much faster development loop while still producing a performant binary. You will find the corresponding binary in target/release-thin/elp.

cargo build --release

The produced executable will be available in: target/release/elp, so ensure it is included in your PATH. E.g.:

mkdir -p ~/bin
mv target/release/elp ~/bin
export PATH=$PATH:~/bin