A long time ago I developed some PIC code using Interrupt-On-Change. At that time and for that particular PIC (it was a 14-bit core), it was necessary to read the I/O port to clear the mismatch condition to clear the interrupt. Now I am again developing some code using Interrupt-On-Change, this time for a 16F1783, enhanced core. In reading the section in the manual about Interrupt-On-Change, there is no longer any mention of "reading the port to clear the mismatch condition". Instead it looks like there are now some new registers (IOCxF) with individual interrupt flags for each port bit, and these flags are supposed to be cleared in software to clear an interrupt. Reading the port explicitly no longer plays a role in clearing the interrupt. (It is also neat that now we have access to separate enabling of rising and falling edges.)
Does anyone know the history of this evolution, and without looking at each and every datasheet, which PICs this new method applies to? I am curious about the reasoning behind the change.