Releases: erlang/rebar3
3.3.1
This is a patch release for multiple small but inconvenient bugs.
- Prevent crash when doing a hash check with missing index, and fetch the index instead
- Atomically load changed erlang modules on OTP >= 19 in
rebar3 shell
; fix reloading nifs. - Print stacktrace in a more conventional way in errors
- reset accumulated coverdata across providers on writing out to disk (fixes inaccurate counts)
- Add support for
cover_excl_mods
to exclude modules from code coverage
3.3.0
New Features:
- lock file contains expected hash for pkg dependencies, which allows for safer dependency fetching and paves the way for multi-index support
- Escriptize provider made hookable
Fixes:
- Escriptize based on configured apps only
- Handle
escriptize
error when a specified app is missing - Fix filtering of system libraries in escriptize
- Avoid PLT rebuild when files deleted on new dialyzer
- Handle empty PLT or app when using dialyzer
- fix catching
not_valid
error on dialyzer - Upgrade relx to 3.21.0
- Bugfix on version resolution compatibility in OTP 17.x and earlier
- Fix Edoc cross-links in umbrella projects
- Print error on too many help arguments
- Fix configuration loading in CT
- template_dir option is documented and made recursive for templates
- Ignore IntelliJ IDEA files in templates
- ssl_verify_hostname was renamed to ssl_verify_fun
- Fix opts check when compiler called with dict opts by plugins
- Fixes for windows environment: 1) copy empty directories when cloning, 2) fix order of arguments in git deps fetching
- Let DEBUG="" and QUIET="" disable the options
The change to the lock file format is the biggest thing to note. It should be compatible with all formats going back to the beta-4
tag, but versions older than 3.3.0 will display warnings and lose the newly added information on the package hashes.
Any lock file generated by an older rebar3 version will be accepted by this one, and new information related to the package hashes will be added. This will allow a safer usage in case the same package is found on multiple indexes or mirrors, but actually has a different hash on there than what is expected by the existing project.
3.2.0
- Fix unicode rendering of deps tree (issue #1140)
- ignore return value of
rebar_utils:reread_config
in shell provider - normalize include dirs to absolute paths during compilation
- always recompile if
ERL_COMPILER_OPTIONS
env var is set - Compiler source paths in output are now relative
- add support for passing a sys_config to common test
- Expand os ENV proxy support to bootstrap script
- Support ENV config for proxy values
- Write rebar3.crashdump on errors
- Fix compile error case when cover compilation
- Bugfix for upgrading deps of umbrella apps
- Fix minor typo in README
- Handle control sequences in formatted errors
- Don't die when source deps with [raw] are used
- Debug log update
- adjust
data_dir_correct
test in ct suite - filter available package versions individually by buildtools
- Fix path command to consider {deps_dir, "deps"} in rebar.config
- fix windows git working directory
The change of note here is that the compiler's output of file paths is now relative to the project (src/myfile.erl
) rather than in _build/<profile>/lib/libname/src/myfile.erl
.
To retrieve the old behaviour, add {compiler_source_format, build}
in your rebar config (you may prefer to do it in the global file). We have also added {compiler_source_format, absolute}
for absolute paths (based on the project, not _build
).
3.1.1
Patch level release fixing a few small issues and allowing work with OTP 19-rc1 branches of Erlang
- rebar3/1056: Add support for xref_ignores
- rebar3/1121: Allows overwrite default cache dir using REBAR_CACHE_DIR
- rebar3/1151: Recursively load configurations in shell
- rebar3/1152: supported dist_node in ct and eunit
- rebar3/1155: upgrade relx and erlware_commons
- rebar3/1158: Fixes logging from remote shells in rebar3 shell
- rebar3/1159: Add a provider hook for edoc
- rebar3/1167: upgrade relx to 3.19.0
- rebar3/1169: Change to new hex.pm repo URL
- rebar3/1178: Fix shell node startup
- rebar3/1188: upgrade erlware_commons for OTP-19 fix
- rebar3/1189: fix otp-19 bootstrap compiling
- rebar3/1192: don't generated coverage for
extra_src_dirs
- rebar3/1194: don't needlessly update the code path twice if no hooks to run
3.1.0
- rebar3/1124: Fix bugs/race conditions in shell
- rebar3/1125: Support all deps & locks in
rebar3 path
- rebar3/1126: Allow
rebar3 pkgs <app>
to return only that app - rebar3/1128: rebranding: update links rebar/rebar3 -> erlang/rebar3
- rebar3/1129: Fix Travis build status image in readme
- rebar3/1131: Cosmetic change: remove last comma-first style
- rebar3/1132: Extract dist config handling, support
{dist_node, ...}
options for shell and future commands - rebar3/1138: Fixed git version parsing bug
- rebar3/1141: change travis config to only upload escripts for tags (stable releases)
- rebar3/1144: allow all
ct_opts
arguments to be passed through toct:run_test/1
- rebar3/1147: Blacklist apps to reload in shell
3.0.0 Stable
- rebar3/902: Less color
- rebar3/921: Fix error reports on missing include paths
- rebar3/922: warn on incorrectly specified test options in
rebar.config
- rebar3/923: support temporary cdn change with HEX_CDN os var
- rebar3/924: only add package list of versions to registry if it has the right build tool support
- rebar3/925: upgrade eunit_formatters for OTP 18 support
- rebar3/927: upgrade eunit_formatters to 0.3.1 for OTP18 bug fix
- rebar3/928: Ct output improvements
- rebar3/930: Handle force flags in leading position
- rebar3/934: don't add a provider if the same namespace and name already exists
- rebar3/935: Default to no eunit formatter if verbose specified
- rebar3/941: preserve attributes when copying files in rebar_utils:cp_r for unix
- rebar3/942: special handling of relx configs in profiles
- rebar3/943: remove backward_compat entry from travis s3
- rebar3/945: auto-update the registry if a pkg isn't found, fail if it still isn't found
- rebar3/948: Fix a small bug in the MIB compiler when building dependencies
- rebar3/949: fetch eunit_formatters config not from the command args but from the config
- rebar3/963: Tup merge tests
- rebar3/965: fix tupple merging for realsies.
- rebar3/966: allow ct suites to be specified at root of project (or root of app)
- rebar3/967: symlink mib hrl output in apps `include' directories
- rebar3/970: upgrade certifi to latest release
- rebar3/982: Allow bootstrap to pick up existing Hex cache and deps
- rebar3/983: Add support for total code coverage
- rebar3/986: A bad template index does not crash; shows warning
- rebar3/987: Plugin templates
- rebar3/988: Fix wrong relative path resolution
- rebar3/989: convert ~> versions to highest matching
- rebar3/991: Upgrade relx to v3.11.0
- rebar3/992: Bump cth_readable to 1.1.1
- rebar3/993: contributors -> maintaiers in template app data
- rebar3/994: warn if the directories
eunit' or
ct' show up in `src_dirs' - rebar3/995: Support old-style shell for rebar3 shell
- rebar3/996: Updates cth_readable so it supports dumb terminals
- rebar3/999: Fix windows stuff
- rebar3/1005: only need to compare ref and not ref+url in git resource
- rebar3/1006: only apply default and prod profile to dependencies
- rebar3/1007: install project app plugins after discovering them not before
- rebar3/1008: Unquote templates, add a warning instead.
- rebar3/1009: merge overlay entries into a single {overlay, list()} for relx
- rebar3/1010: upgrade relx to 3.12.0
- rebar3/1012: Remove triple brackets in bbmustache templates
- rebar3/1013: upgrade bbmustache and relx
- rebar3/1016: when using the
--file' argument to
eunit' paths were being converted - rebar3/1017: check at runtime instead of compile time for
file:list_dir_all/1
- rebar3/1018: change detection of valid modules for
eunit
- rebar3/1021: convert 'app' to 'application' in eunit_opts to match cmdline args
- rebar3/1022: Display error message when bad config is loaded
- rebar3/1023: Rework README and CONTRIBUTING documents
- rebar3/1024: deduplicate default test set generated by
rebar3 eunit
- rebar3/1025: add unstable install/upgrade instructions to readme
- rebar3/1029: local install and local upgrade
- rebar3/1031: add profile option to clean task
- rebar3/1033: Fix bash completion regression (cf66dfd6ba) and make lopt strings more resilient
- rebar3/1035: Add module directory to include path
- rebar3/1041: Add test case for relx overlay vars
- rebar3/1043: don't strip the project apps when running
ct
with just a root suite specified - rebar3/1045: don't lose overrides in an app when installing plugins it uses
- rebar3/1046: add user-agent to http request headers
- rebar3/1047: Ignore unknown warning when dialyzer < 2.8
- rebar3/1048: Add secondary hook for rebar_prv_compile
- rebar3/1050: check top level config for minimum or blacklisted otps at start
- rebar3/1053: upgrade relx to 3.15.0
- rebar3/1061: Make lock files future-proof
- rebar3/1062: update relx to 3.16.0 to include color intesity update
- rebar3/1065: give top level plugin providers precedence over default providers
- rebar3/1066: Bump cth_readable
- rebar3/1067: set default color intensity to high
- rebar3/1068: upgrade relx to 3.17.0
- rebar3/1070: Hex improvements
- rebar3/1071: break up do/1 function in install_deps to make upgrade less confusing
- rebar3/1073: Support --setcookie option
- rebar3/1075: add project_providers after initing default providers but allow overrides
- rebar3/1076: Add me to THANKS for suffering through Tristan's code
- rebar3/1082: Fixed rebar.config shell_apps setting
- rebar3/1090: fix auto-registry update to work even when not a locked pkg-vsn
- rebar3/1091: Run all hooks
- rebar3/1092: Add short-options to the eunit provider.
- rebar3/1098: error on a cover spec in ct_opts
- rebar3/1099: add support for common tests
include
flag - rebar3/1100: Fix quoting problem in zsh completion
- rebar3/1101: Take CT options errors and turn them to warnings
- rebar3/1102: include project_plugins in plugins that can be upgraded
- rebar3/1103: bump certifi to 0.4.0
- rebar3/1104: move dialyze setting of debug_info to overrides in profile
- rebar3/1106: define the 'EUNIT' macro in the test profile
- rebar3/1107: upgrade cth_readable
- rebar3/1108: make omar happy
- rebar3/1110: pass loglevel used in rebar3 to relx
Fourth, and hopefully last Beta
Backwards incompatible changes in beta-4 (since beta-3):
- changed support for a few features and options in
ct
andeunit
eunit
andct
have a new fancier output format; can be disabled on demand.shell_apps
option is now theshell
option within theapp
tuple.
Changelog:
- rebar3/852: print a warning if a profile in 'as' has no config entry
- rebar3/854: if not in a git repo but have 'git' as vsn, fallback to 0.0.0
- rebar3/856: add ERLANG_ARCH and ERLANG_TARGET to os env for hooks
- rebar3/858: don't include certifi priv dir in escript, it is not needed
- rebar3/864: Support proper paths in non-erl first files
- rebar3/867: Fix for issue #859 - unicode rendering of deps tree based on PR #865
- rebar3/877: Allow non-default checkouts dir for relx
- rebar3/881: Bump cf for fixing #879
- rebar3/883: compiler refactor/eunit & ct fixes
- rebar3/886: return more useful error message (failed to download) when pkg http req fails
- rebar3/890: only clean project apps once even when doing --all
- rebar3/893: rebar3 shell improvements (escript, rebar.config shell defaults)
- rebar3/894: rebar_prv_common_test refactor
- rebar3/895: delay validation of eunit tests until just before running
- rebar3/896: move test profile bootstrap into core
- rebar3/898: dedup
src_dirs
andextra_src_dirs
on read - rebar3/900: Rebuild PLT when beams no longer exist
- rebar3/901: prevent rebar3 from reloading it's own path and terminating itself
- rebar3/904: add an option to soft purge rather than purge old code
- rebar3/905: fixes for cover under new compiler/eunit/ct
- rebar3/906: fix #903: use app discover of entire plugins dir when listing
- rebar3/907: calculate coverage info as late as possible in ct provider execution
- rebar3/911: upgrade relx to 3.8.0, fixes bug in upgrade_install escript
- rebar3/912: do not sort mib_first_files during merge_opts, order must be kept
- rebar3/915: fix typo of guarantee. h/t evan
- rebar3/917: Prettify all of common test output.
- rebar3/918: include Sean Cribbs eunit formatter by default
- rebar3/919: Fix IO locking up in shell apps
- rebar3/920: Update cf
Third Beta
- rebar3/757: Use raw bytestream when writing files
- rebar3/759: set parent on already fetched apps so tree works
- rebar3/760: move state into app_info
- rebar3/761: `rebar3 path' provider
- rebar3/762: Displays package caching actions
- rebar3/766: Utf8 tree
- rebar3/767: use ~ts for unicode output and reset encoding to latin1
- rebar3/769: Fix cover_spec options for ct
- rebar3/771: only load packages when needed
- rebar3/772: delete and prepend code path instead of replacing, fixes #770
- rebar3/773: Revert "only load packages when needed"
- rebar3/774: Revert "Revert "only load packages when needed""
- rebar3/775: Fix #744: Allow _checkouts dep to override pkg dep not in registry
- rebar3/777: add current_app attribute for setting before calling hooks
- rebar3/779: hooks/artifacts are always run/resolved from an app unless at top of umbrella
- rebar3/780: support updating of per app info by hooks
- rebar3/781: upgrade providers, new version gives error message for bad provider dep
- rebar3/783: Add plt_include_all_deps dialyzer option
- rebar3/784: add 'local install' and 'local upgrade'
- rebar3/785: fix run_all_hooks call for ct provider, no need to pass appinfo
- rebar3/786: add 'bare compile' provider, for starters for use by mix
- rebar3/787: fix dialyzer warnings
- rebar3/792: check checksum of rebar3 download in local_upgrade provider
- rebar3/795: cover compile beams compiled for ct/eunit seperately from beams compi…
- rebar3/796: use full path of apps for priv files included in escript
- rebar3/798: Terms is already a list
- rebar3/799: parse versions in deps tree output and support checkouts
- rebar3/800: extract
retarget_path/2',
relative_path/2' and `reduce_path/1' and add tests - rebar3/802: replace noinput with noshell so providers that ask for input work
- rebar3/805: eunit test provider
- rebar3/806: test for ensuring
data_dir
is set correctly in ct configs - rebar3/809: Fix typo in plugins command help
- rebar3/810: update travis for s3
- rebar3/811: Improved git versioning
- rebar3/813: Fix parsing of version #'s of dependencies
- rebar3/814: add DEBUG statement of the command sequence that'll be run
- rebar3/815: Revert "Improved git versioning"
- rebar3/816: make v prefix in git tag version optional
- rebar3/817: Update erlware commons and relx
- rebar3/821: Fix consult_and_eval/2 to behave like consult
- rebar3/822: handle case that upgraded app no longer has .app.src file
- rebar3/823: Colorized dialyzer output
- rebar3/824: include source the app is being ugpraded to, like with fetching, in info
- rebar3/825: Git versioning 2
- rebar3/826: add an export to allow specifing arbitrary extra erl files to be compiled
- rebar3/827: Write original messages not fancy ones to disk
- rebar3/828: Group dialyzer warnings by file and concentrate output
- rebar3/834: handle newly added deps to config even when lock is empty
- rebar3/835: Bump relx to 3.7.0
- rebar3/837: fix canonical path tests on windows
- rebar3/838: Properly warn on missing rebar3 deps
- rebar3/839: Shell handles all possible relx app formats
- rebar3/840: only upgrade children and transitive children of dep being upgraded
- rebar3/841: fix dialyzer warnings
- rebar3/842: make short name the default in vmargs
- rebar3/843: upgrade relx. it wasn't creating nodetool
- rebar3/847: Add support for disabling ssl verification for hex
Second Beta
Breaking improvements:
- major change in dependency handling -- source and package dependencies are now considered equal, so transitive source deps stop overtaking top-level package dependencies.
May break things for users who relied on that behaviour in mixed repositories - introduce code coverage options as cover_opts config tuple
- do not install profile-based dependencies of dependencies (stop getting your deps' meck or debug behaviour)
- lock files are sorted to minimize variations in the future and ease diffing
New:
- added proxy support to rebar3 fetches
- SSL certificate validation
- fish shell completions
- add
tree
command to print the origin of transitive dependencies - aliased packages such as
{uuid, {pkg, uuid_erl}}
and{uuid, "1.0.0", {pkg, uuid_erl}}
are now supported, whereuuid_erl
is the package name anduuid
the library's
actual name. - add support for
--file
argument in eunit
Fixed:
- fixes to reading app.src.script (for yaws)
- minor template updates
- fixes to profiles application
- reduced memory usage (shell agent, leaks patched)
- fixes for windows (robocopy, symlinks)
- mibs fixes
- fixes to git resource handling (http, custom ssh users supported)
- hooks optimizations
- clear out all usages of 'cd'
- upgrade of dependencies has many improvements
- better error reporting and logging
- major fixes to upgrade and locking mechanisms
- fixes in recompilation of CT suites
- fixes to plugin handling
- directories looking for apps are restricted to what is documented
- escaping paths in shell commands
- edoc provider runs in a 'docs' profile
- clean provider detection of dependencies is fixed
rebar3 pkgs
output is sorted- fix dialyzer warnings
- fixes to dependency overrides
First Beta
Changes since alpha-6:
- windows support
artifacts
configuration option for validation of non-Erlang rebar3 generated artifacts (hooks, etc.)- improvement to escriptize provider
- Dialyzer provider is made compatible with rebar 2.x's so the option set is shared across releases
- exporting config vars to the environment for hooks to be compatible with rebar3's structure
- nicer error messages
- CT fixes
- added a
plugins
namespace with providers to list and upgrade them - lots of plugins fixes
- rebar3 builds from packages
- package list is sorted
- fixes to relx argument orders