Co-routine to Sub-routine Transformation for Cross-Environment Compatibility

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

There is a need for a system and method to transform co-routines into equivalent sub-routines, as co-routines may not be supported in certain environments or have disadvantages, requiring a way to convert co-routine semantics into sub-routine semantics for implementation across different hardware and operating environments.

Innovation Solution

A processor-implemented method and system that uses a source-to-source transformation module to analyze and transform co-routines from a first language into sub-routines of a second language, determining automatic variables, return statements, and yield statements to enable co-routines to be implemented in environments that only support sub-routines, by translating persistent and non-persistent variables and return statements, and storing automatic variables for use in sub-routines.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If co-routines are used in a programming language, then execution can be suspended and resumed at multiple entry points, but the hardware environment must support co-routine semantics which is not available in all environments

Engineering Contradiction:
Improveco-routine supportVSAvoidhardware environment requirements
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The patent introduces a transformation module as an intermediary that converts co-routine code into equivalent sub-routine code. This mediator translates the suspended execution semantics of co-routines into a form compatible with traditional sub-routine environments, allowing the code to run in hardware that only supports sub-routines while preserving the original co-routine behavior through systematic code transformation

Inventive Principle:
Principle #24Intermediary (Mediator)

2Adaptability or versatility

If co-routines with yield statements are transformed into sub-routines, then compatibility with sub-routine-only environments is achieved, but the transformation complexity increases

Engineering Contradiction:
Improveenvironment compatibilityVSAvoidtransformation module complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The transformation module is divided into distinct functional components: a parser that identifies co-routine constructs, an analyzer that determines suspension points and variables, and a code generator that produces equivalent sub-routine code. This segmentation allows each component to handle specific aspects of the transformation, making the overall complex process manageable and systematic

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The transformation process performs preliminary analysis of the co-routine code before generating the sub-routine equivalent. It pre-identifies all suspension points, persistent variables, and control flow paths, and pre-computes the necessary state saving and restoring mechanisms, so that the actual code generation can proceed systematically without ad-hoc complexity

Inventive Principle:
Principle #10Preliminary action

3Adaptability or versatility

If manual partitioning and synchronization is done to implement co-routine behavior in sub-routines, then co-routine functionality can be achieved, but the ease of operation decreases

Engineering Contradiction:
Improveco-routine functionalityVSAvoidmanual partitioning effort
Core Design Contradiction:
Adaptability or versatilityVSEase of operation

Solution Approach 1:

The transformation module performs the partitioning and synchronization work automatically without requiring manual programmer intervention. It self-analyzes the co-routine code structure, self-determines the appropriate partitioning points, and self-generates the synchronized sub-routine implementation, thereby achieving co-routine functionality while eliminating the manual effort burden

Inventive Principle:
Principle #25Self-service

Data Source

PatentUS10949183B2System and method for transforming co-routines to equivalent sub-routines
Publication Date: 2021.03.16 VAYAVYA LABS
  • US10949183B2 patent drawing
  • US10949183B2 patent drawing
  • US10949183B2 patent drawing

AI summary

A processor-implemented method for transforming co-routines to equivalent sub-routines is provided. An input is received at a first user device from a user for a first language and a first operating environment. The first language includes the co-routines and is supported in a first hardware environment. The first language is analyzed to transform the co-routines of the first language into the sub-routines of a second language for implementing the co-routines of the first language in a second hardware environment. The second hardware environment supports the sub-routines of the second language in a second operating environment by determining automatic variables for persistent variables and non-persistent variables, transforming the persistent variables and the non-persistent variables into the sub-routines of the second language, determining return statements and yield statements in the co-routines, and translating the co-routines of the first language into the sub-routines of the second language and the second operating environment.