There are many aspects:
-
earlier OpenWrt releases (before the LEDE architecture change) were monolithic "compile everything at once", and no packages of a release got updated. So, there was not problem with ABI as release packages remained contstant.
-
With the current build system, packages do get updated during the lifetime of a release. But the old ABI dependency checking in opkg is not 100% certain to indicate that all dependent packages do get re-compiled (& re-installed).
-
the package set at any given time is supposed to be coherent. If you compile or imagebuild, or install a release, you are supposed to get a coherent set to the packages installed at that time.
-
But if you opkg upgrade some packages in 18.06.x after installation, the opkg logic does not always recognize that a depending "upper" package needs to be updated, too. E.g. mbedtls get upgraded, but the version of libustream-mbedtls remains the same and does not get automatically updated, although it should be.
-
master has now ABI more directly in the package binary name, so the dependent packages should more clearly depend on an exact version of a library.
But in general, the whole idea of "let's upgrade all installed packages " is a new phenomenom, maybe due to larger flash spaces. Earlier there was no such option, because free flash space was minimal in a size-constrained device. OpenWrt opkg system is not really targeting that package upgrade approach.