It was thus said that the Great Dave McGuire once stated:
On April 21, Richard Erlacher wrote:
The FPGA/CPLD vendors would like to support
everybody who's likely to use
their products. However, support is a problem under UNIX, since there are
numerous versions (I've had several) that lack compatibility. The size of the
market doesn't justify working up a freeware version for every UNIX version
though, so I think they're wise avoiding the expense. LINUX is getting some
support, though.
Writing the software portably eliminates that problem completely.
The world of Windows software development completely ignores
portability. The common software in the UNIX world doesn't have a
"version for every UNIX version". That's just not the way it works.
Well ...
A few years ago I worked at a company helping to port their application to
UNIX (various flavors thereof). And yes, UNIX is UNIX is UNIX, except for
certain areas, like file locking (three incompatible methods for locking
files) and threading (even worse than file locking). If I remember
correctly, Solaris supports both Solaris threads and pthreads [1], AIX
supported a slightly different version of pthreads, HP-UX had their own
version of threads, and Linux has it's own version of threads [2] as well
as a slightly different version of pthreads. You can do threading under
UNIX (and Windows, which is what the application was written for) but you
end up making an interface the application calls which hides the details of
the actual threading mechanism used.
It comes down to experience and knowing what is and isn't going to be
portable and working your way around those, which is a skill that most
programmers don't have.
-spc (Well aware of what's involved in writing portable code)
[1] pthreads is the POSIX standard for threading and does it suck.
[2] Which is actually much better than pthreads, and done in a more
UNIXy way. Unfortunately, pthreads is POSIX, which sucks.