<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body><div id="readme" class="readme blob instapaper_body"><!--defang_article class="markdown-body entry-content" defang_itemprop="text"--><p>We are happy to announce the first stable release of rebar3 with version 3.0.0. <br></p><p>A bit over a year ago, we had set out to make rebar great again. We believe we
have done it, and now have a solid core on which to build more tools and grow
a better community.<br></p><p>Now, this doesn't mean there are no things to improve or that the code base is
bug-free. It does however mean that we are now committed to backwards
compatibility as we move forward with rebar3's next improvements.<br></p><p>If you have never tried rebar3, the big item names since rebar 2.x are:<br></p><ul><li>repeatable builds with a big commitment to OTP principles<br></li><li>commands that know their own dependencies<br></li><li>support for profiles, allowing contextual configuration of applications
(for example, test dependencies can be kept apart from regular deps)<br></li><li>documentation is seen as a feature<br></li><li>support for packages through hex.pm<br></li><li>new plugin interface and mechanisms, with command namespaces<br></li><li>mechanisms to override dependencies' configurations<br></li><li>switching releases to relx<br></li><li>and a lot of improvements to existing commands such as templates,
dialyzer, shell, and so on.<br></li></ul><p>You will find documentation and how to get started with rebar3 on the website:
<a href="http://www.rebar3.org/docs/getting-started">http://www.rebar3.org/docs/getting-started</a><br></p><p>For package publishing checkout the documentation on hex.pm: <a href="https://hex.pm/docs/rebar3_publish">https://hex.pm/docs/rebar3_publish</a><br></p><p>If you feel like getting started, we have had numerous posts
about the new features and user experiences:<br></p><ul><li><a href="http://ferd.ca/dev/rebar3-shell.html">http://ferd.ca/dev/rebar3-shell.html</a><br></li><li><a href="http://blog.erlware.org/rebar3-features-part-1-local-install-and-upgrade/">http://blog.erlware.org/rebar3-features-part-1-local-install-and-upgrade/</a><br></li><li><a href="http://blog.erlware.org/rebar3-features-part-2-dependency-tree/">http://blog.erlware.org/rebar3-features-part-2-dependency-tree/</a><br></li><li><a href="http://blog.erlware.org/rebar3-features-part-3-overrides/">http://blog.erlware.org/rebar3-features-part-3-overrides/</a><br></li><li><a href="http://blog.erlware.org/rebar3-features-part-4-profiles/">http://blog.erlware.org/rebar3-features-part-4-profiles/</a><br></li><li><a href="http://blog.erlware.org/rebar3-features-part-5-dependency-branch-handling/">http://blog.erlware.org/rebar3-features-part-5-dependency-branch-handling/</a><br></li><li><a href="http://blog.erlware.org/rebar3-features-part-6-_checkouts-2/">http://blog.erlware.org/rebar3-features-part-6-_checkouts-2/</a><br></li><li><a href="http://blog.erlware.org/rebar3-hex-plugin/">http://blog.erlware.org/rebar3-hex-plugin/</a><br></li></ul><p>Heinz Gies wrote about his experience migrating to rebar3 form rebar2 at <a href="http://blog.licenser.net/blog/2015/07/10/migrating-to-rebar3/">http://blog.licenser.net/blog/2015/07/10/migrating-to-rebar3/</a><br></p><p>The How I Start Erlang guide was updated to use rebar3: <a href="https://howistart.org/posts/erlang/1">https://howistart.org/posts/erlang/1</a><br></p><p>And a guide about managing package has been written by Bruce Yinhe: <a href="https://medium.com/@brucify/using-rebar3-to-manage-erlang-packages-282f78adff1e#.ay10goc0z">https://medium.com/@brucify/using-rebar3-to-manage-erlang-packages-282f78adff1e#.ay10goc0z</a><br></p><p>Lastly, for those who have already adopted the tool, here is what has changed since beta-4:<br></p><ul><li>rebar3/902: <a href="https://github.com/rebar/rebar3/pull/902">Less color</a><br></li><li>rebar3/921: <a href="https://github.com/rebar/rebar3/pull/921">Fix error reports on missing include paths</a><br></li><li>rebar3/922: <a href="https://github.com/rebar/rebar3/pull/922">warn on incorrectly specified test options in <code>rebar.config</code></a><br></li><li>rebar3/923: <a href="https://github.com/rebar/rebar3/pull/923">support temporary cdn change with HEX_CDN os var</a><br></li><li>rebar3/924: <a href="https://github.com/rebar/rebar3/pull/924">only add package list of versions to registry if it has the right build tool support</a><br></li><li>rebar3/925: <a href="https://github.com/rebar/rebar3/pull/925">upgrade eunit_formatters for OTP 18 support</a><br></li><li>rebar3/927: <a href="https://github.com/rebar/rebar3/pull/927">upgrade eunit_formatters to 0.3.1 for OTP18 bug fix</a><br></li><li>rebar3/928: <a href="https://github.com/rebar/rebar3/pull/928">Ct output improvements</a><br></li><li>rebar3/930: <a href="https://github.com/rebar/rebar3/pull/930">Handle force flags in leading position</a><br></li><li>rebar3/934: <a href="https://github.com/rebar/rebar3/pull/934">don't add a provider if the same namespace and name already exists</a><br></li><li>rebar3/935: <a href="https://github.com/rebar/rebar3/pull/935">Default to no eunit formatter if verbose specified</a><br></li><li>rebar3/941: <a href="https://github.com/rebar/rebar3/pull/941">preserve attributes when copying files in rebar_utils:cp_r for unix</a><br></li><li>rebar3/942: <a href="https://github.com/rebar/rebar3/pull/942">special handling of relx configs in profiles</a><br></li><li>rebar3/943: <a href="https://github.com/rebar/rebar3/pull/943">remove backward_compat entry from travis s3</a><br></li><li>rebar3/945: <a href="https://github.com/rebar/rebar3/pull/945">auto-update the registry if a pkg isn't found, fail if it still isn't found</a><br></li><li>rebar3/948: <a href="https://github.com/rebar/rebar3/pull/948">Fix a small bug in the MIB compiler when building dependencies</a><br></li><li>rebar3/949: <a href="https://github.com/rebar/rebar3/pull/949">fetch eunit_formatters config not from the command args but from the config</a><br></li><li>rebar3/963: <a href="https://github.com/rebar/rebar3/pull/963">Tup merge tests</a><br></li><li>rebar3/965: <a href="https://github.com/rebar/rebar3/pull/965">fix tupple merging for realsies.</a><br></li><li>rebar3/966: <a href="https://github.com/rebar/rebar3/pull/966">allow ct suites to be specified at root of project (or root of app)</a><br></li><li>rebar3/967: <a href="https://github.com/rebar/rebar3/pull/967">symlink mib hrl output in apps `include' directories</a><br></li><li>rebar3/970: <a href="https://github.com/rebar/rebar3/pull/970">upgrade certifi to latest release</a><br></li><li>rebar3/982: <a href="https://github.com/rebar/rebar3/pull/982">Allow bootstrap to pick up existing Hex cache and deps</a><br></li><li>rebar3/983: <a href="https://github.com/rebar/rebar3/pull/983">Add support for total code coverage</a><br></li><li>rebar3/986: <a href="https://github.com/rebar/rebar3/pull/986">A bad template index does not crash; shows warning</a><br></li><li>rebar3/987: <a href="https://github.com/rebar/rebar3/pull/987">Plugin templates</a><br></li><li>rebar3/988: <a href="https://github.com/rebar/rebar3/pull/988">Fix wrong relative path resolution</a><br></li><li>rebar3/989: <a href="https://github.com/rebar/rebar3/pull/989">convert ~> versions to highest matching</a><br></li><li>rebar3/991: <a href="https://github.com/rebar/rebar3/pull/991">Upgrade relx to v3.11.0</a><br></li><li>rebar3/992: <a href="https://github.com/rebar/rebar3/pull/992">Bump cth_readable to 1.1.1</a><br></li><li>rebar3/993: <a href="https://github.com/rebar/rebar3/pull/993">contributors -> maintaiers in template app data</a><br></li><li>rebar3/994: <a href="https://github.com/rebar/rebar3/pull/994">warn if the directories <code>eunit' or</code>ct' show up in `src_dirs'</a><br></li><li>rebar3/995: <a href="https://github.com/rebar/rebar3/pull/995">Support old-style shell for rebar3 shell</a><br></li><li>rebar3/996: <a href="https://github.com/rebar/rebar3/pull/996">Updates cth_readable so it supports dumb terminals</a><br></li><li>rebar3/999: <a href="https://github.com/rebar/rebar3/pull/999">Fix windows stuff</a><br></li><li>rebar3/1005: <a href="https://github.com/rebar/rebar3/pull/1005">only need to compare ref and not ref+url in git resource</a><br></li><li>rebar3/1006: <a href="https://github.com/rebar/rebar3/pull/1006">only apply default and prod profile to dependencies</a><br></li><li>rebar3/1007: <a href="https://github.com/rebar/rebar3/pull/1007">install project app plugins after discovering them not before</a><br></li><li>rebar3/1008: <a href="https://github.com/rebar/rebar3/pull/1008">Unquote templates, add a warning instead.</a><br></li><li>rebar3/1009: <a href="https://github.com/rebar/rebar3/pull/1009">merge overlay entries into a single {overlay, list()} for relx</a><br></li><li>rebar3/1010: <a href="https://github.com/rebar/rebar3/pull/1010">upgrade relx to 3.12.0</a><br></li><li>rebar3/1012: <a href="https://github.com/rebar/rebar3/pull/1012">Remove triple brackets in bbmustache templates</a><br></li><li>rebar3/1013: <a href="https://github.com/rebar/rebar3/pull/1013">upgrade bbmustache and relx</a><br></li><li>rebar3/1016: <a href="https://github.com/rebar/rebar3/pull/1016">when using the <code>--file' argument to</code>eunit' paths were being converted</a><br></li><li>rebar3/1017: <a href="https://github.com/rebar/rebar3/pull/1017">check at runtime instead of compile time for <code>file:list_dir_all/1</code></a><br></li><li>rebar3/1018: <a href="https://github.com/rebar/rebar3/pull/1018">change detection of valid modules for <code>eunit</code></a><br></li><li>rebar3/1021: <a href="https://github.com/rebar/rebar3/pull/1021">convert 'app' to 'application' in eunit_opts to match cmdline args</a><br></li><li>rebar3/1022: <a href="https://github.com/rebar/rebar3/pull/1022">Display error message when bad config is loaded</a><br></li><li>rebar3/1023: <a href="https://github.com/rebar/rebar3/pull/1023">Rework README and CONTRIBUTING documents</a><br></li><li>rebar3/1024: <a href="https://github.com/rebar/rebar3/pull/1024">deduplicate default test set generated by <code>rebar3 eunit</code></a><br></li><li>rebar3/1025: <a href="https://github.com/rebar/rebar3/pull/1025">add unstable install/upgrade instructions to readme</a><br></li><li>rebar3/1029: <a href="https://github.com/rebar/rebar3/pull/1029">local install and local upgrade</a><br></li><li>rebar3/1031: <a href="https://github.com/rebar/rebar3/pull/1031">add profile option to clean task</a><br></li><li>rebar3/1033: <a href="https://github.com/rebar/rebar3/pull/1033">Fix bash completion regression (cf66dfd6ba) and make lopt strings more resilient</a><br></li><li>rebar3/1035: <a href="https://github.com/rebar/rebar3/pull/1035">Add module directory to include path</a><br></li><li>rebar3/1041: <a href="https://github.com/rebar/rebar3/pull/1041">Add test case for relx overlay vars</a><br></li><li>rebar3/1043: <a href="https://github.com/rebar/rebar3/pull/1043">don't strip the project apps when running <code>ct</code> with just a root suite specified</a><br></li><li>rebar3/1045: <a href="https://github.com/rebar/rebar3/pull/1045">don't lose overrides in an app when installing plugins it uses</a><br></li><li>rebar3/1046: <a href="https://github.com/rebar/rebar3/pull/1046">add user-agent to http request headers</a><br></li><li>rebar3/1047: <a href="https://github.com/rebar/rebar3/pull/1047">Ignore unknown warning when dialyzer < 2.8</a><br></li><li>rebar3/1048: <a href="https://github.com/rebar/rebar3/pull/1048">Add secondary hook for rebar_prv_compile</a><br></li><li>rebar3/1050: <a href="https://github.com/rebar/rebar3/pull/1050">check top level config for minimum or blacklisted  otps at start</a><br></li><li>rebar3/1053: <a href="https://github.com/rebar/rebar3/pull/1053">upgrade relx to 3.15.0</a><br></li><li>rebar3/1061: <a href="https://github.com/rebar/rebar3/pull/1061">Make lock files future-proof</a><br></li><li>rebar3/1062: <a href="https://github.com/rebar/rebar3/pull/1062">update relx to 3.16.0 to include color intesity update</a><br></li><li>rebar3/1065: <a href="https://github.com/rebar/rebar3/pull/1065">give top level plugin providers precedence over default providers</a><br></li><li>rebar3/1066: <a href="https://github.com/rebar/rebar3/pull/1066">Bump cth_readable</a><br></li><li>rebar3/1067: <a href="https://github.com/rebar/rebar3/pull/1067">set default color intensity to high</a><br></li><li>rebar3/1068: <a href="https://github.com/rebar/rebar3/pull/1068">upgrade relx to 3.17.0</a><br></li><li>rebar3/1070: <a href="https://github.com/rebar/rebar3/pull/1070">Hex improvements</a><br></li><li>rebar3/1071: <a href="https://github.com/rebar/rebar3/pull/1071">break up do/1 function in install_deps to make upgrade less confusing</a><br></li><li>rebar3/1073: <a href="https://github.com/rebar/rebar3/pull/1073">Support --setcookie option</a><br></li><li>rebar3/1075: <a href="https://github.com/rebar/rebar3/pull/1075">add project_providers after initing default providers but allow overrides</a><br></li><li>rebar3/1076: <a href="https://github.com/rebar/rebar3/pull/1076">Add me to THANKS for suffering through Tristan's code</a><br></li><li>rebar3/1082: <a href="https://github.com/rebar/rebar3/pull/1082">Fixed rebar.config shell_apps setting</a><br></li><li>rebar3/1090: <a href="https://github.com/rebar/rebar3/pull/1090">fix auto-registry update to work even when not a locked pkg-vsn</a><br></li><li>rebar3/1091: <a href="https://github.com/rebar/rebar3/pull/1091">Run all hooks</a><br></li><li>rebar3/1092: <a href="https://github.com/rebar/rebar3/pull/1092">Add short-options to the eunit provider.</a><br></li><li>rebar3/1098: <a href="https://github.com/rebar/rebar3/pull/1098">error on a cover spec in ct_opts</a><br></li><li>rebar3/1099: <a href="https://github.com/rebar/rebar3/pull/1099">add support for common tests <code>include</code> flag</a><br></li><li>rebar3/1100: <a href="https://github.com/rebar/rebar3/pull/1100">Fix quoting problem in zsh completion</a><br></li><li>rebar3/1101: <a href="https://github.com/rebar/rebar3/pull/1101">Take CT options errors and turn them to warnings</a><br></li><li>rebar3/1102: <a href="https://github.com/rebar/rebar3/pull/1102">include project_plugins in plugins that can be upgraded</a><br></li><li>rebar3/1103: <a href="https://github.com/rebar/rebar3/pull/1103">bump certifi to 0.4.0</a><br></li><li>rebar3/1104: <a href="https://github.com/rebar/rebar3/pull/1104">move dialyze setting of debug_info to overrides in profile</a><br></li><li>rebar3/1106: <a href="https://github.com/rebar/rebar3/pull/1106">define the 'EUNIT' macro in the test profile</a><br></li><li>rebar3/1107: <a href="https://github.com/rebar/rebar3/pull/1107">upgrade cth_readable</a><br></li><li>rebar3/1108: <a href="https://github.com/rebar/rebar3/pull/1108">make omar happy</a><br></li><li>rebar3/1110: <a href="https://github.com/rebar/rebar3/pull/1110">pass loglevel used in rebar3 to relx</a><br></li></ul><!--/defang_article--></div>
<div> </div>
</body>
</html>