I have found a way to compile, somewhat laboriously,
a complete list of all Posix functions (data types is another story ok? :)
Basically cut and paste from Open Group docs with some munging.
I'll use some mechanical rules to get a complete low level Felix API out of
this.
Now, the issue that interests me is the extensions. All the functions are
labelled
things like
float truncf(float);
long double truncl(long double);
[XSI][Option Start]
double y0(double);
double y1(double);
double yn(int, double);
[Option End]
here XSI is a specific, optional, but standardised extension to posix.
There's a few of these, and a special one [CX] which means that its
posix extending C (not an extension to Posix).
Now, Felix has way to yank in the right header file when a function
is used:
requires header "<file.h>";
for example. This means "if you use X definition, Y gets included too".
Simple dependency stuff.
But what do we do with Posix extensions like XSI?
My thought is that this is an ANTI-DEPENDENCY. :)
The idea is, all the functions are there and you can use them.
You can call an XSI function. Even on Windows :)
But then we have a compiler switch sort of like:
--no-XSI
and that breaks your program if you're using any XSI feature.
The problem is that a positive indication "XSI is available" doesn't help
if you have a weird system (and aren't they all?) where SOME of XSI is
available. if we turn XSI-available ON, then this will compile but break
later. If we turn XSI off, it will break un-necessarily.
The problem is simple: the program doesn't depend on the whole of XSI.
Even if it does, that's fine, just proceed. If you want to ensure your code
runs on a machine without full XSI support your use -no-XSI.
That will break code that might run on your machine if it has
partial support: too bad. If the code passes you know it will run
whether or not XSI is supported.
Ok, so I'm not completely sure how to implement this although
if not no-XSI do
header XSI;
done
.. fun f() .. requires XSI;
should do it, provided we can get no-XSI into the program from
the command line.
There is a similar thing I'm thinking of, a licence manager:
--no-GPL
Ensures your code isn't plagued with GPL.
So basically: an anti-dependency is something you're not allowed
to depend on.
It may make sense to say:
--allow-Posix
So now, this means "disallow everything *except* Posix".
So roughly you can write:
Posix+ZMQ-XSI
This means, you cannot use anything except Posix (with all extensions)
plus ZMQ, minus XSI.
So once you put even one "positive" into the requirements, you have to
positively specify EVERYTHING you want. That sucks because people won't
have the faintest idea what API's they're using underneath.
--
john skaller
[email protected]
------------------------------------------------------------------------------
Virtualization & Cloud Management Using Capacity Planning
Cloud computing makes use of virtualization - but cloud computing
also focuses on allowing computing to be delivered as a service.
http://www.accelacomm.com/jaw/sfnl/114/51521223/
_______________________________________________
Felix-language mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/felix-language