Thursday, May 20, 2004

Charlotte's web...

I was trolling through the newsgroups while rebuilding Delphi, and happened across a post that was wondering what happened to "Charlotte?" I suppose one could also ask, "what happened to the Delphi /Java byte-code compiler?" I can't necessarily say that they're dead, but just dormant. They were also just technology demonstrations which were the result of some internal research. Many times we will present these little peeks into what's happening in the labs in order to gauge response and overall interest. We don't have a crystal ball... more like a Magic Eight Ball, so there are bound to be some things that just don't make the cut, were too early, too late, or simply too dumb (I'm not implying that either of these two items were dumb!)... Sometimes the technology that we developed while researching these items actually do have an impact on our current product offerings. Many times in ways that you may not directly recognize.

For instance, the "Charlotte" research has produced some parser-generator tools that are used extensively in C#Builder and Delphi8 for producing the Abstract Syntax Trees (AST's) used to build the CodeDOM necessary for the WinForms and ASP.NET designers. So... you say? Well what is unique about these grammars is that they are designed from the start to be very robust in terms of dealing with code that is currently under development. Those parsers must be able to make reasonable sense of code that will not actually compile. It has to do this by inferring certain things about the code by inserting special error nodes into the AST. This whole error recovery system is all part of the actual language grammar definition itself rather than glued onto the side as an after-thought. So in that sense, a little bit of "Charlotte" has been shipping with C#Builder and Delphi8 for a while.

What about the Java byte-code compiler? Well, it turns out that we may be using some of the concepts introduced by that little bit of tech for providing a solution to multi-unit namespaces. So, while we've demoed future tech (and may continue to do so), many times tech doesn't die or turn into a stand-alone product, but is "parted-out" to existing products so that it can gain the widest possible audience.