Releases: erlang/rebar3
3.9.0
This is a release that both adds a few shell-related features, but more importantly fixes some significant bugs.
First the bugs:
- Fix performance regression in compiler around behaviours, which sometimes resulted in massive slowdowns
- Fix common test logging output with OTP-21.2 and logger when multiple crashes happen
- Fix handling of updated hrl files not triggering a recompile in tests when they are changed
- Unhang the logger when swapping the TTY in shell in OTP-21.1 and later
- Use double quotes in git shell command on Windows to prevent failures
- fix case clause handling when fetching hg dep
- Reorder rebar3 tree output on umbrella apps to be predictable
- update templates to remove deprecated maintainers field
The shell features are some workarounds and niceties related to known limitations:
3.8.0
A bunch of fixes, with some new minor features! The new features are:
- Add --generator option for eunit, which lets you run individual test cases
- implement mib_first_files support in rebar_compiler_mib
- Support ignoring entire modules in xref results
- Add a --fail_fast switch to common test which aborts the whole test run as soon as one of them fails -- this feature is experimental
And for the bug fixes:
- update relx to 3.28.0
- Update hex_core and add mirror_of repo config
- bump erlware_commons to 1.3.1
- re-expose download/3 for backwards compatibility in git deps-related plugins
- Fix pkg name during update by using pkg_name understood by hex
- Fix load order for custom project builders and parse transforms
3.7.5
3.7.4
3.7.3
3.7.2
3.7.1
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.
3.7.0-rc2
- 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 version is different (#1886)
- add option to compiler provider to only build dependencies (#1888)
- add compile type for dynamic project compilation (allows for overriding the entire compilation process of an individual application, for example so Elixir projects that are built with
mix
) - rebar_compiler is a new behaviour that a plugin can implement to be called on any use of the compile provider to compile source files and keep track of their dependencies.
- only include modules in the .app modules list that are from
src_dirs
while leaving out those fromextra_src_dirs
- add compile type for dynamic project compilation (allows for overriding the entire compilation process of an individual application, for example so Elixir projects that are built with
- warn if the matched package is retired, skip prerelease (#1897)
- upgrade relx and set base_dir in overlay_vars (#1902)
- compiler behaviour (#1893)
- Bump bbmustache and fix templates (#1862)
- Fix sample config punctuation (#1890)
From 3.7.0-rc1:
3.7.0-rc1
- support for hex v2, multiple repository fetching, private organizations (#1884)
- see rebar3_hex for instructions authenticating against private organizations and working with repositories
- fix: only eval config scripts and apply overrides once per app (#1879)