3.7.0
Rebar 3.7.0 is a huge release, done with the help and support of the IEUG,
which is currently working towards a software foundation for the Erlang ecosystem.
These release notes contain all the changes since the last stable release (3.6.0),
and repeat information you might have read in changelogs of release candidates.
The big, huge, major new features include the following work, done with the help and
support from the IEUG, which is currently working towards establishing a software foundation
for the Erlang ecosystem:
- A full rework of how Hex packages are handled. We now support the Hex v2 protocol,
support their concept of private organisations. There is also added support
for layered hex indexes, allowing the usage of mirrors and self-hosted indexes,
and the local index cache is built lazily, meaning Rebar3 should be leaner
in its usage of local storage and memory regarding hex (#1884) - major rework of the plugin system around custom compilers and resource providers,
which allow the development of better resource handlers and file compilation. (#1893 and #1888)
This has allowed the development of a plugin, rebar_mix
which allows building of Elixir applications as dependencies within Rebar3 projects.
Documentation for the new features include:
- New hex mirrors and repositories handling: https://www.rebar3.org/v3/docs/configuration#section-hex-repos-and-indexes. If you were using the
rebar3_hex
plugin to publish packages, don't forget to update it - The documentation for the new resource providers can be found at: https://www.rebar3.org/v3/docs/custom-dep-resources#section-resources-compatible-with-versions-370-and-above. A sample plugin already using the new API is Benoit Chesneau's rebar3_path_deps, which allows to specify relative vendored paths for dependency retrieval. The local paths should work even when the plugin is used for a dependency
- The new custom compiler interface, while unstable, can be found at: https://www.rebar3.org/v3/docs/custom-compiler-modules
- Documentation on building Elixir dependencies in Rebar3 can be found at rebar_mix's page
The following new features were also added:
- The ability to only compile dependencies, which is useful for docker images (#1888)
- Added support for breakpoints to be added in tests (or other arbitrary tasks). You can see the new documentation for breakpoints for usage instructions (#1924)
- Add support for a
REBAR_GIT_CLONE_OPTIONS
environment variable which lets people set
up git caching of repositories for faster fetches across projects when calling it
with values such asREBAR_GIT_CLONE_OPTIONS="--reference ~/.cache/repos.reference"
(#1844) - Support alias formats with namespaces ({Namespace, Cmd} and {Namespace, Cmd, Args}) (#1941)
Multiple bugfixes have also been included:
- reset default profile app plugins to empty if at the top level (#1885)
- properly support top level app erl_opts from REBAR_CONFIG os var (#1889)
- only print skip warning if dep version is different (#1886)
- warn if a matched package version is retired, and skip prereleases (#1897)
- upgrade relx and set base_dir in overlay_vars (#1902)
- Bump bbmustache and fix templates (#1862)
- Fix sample config punctuation (#1890)
- fix: only evaluate config scripts and apply overrides once per app (#1879)
- check last modified time on erl files for xrl and yrl files before compiling (#1938)
- Fix plugins list display to include project plugins (#1942)
- fix install output result (#1939)
- add emacs temp files to ignored lists in templates (#1929)
- Fix misleading config in app templates (#1927)
- check if git/hg is installed before fetching deps (#1921)
- Fallback when logging isn't initialized and a crash happens (#1920)
- Add reference to
rebar3 new help
inrebar3 help new
since the switch is non-obvious (#1949) - Fix shell hook variable expansion on windows (#1918)
- Major refactor of BEAM env path handling when loading modules for plugins and the compiler (#1907)
We've also updated the docs (some links were already present above), including a new workflow section that we hope to grow, and reupdated the manpages bundled with each version.
We encourage everyone to switch to the newer version.