Version control on a semantic level would require to understand the semantics of source code. Thus, your ideal vcs tool must have a parser for every programming language, every XML schema and other non-binary data format.
At root, programming languages all come down to a semantic graph. Manage that! At the same time, you would be able to render the 'code' as any language you like (within reason).