unnecessary OS redundancy in druntime
Joakim via Digitalmars-d
digitalmars-d at puremagic.com
Fri Dec 12 07:47:08 PST 2014
I asked about this on github but didn't get a good answer, so I'm
asking here. What's with all the repeated OS blocks in druntime?
https://github.com/D-Programming-Language/druntime/blob/master/src/core/sys/posix/unistd.d#L945
https://github.com/D-Programming-Language/druntime/blob/master/src/core/sys/posix/netinet/in_.d#L974
https://github.com/D-Programming-Language/druntime/blob/master/src/core/sys/posix/arpa/inet.d#L201
It seems like pointless repetition and there are many more
examples of this, as I keep running into it when adding
bionic/Android support. Martin suggested that it would be useful
to have a default case that asserts for an unsupported OS, but
many of these blocks don't have that either.
Why not just declare them once for Posix and then specialize for
a particular OS later on when necessary, as seems to have been
done in these instances?
https://github.com/D-Programming-Language/druntime/blob/master/src/core/sys/posix/sys/stat.d#L954
https://github.com/D-Programming-Language/druntime/blob/master/src/core/sys/posix/unistd.d#L95
https://github.com/D-Programming-Language/druntime/blob/master/src/core/sys/posix/signal.d#L425
Note that the last version(Posix) check in core.sys.posix.signal
on line 479 is always going to be hit. You could argue that it's
worth it just to document that that is the last case we expect to
hit, but then the static assert after that is pointless.
As can be seen from these links, druntime is not consistent in
how it's separating declarations for different OSs, sometimes
using the latter, more compact declarations, other times highly
redundant for no apparent reason. If we can hash out how it
should be done, I'll submit a pull to fix it up.
More information about the Digitalmars-d
mailing list