What *wasn’t* in Danny’s Diamondback session
Stuff that came up after Danny’s talk (which I briefly summarized here). Even those of you who were at the talk didn’t hear this stuff yet. (Well, except for Allen, but I suspect he already knew all of this anyway.)
Delphi for Mac?
Now, don’t get your hopes up. There is no official word on this yet. (It may be worth noting that this is not an official “no”.)
Yes, you can get partway there with Mono, but there’s not much there for GUI. However, when someone was asking Danny about this after the session, he pointed out that Diamondback will be a multi-personality IDE (with the three personalities out of the box — Delphi/Win32, Delphi/.NET, and C#/.NET). And personalities will be part of the Open Tools API. (Not sure if that’ll be totally cleaned up for Diamondback, but it’s there.) Open Personality API?
So, whether Borland writes a Mac personality or not (and mum’s the word on that so far, so you can still hold out hope), somebody else might be able to. This is a pretty darned intriguing concept, I think.
The features are coming! The features are coming!
I spent a while grilling Danny about what will be in Diamondback for Win32, and what will sneak in later. Here are the results. (Tabular format makes the holes a little more glaring, doesn’t it? Still, this is good stuff to hear word on…)
| Feature | Diamondback | Diamondback+1 (Whidbeyish) |
|---|---|---|
| ’strict private’ and ’strict protected’ in Win32 | Yes | |
| ’static’ keyword in Win32 | No | Forgot to ask |
| Class constructors in Win32 | No | Forgot to ask |
| Nested classes in Win32 | Yes [Note 1] | |
| Records with methods in Win32 | No | Yes [Note 2] |
| Operator overloading in Win32 | No | Yes [Note 3] |
| Custom attributes in Win32 | No | Forgot to ask |
| Generics in Win32 | No | Researching |
| Multicast delegates in Win32 | No | Researching |
Note 1: Yes, they’ll be there, but you won’t be able to use them in published sections because RTTI won’t be able to cope with them.
Note 2: Records with methods will be there primarily because they’re a prerequisite for operator overloading.
Note 3: Will only be supported for record types.
Usual disclaimers about forward-looking statements, but if Danny thinks it’s going to be in a release, I’d say the odds are pretty darned good…
September 13th, 2004 at 6:40 pm
Excellent, but it’s really too bad about the operator overloading not making it in. Still, function inlining, sigh, so difficult to decide if I should be happy or sad when faced with these choices.
September 14th, 2004 at 4:30 am
7 no and 2 yes. Bad, very bad. I can stay with D6.
(((((
September 14th, 2004 at 10:09 am
Hey, that’s 7 no and 2 yes on a very short list of things that weren’t covered already in any of the earlier sessions. Have you actually *read* any of the earlier stuff? Come on. The list of things that *will* be in Diamondback for Win32 has way, way more than two things on it. Read my blog, Nick’s blog, Danny’s and Allen’s blogs. There’s enough stuff in Diamondback, even just for Win32, to justify the upgrade several times over.
September 14th, 2004 at 10:34 am
Even D7 is better than D6 even though the ‘compiler’ change list was not hugh, the IDE changes are nice. But when we get to operator overloading… that is not a language feature but a variation of language abuse by changing contractual behavior. At least with inline functions, you get the benefit of self documentation via function name.
In refactoring, if you change the functions behavior, it is appropriate to change the function name to reflect the behavior. This is the ‘better’ way than operator overloading.
September 15th, 2004 at 5:59 am
Well at least there’s some hope for a Mac version of Delphi, even if it ends up being merely a "plug-in" or "personality" for the Windows version.
I wonder if it would be possible to make a CLX project in Delphi link to the PPC version of the FreePascal compiler – CLX being based on Qt library (AFAIK) which is cross-platform and available for Mac OS X – and make a GUI app for Windows, Linux and Mac from a single project all from within Delphi? That would be great as we wait (ever so patiently… c’mon Borland) for an official Delphi for Mac from Borland.
September 17th, 2004 at 1:05 am
Is the inline support going to be like C++, where you can do something like this:
Tabc = class
. . .
public
. . .
procedure incr( var i : integer ); begin i := i+1; end;
. . .
end;
Or is it more like a kind of "macro substitution" a la the C Preprocessor?