Cross-Language Type Inference Without Executable Regeneration

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Developing mixed language programs is hindered by the need for executable regeneration to identify dependencies between components written in different programming languages, which is inefficient and limits cross-language capabilities during software development operations like autocompletion and refactoring.

Innovation Solution

Obtaining data typing information for heterogeneous language components without executable regeneration by using query engines to extract information from internal compiler-created structures and populating a common model, allowing for cross-language development operations without producing a physical assembly.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If executable regeneration is performed to identify dependencies between components written in different languages, then dependency identification is achieved, but development efficiency is reduced and development operations are limited

Engineering Contradiction:
Improvedependency identification accuracyVSAvoiddevelopment efficiency
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The patent extracts only the necessary data typing information from the executable files without performing full regeneration. Query engines extract type information, function signatures, and class definitions directly from compiled components, separating the essential metadata extraction from the complete build process. This allows dependency identification while avoiding the overhead of full executable regeneration.

Inventive Principle:
Principle #2Taking out (Extraction)

Solution Approach 2:

The system performs preliminary extraction of data typing information during compilation or from existing executables, storing this information in accessible formats. This preliminary action enables subsequent development operations like IntelliSense and refactoring to proceed without triggering full executable regeneration, thus improving development efficiency while maintaining accurate dependency identification.

Inventive Principle:
Principle #10Preliminary action

2Loss of information

If executable regeneration is performed, then cross-language dependency information is obtained, but the process is time-consuming and resource-intensive

Engineering Contradiction:
Improvecross-language dependency informationVSAvoidregeneration time
Core Design Contradiction:
Loss of informationVSLoss of time

Solution Approach 1:

The patent creates and uses copies of type information extracted from executables rather than requiring the original executables to be regenerated. Query engines extract and store type information, function signatures, and class definitions in separate data structures that can be queried independently. This copying approach preserves all necessary cross-language dependency information while eliminating the time-consuming regeneration process.

Inventive Principle:
Principle #26Copying

3Loss of information

If full serialization of binary is performed, then complete type information is obtained, but the process complexity increases and performance decreases

Engineering Contradiction:
Improvetype information completenessVSAvoidprocessing complexity
Core Design Contradiction:
Loss of informationVSDevice complexity

Solution Approach 1:

The system extracts only the specific type information needed for development operations without performing full binary serialization. Query engines selectively extract data typing information, function signatures, and class definitions from compiled components, obtaining complete type information for cross-language operations while avoiding the complexity and performance overhead of serializing entire binary files.

Inventive Principle:
Principle #2Taking out (Extraction)

Data Source

PatentUS8713514B2Heterogeneous language data typing without executable regeneration
Publication Date: 2014.04.29 MICROSOFT TECHNOLOGY LICENSING LLC
  • US8713514B2 patent drawing
  • US8713514B2 patent drawing
  • US8713514B2 patent drawing

AI summary

Data typing information for heterogeneous language components is obtained during software development without requiring executable regeneration. After source code is changed, dependent compiled components, which are written in multiple high-level programming languages, are identified. A query engine obtains data typing information of the dependent components, such as function signatures and class definition, directly from internal compiler-created structures for the respective programming languages. Through a synchronizer, a shared model is automatically populated with the data typing information. The updated model supports cross-language software development operations such as autocompletion, refactoring, dependency finding, and definition go-to, without regeneration of an executable code unit which reflects the changed source code. In cases involving SQL or Transact-SQL (T-SQL), a Data Definition Language file can be automatically generated from the data typing information.