Not sure what your "case" means? ...
It meant "argument", in that context.
BTW, thank you for explaining this via the pseudo/stub code snippet. It made it easier for me to understand than having to take the time to read about it in the documentation of a system I know *nothing* about -- I would have had to first read about the context around GI, before reading the GI stuff which was too terse for me anyway. (That was the "hunting the rabbit" part I talked about. :) On then to matters of direct consideration.
First, I'm sure we agree that library developers foreign to newLISP are not going to code their libraries this way (unless I'm unaware that this is some universally adopted convention or standard). So that means that, in essence, newLISP developers will be the library writers.
Second, I take it from your code example (middleware?) that this "layer" is boilerplate code that takes care of registering the signatures of the library interface into newLISP. Is that right?
If the above were all true, and your system could be coded with no inherent breakage (I haven't thought about this too much), then two questions remain for me.
The first is: what is the difference of the level of newLISP developer effort between writing the metadata file and on the other hand writing an
import-based interface?
If the level of effort is clearly lower in your system (and to boot less error-prone), then your system would be advantageous to use; otherwise, not. You had said that "the library developer writes a metadata" which leads me to believe that the metadata is coded "by hand" (the words which you used to intimate that this, hand coding, is an undesirable part of using the
import scheme). On the other hand, if your system could handle an automatic writing of such a metadata file, thereby obviating the step of the developer hand coding the metadata, then your system would clearly be superior to the
import system (which requires the hand coding of the newLISP interface (i.e.
import calls and friends)).
The next question is: would your system be more runtime efficient than using an
import interface? (This goes to your "waste of memory, start slowly" comment, and I treat here as independent of the developer effort (time) issue which was addressed above.) If your system can be demonstrated to be more efficient in time and space at runtime than using an
import interface, then on this issue, your system would clearly be advantageous; otherwise, not.
In my view, I believe you are at a point where the only way to properly answer these questions with surety, is to code such a system as you describe, and demonstrate its advantageousness by profiing metrics (e.g. measure developer time to code the metadata and any glue code (but not middleware boilerplate) versus coding an
import interface, and measure run time and space for loading and running such facilities as are provided by the (newLISP developer) library under your system versus measuring same for
import interface loads and executions of an equivalent library coded the traditional way).
By the way, another interesting question, albeit not material to the "goodness" of your system per se, is: will most newLISP programmers care? If they mostly care about only programming in newLISP, and have no need or desire to program in other languages like C, then that might affect the newLISP developer's choice of adopting your system into newLISP. This is not as important as the other questions — it's certainly not a technical issue, but it is a social issue (at least) and one that I think is interesting.
Best, —Rick