On Sun, Oct 11, 2015 at 9:38 PM, Timothy Gu <timothyg...@gmail.com> wrote: > On Sun, Oct 11, 2015 at 6:31 PM Ganesh Ajjanagadde <gajja...@mit.edu> wrote: > >> Just to make this clear: suppose (hypothetically) av_ctz was public. >> If my application never used av_ctz, but I (or my distro) upgrades >> libav*, then I don't need to recompile/relink my code? >> > > If we are only talking about av_ctz here, no, you don't need to rebuild > your code. But if a user uses a new libavutil but an old libavcodec that > still uses av_ctz, things will crash and burn.
Yes, because libavcodec would use still have some stub in it for the link to libavutil (for av_ctz). This would result in the crash. Thanks, now I understand why dll/dependency hell happens, and why ABI breakage is such a serious issue: some library depending on some other in turn depending on something else and this ancestor breaks something, unleashing hell downstream. And it now makes sense to me why things like glibc move mountains with all kinds of crazy stuff just to maintain ABI. I guess it gets even better if one has circular deps. > > Timothy > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > http://ffmpeg.org/mailman/listinfo/ffmpeg-devel _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel