Looks interesting. As someone who's been using Pascal since Turbo Pascal 6, and use Delphi daily at work, I'm not sure I quite get the "COM-style interface GUID" objection. What exactly about it is complex, and how do you implement Supports() without it?
It's magic! ;-) Not wanting to go into too much technical details: Blaise's interface system uses TypeInfo pointers as identity tokens. Meaning manually added GUIDs are not needed. The two Supports() forms. Delphi has two overloads: // 1. Boolean test function Supports(AObject: TObject; const IID: TGUID): Boolean; // 2. Combined test + assignment (the useful one) function Supports(AObject: TObject; const IID: TGUID;…
Consuming a precompiled binary like a third-party DLL is out of scope then presumably, since TypeInfo pointers won't match.
Which is fair enough, it's not that common these days beyond actual COM usage.
But still not sure exactly why no GUID is a selling point. It's just a bit of metadata.