DragonFly BSD & LFE
Yesterday there was a tweet playfully ribbing Golang. It referenced an old WhatsApp blog post which briefly went over the WhatsApp engineering team's use of tuned FreeBSD machines running Erlang … machines that were capable of handling 2 million TCP connections on a single machine. As such, it seemed like a good time to talk about BSD and LFE :-)
DragonFly BSD and LFE are a great match.
DragonFly's core focus is scalability, with features such as lightweight
kernel threads, a lightweight ports/messaging system, and the
HAMMER file system. Installation of
Erlang, LFE, and related tools is a snap. By default, DragonFly comes with
git
and curl
pre-installed, so this is all that's needed for a base
Erlang system:
% su -
# pkg update
# pkg install -y erlang rebar rebar3
The latest DragonFly installs Erlang 17.5.
To support LFE and lfetool
, a few more packages are needed:
# pkg install -y gmake base64 bash
# rehash
With this done, you just need to do the usual to get LFE:
# cd /usr/local
# git clone https://github.com/rvirding/lfe
# cd lfe
# gmake && gmake install
And the dev-v1 version of lfetool
now supports installation on *BSD
machines:
# curl -L -o ./lfetool https://raw.github.com/lfe/lfetool/dev-v1/lfetool
# bash ./lfetool install && rm lfetool
# rehash
With that, you can exit as root
# exit
logout
oubiwann@mndvmb01% lfe
and run LFE as a normal user:
# exit
oubiwann@mndvmb01% lfe
Erlang/OTP 17 [erts-6.4.1] [source] [64-bit] ,,,
> (* 2 (lists:foldl (lambda (n acc) (+ n acc)) 0 (lists:seq 1 6)))
42
And that's all there is to it!