2016-05-22 13:33 GMT+02:00 Anton Vodonosov <avodonosov@yandex.ru>:
19.05.2016, 11:00, "Hans Hübner" <hans.huebner@gmail.com>:
> The real issue though is data types defined by versioned libraries.  Suppose that an instance of a data type defined in library A version 1 is passed, through higher levels of the software, to version 2 of that same library.  How would one ever expect that to work?

Can that happen without us on the higher level knowingly passing object created by one API, to another, incompatible API, which doesn't accept such objects?

I was thinking about that too, but now it appears to me that if incompatible changes in API are marked as such (e.g. by giving the API new name), we always know that the second API is incompatible and can not accept this object.

Do you have examples? It would be interesting to explore this problem further.
 
Let's assume that we're using, say, an XML library that can parse dates into instances of a date library, and a database library that accepts instances of date objects of said library for insertion into a database.  If the XML library and the database library depended on different versions of the date library and it'd be allowed to have two versions of the date library in one running lisp image, we'd end up passing date instances created by the XML library to the database library.

-Hans