title: Semantic Diff Utilities
body: <p>I'm trying to find some good examples of semantic diff/merge utilities.  The traditional paradigm of comparing source code files works by comparing lines and characters.. but are there any utilities out there (for any language) that actually consider the <em>structure</em> of code when comparing files?</p>
  
  <p>For example, existing diff programs will report "difference found at character 2 of line 125. File x contains v-o-i-d, where file y contains b-o-o-l".  A specialized tool should be able to report "Return type of method doSomething() changed from void to bool".</p>
  
  <p>I would argue that this type of semantic information is actually what the user is looking for when comparing code, and should be the goal of next-generation progamming tools.  Are there any examples of this in available tools?</p>