I said something in a meeting today which a co-worker of mine considered relatively profound, so I thought I'd capture it for posterity.
The question was: What's the difference between a new version and a patch of an existing version? Both are code changes. The difference is whether you're changing intended behavior. A new version changes intended behavior; a patch does not.
A patch could just refactor code and not even change actual behavior, but that's not a very useful patch. A patch typically fixes one or more bugs. A bug is actual behavior that does not match intended behavior. Like the old saying goes: That's not a bug, that's a feature. Calling actual behavior a feature means that it's intended behavior; calling it a bug means that it's not intended behavior. So a patch fixes a bug by changing actual behavior to be more like intended behavior. If and when actual behavior is ever exactly like intended behavior, then the behavior is bug free.
With a new version, the intent is specifically to change behavior, to add new features and improve existing ones. That's why new versions brag about new features; patches don't. (How would marketers brag about a patch? "Crashes less often!" "Corrupts 27.3% less data than before!") If the change is evolutionary, that's a minor version, where vendors increment the digit after the first decimal place, such as going from version 1.2 to 1.3. If the change is more revolutionary, that's a major version, so vendors change the whole number, such as 1.0 or 1.1 to 2.0.
So, versions change intended behavior, patches strive to meet it more closely.