Wrapping up 2.2
As we prepare to branch to 2.3, active feature inclusion for Dataphor 2.2 is winding down. In addition to the features discussed in What's New in 2.2
and Dataphor X1 Branch Merged
, some additional major contributions have made it in. Most significant of these is a Debugger
, which allows for attaching, breakpoints, pausing, call stack traversal, and context stack inspection; all of which are represented in the IDE. See the Debugger
page for more details.
As part of building the debugger, major parts of the Dataphor server engine were refactored. Better lines were drawn between compiler, schema, and runtime state in the implementation, and the notion of a Program
was introduced. A Program makes explicit a point of compilation; where execution begins. Previously, dynamic compilation was happening at various places throughout execution, giving no clear line between one piece of runtime logic and the next. The problem with this became obvious as part of building the debugger, because it is necessary to always know at what point in the "source code" the runtime is. This change was far reaching for several reasons, the least not being that each of the hundreds of host implemented operators had to be updated.Edit
At this point, the feature set of 2.2 is nailed down and we are now in clean-up mode. Efforts have already began on 2.3, which will bring a Silverlight client. Supporting a SL client, actually involves major changes to the Dataphor server, because in the present architecture, a Dataphor client includes an embedded Dataphor server in order to perform local validation and deal with user defined data types. The Dataphor server thus must be better segmented, between the heavier, server-only, aspects and those that constitute the core engine.
Allowing the Dataphor server to run in Silverlight is a bigger deal than changing a few things, it's essentially a porting effort. This is due to the substantial differences between the .NET Framework BCL and Silverlight's BCL. Much of Dataphor was written in the .NET 1.x days, and a surprisingly large portion of the BCL from that era has been simply removed in Silverlight. Base structures such as HashTable and ArrayList are good examples of such casualties, but we are taking notes and we'll discuss the whole porting effort. Fortunately, this effort will force some modernization of the Dataphor code base, incorporating generics and even 3.x era enhancements. In terms of the logical layer of Dataphor, at least one interesting thing is likely to happen. At this point our plan is to completely remove the notion of devices from the language. Instead, devices will be part of server and library configuration. This is a huge improvement from a physical independence perspective. Not only does it remove a blatantly physical construct from the logical description of the application, it also sets the stage for further physical/logical separation.