BDNradio: Chat room log of live chat with Danny Thorpe on Delphi 2005

By: John Kaster

Abstract: Danny talked about Delphi language and run-time library improvements, .NET and Win32 support

This is a log of the chat rooms during the live audio chat from November 19, 2004 on Delphi 2005 with Danny Thorpe , a Borland Chief Scientist, and architect of the Delphi compilers. Danny discusses changes and enhancements to the Delphi Win32 and Microsoft.NET compilers, the run time framework, and .NET support in general.

Note: This log is only the chat room transcript. There is much additional information covered in the audio replay that is not available in this chat log.  For all previous and upcoming live chats, see

VIP Lounge transcript

dthorpe: who was supposed to bring the propeller?
aohlsson: Hehe!
dthorpe: mm refactoring good
aohlsson: Yes, is it good?
aohlsson: Careful. Youll break this chat client...
aohlsson: :)
dthorpe: mrbtrieve gets first post!
aohlsson: We know! :)
aohlsson: Hi! Cobolman!
aohlsson: Sprite!
dthorpe: and davidf!
jkaster: reminder: use /ask to submit questions
jkaster: thanks for the heads up on the picture behavior. will fix that for next chat (checked, and it's a browser settings issue, not a chat room issue)
jkaster: futurix : "Danny, for... in works for all types? Arrays? Collections? (in Win32 I mean)" - Win32 follows same rules for GetEnumerator. VCL has been updated to support this, for example. Arrays, multi-dimensional arrays, strings, sets, classes that implement the pattern.
jkaster: cobolman : "can you change an object surfaced in a for ... in loop?" - no. the element returned by a collection enumerator needs to be read only for optimization reasons. the state of the collection should not changed as a result of enumerating it. furthermore, enumerators do not guarantee order. You can modify an object returned by an enumerator, but not modify it in a way that will change its iteration order, but the exception might not always be raised for that condition. CLS specifies this as a failure condition.
jkaster: serge_d : "Can you expand TCollection to an IInterface (ICollection) to make it similar to .Net" - yes, it could be done, but my concern is about overhead to TList and collections, which are currently very lightweight. Will continue investigating this.
jkaster: drbob42: "what about token collisions (the same type in multiple units - but same namespace)?" - that is a new risk in Delphi 2005 because you have multiple units with separate name scopes. Generally, that a bad idea to do, but itsok. When you compile those two units into a .NET assembly, the units w/ the same type and same name are forbidden by .NET. The compiler doesnt currently catch duplicate names across different units in .NET. Best way to find those is using PEVerify currently.
jkaster: JonR : "Are there compiler hints when the compiler "chooses" not to inline?" - Te compiler will hint when you ask for something to be inlined but it wont by the compiler
jkaster: leopasta : "Can we set an option so that the compiler will evaluate every function of a project, trying to inline it?" - yes, theres a complier directive called $inline with 3 states: on, off, auto
jkaster: Tjipke : "How to get rid of these inline hints?" - turn inline off or turn hints off
jkaster: drbob42: "is there a way to see if it was inlined or not?" - theres no simple indicator. hoping for color difference for dot indicator for debugger in the future
jkaster: JonR : "But what about Win32 API wrappers in Windows.pas? Wouldnt this be a huge benefit?" - yes, it is and we have!
jkaster: JonR : "My bad, there are many API wrappers that arent inlined in Windows.pas. I guess someone has already figured out reasons for these not to be inlined." - thanks for the followup
aohlsson: We turned off all cell phones. Forget about the landline... LOL!
jkaster: edan, use /ask to submit questions for danny to answer
jkaster: MrBtrieve: "For all of us non-.NET heads, what is Borlands long-term plan and/or commitment to keeping (and hopfully enhancing) the Win32 version of Delphi post Delphi2005?" - the plan is to continue to develop Win32 for the compiler and IDE, primarily a lot of productivity work for the IDE
jkaster: drbob42: "will the Kylix compiler be upgraded to the same Win32/.NET language features?"  Were working on the Kylix compiler plan. There is strong interest in updating Kylix, but nothing I can say for sure about Kylix compiler plans. Main focus is bringing platform support up to latest Linux OS levels.
jkaster: futurix : "Inevitable question ;-) any chance of native Delphi for Win64?" - Which 64bit platform? Were certainly still considering this and analyzing costs involved.
jkaster: cobolman : "Is there significant overhead to using interfaces in Win32?" - the overhead is exactly the same as what its been all along, including support for addref and thread safety
jkaster: cobolman : "any chance of getting an expanded case statement to allow things like string items?" - In .NET thats a possibility using its string tokenizer. We would make the strings case sensitive
jkaster: mnk : "What priority have Generics?" - #1 for .NET 2.0
jkaster: MrBtrieve: "What is the status of Delphi for .NET apps and compatibility with products such as Mono?"> - We dont actively test on mono, but we actively recruit field testers who are familiar with mono. last I heard, the Delphi for .NET compilers produce .NET applications that will execute on mono
jkaster: Leonel : "Is there a chance that Mono could be a supported platform in the future?" - the multi-personality IDE certainly opens up the door for plug-ins for things like this. CrossKylix is something you might want to look at as well.
jkaster: JoeH : "any signs of MS making it easier for Delphi to have CF ?" - were working on this. targetting 2006
jkaster: webcab : "Any plans to extend
Delphi s support for COM (i.e. #import, 2 dim arrays wrappers) ?" - not planning on significant new investment on win32 com
jkaster: serge_d : "Do you plan to sync component list between .Net/Win32 and VS.Net (HelpProvider, ToolTip, NotifyIcon, ErrorProvider)" - ask allen bauer during his chat
jkaster: serge_d : "How ready D2005 for .Net 2.0?" - answered
aohlsson: emisosa : "re unicode, what happens with the .pas file format?" - handled
jkaster: serge, I dont understand your questions
aohlsson: leopasta : "Do you have any plan to remove p/Invoke dependency from VCL.Net in order to be compatible with Mono?" - no.
aohlsson: edan : "What is involved in moving a VCL (that extensively uses Win32 API calls) to a .NET assembly?" - handled
aohlsson: bfierens : "any progress,news,sight on pocketpc development" - handled earlier
jkaster: abauer : "hey I hear my name being bantered around!" - thats just a voice in your head, Allen
aohlsson: serge_d : "Will .Net 2.0 leverage CF support for D2005?" - handled earlier
jkaster: MaxOdenda : "I like the idea of having multiple personalities, what are your plans about including Kylix/Crosskylix/CLX into Delphi 2005 ?" - answered
aohlsson: Leonel : "How do you weight codegen improvements against new features when planning future development? I mean, how important is an optimizing compiler for you, in the big picture?" - handled
aohlsson: Max, use /ask...
jkaster: MrBtrieve : "Granted its a small sample, but ive heard from one user of Delphi 2005 that the IDE is "slow", specifically when switching between a form and unit, on the scale of 2-3 seconds. is this true? Additionally he stated that when using the classic floating window IDE mode, CPU usage skyrockets. Comments?" - this is a great question for Allens chat. Watch EventCentral for announcements of his chat
jkaster: futurix : "Are there any changes for non-database VCL in Delphi 2005? New components?" - yes, there are. good question for Seppy Blooms chat. Watch EventCentral for it
jkaster: livechat : "Working with records in .NET is much faster than with objects. Record types have been also greatly expanded in the recent versions of Delphi. Do you generally recommend using records over objects whenever possible?" - records in .NET are value types. You have to be careful in that assertion of performance gain because data gets copied all over the place.
Tjipke: "Even adding doesnt remove the inline hint" - ok, well have to look at that!
aohlsson: Leonel : "Any plans to include Design by Contract in the Delphi language?" - answered
jkaster: Tjipke : "what is the use of the hint: "[Hint] CB4Tables.pas(949): H2443 Inline function ExtractFileName has not been expanded because unit System.IO is not specified in USES list" ExtractFileName doesnt even come from!" - no. the element returned by a collection enumerator needs to be read-only for optimization reasons. the state of the collection should not changed as a result of enumerating it. furthermore, enumerators do not guarantee order. You can modify an object returned by an enumerator, but not modify it in a way that will change its iteration order, but the exception might not always be raised for that condition. CLS specifies this as a failure condition.
aohlsson: UnitOOPS : "horrified at the idea of even thinking about inlining. Comment?" - handled
jkaster: Tjipke: "(inline continued..) it does remove the warning when it is added to the implementation uses clause (not interface), but what if you change the implementation of extractfilename using not but something else: all units that have added the now need the other namespace... looks very bad to me (but no need really to handle here)" - please follow-up on the newsgroups for this. were actually past time to quit
aohlsson: domus : "Have any internal benchmarks been executed to compare Delphi.NET applications to their Win32 equivalents?" - handled
aohlsson: serge_d : "D2005 and .Net 2.0/ASP2.0 support plans" - Great question for the upcoming chat with Jim & Steve regarding ASP.NET. Stay tuned.
jkaster: MaxOdenda : "I loved the demo from John Kaster about Together technology. Any chance we get this in a
Delphi release?" - Together for Delphi is one of the wishlist items we have for the near future. ECO actually uses the Together design surfaces. More should come in the future.
aohlsson: webcab: "In Delphi for .NET, COM; we're not sure what the best way to send and to receive two-dimensional safe arrays to COM methods is?" - Lets schedule a chat with Chris Bensen!
aohlsson: MrBtrieve : "Why, oh why, did you go and change our good old friend the tabbed-component palette?" - Perfect question for Allen or Corbin. Check EventCentral soon.
jkaster: emisosa : "maybe i should ask this to MS, but what happened with OpenGL or DirectX in .NET? is there anything on the VCL in D2005?" - DirectX is already available in .NET directly. OpenGL is a pet project of Dannys, and there were some issues that prevented getting it into managed code in time for this release.
jkaster: question about Web Services and SOAP
jkaster: tsool : "I heard you were using the Virtual Tree View in D2005. Any chance you might it make available as a component for the D2005 users for use in .NET?" - ask corbin or seppy in their chat
aohlsson: Worried about what, Julian?
jkaster: JonR : "It seems someone from the dev team mentioned that Microsoft has prohibited Borland from officially supporting mono. Is that the accurate?" - not correct. That would be a violation of US Federal law for MS to attempt to prohibit Borland from doing this.
dthorpe: tjipke: vacation, family, then work. :P

Public chat room transcript

Welcome to the moderated Borland Community Chat!
You are allowed to speak freely with everyone in this lower window. In the upper window you'll find all messages written by moderators and invited speakers. To submit a question, click on the ASK Button.
Press the HELP Button for help on advanced commands. 
funkyfred: hi all
Anders: Hi Fred!
funkyfred: hi
funkyfred: VIP Lounge? Public Chat?
funkyfred: :-)
MrBtrieve: hello
MrBtrieve: 10-4
MrBtrieve: coffee?
MrBtrieve: Gates
DavidF: Got my cup
MrBtrieve: returns
UnitOOPS: Refactoring, eh?
UnitOOPS: this the volume level we can expect?
UnitOOPS: Btw...I use "UnitOOPS" since my real name breaks lots of stuff
UnitOOPS: Jim OBrine
UnitOOPS: (OBrien)
UnitOOPS: Right.
MrBtrieve: YAY
MrBtrieve: im #1
serge_d: hi, I hear you guys
serge_d: ;o)
serge_d: when do you plan to release first update for D2005?
iman: lol serge
cobolman: hi all
cobolman: Pepseye?
MrBtrieve: French mineral water
DavidF: Wow! All these high-tech dudes (MrBetrieve, Cobolman)!!
serge_d: nothing illigal at work (drinks)?
cobolman: Hey Anders - nice to see you - havent seen you in the ngs for a while
cobolman: yup - thats me
MrBtrieve: i am hi-tech
DavidF: Hi Danny
cobolman: Hi All - how long until you officially start?
iman: no
cobolman: Nope - connecting was easy
AndiS: no problem
bmcgee: No problems connecting here
serge_d: nop, nice sound too
DavidF: wadda mean Cobolman. This is it. chat away!
MrBtrieve: when you pasted a link in the chat, clicking on taht should open a new browser.
leopasta: ok from here
bmcgee: Missed the Cobol thing, though
iman: roomkey needs to be bold and underline
cobolman: OK great - time to get some caffeine
drbob42: no problem here - good sound
cobolman: Hey Dr Bob - got your hat on?
iman: yes
drbob42: no hat anymore ;-)
iman: :)
cobolman: WHAT! That Mark Miller .... <g>
DavidF: How we supposed to recognize yoou without the hat Dr Bob?
drbob42: I just turned 40 a few days ago...
cobolman: Bloody yougster ;-)
drbob42: old feller...
drbob42: thanks
leopasta: hey, this was a good example of a kylix app ;) It is good to see you are using it :)
MrBtrieve: kylix? whats that?
cobolman: Gday
futurix: Hello there!
serge_d: a little louder please! ;o)
cobolman: That must be a safe harbour statement <vbg>
drbob42: Danny, you rock!
serge_d: PS. Click on a picture replaced current page, which then lead to clear chat
JonR: Picture opened a new page for me... IE6
maxrf: not for me IE6
serge_d: PS.2. We see a lot of people rejoining, so ...
futurix: Firefox rules! ;-) I opened it in a tab
cobolman: Firefox here too - works great
mnk: test
sGingter: Hello
sGingter: makes sense :)
drbob42: and stringlists
futurix: Thank you! :-)
mnk: dr.bob is here!
drbob42: where else would I be? <g>
mnk: what means 42?
drbob42: the object pointer cannot be changed, but the properties can!
drbob42: but you can change the properties. I have an example...
Brion: did someone remember to start the transcript recorder?
livechat: Can we see the questions that have been asked already?
drbob42: hmm, ok - thanks for the warning then ; )
cobolman: OK - thanks for that answer. Quite a bit to it :-) Seems similar to C#
MrBtrieve: keep them lightweight please!
serge_d: (ICollection) Why? Can we get just accessor interface
JonR: Someone could create a TInterfacedCollection?
Wizardiii: I have heard some of you have missed the audio portion. If you dont hear danny goto:
Wizardiii inserts the following link:
serge_d: I have one. Exactly from a standpoint of accessor (available in DS Plug-in framework)
serge_d: I can post TInterfacedCollection to binaries for D2005 (could be included somewhere?)
JonR: How about posting to CodeCentral?
serge_d: OK, will do
serge_d: still would prefer to see it in base class...
JonR: Id prefer a separate class, so TCollection doesnt have the overhead (the same reason there is a TInterfaceList, TObjectList, etc)
serge_d: then you will need to reintroduce TCollection editors and classes for existing components
JonR: If TInterfacedCollection could drive from TCollection, shouldnt existing editors work?
MrBtrieve: does multi-unit namespaces have any effect on win32 projects?
drbob42: no
Wizardiii: Ask questions using the Ask Button.
MrBtrieve: <== .NET clueless
MrBtrieve: sorry
Wizardiii: then they show up above ;-)
MrBtrieve: my mistake
JonR: Dannys comments dont represent Borlands opinion, so D9 works for me. :)
serge_d: to JinR, yes...
MrBtrieve: "vb code" hehehe
emisosa: function inlinining.. finally! :)
JonR: Very very useful for API wrappers too...
drbob42: yes, I would like to see that hint ; )
JonR: As long as we can turn it off :-P
drbob42: you can always uncheck all hints ;-)
emisosa: heheh
domus: Salut, Bruno.
bfierens: hi all
domus: <- Dominique
emisosa: good one jkaster :)
emisosa: sorry, i meant , good one Tjipke.. :P
Tjipke: thx
leopasta: It would be extremelly useful to know when a function could be inlined by the compiler
drbob42: So finally I can use my Klingon (Unicode) identifiers!
Wizardiii: lol
drbob42: no Klingon properties! DokaH!
emisosa: :D
domus: "Honey, Im in the middle of a meeting"
edan: What is involved in moving a VCL (that extensively uses Win32 API calls) to a .NET assembly?
leopasta: LOL
cobolman: Someone asked about 64bit! Who did that? Own up! Come on :-)
serge_d: Delphi 200x and WindowsXP/2003 extensions (GUI) - getting Windows XP logo compliance for generated aps cobolman: Dennis? Are you in here? Will? : )
_zzorro: No it wasnt Dennis....
cobolman: Yeah - I see it was futurix
leopasta: .Net is the overhead on using .Net interfaces :)
cobolman: Thanks for these answers guys - I appreciate it.
DonS: generic generics?
drbob42: but you need the CLX units from D7 to allow it to work on D2005...
JonR: CrossKylix is very cool...
drbob42: yes, it is very very cool indeed!!
JulianK: Only 48 users? I expected 4800.. :(
drbob42: perhaps you are late? missed the best part? <g>
JoeH: thats great news !
drbob42: Thats Delphi 2006, right, not the year 2006... ??
jthurman: I finally escaped from prior obligations, with 5 minutes left in the chat...
Wizardiii: With my buffer delay your answers are here before I hear you talk about them ;-)
JonR: Past chats have been archived...
serge_d: thank you, will do
serge_d: To JohnK: Sorry ;( WindowsXP complaince? Docking, Help system, look and feel, theams, ... we have things done but not completed...
Wizardiii: MaxOdenda... it is on the partner CD.
MaxOdenda: Together for Delphi ? Wizardiii: CrossKylix
MaxOdenda: I know, I was thinking about a real integration including form designer
JulianK: From all that I hear, Im really worried as Delphi developer. :(
MrBtrieve: why?
emisosa: you should be happy!
Wizardiii: Why?
drbob42: are you listening to the same channel?? ;-)
JulianK: Cause since "D6" the Delphi seems like one endless experiment..
emisosa: to you? ;)
jthurman: I think Borland is (rightfully) leary of Mono after the lackluster Kylix results.
jthurman: Or is that leery?
drbob42: its called innovation - progress...
drbob42: BTW, the full Feature Matrix is online now!
jthurman: bob: Cool.
Tjipke: thanks guys (danny especially)
delyria: reset
jthurman: Thanks Danny! (and hi, incidentally)
Tjipke: Danny no get back to work soon!
drbob42: with a few typos in the key...
webcab: Thanks, now do I schedule a chat with Chris Benson
drbob42: thanks Danny
bmcgee: Thanks guys.
DonS: thx guys...
MaxOdenda: Thanks Borland for these Chat events
_zzorro: Thanks guys.
serge_d: there is updated version of component list as well
livechat: Thank you. Thank you very much!
emisosa: no, thank you... we should do this chats more often
AndiS: bye
drbob42: Bye everyone
serge_d: bye everyone

Server Response from: ETNASC04