Releases: erlang/rebar3
3.24.0
New features:
- Turn rich compiler errors on by default
- Tweak experimental manifest plugin to return ELP-compatible information
Bug fixes:
- make escriptize reproducible by setting timestamps for files in zip to unix epoch
- Log path when plugin template file read fails
- Prevent infinite compiler DAG growth
- Port Relx compatibility fix for escript files in OTP-27
Internal maintenance:
- Made
rebar_utils:filtermap/2
to call directlylists:filtermap/2
- Cleaned up additional definitions in
bootstrap
- Replaced rebar_utils:find_source/3 by a call to filelib:find_source/3 and Marked rebar_utils:find_source/3 as deprecated
- Fixing various typos in comments, types, and function names
- Bump hex_core and certifi dependencies
- Remove legacy hostname checks
- Replaced group_by_namespace/1 by a call to maps:groups_from_list/2
- Removed legacy OTP_RELEASE macro statements
- Removed legacy fun_stacktrace usage
- Removed unsused platform_define options
- Standardizing templates indentation
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
New Features:
- add a new shell completion provider
zsh
support for aliases incompletion
- Add new 'shell_hooks_env' config to extend shell hooks' OS env vars
- Add (newer) Dialyzer info. about
invalid_contract
- Add command
rebar3 alias
Bug fixes:
- Bump relx and erlware commons versions
- REBAR_SRC_DIRS and REBAR_APP_DIRS fix by making
rebar_dir:src_dirs/1
options default to["src"]
- Eliminate use of experimental function code:lib_dir/2
- Fix "clean" hooks in non-umbrella apps and when override are presents
- Initial version of the Manifest plugin
- Make log_level entry in rebar.app work again
- Append . to --eval arg if missing
- Handle 'or' in versions in a primitive manner
- Fall back to reading versions from hex metadata
- Dedupe compiler DAG edge insertion for artifacts
- Add missing doc. for
incremental
on Dialyzer analysis - rebar_utils: add metadata to primary logger config
- Prevent XRef issue when analysis runs on generated code
- Fix unicode output printed as charlist
- Rework argument parsing in do/as providers
- Fix for
rebar3 shell
in Erlang 26 when ShellArgs==undefined - Erlang 26 custom shell fix
- Add app name to "OTP release ~ts or later is required" msg
3.22.1
This is a small patch release for some bugfixes:
3.22.0
This release most importantly contains patches to fix blocking issues on Windows:
- Avoid setting a shell-encoding in OTP-26, which causes the
shell
command to hang on windows - Support CRLF in shell ENV files
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
New Features:
Various fixes:
- bumping a bunch of deps, including certificates, smaller patches in dependencies, and the following relx changes:
- Also set -dist_listen false for relx_nodetool calls
- Force use of nodetool if proto_dist set
- Only overwrite erl with dyn_erl if dyn_erl exists
- Add rebar_parallel pool, use in DAG scans which limits memory usage on large projects
- Maintain cth_log_redirect default in CT runs to show logger messages in HTML test logs
- Change license template to Markdown
- rebar3_dialyzer_format: Add missing message formatting
- Always dereference symbolic links when copying files in ct
- Add
?RTX_LOG
macro option to top-level rebar.config - fix help shell output, --eval is misindeted
- Ignore
_vendor
folder - Do not ignore everything starting with underscore recursively
- scope local install VSN variable
- pkgs command should support empty lists
3.20.0
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:
- Warn of EUnit issues on OTP-25.1
- Respect HEX_MIRROR environment variable
- Use shell:start_interactive to start shell if available
- Do not send empty If-None-Match in tarball request
- Respect rebar_packages_cdn set in rebar.config
- Dereference symbolic links when copying files from ct data folder
- Reduce warnings around bootstrap and DAG operations
3.19.0
New features:
- Add --offline option and REBAR_OFFLINE environment variable
- Add support for project-local plugins in umbrella projects only
- Add eunit --test flag
Experimental features for which we promise no backwards compatibility in
the near future:
Other changes:
- Support OTP 23..25 inclusively
- Bump Relx to 4.7.0
- Use
erlexec
directly in relx helper functions - Make rlx_util:parse_vsn parse integer versions
- fix awk script check_name() in extended_bin
- avoid crash when overlay is malformed
- keep attributes when stripping beams
- Fix {include_erts,true} in Windows releases
- ensure the erl file is writable before copying dyn_erl to it
- Various tests added
- Use
- Properly carry overlay_vars settings for files in relx
- Track mib compilation artifacts
- Attempt to find apps in git subdirs (sparse checkouts)
- Do not discard parameters --system_libs and --include-erts when duplicate values exist
- Use default
depth
parameter for SSL - Fix global cache config overriding
- Error out on unknown templates in 'new' command
- Fix a typo
- Bump certifi to 2.9.0
- add a debug message in internal dependency fetching code
- Use SPDX id for license in template and test
- Use default branch for git and git_subdir resources with no revision
3.18.0
- add support for otp24 optional applications
- use git command in non interactive mode
- git_resource: ignore stderr in get_patch_count when calling git rev-list
- fix NIF compilation on Apple M1.
- fix issue for duplicates options of 'parserfile' in 'yrl_opts'
- support for
--all
argument in unlock - support for
--all
argument in upgrade - support for
--all
argument in upgrade plugin - add --relnames option to allow selectively building of multiple releases
- bump bbmustache to support unicode attributes
- proper respect of GLOBAL_CACHE_DIR
- bump certifi to 2.8.0
- don't crash on printing non-ASCII characters
- upgrade providers to 1.9.0
3.17.0
This release is mostly bug fixes, and repairs prior broken builds of elixir dependencies, but also includes a couple of useful features.
New Features:
- Add escript_incl_priv so escriptize priv dir inclusion works with _checkouts and profiles
- Added SSL cacert patch to support Corporate MITM Proxies
Bug fixes:
- rebar3 release to honour the ignore-xref attribute
- Bump relx to 4.5.0
- use copied erts dir when tar'ing even when the user sets the erts
- improve error message when a symlink creation fails
- State extended with a filter method to filter xref_warnings
- Do not require logger
- Add default time warp mode of multi
- optionally allow static node name prefixes
- use random:uniform instead of os:pid when constructing node name in nodetool
- Fix eval command to use ERL_DIST_PORT, consistency with rpc command
- Fix bin script arguments to erlexec
- Give compiler hints when handling run-time deps in parse_transforms
- Make
rebar_file_utils:system_tmpdir/1
takeTMPDIR
env var into account on *nix - Handle abstract code starting with a non-file attribute
- Prefer erlang app to mix project
- Drop bootstrap URI handling functions warnings
- Prevent crashes on recursive src_dir definitions in deps
- Fix ssl check hostname options for wildcard certificate
- {xref_ignores} now properly works on module,
- Normalize Dialyzer PLT paths
- Fix optimistic registry update of plugins being upgraded
3.13.3
Security release. See https://ferd.ca/you-ve-got-to-upgrade-rebar3.html