A big part of my daily job is developing software for use on machines with different versions of the same software, like
grep. When encountering a feature which would be useful for example to simplify code, it is important to know whether this feature is available in the oldest installed tools. For critical stuff, it would also be useful to know whether this feature was new or has existed for years in the oldest installed tools.
What are quick ways to answer this authoritatively for Linux tools, especially the GNU Core Utils? Some possibilities in order of decreasing accuracy:
- Binary binary search (sic) by running the different versions is of course the ultimate answer, but is by far the most time consuming. Older installations are often not available for security reasons.
- Reading the code is almost as good, but it can be prohibitively time consuming if the feature is vaguely named, the name doesn't correspond directly to variable/function/object names, or it was implemented before it was enabled.
- Change logs, when available, usually connect feature changes to software versions.
- Commit logs can provide hints, but do not know which version they will be included in.
- man pages rarely mention dates.
- The same applies to Googling, and you'd also have a hard time excluding all the non-authoritative sources.