Ryan Bloom wrote:
Bumping the MMN works for things like Apache, but not for flood, subversion, or any of the countless other APR-based apps that have sprung up lately.
I'll agree that changing the typename doesn't solve the problem of mismatched binary compatibility, but it does make it obvious to the app author where the interface has changed. The renaming simply gives us compile-time type-checking.
Maybe APR needs to have its own magic number. Is there a way to
make a version check mandatory, or are we stuck with a voluntary
check?
Versioning has been on the todo list for a long time now. Perhaps the apr_time_t change is a good enough reason to add it ASAP. Then, we can do the versioning and the apr_time_t change at the same time, and this problem is solved completely.
That would be an almost ideal solution:
* Keep the apr_time_t name to eliminate the number of code changes required
* Add versioning to prevent a run-time mismatch of new lib and old app
We'd still have the problem of compile-time mismatches: e.g., old code that does "time / 1000000". But based on my recent experience in adding the new time macros in the httpd code, such constructs appear to be so rare that I'm willing to solve the problem with documentation rather than code.
--Brian