Dynamic Language Add-ins for Static Host Extensibility

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing application hosts like Excel® can only support a single compiled language for extensibility, making it difficult to provide extensibility using dynamic languages such as M, R, and Python, and limiting multi-threading functionality.

Innovation Solution

The method involves using language add-ins with static extensibility points, allowing multiple dynamic languages to extend the application host by searching for user code, determining its language, and executing it through a language provider, enabling functions to be added, removed, or updated dynamically, even if the application host expects static functions.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If a single compiled language is used for extensibility, then the application host can maintain stable static interfaces, but the system loses adaptability to support multiple dynamic languages

Engineering Contradiction:
Improvelanguage supportVSAvoidextensibility architecture
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The system segments the extensibility architecture into separate language providers, each handling a specific dynamic language. This allows the host application to support multiple languages without mixing their execution contexts, resolving the contradiction by organizing complexity into manageable, isolated units while maintaining multi-language adaptability

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces an intermediary layer (the extensibility mechanism with language providers) between the static host interface and dynamic language code. This intermediary translates and manages the interaction between static interface expectations and dynamic language behaviors, enabling multi-language support while preserving interface stability

Inventive Principle:
Principle #24Intermediary (Mediator)

2Reliability

If static compiling is required for extensibility, then interface stability is ensured, but the time to deploy and update functions increases

Engineering Contradiction:
Improveinterface stabilityVSAvoidfunction deployment time
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The system implements dynamic code loading and execution capabilities within the extensibility framework, allowing functions to be loaded, executed, and updated in memory without requiring static compilation and restarting. This enables interface stability to be maintained while dramatically reducing deployment time, as code can be dynamically instantiated and hot-swapped

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The system performs preliminary validation and type checking of dynamic code before execution, ensuring interface stability is maintained without requiring full static compilation. This preliminary action verifies compatibility with static interfaces while allowing rapid deployment of validated code

Inventive Principle:
Principle #10Preliminary action

3Adaptability or versatility

If multiple dynamic languages are supported, then adaptability improves, but the complexity of managing different language runtimes increases

Engineering Contradiction:
Improvemulti-language supportVSAvoidruntime management
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

Each dynamic language is handled by a dedicated language provider that encapsulates its specific runtime, interpreter, and execution context. This segmentation isolates runtime management complexity within individual providers while presenting a unified interface to the host, enabling multi-language support without centralized complexity

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The extensibility framework provides universal language-agnostic interfaces and management mechanisms that work across all dynamic languages. This universal layer handles common concerns like function registration, parameter passing, and result retrieval, reducing the complexity of managing diverse language runtimes through standardized interactions

Inventive Principle:
Principle #6Universality (Multi-functionality)

Data Source

PatentUS8365143B2Dynamic languages for static hosts
Publication Date: 2013.01.29 MICROSOFT TECHNOLOGY LICENSING LLC
  • US8365143B2 patent drawing
  • US8365143B2 patent drawing
  • US8365143B2 patent drawing

AI summary

Using language add-ins with one or more static extensibility points of an application host. The method includes searching for user code in a user code store. Some user code is found in the user code store. A determination is made as to the language of the user code from among a plurality of predefined languages. The user code is provided to a language provider for the determined language. A function invocation is received from an application host. The function invocation is matched to at least a portion of the user code. The at least a portion of user code corresponding to the function invocation is executed via the language provider.