I personally call "impossible" on your claims Your libraries will be providing this generic API, sure, but these libraries will still have to be talking to the particular OS the app is being run on, which means you have two options:
* The libraries are compiled along with the app, which means it will be cross-platform in terms of no editing required of the source but it will still have to be recompiled for each platform
* You provide a seperate virtual machine for each platform, so the app will run fine anywhere that has this virtual machine but you'll have to find a way to link the program into the machine at runtime. In this case you have just created Java with C syntax and no way to enforce security (due to pointers).
Let me get thsi straight. WINE loads PE files right? WINE has an api right? It uses the windows API. But imagine a WINE which used its own api that doesn't need to implement all these "bugs and undocumented functions" that is the Windows 32 API. This is exactly what XPAPI is doing. There is no cpu architecture portability but rather operating system portability. It is NOT a bytecode interpreter. IT basically does the task of the operating system: loading and linking executable files. After all the executable files ARE i386 bytecode, the only thing left to fo is to relocate memory. which the linker already does. LOOK at the source and try to understand before saying that something is impossible when it ALREADY WORKS.
Your statement of impossibility is firstly wrong BECAUSE I have already compiled and ran the EXACT SAME BINARY on both Windows and Linux. So it is possible.
What makes this different is the ability for programmers to use any language that gcc supports(ada,fortran, c, c++ ,AFAIK pascal) and run it on different operating systems. Of course a native XPAPI standard library would have to be written.
Maybe I haven't done a good job of explaining.
This is how the XPAPI works:
I compile an XPAPI program on Windows.
I load the program with XPAL(the application loader). Which maps the file to memory. Reads the PE headers. Reads the pe imports.. Fixes up the relocations. Links the executable file correctly and finally calls the start point.
The program can then call functions from the imported libraries.
The program exits.
XPAL says "XPAL: Finished"
And you finish the application.
Now I can copy this file over to Linux and this process will happen again except the API will act in the same way. Right now it just maps to system functions. But soon there will be a completely expected behavior on all operating systems.
Once again this project is not:
-a C compiler that compiles into a bytecode
-not even a C compiler. IT is a set of gcc arguments and linker scripts
-not a bytecode interpreter
-not a cross-architecture thing
It IS:
-a set of gcc arguments and linker scripts which allow you to create xpal programs
-a set of libraries which can be native to the operating system or to XPAL. These libraries provide consistent api and behavior. You must realize that I don't statically link anything. PE has a nifty feature to generate import libraries which basically allow me to import from fake dll's which xpal maps to the correct xpal written one which provides the api's
-an runtime application loader and linker
-a cross-operating system "thing"
XPAPI=The Cross-platform API
XPAL-The Cross-platform Application Loader
The term cross-platform is confusing but XOSAPI looks bad.

Please stop telling me it won't work when It already does.
Thank you. Have a GREAT day.