Szerintem elbeszélünk egymás mellett.
1, Én azt mondom, hogy ezzel van itten a probléma:
var x = myLib.getData();
ezután honnan a szent tehén tőgyéből derül ki, hogy az x-nek milyen változói vagy metódusai vannak,
hogy a könyvtár írója a következő verzióban nem vesz-e el 2 változót, és ad hozzá 3 metódust?
Ez az, ami csak futási időben derül ki. Az égadta világon nincs semmi garancia arra, hogy ha csak egy minor verziót is vált a könyvtár, akkor a kettőnk között definiált interface is ugyanaz.
2, azért általában, mert voltak olyan változások, amik inkompatibilissé tették a verziók között, de ezen változások csak nagyon kevés alkalmazást érintettek (átnézve a saját 10+ éves kódbázisunkat, nálunk nem volt ilyen).
3, most a külső könyvtárakról, vagy a belsőkről beszélünk? A belső könyvtárak rommá vannak optimalizálva, de azokba nem kell nézelődni, mert minek. Van egy jól definiált interface, egy nagyon jó dokumentáció, használni kell. De ha esetleg konkrét példával jönnél elő, úgy lehet, hogy érthetőbb lenne, hogy neked mivel volt bajod....