[erlang-questions] Rebar3 now in Alpha

Fred Hebert <>
Mon Mar 9 21:47:22 CET 2015


Hi everyone,

Back in November (roughly 4 months ago), Tristan and I announced work on
Rebar3 to the rebar mailing list: 
http://lists.basho.com/pipermail/rebar_lists.basho.com/2014-November/002087.html

Today we're happy to announce we're in Alpha. This means that we're generally
happy with the current set of features, although we're not sure about their
stability and are still open to some changes and additions. Go to
https://github.com/rebar/rebar3 if you're interested.

So what's new in Rebar3 should you decide to try it with your projects?

First of all, Rebar3 has been written with only OTP in mind. If your project
isn't OTP, it's more or less gonna be unsupported. If you use OTP releases or
OTP applications, it should be helpful.

Secondly, we've added a mechanism for 'profiles', meaning your compile options,
deps, release options, and so on, can all change depending on context or
commands being run (test commands automatically include the 'test' profile, for
example).

We've gone from the current rebar structure adding all kinds of stuff in your
top-level directory to using a single _build/ directory. In this directory,
builds for each profile required will be included, avoiding pollution across
them.

Packages are included, but currently they're all source only until hex.pm gets
support for compiled packages. Also they contain Elixir entries until hex.pm
gets filtering capability, so right now, most of them won't build either.
Source and package dependency conflicts are handled in a deterministic manner,
including when upgrading them. See
http://www.rebar3.org/v3.0/docs/dependencies-1 for details.

We've brought back Dialyzer as a command (and for those of you on rebar
2.0, Tuncer is working on bringing it back there too:
https://github.com/rebar/rebar/pull/460).

We've also switched from reltool to relx for our release provider, hoping a
simpler tool will make for better release adoption:
https://github.com/erlware/relx

Overall, we have the following list of commands:
http://www.rebar3.org/v3.0/docs/commands

This is what is currently supported. For anything not there (say, reltool,
protobuffs, and so on) we recommend you use a plugin instead. There isn't a
huge ecosystem yet, so when you write one, let us know about it. We want to
eventually have a plugin index to make it easy to find more tasks people need.
Plugin documentation is available at http://www.rebar3.org/v3.0/docs/plugins

Thanks everyone, and thanks to contributors who helped us reach the rebar3
alpha version. Particular thanks go to Alisdair Sullivan (@talentdeficit) and
James Fish (@fishcakez) for the heavy load of work they've done towards this
project.

Regards,
Fred.


More information about the erlang-questions mailing list