Skip to content

Releases: erlang/rebar3

3.24.0

29 Aug 12:18
3.24.0
74c766d
Compare
Choose a tag to compare

New features:

Bug fixes:

Internal maintenance:

Regarding rich compiler errors, the change is optional.

Given the module:

-module(fake_mod).

-export([diagnostic/1]).

diagnostic(A) ->
    X = add(5 / 0),
    {X,X}.

add(X) -> X.

add(X, Y) -> X + Y.

Calling rebar3 compile can now yield:

...
===> Compiling apps/rebar/src/fake_mod.erl failed
   ┌─ apps/rebar/src/fake_mod.erl:
   │
 5 │  diagnostic(A) ->
   │             ╰── variable 'A' is unused

   ┌─ apps/rebar/src/fake_mod.erl:
   │
 6 │      X = add(5 / 0),
   │                ╰── evaluation of operator '/'/2 will fail with a 'badarith' exception

    ┌─ apps/rebar/src/fake_mod.erl:
    │
 11 │  add(X, Y) -> X + Y.
    │  ╰── function add/2 is unused

and in a terminal supporting color output:

By default, this format is turned on, but can be turned off optionally by configuring values with

{compiler_error_format, minimal}.

If this breaks your tooling, you may want to put it in your global rebar3 config file.

3.23.0

10 Apr 17:03
3.23.0
bde4b54
Compare
Choose a tag to compare

3.22.1

31 Jul 23:17
3.22.1
26400cd
Compare
Choose a tag to compare

3.22.0

24 May 23:15
3.22.0
0a432f2
Compare
Choose a tag to compare

This release most importantly contains patches to fix blocking issues on Windows:


This release also contains an experimental and optional change that warrants a bit of explanation: Support rich compiler messages in errors and in warnings

Given the module:

-module(fake_mod).

-export([diagnostic/1]).

diagnostic(A) ->
    X = add(5 / 0),
    {X,X}.

add(X) -> X.

add(X, Y) -> X + Y.

Calling rebar3 compile can now yield:

...
===> Compiling apps/rebar/src/fake_mod.erl failed
   ┌─ apps/rebar/src/fake_mod.erl:
   │
 5 │  diagnostic(A) ->
   │             ╰── variable 'A' is unused

   ┌─ apps/rebar/src/fake_mod.erl:
   │
 6 │      X = add(5 / 0),
   │                ╰── evaluation of operator '/'/2 will fail with a 'badarith' exception

    ┌─ apps/rebar/src/fake_mod.erl:
    │
 11 │  add(X, Y) -> X + Y.
    │  ╰── function add/2 is unused

and in a terminal supporting color output:

By default, this format is turned off, but can be turned on optionally by configuring values with

{compiler_error_format, rich}.

You can get this enabled. You may want to put it in your global rebar3 config file. That being said, this may break some tooling that could parse rebar3-specific output. The default value is {compiler_error_format, minimal}. and putting that value back in should fix any breakage. We're also expecting color output to have a few bugs related to a rather naive heuristic used to delimit language constructs, but we wanted to make the feature available for feedback and this bug-fixing release was a decent opportunity.

This functionality relies on an expanded compiler API exposed by Rebar3, but since we're not yet quite sure what form we want it to take, we'll keep the new API undocumented in the short term.

3.21.0

18 May 01:05
3.21.0
5dd033f
Compare
Choose a tag to compare

3.20.0

15 Oct 12:57
3.20.0
3f563fe
Compare
Choose a tag to compare

This release took a while to build; OTP-25.1 had incompatibilities with EUnit that interrupted the CI process, and which are corrected in later releases.

New features:

This new vendor structure should be of no impact to anyone using Rebar3 as a built artifact, but should make the life of corporate users and package managers much easier by having pre-bundled in all dependencies and allowing effective offline builds. It also simplifies our bootstrap code and reduces security issues by not having to download a certificate bundle without certificates, at least until our oldest supported version can use Erlang's new built-in on-host certificate lookup mechanisms.

If you do rely on Rebar3 source for your tooling or any other mechanisms, then you will want to cd apps/rebar before running other commands.

Other fixes:

3.19.0

18 Jun 22:39
3.19.0
Compare
Choose a tag to compare

3.18.0

3.17.0

03 Sep 01:27
3.17.0
Compare
Choose a tag to compare

This release is mostly bug fixes, and repairs prior broken builds of elixir dependencies, but also includes a couple of useful features.

New Features:

Bug fixes:

3.13.3

26 May 23:45
3.13.3
Compare
Choose a tag to compare