Object Graph Partial Immutability via Compile-Time Permissions

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current systems-level programming lacks fine-grained control over access permissions in object graphs, leading to inefficiencies and potential mutations in collections, as existing solutions like interfaces and wrapper types incur overhead and can be subverted.

Innovation Solution

A language extension that allows different portions of an object graph to have individually assigned permissions during instantiation, which are maintained throughout the lifetime of each instance, enabling structured permissions and fine-grained control over access permissions.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If interfaces or wrapper types are used to manage access permissions, then access control is provided, but runtime overhead and potential subversion occur

Engineering Contradiction:
Improveaccess controlVSAvoidruntime overhead
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

Access permissions are assigned and enforced at compile time through language extensions and type definitions, rather than being managed at runtime through interfaces or wrappers. The compiler statically determines which portions of object graphs are immutable or mutable, eliminating runtime overhead while maintaining reliable access control.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The access control mechanism is extracted from runtime execution and moved to compile-time processing. Language extensions allow permissions to be declared and enforced during compilation, removing the need for runtime checks and wrapper types that previously caused overhead.

Inventive Principle:
Principle #2Taking out (Extraction)

2Reliability

If fine-grained control over access permissions is implemented, then mutation prevention is improved, but system complexity increases

Engineering Contradiction:
Improvemutation preventionVSAvoidsystem complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

Object graphs are segmented into distinct portions with different permission assignments. Language extensions allow specific portions of object graphs to be marked as immutable or mutable independently, enabling fine-grained control over which parts can be modified without affecting the entire structure.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

Different portions of the object graph have different permission qualities assigned to them. The language extension allows each portion to have its own access permission characteristics (immutable or mutable), providing local quality control rather than uniform permission management across the entire object graph.

Inventive Principle:
Principle #3Local quality

3Measurement precision

If structured permissions are applied to object graphs, then access control precision is improved, but instantiation complexity increases

Engineering Contradiction:
Improveaccess control precisionVSAvoidinstantiation complexity
Core Design Contradiction:
Measurement precisionVSEase of manufacture

Solution Approach 1:

The language extension provides a universal mechanism for assigning structured permissions to object graphs that works across different types and instantiation scenarios. Type definitions incorporate permission information directly, allowing the same language construct to handle various permission configurations without requiring separate mechanisms for each case.

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

Data Source

PatentEP2941702B1Object graph partial immutability and isolation enforcement
Publication Date: 2019.09.25 MICROSOFT TECHNOLOGY LICENSING LLC
  • EP2941702B1 patent drawingFigure 1
  • EP2941702B1 patent drawingFigure 2
  • EP2941702B1 patent drawingFigure 3

AI summary

The type definition of particular types such that different portions of the corresponding object graph may have different permissions assigned to those portions during instantiation. This allows structured permissions to be applied to instantiations of the object graphs of those defined types, allowing fine grained control over what access permissions are enforced against which portions of the object graph. In some embodiments, different instantiations of the object graph may apply permissions differently.