Versioned Shared Library Management for Software Storage Optimization
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing methods for sharing software libraries lead to inefficiencies such as duplicate storage of common libraries, increased executable file sizes, and compatibility issues due to library evolution.
Innovation Solution
The proposed solution involves dynamically loading shared libraries, allowing applications to specify exactly which version of a shared library to use, and utilizing an application store to manage and distribute software packages with shared libraries.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If shared libraries are distributed with each software package, then applications can run independently, but storage space is wasted due to duplicate library copies
Solution Approach 1:
Multiple software packages share a common library through a shared library mechanism. Instead of each package containing its own copy of the library, the library is merged into a shared location accessible by multiple packages, eliminating duplicates while maintaining independent execution capability.
Solution Approach 2:
The shared library serves multiple functions across different software packages simultaneously. A single library instance provides services to multiple applications, making the library universal rather than package-specific, thereby reducing overall storage requirements.
2Adaptability or versatility
If the latest version of a shared library is used, then new features are available, but compatibility with existing applications may be broken
Solution Approach 1:
The system dynamically manages library versions based on application requirements. Different applications can specify different version requirements, and the system dynamically resolves these requirements by loading appropriate versions, allowing the library system to adapt to both new feature needs and compatibility constraints.
Solution Approach 2:
The library version parameter is changed based on application-specific requirements. Each application can declare its required library version, and the system adjusts the library version parameter accordingly, enabling new features for some applications while maintaining compatibility for others through version parameter management.
3Speed
If library dependencies are resolved at build time, then execution is faster, but the system lacks flexibility for library updates
Solution Approach 1:
Library dependencies are preliminarily resolved and cached during the build or installation phase. The system performs dependency resolution in advance, storing the results for quick access during execution, thus achieving fast execution while maintaining update flexibility through the preliminary caching mechanism.
Solution Approach 2:
The system creates copies of dependency resolution results rather than performing full resolution at each execution. Build-time dependency information is copied and stored for rapid access, providing execution speed while the underlying library system remains flexible for updates through the copy mechanism.
Data Source
Figure 1
Figure 2
Figure 3A
AI summary
Apparatus and methods related to stored software libraries are provided. A computing device can receive versioned-shared-library information for a first software library used by a software application, where the versioned-shared-library information can include an identifier. The computing device can determine whether the computing device stores a copy of the first software library identified in the versioned-shared-library information by the identifier. The computing device can send a request for one of a full executable and a stripped executable for the software application, where the full executable includes the first software library, and where the stripped executable excludes the first software library. In response to the request, the computing device can receive the full executable or the stripped executable for the software application.