A computing system comprising: one or more memories ; one or more processing units coupled to the one or more memories ; and one or more computer readable storage media storing computer-executable instructions specifying operations for: determining an amount of processing resources in the computing system ; defining one or more virtual domains for the computing system , each virtual domain comprising a defined portion of the processing resources and one or more data structure instances , wherein the defined portion of the processing resources can be specified as less than all of the processing resources available for a given processing socket of the computing system ; or a portion of the processing resources associated with a plurality of sockets of the computing system , and wherein the processing resources assigned to the virtual domains are dynamically reconfigurable; receiving a task from an application ; determining, from the one or more data structure instances, a data structure instance useable to execute the task ; determining a virtual domain of the one or more virtual domains that comprises the data structure instance useable to execute the task , the data structure instance having a first implementation ; sending the task to the determined virtual domain, and changing the first implementation to a second implementation , wherein the change from the first implementation to the second implementation does not require a change in the definition of the task to be performed using the second implementation . one or more memories ; one or more processing units coupled to the one or more memories ; and one or more computer readable storage media storing computer-executable instructions specifying operations for: determining an amount of processing resources in the computing system ; defining one or more virtual domains for the computing system , each virtual domain comprising a defined portion of the processing resources and one or more data structure instances , wherein the defined portion of the processing resources can be specified as less than all of the processing resources available for a given processing socket of the computing system ; or a portion of the processing resources associated with a plurality of sockets of the computing system , and wherein the processing resources assigned to the virtual domains are dynamically reconfigurable; determining an amount of processing resources in the computing system ; defining one or more virtual domains for the computing system , each virtual domain comprising a defined portion of the processing resources and one or more data structure instances , wherein the defined portion of the processing resources can be specified as less than all of the processing resources available for a given processing socket of the computing system ; or a portion of the processing resources associated with a plurality of sockets of the computing system , and wherein the processing resources assigned to the virtual domains are dynamically reconfigurable; receiving a task from an application ; determining, from the one or more data structure instances, a data structure instance useable to execute the task ; determining a virtual domain of the one or more virtual domains that comprises the data structure instance useable to execute the task , the data structure instance having a first implementation ; sending the task to the determined virtual domain, and changing the first implementation to a second implementation , wherein the change from the first implementation to the second implementation does not require a change in the definition of the task to be performed using the second implementation . <EOS>