Compatibility Library Emulating OS Features for Application Portability
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Computing devices face compatibility issues when applications written for newer or older versions of operating systems are not compatible, leading to incomplete functionality due to unsupported system frameworks, requiring developers to create multiple versions of applications for different OS versions.
Innovation Solution
A method that involves receiving a function-call request from an application, determining the compatibility of the operating system and system library, and accessing a compatibility library with pre-compiled code to emulate the required features, allowing the application to run on both newer and older versions of the operating system.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Adaptability or versatility
If applications are developed for newer versions of the operating system, then the application can utilize advanced features and improved performance, but the application becomes incompatible with older versions of the operating system
Solution Approach 1:
The patent introduces a compatibility layer as an intermediary component that sits between the application and the operating system. This compatibility layer includes stubs and shims that intercept function calls from the application and translate them into appropriate system calls for the underlying operating system version, enabling applications designed for newer OS versions to run on older versions without requiring multiple application versions.
Solution Approach 2:
The system is divided into distinct segments: the application layer, the compatibility layer (with stubs and shims), and the operating system kernel. This segmentation allows each layer to be independently developed and maintained, with the compatibility layer handling version-specific translations without requiring changes to the application or the core OS.
2Adaptability or versatility
If developers create multiple versions of applications for different OS versions, then compatibility across OS versions is achieved, but development time and maintenance complexity increase
Solution Approach 1:
The compatibility layer is designed as a universal solution that handles multiple OS version translations through a single infrastructure. Rather than requiring separate application versions for each OS, the universal compatibility layer dynamically translates function calls based on the target OS version, allowing one application version to support multiple OS versions.
Solution Approach 2:
The system performs preliminary actions by pre-defining stubs and shims for various function calls and OS version combinations. These compatibility components are prepared in advance and automatically selected based on the application's target OS version and the actual OS version running, eliminating the need for runtime compilation or complex version detection logic in the application itself.
3Adaptability or versatility
If dynamic compilation is performed at run-time, then code compatibility is achieved, but execution speed decreases due to compilation overhead
Solution Approach 1:
The compatibility layer performs preliminary compilation actions by pre-compiling stubs and shims for various function calls and storing them in the compatibility library. At runtime, the system performs lightweight linking and loading of these pre-compiled components rather than full dynamic compilation, significantly reducing execution overhead while maintaining compatibility.
Solution Approach 2:
The system creates copies of function implementation code in the form of stubs and shims within the compatibility layer. These copied function implementations are tailored for specific OS versions and are linked at runtime based on compatibility requirements, avoiding the need to compile original application code dynamically while achieving version-specific behavior.
Data Source
AI summary
Methods and systems for providing compatibility of applications with multiple versions of an operating system are provided. The method may comprise receiving, by a device, a request to perform a function-call of an application that references features of a first version of an operating system. The method also includes determining whether a version of the operating system and a system library on the device supports the function-call of the application so as to be able to perform dynamic compilation of code in the system library for the function-call at run-time, and based on the determination, accessing a compatibility library associated with the application that includes pre-compiled code for execution by a given device having a given version of the operating system other than the first version of the operating system. The method also includes at run-time, performing the function-call using corresponding pre-compiled code from the compatibility library.


