X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=doc%2Fintro.sgml;h=6f8b9b6f7e02744127624e191c9d62fc9e5b8183;hb=32d6fa3d533e70745f67e44dfc07d66769d975d6;hp=df58ab6683625a9f0144e945f97ab212b7cbd7f5;hpb=76ae1bdbadaaf87603ebbe987e59dd1a105f1872;p=uffi.git diff --git a/doc/intro.sgml b/doc/intro.sgml index df58ab6..6f8b9b6 100644 --- a/doc/intro.sgml +++ b/doc/intro.sgml @@ -48,15 +48,52 @@ particular C-library. - Design Overview - - &uffi; was designed as a cross-implementation compatible - Foreign Function Interface. Necessarily, - only a common subset of functionality can be - provided. Likewise, not every optimization for that a specific - implementation provides can be supported. Wherever possible, - though, implementation-specific optimizations are invoked. - + Design + + Overview + + &uffi; was designed as a cross-implementation + compatible Foreign Function Interface. + Necessarily, + only a common subset of functionality can be + provided. Likewise, not every optimization for that a specific + implementation provides can be supported. Wherever possible, + though, implementation-specific optimizations are invoked. + + + + + Priorities + + The design of &uffi; is dictated by the order of these priorities: + + + + + Code using &uffi; must operate correctly on all + supported implementations. + + + + + Take advantage of implementation-specific optimizations. Ideally, + there will not a situation where an implementation-specific + &ffi; will be chosen due to lack of optimizations in &uffi;. + + + + Provide a simple interface to developers using +&uffi;. This priority is quite a bit lower than the above priorities. +This lower priority is manifest by programmers having to pass types in +pointer and array dereferencing, needing to use +cstring wrapper functions, and the use of +ensure-char-character and ensure-char-integer functions. My hope is +that the developer inconvenience will be outweighed by the generation +of optimized code that is cross-implementation compatible. + + + +