Simulated Change Apparatus for Immutable Software Nodes

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing programming languages face inefficiencies in managing changes to software objects at runtime, leading to unnecessary object creation and performance degradation, especially in multi-threaded applications where changes need to be propagated across processes.

Innovation Solution

A system and method for simulating changes to immutable software nodes at runtime, using a simulated change apparatus that stores and propagates changes without altering the underlying objects, allowing operations to be performed as if the nodes had been changed while maintaining their logical immutability.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If immutable objects are changed in memory by creating new objects, then the object can be updated, but the number of newly created objects increases and performance decreases

Engineering Contradiction:
Improvelogical immutabilityVSAvoidruntime performance
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The patent creates a simulated change apparatus that maintains copies of immutable objects and their simulated changes. Instead of creating new objects in memory, the system creates and manages simulated changes in a separate apparatus, allowing efficient propagation of changes without object creation overhead.

Inventive Principle:
Principle #26Copying

Solution Approach 2:

The simulated change apparatus acts as an intermediary between the immutable object storage and the code execution module. It intercepts change operations, stores them as simulated changes, and propagates them to affected code without directly modifying the underlying immutable objects, thus maintaining both immutability and performance.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Stability of the object's composition

If changes are propagated to all affected processes in multi-threaded applications, then consistency is maintained, but the computational overhead increases

Engineering Contradiction:
Improvelogical consistencyVSAvoidcomputational overhead
Core Design Contradiction:
Stability of the object's compositionVSUse of energy by moving object

Solution Approach 1:

The system pre-identifies and stores all code affected by a change to an immutable object in the simulated change apparatus. When a change occurs, the system can efficiently propagate it only to the pre-identified affected code, avoiding the need to scan and update all processes, thus reducing computational overhead while maintaining consistency.

Inventive Principle:
Principle #10Preliminary action

3Reliability

If new objects are created for every change to maintain immutability, then referential transparency is preserved, but memory usage increases

Engineering Contradiction:
Improvereferential transparencyVSAvoidmemory usage
Core Design Contradiction:
ReliabilityVSQuantity of substance

Solution Approach 1:

Instead of creating new object instances in memory for each change, the patent creates simulated changes in a separate apparatus that references the original immutable objects. This approach preserves referential transparency by maintaining consistent references while avoiding the memory overhead of creating and storing multiple object copies.

Inventive Principle:
Principle #26Copying

Data Source

PatentUS11748129B2Simulated change of immutable objects during execution runtime
Publication Date: 2023.09.05 MORGAN STANLEY SERVICES GROUP INC
  • US11748129B2 patent drawing
  • US11748129B2 patent drawing
  • US11748129B2 patent drawing

AI summary

A system for executing software, wherein a computing device stores first software instructions for a code execution module such that, when the first software instructions are executed, the computing device will: receive, for execution by the code execution module, second software instructions; create one or more immutable software nodes described in the second software instructions; determine that the second software instructions comprise an instruction to begin a simulated change at runtime of the one or more immutable software nodes; store the simulated change in a simulated change apparatus; using the simulated change apparatus, perform one or more operations of the second software instructions as if the one or more immutable software nodes had been changed in memory, during a period of time where each of the one or more immutable software nodes is guaranteed to retain logical immutability; and output results of the one or more operations.