[erlang-questions] [ANN] Rebar3 first stable release 3.0.0

Tristan Sloughter <>
Wed Mar 9 19:21:44 CET 2016

We are happy to announce the first stable release of rebar3 with
version 3.0.0.

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.

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

If you have never tried rebar3, the big item names since rebar 2.x are:

 * repeatable builds with a big commitment to OTP principles
 * commands that know their own dependencies
 * support for profiles, allowing contextual configuration of
   applications (for example, test dependencies can be kept apart from
   regular deps)
 * documentation is seen as a feature
 * support for packages through hex.pm
 * new plugin interface and mechanisms, with command namespaces
 * mechanisms to override dependencies' configurations
 * switching releases to relx
 * and a lot of improvements to existing commands such as templates,
   dialyzer, shell, and so on. You will find documentation and how to
   get started with rebar3 on the website:

For package publishing checkout the documentation on hex.pm:

If you feel like getting started, we have had numerous posts about the
new features and user experiences:

 * http://ferd.ca/dev/rebar3-shell.html
 * http://blog.erlware.org/rebar3-features-part-1-local-install-and-upgrade/
 * http://blog.erlware.org/rebar3-features-part-2-dependency-tree/
 * http://blog.erlware.org/rebar3-features-part-3-overrides/
 * http://blog.erlware.org/rebar3-features-part-4-profiles/
 * http://blog.erlware.org/rebar3-features-part-5-dependency-branch-handling/
 * http://blog.erlware.org/rebar3-features-part-6-_checkouts-2/
 * http://blog.erlware.org/rebar3-hex-plugin/ Heinz Gies wrote about his
   experience migrating to rebar3 form rebar2 at

The How I Start Erlang guide was updated to use rebar3:

And a guide about managing package has been written by Bruce Yinhe:

