On 04/07/11 17:23, Daniel Rail wrote: > Hi, > > At April-07-11, 9:44 AM, Dmitry Yemanov wrote: > >> I believe some form of queryInterface/upgradeInterface is required in >> the API. But I don't think we should mimic IUnknown precisely without >> really strong reasons. First of all, we don't need GUIDs as interface >> version identifiers, as our objects are limited to Firebird only usage. >> And if Delphi is the only reason to be binary compatible with IUnknown, >> then I'm against it. Times change and now I'd pay more attention to >> Java/.NET along with Python/PHP/whatever than think how to please those >> poor Delphi users ;-) > Whatever the new style of the Firebird API will be, I'm sure that > Delphi will be able to handle it, as long as the data connection > developers(IB Objects, FIB Plus, Upscene, Embarcadero, Devart and > others) are kept in the loop. And, I've just learned that the new > Delphi 64-bit compiler(hopefully released later this year) will only > use fastcall for DLL interfaces(even Microsoft has that same > restriction for 64-bit). I remember at one point in all of this > discussion, there was talks about stdcall and cdecl for the DLL > interfaces, but with Delphi 64-bit, it will only support fastcall. > And, fastcall is also supported by Delphi 32-bit.
Moreover, linux is also using fastcall for 64-bit modules. But fastcall is much different from both cdecl and stdcall, moreover it's a kind of other 'dimension' in calling conventions world. I.e. first N register-size parameters (N=6 for linux) are passed not on stack, but in CPU's registers. But for remaining (if we have >6) stdcall/cdecl once more comes to play - should stack pointer be restored by caller or by function? ------------------------------------------------------------------------------ Xperia(TM) PLAY It's a major breakthrough. An authentic gaming smartphone on the nation's most reliable network. And it wants your games. http://p.sf.net/sfu/verizon-sfdev Firebird-Devel mailing list, web interface at https://lists.sourceforge.net/lists/listinfo/firebird-devel