I was resurrecting an old project, which used application library interface v 1, and libauto, and this problem dawned upon me -- not in compile time, but in runtime!
I see and hear what you're saying about not using libauto, since you loose control over the versions. But in my honest opinion this rather sudden breakage of compatibility, is kind of... bad. In the application.library autodoc the reason for this is that the tag parsing code was broken -- fine, these things can, and will happen. But I don't understand why version 1 of the interface is so forcefully deprecated but, and brakes my application in runtime? Wasn't part of the reason for introducing the interfaces with versions, the ability to have several versions functioning in parallell?
I can in part understand the need to fully deprecate broken functions, but to introduce runtime errors for this is just very bad. Why am I not as a developer warned at compile time of this? I mean, this is a public API, and I'm not cutting any corners.
Even after I changed my code to manually open the application.library and interface -- like your'e supposed to do -- I got no warning or compile error, but instead this runtime error requester when using interface version 1.
To me the whole interface scheme, and in particular its versioning just seems very ill-designed. I mean, if my application is going to fail when using version 1, why not just make version 1 the same as version 2?
I'm sorry for being blunt, and I might not get all the technical details that motivate the interface scheme, but to break an API in runtime -- with re-compiled sources, just seems very broken to me.