8 bit os_f handles
Jonathan Coxhead
jonathan at doves.demon.co.uk
Wed Mar 29 20:07:27 BST 2000
David wrote,
| > When a library
| > is provided by a third party, people just **do not** include
| > dependencies on that library in their makefiles. If this were
true,
| > every makefile have dendencies on the version of the O S it was
| > intended for, in case it need to be recompiled when the user did
an
| > upgrade!
|
| Then they are wrong, and it should be specified in the library
| instrucions.
No, *you* are wrong in what you think the instructions should be.
If OSlib came with instructions, they would be "OSlib provides
binary compatibility indefinitely into the future, where the
underlying O S permits it. Code compiled and linked on all versions
of the O S will work in the same way on all past and future versions".
This is a stronger guarantee than the one you would provide---
something like "OSLib provides a way of accessing SWI calls from C
source, but the precise way in which it does this is subject to
change without notice, so please recompile all your code every time
you get a new release"?---and, admittedly, it has a cost. The cost is
well worth paying.
| > *You* may not like what those people do, but we are happy that
| > they are writing interesting code, and we are committed to
keeping
| > it working!
|
| <Bangs head against desk in disbeif>
Well, that says it all, really ...
| > It's not complacency at all, it's a natural consequence of
what
| > happens in an evolving system. When files >2GB started appearing
in
| > UNIX, did anyone say, "let's make lseek() return a |long long|"?
No.
| > Instead, they intruduced llseek(). Same for us.
|
| No No No different case. If they ever shipped a version with lseek
| incorrectly returning a byte they would fix it.
Sure, *if it was a bug*. We do fix bugs! But when they shipped a
version of seek() that "incorrectly" (I guess you would say) returned
an |int|, they did *not* fix it to return a long---they invented
lseek() to do that. And now llseek(), for |long long|.
| > | Do any of the users in this mailing list have any code which
will
| > | break if os_f is redesigned as a 32 bit, and the application |
| > recompiled? Its easy to tryout by just modifying the os.h
header.
| >
| > This doesn't matter one bit. Hundreds of copies of OSLib have
| > gone
| > out, and I have no idea who's using them. Neither does anyone
else.
| > Even if the answer was "none", I'd still argue for compatibility:
| > it's a professional ideal.
|
| But changing it for future versions does not break existing
versions
| unless they are not recompiled properly. I do not know what is so
| difficult to grasp about this.
No-one has claimed anything else. Let me repeat your statement,
but with the logic contraposed: "Changing it for future versions will
break existing versions, unless they are recompiled".
Do you see why that is a bad thing?
/|
o o o (_|/
/|
(_/
More information about the oslib-user
mailing list