Skip to content

3.22.0

Compare
Choose a tag to compare
@github-actions github-actions released this 24 May 23:15
3.22.0
0a432f2

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.