Vendor hex_core 0.12.2 prepare for OTP-29 by defaulting to warn_deprecated_catch fix bogus timestamps when creating escripts Add precision flag (and config) to control output percentage precision Add middlebox_comp_mode to global options Ignore optional Hex package dependencies
Read more →fix rebar_app_info:source/1 spec fix the version range parser to support and/or version constraints IPv6 support for getting Hex packages CT: disable cth_readable_failonly hook when verbose option is set relx: do not discard command line parameters when parameter is not in config Support env variable substitution with defaults in rebar shell Improve documentation Return manifest macros as objects Expand extra src dirs recursively in manifests Make xref recognize apps again
Read more →Two fixes for Windows: Update escriptize hook to work with newer Windows versions The regex used to match hooks for Rebar3's own escript location relied on the win32 part of the architecture description line. Newer Windows versions now return a windows pattern instead Bump erlware_commons to 1.8.0 (fixes hanging resource fetches on Windows on OTP-28) There are also a couple of minor improvements: Add file completion support for bash completion , fixing autocompletion of common command arguments that are file names Support resources of arbitrary size in rebar3 , allowing fancier custom dependency plugins
Read more →OTP-28 compatibility release, deprecates OTP-25. Bump Runner images for Nightly and release builds Prepare OTP-28 bump Bump eunit_formatters to 0.6.0 docs: added a link to the license docs: replaced the link to the build status badge Bump cth_readable version for OTP-28 readiness fix: crash on rebar_compiler_format:colorize/2 OTP-28 readiness (part 1) add env var for skipping project plugins Fallback to the default error format when a file is empty update vendored cf to support color in foot and ghostty Approach the sample config. file to rebar3.org's documentation Add Rebar3 and Erlang/OTP compatibility list make escriptize reproducible with erlang 27.1 Bump relx vendored copy
Read more →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 directly lists: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.
Read more →New Features: add a new shell completion provider zsh support for aliases in completion 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
Read more →This is a small patch release for some bugfixes: Defer hostname check to OTP when supported Print diagnostic when failing to get VSN with Git Add simple Erlang LS config
Read more →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.
Read more →New Features: Support OTP-26, Deprecate OTP-23 support. Add incremental dialyzer support for OTP-26 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
Read more →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: Add --eval option to shell Add support for dialyzer --incremental when available Vendor structure 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
Read more →Access rebar3 changelog updates through our uniform API. Same JSON structure across all sources — no adapter-specific parsing needed.
GET https://watchchangelog.com/api/v1/entries?source=rebar3.releases{
"source": "rebar3.releases",
"vendor": "rebar3",
"id": "tag:github.com,2008:Repository/26610130/3.27.0",
"published_at": "2026-02-27T17:49:55.000Z",
"title": "3.27.0",
"url": "https://github.com/erlang/rebar3/releases/tag/3.27.0",
"summary": "Vendor hex_core 0.12.2 prepare for OTP-29 by defaulting to warn_deprecated_catch fix bogus timestamps when creating escripts Add precision flag (and config) to control output percentage precision Add middlebox_comp_mode to global options Ignore optional Hex package dependencies",
"tags": [
"rebar3",
"rebar3.releases",
"build-tool",
"erlang",
"package-manager"
]
}Sign up to access the full changelog API. All public sources are free — no credit card required.
Sign Up Free →+2 more
+2 more
+2 more
+2 more
+2 more
+2 more