On 3/16/2012 1:38 PM, Jonathan M Davis wrote:
That's not necessarily a bad thing,

It's very deliberate, and it's *certainly* not a bad thing. No ifs, ands, or buts about it.

Supporting a new OS by assuming that declarations for some other random OS will work is a recipe for unending frustration and disaster. For example, suppose there is a subtle difference in the layout of the FILE* struct. OOPS!

The way the versioning is done it:

1. forces the porter to check that stuff.

2. exposes all the places in the library where there is OS dependent code

There should never, EVER, in the library code be something like:

  version (FreeBSD)
    ... do something weird with FreeBSD ...
  else
    ... do the default ...

If you find any code like this in the library, please file a bugzilla entry for 
it.

Instead:

  version (FreeBSD)
    ... do something weird with FreeBSD ...
  else
    static assert(0, "OS not supported");


Reply via email to