# US 2013/0159968 A1 · Language service provider management using application context

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2013/0159968 A1
- Document ID: US20130159968A1
- Status: Published application
- Kind: A1
- Application number: 13/329,140
- Filed: 2011-12-16
- Published: 2013-06-20
- Earliest claimed: 2011-12-16
- Assignees: Microsoft Corporation
- Inventors: Charles P. Jazdzewski; Michael C. Fanning; Randy S. Kimmerly; A. Michael Horton
- Web page: https://patentgrep.com/patent/US20130159968A1

## CPC

- G06F 8/43: {Checking; Contextual analysis}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A language service provider framework that generates an application context of a dynamic language program being authored. The application context includes a description of the dynamic language application being authored, one or more specific locations within the program, and runtime environment information. A language service provider port component holds one or more language service providers. Each language service provider may receive the application context and generate a set of available symbols corresponding to each of at least one of the identified one or more specific locations. A management component receives the application context from the application context generation component, provides the application context the language service provider, and correspondingly receives the available symbol set from the language service provider. Since the management component provides an application context that also includes runtime environment information, the available symbol set may be more accurately represented, thereby facilitating authoring of dynamic language programs.

## Claims

### Claim 1

A computer program product comprising one or more computer-readable media having thereon computer-executable instructions that are structured such that, when executed by the one or more processors of a computing system, causes the computing system to instantiate and operate a language service provider framework that comprises:
an application context generation component configured to generate an application context of a dynamic language program being authored, the application context including one or more specific locations in the dynamic language program, a description of the dynamic language program, and runtime environment information;
a language service provider port component configured to hold one or more language service providers; and
a management component configured to 1) receive the application context from the application context generation component, 2) provide the application context to a language service provider held by the language service provider port component, and 3) receive a set of available symbols corresponding to each of at least one of the one or more specific locations from the language service provider.

### Claim 2 (depends on 1)

The computer program product in accordance with claim 1, wherein when the language service provider port component holds a plurality of language service providers, the management component is further configured to select one of the plurality of language service providers to provide the set of available symbols.

### Claim 3 (depends on 2)

The computer program product in accordance with claim 2, wherein the management component is configured to select the language service provider based at least in part on a user preference.

### Claim 4 (depends on 2)

The computer program product in accordance with claim 2, wherein the management component is configured to select the language service provider based at least in part on a default selection.

### Claim 5 (depends on 2)

The computer program product in accordance with claim 2, wherein the management component is further configured to evaluate a historical performance of each of the plurality of language service providers, and is configured to select the language service provider based at least in part on the historical performance of each of the plurality of language service providers.

### Claim 6 (depends on 2)

The computer program product in accordance with claim 2, wherein the management component is further configured to disable a language service provider of the plurality of language service providers if a performance of the language service provider crashes or otherwise has poor performance.

### Claim 7 (depends on 2)

The computer program product in accordance with claim 2, wherein the management component is further configured to select a fall-back ordering of the plurality of language service providers in case of a failure of one or more of the plurality of language service providers to provide acceptable available symbol set.

### Claim 8 (depends on 2)

The computer program product in accordance with claim 2, wherein the management component is further configured to register new language service components as they are added to the language service provider port component.

### Claim 9 (depends on 1)

The computer program product in accordance with claim 1, wherein the management component is further configured to search for available language service providers that could be plugged into the language service provider port component.

### Claim 10 (depends on 1)

The computer program product in accordance with claim 1, wherein the management component is further configured to cause the dynamic language program to be rewritten in cases in which the available symbol set fails to be returned or in cases in which the available symbol set is delayed.

### Claim 11 (depends on 1)

The computer program product in accordance with claim 1, wherein the runtime environment information of the application context includes an identification of environmental software in which the dynamic language program may be run.

### Claim 12 (depends on 11)

The computer program product in accordance with claim 11, wherein the environmental software includes a set of possible environmental software in which the dynamic language program may be run, wherein the language service provider interprets the set of possible environmental software to determine a set of available APIs to provide to the dynamic language program, the set of available APIs being common to all of the possible environmental software.

### Claim 13 (depends on 1)

The computer program product in accordance with claim 1, wherein the management component directs a download operation in which external components may be accessed in order to formulate the application context.

### Claim 14 (depends on 1)

The computer program product in accordance with claim 1, wherein the application context includes dependency information regarding execution resources the dynamic language program depends on.

### Claim 15 (depends on 14)

The computer program product in accordance with claim 14, wherein the dependency information includes at least a portion of the application context that is external to the dynamic language program itself

### Claim 16 (depends on 1)

The computer program product in accordance with claim 1, wherein the management component is configured to capture environmental state upon completion of execution of dynamic language programs.

### Claim 17

A method for a computing system to manage the generation of available symbols corresponding to one or more specific locations of a dynamic language program during the authoring of the dynamic language program, the method comprising:
an act of generating an application context that includes at least the one or more specific locations, the dynamic language program and runtime environment information;
an act of providing the application context to a language service provider; and
an act of receiving a set of available symbols corresponding to each of at least one of the one or more specific location from the language service provider.

### Claim 18 (depends on 17)

The method in accordance with claim 17, wherein when there is a plurality of language service providers available to the computing system, the method further comprises:
an act of selecting one of the plurality of language service providers to provide the set of available symbols based on one or more of the following:
a user preference; and
a historical performance of each of the plurality of language service providers.

### Claim 19 (depends on 17)

The method in accordance with claim 17, further comprising:
an act of causing the dynamic language program to be rewritten for authoring purposes in cases in which the set of available symbols fails to be returned.

### Claim 20

A computer program product comprising one or more computer-readable media having thereon computer-executable instructions that are structured such that, when executed by the one or more processors of a computing system, causes the computing system to instantiate and operate a language service provider framework that comprises:
an application context generation component configured to generate an application context of a dynamic language program being authored, the application context including one or more specific locations in the dynamic language program, a description of the dynamic language program, and runtime environment information;
a language service provider port component configured to hold a plurality language service providers; and
a management component configured to 1) receive the application context from the application context generation component, 2) select one of the plurality of language service providers to use, 3) provide the application context to the selected language service provider, 4) receive a set of available symbols corresponding to each of at least one of the one or more specific locations from the language service provider, 5) cause the dynamic language program to be written exclusively for authoring purpose and resubmitted to the selected language service provider if the selected language service provide does not timely provide the set of available symbols.
