If the latest version is omitted in a library, it defaults to the version number of the library. Testing inclusion in a range uses lexicographical order with all sequences of decimal digits replaced by the corresponding integer. If the current version number does not match the actual version number, the range defaults to simply the actual version number. Note that these checks are very commonly used in autoconf scripts to detect version numbers. The sources listed for each target comprise only some of the dependencies.
Header files included by reference in the sources also count as dependencies.
There are two ways for Rebar to handle these additional dependencies. First, it can be conservative and simply assume that all sources depend on all header files. This approach is quite simple, and the only negative consequence is the rebuilding of more targets than necessary when a header file changes. The implementation details and granularity of the dependency analysis are entirely up to the implementation. They are not specified as part of the design.