Lastly, for those who have already adopted the tool, here is what has
changed since beta-4:

 * rebar3/902: Less color[1]
 * rebar3/921: Fix error reports on missing include paths[2]
 * rebar3/922: warn on incorrectly specified test options in
 * rebar3/923: support temporary cdn change with HEX_CDN os var[4]
 * rebar3/924: only add package list of versions to registry if it has
   the right build tool support[5]
 * rebar3/925: upgrade eunit_formatters for OTP 18 support[6]
 * rebar3/927: upgrade eunit_formatters to 0.3.1 for OTP18 bug fix[7]
 * rebar3/928: Ct output improvements[8]
 * rebar3/930: Handle force flags in leading position[9]
 * rebar3/934: don't add a provider if the same namespace and name
   already exists[10]
 * rebar3/935: Default to no eunit formatter if verbose specified[11]
 * rebar3/941: preserve attributes when copying files in
   rebar_utils:cp_r for unix[12]
 * rebar3/942: special handling of relx configs in profiles[13]
 * rebar3/943: remove backward_compat entry from travis s3[14]
 * rebar3/945: auto-update the registry if a pkg isn't found, fail if it
   still isn't found[15]
 * rebar3/948: Fix a small bug in the MIB compiler when building
 * rebar3/949: fetch eunit_formatters config not from the command args
   but from the config[17]
 * rebar3/963: Tup merge tests[18]
 * rebar3/965: fix tupple merging for realsies.[19]
 * rebar3/966: allow ct suites to be specified at root of project (or
   root of app)[20]
 * rebar3/967: symlink mib hrl output in apps `include' directories[21]
 * rebar3/970: upgrade certifi to latest release[22]
 * rebar3/982: Allow bootstrap to pick up existing Hex cache and
 * rebar3/983: Add support for total code coverage[24]
 * rebar3/986: A bad template index does not crash; shows warning[25]
 * rebar3/987: Plugin templates[26]
 * rebar3/988: Fix wrong relative path resolution[27]
 * rebar3/989: convert ~> versions to highest matching[28]
 * rebar3/991: Upgrade relx to v3.11.0[29]
 * rebar3/992: Bump cth_readable to 1.1.1[30]
 * rebar3/993: contributors -> maintaiers in template app data[31]
 * rebar3/994: warn if the directories eunit' orct' show up in
 * rebar3/995: Support old-style shell for rebar3 shell[33]
 * rebar3/996: Updates cth_readable so it supports dumb terminals[34]
 * rebar3/999: Fix windows stuff[35]
 * rebar3/1005: only need to compare ref and not ref+url in git
 * rebar3/1006: only apply default and prod profile to dependencies[37]
 * rebar3/1007: install project app plugins after discovering them not
 * rebar3/1008: Unquote templates, add a warning instead.[39]
 * rebar3/1009: merge overlay entries into a single {overlay, list()}
   for relx[40]
 * rebar3/1010: upgrade relx to 3.12.0[41]
 * rebar3/1012: Remove triple brackets in bbmustache templates[42]
 * rebar3/1013: upgrade bbmustache and relx[43]
 * rebar3/1016: when using the --file' argument toeunit' paths were
   being converted[44]
 * rebar3/1017: check at runtime instead of compile time for
 * rebar3/1018: change detection of valid modules for eunit[46]
 * rebar3/1021: convert 'app' to 'application' in eunit_opts to match
   cmdline args[47]
 * rebar3/1022: Display error message when bad config is loaded[48]
 * rebar3/1023: Rework README and CONTRIBUTING documents[49]
 * rebar3/1024: deduplicate default test set generated by rebar3
 * rebar3/1025: add unstable install/upgrade instructions to readme[51]
 * rebar3/1029: local install and local upgrade[52]
 * rebar3/1031: add profile option to clean task[53]
 * rebar3/1033: Fix bash completion regression (cf66dfd6ba) and make
   lopt strings more resilient[54]
 * rebar3/1035: Add module directory to include path[55]
 * rebar3/1041: Add test case for relx overlay vars[56]
 * rebar3/1043: don't strip the project apps when running ct with just a
   root suite specified[57]
 * rebar3/1045: don't lose overrides in an app when installing plugins
   it uses[58]
 * rebar3/1046: add user-agent to http request headers[59]
 * rebar3/1047: Ignore unknown warning when dialyzer < 2.8[60]
 * rebar3/1048: Add secondary hook for rebar_prv_compile[61]
 * rebar3/1050: check top level config for minimum or blacklisted  otps
   at start[62]
 * rebar3/1053: upgrade relx to 3.15.0[63]
 * rebar3/1061: Make lock files future-proof[64]
 * rebar3/1062: update relx to 3.16.0 to include color intesity
 * rebar3/1065: give top level plugin providers precedence over default
 * rebar3/1066: Bump cth_readable[67]
 * rebar3/1067: set default color intensity to high[68]
 * rebar3/1068: upgrade relx to 3.17.0[69]
 * rebar3/1070: Hex improvements[70]
 * rebar3/1071: break up do/1 function in install_deps to make upgrade
   less confusing[71]
 * rebar3/1073: Support --setcookie option[72]
 * rebar3/1075: add project_providers after initing default providers
   but allow overrides[73]
 * rebar3/1076: Add me to THANKS for suffering through Tristan's
 * rebar3/1082: Fixed rebar.config shell_apps setting[75]
 * rebar3/1090: fix auto-registry update to work even when not a locked
 * rebar3/1091: Run all hooks[77]
 * rebar3/1092: Add short-options to the eunit provider.[78]
 * rebar3/1098: error on a cover spec in ct_opts[79]
 * rebar3/1099: add support for common tests include flag[80]
 * rebar3/1100: Fix quoting problem in zsh completion[81]
 * rebar3/1101: Take CT options errors and turn them to warnings[82]
 * rebar3/1102: include project_plugins in plugins that can be
 * rebar3/1103: bump certifi to 0.4.0[84]
 * rebar3/1104: move dialyze setting of debug_info to overrides in
 * rebar3/1106: define the 'EUNIT' macro in the test profile[86]
 * rebar3/1107: upgrade cth_readable[87]
 * rebar3/1108: make omar happy[88]
 * rebar3/1110: pass loglevel used in rebar3 to relx[89]


   1. https://github.com/rebar/rebar3/pull/902
   2. https://github.com/rebar/rebar3/pull/921
   3. https://github.com/rebar/rebar3/pull/922
   4. https://github.com/rebar/rebar3/pull/923
   5. https://github.com/rebar/rebar3/pull/924
   6. https://github.com/rebar/rebar3/pull/925
   7. https://github.com/rebar/rebar3/pull/927
   8. https://github.com/rebar/rebar3/pull/928
   9. https://github.com/rebar/rebar3/pull/930
  10. https://github.com/rebar/rebar3/pull/934
  11. https://github.com/rebar/rebar3/pull/935
  12. https://github.com/rebar/rebar3/pull/941
  13. https://github.com/rebar/rebar3/pull/942
  14. https://github.com/rebar/rebar3/pull/943
  15. https://github.com/rebar/rebar3/pull/945
  16. https://github.com/rebar/rebar3/pull/948
  17. https://github.com/rebar/rebar3/pull/949
  18. https://github.com/rebar/rebar3/pull/963
  19. https://github.com/rebar/rebar3/pull/965
  20. https://github.com/rebar/rebar3/pull/966
  21. https://github.com/rebar/rebar3/pull/967
  22. https://github.com/rebar/rebar3/pull/970
  23. https://github.com/rebar/rebar3/pull/982
  24. https://github.com/rebar/rebar3/pull/983
  25. https://github.com/rebar/rebar3/pull/986
  26. https://github.com/rebar/rebar3/pull/987
  27. https://github.com/rebar/rebar3/pull/988
  28. https://github.com/rebar/rebar3/pull/989
  29. https://github.com/rebar/rebar3/pull/991
  30. https://github.com/rebar/rebar3/pull/992
  31. https://github.com/rebar/rebar3/pull/993
  32. https://github.com/rebar/rebar3/pull/994
  33. https://github.com/rebar/rebar3/pull/995
  34. https://github.com/rebar/rebar3/pull/996
  35. https://github.com/rebar/rebar3/pull/999
  36. https://github.com/rebar/rebar3/pull/1005
  37. https://github.com/rebar/rebar3/pull/1006
  38. https://github.com/rebar/rebar3/pull/1007
  39. https://github.com/rebar/rebar3/pull/1008
  40. https://github.com/rebar/rebar3/pull/1009
  41. https://github.com/rebar/rebar3/pull/1010
  42. https://github.com/rebar/rebar3/pull/1012
  43. https://github.com/rebar/rebar3/pull/1013
  44. https://github.com/rebar/rebar3/pull/1016
  45. https://github.com/rebar/rebar3/pull/1017
  46. https://github.com/rebar/rebar3/pull/1018
  47. https://github.com/rebar/rebar3/pull/1021
  48. https://github.com/rebar/rebar3/pull/1022
  49. https://github.com/rebar/rebar3/pull/1023
  50. https://github.com/rebar/rebar3/pull/1024
  51. https://github.com/rebar/rebar3/pull/1025
  52. https://github.com/rebar/rebar3/pull/1029
  53. https://github.com/rebar/rebar3/pull/1031
  54. https://github.com/rebar/rebar3/pull/1033
  55. https://github.com/rebar/rebar3/pull/1035
  56. https://github.com/rebar/rebar3/pull/1041
  57. https://github.com/rebar/rebar3/pull/1043
  58. https://github.com/rebar/rebar3/pull/1045
  59. https://github.com/rebar/rebar3/pull/1046
  60. https://github.com/rebar/rebar3/pull/1047
  61. https://github.com/rebar/rebar3/pull/1048
  62. https://github.com/rebar/rebar3/pull/1050
  63. https://github.com/rebar/rebar3/pull/1053
  64. https://github.com/rebar/rebar3/pull/1061
  65. https://github.com/rebar/rebar3/pull/1062
  66. https://github.com/rebar/rebar3/pull/1065
  67. https://github.com/rebar/rebar3/pull/1066
  68. https://github.com/rebar/rebar3/pull/1067
  69. https://github.com/rebar/rebar3/pull/1068
  70. https://github.com/rebar/rebar3/pull/1070
  71. https://github.com/rebar/rebar3/pull/1071
  72. https://github.com/rebar/rebar3/pull/1073
  73. https://github.com/rebar/rebar3/pull/1075
  74. https://github.com/rebar/rebar3/pull/1076
  75. https://github.com/rebar/rebar3/pull/1082
  76. https://github.com/rebar/rebar3/pull/1090
  77. https://github.com/rebar/rebar3/pull/1091
  78. https://github.com/rebar/rebar3/pull/1092
  79. https://github.com/rebar/rebar3/pull/1098
  80. https://github.com/rebar/rebar3/pull/1099
  81. https://github.com/rebar/rebar3/pull/1100
  82. https://github.com/rebar/rebar3/pull/1101
  83. https://github.com/rebar/rebar3/pull/1102
  84. https://github.com/rebar/rebar3/pull/1103
  85. https://github.com/rebar/rebar3/pull/1104
  86. https://github.com/rebar/rebar3/pull/1106
  87. https://github.com/rebar/rebar3/pull/1107
  88. https://github.com/rebar/rebar3/pull/1108
  89. https://github.com/rebar/rebar3/pull/1110
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20160309/272dddff/attachment.html>

More information about the erlang-questions mailing list