Commit 9dfd945a2c added function `package--reload-previously-loaded'. Previously package library would just always reload all package files (except its autoloads), new function tries to be smart and avoid reloading unneeded things, presumably for performance reasons.
1. Function excludes package's current directory, see variable `load-path-sans-dir'. This is problematic if a package is reinstalled from the same directory after changes have been made. I know this is not how things usually work, but it seems to create problems for no reason: if the same directory is never used, why bother about it here? Normal usecases are not affected at all, why "special" usecases that reuse the same directory suffer.
2. When searching in `load-history', the function ignores changes from byte-compiled to source and vice versa, i.e. `.el' -> `.elc' and `.elc' -> `.el'. In other words, if you replace a byte-compiled file with a non-compiled (or vice versa), it never gets reloaded. A simple fix (having zero effect in normal usecases) would be e.g. this:
(truename (file-truename canonical))
(found (or (member truename history)
(member (if (string-suffix-p ".el" truename)
(replace-regexp-in-string (rx ".el" eos) ".elc" truename t)
(replace-regexp-in-string (rx ".elc" eos) ".el" truename t))
history)))
Paul