A non-absolute path refers to some unspecified base directory. If you have two such paths, it makes sense to assume that they belong to the same (but still unspecified) base directory, and then it makes sense to ask where it belongs to the other.
On the other hand, if you have two paths, of which only one is absolute, for example /home/test and home , it is not known what the relation is. For example, if the base directory is /home/test/blah , then home means /home/test/blah/home , and therefore it should refer to blah/home . But how would a method know how to invent blah (or invent something else completely)?
The whole point of using a relative path is to say that I am not yet telling you what the base directory for this path will be. Expecting the runtime library to guess the base path, which we are not explicitly talking about, completely contradicts this semantics.
source share