On Fri, 29 Aug 2003, Dustin Navea wrote:
: as i said it was an example, but thanks for the flame
Well, at this point, "you're welcome," considering the copy you forwarded back to the list was a private response. Have you read the proverbial netiquette handbook yet? However, I am sorry for going off the handle in this case.
See, I'm rather tired of this thread bringing people out of the woodwork with excuses for violating decades of programming practice, with lame and bloated runtime checks, when C preprocessor detection of OS features is valid *even on Windows*. It's rather trivial to say "this binary runs on NetBSD 1.6.2 or newer; pick the other binary for compatibility with 1.6-1.6.1, but it will be slower" and implement a simple #ifdef check. You know, like saying "this binary is for Win98 or later; choose the other binary for more features on Win2k and up". Sound familiar?
"Keep It Simple, Stupid" is a very good motto. Bending over backwards to try to make one binary run on a dozen OS versions, while providing all possible features of the newest OS release, is provably a maintenance headache. It has been done and it has been a pain; that contributed to the invention of autoconf.
If you want to provide multiple levels of compatibility, provide multiple builds and indicate what their build environments were. Builds for older OS releases simply get less features. This doesn't even require multiple machines; one compiler looking at multiple sets of .h and shared libraries is enough.