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
curl pre-installed, so this is all that's needed for a base
% 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
# 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
# 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!