Hybrid Dictionary Layout for Library Compatibility

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Incompatibilities arise when program code and pre-computed data are distributed in separate modules, leading to issues with library compatibility, especially when the shared library updates, causing executables compiled with outdated dictionaries to fail execution.

Innovation Solution

A hybrid dictionary layout is introduced, comprising a fixed part with stable entries and a floating part that can change, along with a version number, allowing for dynamic rebuilding of the dictionary at runtime to maintain compatibility with updated shared libraries.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If a shared library updates its dictionary layout, then the library functionality is improved, but executables compiled with outdated dictionaries fail execution

Engineering Contradiction:
Improvelibrary update capabilityVSAvoidexecutable compatibility
Core Design Contradiction:
Adaptability or versatilityVSReliability

Solution Approach 1:

The dictionary is segmented into a fixed part (containing stable, commonly used entries with constant offsets) and a floating part (containing dynamic entries that may change). This segmentation allows the fixed part to maintain compatibility with existing executables while the floating part can be updated to support new library functionality.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The dictionary layout is made dynamic by introducing a version number and allowing the floating part to be regenerated at runtime. The system can adapt the dictionary structure based on the shared library version, enabling executables to work with updated libraries by dynamically adjusting the dictionary configuration.

Inventive Principle:
Principle #15Dynamics

2Adaptability or versatility

If the dictionary layout is made flexible to accommodate updates, then adaptability is improved, but compatibility with existing executables deteriorates

Engineering Contradiction:
Improvedictionary flexibilityVSAvoiddictionary layout stability
Core Design Contradiction:
Adaptability or versatilityVSStability of the object's composition

Solution Approach 1:

The dictionary is divided into stable fixed entries and flexible floating entries. The fixed part maintains a stable layout with predetermined offsets for commonly used entries, ensuring backward compatibility. The floating part provides flexibility for new entries without affecting the stability of the fixed part.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

Different parts of the dictionary have different qualities: the fixed part has stable, unchanging characteristics optimized for performance, while the floating part has dynamic characteristics optimized for adaptability. This local differentiation allows the system to achieve both stability and flexibility simultaneously.

Inventive Principle:
Principle #3Local quality

3Productivity

If code is generated with awareness of dictionary layout for efficient access, then access efficiency is improved, but code complexity increases

Engineering Contradiction:
Improvedictionary access efficiencyVSAvoidcode generation complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The code generation process is segmented into two phases: a scanning pass that identifies commonly used entries and generates optimized access code for the fixed part, and a later phase that handles the floating part. This segmentation allows efficient code generation for the fixed part without overwhelming complexity, as the floating part can be handled more generically.

Inventive Principle:
Principle #1Segmentation

Data Source

PatentUS10572275B2Compatible dictionary layout
Publication Date: 2020.02.25 MICROSOFT TECHNOLOGY LICENSING LLC
  • US10572275B2 patent drawing
  • US10572275B2 patent drawing
  • US10572275B2 patent drawing

AI summary

Compatibility can be maintained when program code and pre-computed data associated with the program code are distributed in separate modules by using a data structure of key/value pairs comprising a dictionary. The dictionary can include a fixed part, a floating part and a version number. The version number in the dictionary can be used to determine if a dictionary for the program is current or outdated by comparing the dictionary version number and the version number associated with a dictionary layout in the current shared library. The dictionary can be rebuilt dynamically if the version number of the dictionary does not match the version number of the dictionary layout in the current shared library. The version number of the dictionary can be updated to the version associated with the layout version and the version pointer in the dictionary can be updated to point to the updated version number.