X1 Branch Merged

The X1 Branch has been merged back into the main line. The goals of the branch were to improve overall performance, reduce the memory footprint, and increase the longevity. We believe all 3 goals have been reached. Specifically:

Raw execution performance is almost twice as fast as 2.1

Overall catalog memory usage requirements have been decreased by 25%

Memory allocation at runtime has been significantly reduced

A major stream leak was identified and corrected

A significant plan caching issue was identified and corrected

As a result of these successes, the X1 branch has been merged back into the trunk for inclusion in the 2.2 release.

X1 involved several significant changes to the runtime engine:

An extra layer of wrapping was eliminated in the storage of native values. Rows, for instance, directly hold the native values of the components rather than holding wrappers for each.

The catalog structures and collections were streamlined.

As a result of the native value change, logic that directly interacts with the runtime data structures (descended from DataValue) will be affected. In terms of actual application impact, this is usually not an issue except in cases where client logic uses Session.Evaluate methods. These result in DataValues, which used to have AsString, AsXXX assessors directly, but those have been removed. As such, either the result can be cast to the appropriate type (e.g. Scalar), or the overloads in the Client.DataSession class can be used.