Search

US-20260126968-A1 - REUSING PROGRAMMING ENVIRONMENTS IN A DISTRIBUTED COMPUTING ENVIRONMENT

US20260126968A1US 20260126968 A1US20260126968 A1US 20260126968A1US-20260126968-A1

Abstract

A system and related methods for creating a new programming environment from existing programming environments is disclosed. The system is programmed to retrieve relocatable packages of existing programming environments for a programming language from a remote repository and locally set up the existing programming environments as components of a new programming environment for the programming language. The system is programmed to further adjust an environment variable for the programming language based on priorities associated with the existing programming environments. The setup can utilize symbolic links to encapsulate library version information and encourage reuse of the directory structure of the local programming environment represented by the symbolic links when any component of the new programming environment has an update available.

Inventors

  • João CORREIA
  • Jonathan Lafleche
  • Willi Raschkowski
  • John AYAD

Assignees

  • Palantir Technologies Inc.

Dates

Publication Date
20260507
Application Date
20241213

Claims (20)

  1. 1 . A method of creating a new programming environment from existing programming environments, comprising: retrieving a plurality of relocatable packages of programming environments from a repository in a distributed computing environment; creating a plurality of folders respectively for the plurality of relocatable packages; adding one or more symbolic links in each folder of the plurality of folders to one or more sub-folders in the folder, each sub-folder of the one or more sub-folders corresponding to a version of a specific, predetermined group of libraries used across the plurality of programming environments; inserting, to an environment variable for a new programming environment, one or more link names respectively of the one or more symbolic links in each folder of the plurality of folders, the inserting being performed in an order based on predetermined priorities of the plurality of programming environments, wherein the method is performed by one or more processors.
  2. 2 . The method of claim 1 , further comprising: receiving a request to execute a new command in the new programming environment; executing the new command in response to the request in the new programming environment.
  3. 3 . The method of claim 1 , a relocatable package of the plurality of relocatable packages being a compressed archive, the creating comprising uncompressing the compressed archive.
  4. 4 . The method of claim 3 , the creating further comprising updating a path prefix in at least one file in a folder of the plurality of folders.
  5. 5 . The method of claim 1 , the adding further comprising, for a specific symbolic link, identifying a version number of the corresponding specific, predetermined group of libraries, the specific symbolic link having a link name that replaces the version number by a common symbol.
  6. 6 . The method of claim 1 , the one or more symbolic links respectively pointing to a first group of core libraries, a second group of dynamically loaded libraries, and a third group of third-party extension libraries for a programming language.
  7. 7 . The method of claim 1 , the plurality of programming environments including a first programming environment containing programming dependencies associated with a server or a corresponding organization account, a second programming environment containing programming dependencies associated with a user device or a corresponding user account in the distributed computing environment, and a third programming environment containing programming modules associated the user device or the corresponding user account.
  8. 8 . The method of claim 7 , the first programming environment, the second programming environment, and the third programming environment having decreasing priorities.
  9. 9 . The method of claim 1 , further comprising: retrieving a certain relocatable package of a certain programming environment from the repository to replace a first relocatable package of the plurality of relocatable packages; reusing the folder for the first relocatable package for the certain relocatable package after removing files from the first relocatable package from the folder; updating the one or more symbolic links in the folder based on the certain relocatable package.
  10. 10 . The method of claim 9 , further comprising: receiving a request to execute a new command in the new programming environment after the certain relocatable package replaces the first relocatable package; executing the new command in the new programming environment without updating the environment variable.
  11. 11 . The method of claim 1 , further comprising: receiving an update to a specific folder of the plurality of folders; creating a new relocatable package of a specific programming environment corresponding to the specific folder; transmitting the new relocatable package to the repository.
  12. 12 . The method of claim 1 , the new programming environment being a Python programming environment.
  13. 13 . A computer system for creating a new programming environment from existing programming environments, comprising: a memory; one or more processors coupled to the memory and configured to perform: retrieving a plurality of relocatable packages of programming environments from a repository in a distributed computing environment; creating a plurality of folders respectively for the plurality of relocatable packages; adding one or more symbolic links in each folder of the plurality of folders to one or more sub-folders in the folder, each sub-folder of the one or more sub-folders corresponding to a version of a specific, predetermined group of libraries used across the plurality of programming environments; inserting, to an environment variable for a new programming environment, one or more link names respectively of the one or more symbolic links in each folder of the plurality of folders, the inserting being performed in an order based on predetermined priorities of the plurality of programming environments.
  14. 14 . The system of claim 13 , the adding further comprising, for a specific symbolic link, identifying a version number of the corresponding specific, predetermined group of libraries, the specific symbolic link having a path that replaces the version number by a common symbol.
  15. 15 . The system of claim 13 , the one or more symbolic links respectively pointing to a first group of core libraries, a second group of dynamically loaded libraries, and a third group of third-party extension libraries for a programming language.
  16. 16 . The system of claim 13 , the plurality of programming environments including a first programming environment containing programming dependencies associated with a server or a corresponding organization account, a second programming environment containing programming dependencies associated with a user device or a corresponding user account in the distributed computing environment, and a third programming environment containing programming modules associated the user device or the corresponding user account.
  17. 17 . The system of claim 16 , the first programming environment, the second programming environment, and the third programming environment having decreasing priorities.
  18. 18 . The system of claim 13 , the one or more processors configured to further perform: retrieving a certain relocatable package of a certain programming environment from the repository to replace a first relocatable package of the plurality of relocatable packages; reusing the folder for the first relocatable package for the certain relocatable package after removing files from the first relocatable package from the folder; updating the one or more symbolic links in the folder based on the certain relocatable package.
  19. 19 . The system of claim 18 , the one or more processors configured to further perform: receiving a request to execute a new command in the new programming environment after the certain relocatable package replaces the first relocatable package; executing the new command in the new programming environment without updating the environment variable.
  20. 20 . One or more non-transitory storage media storing instructions which when executed cause one or more processors to perform: retrieving a plurality of relocatable packages of programming environments from a repository in a distributed computing environment; creating a plurality of folders respectively for the plurality of relocatable packages; adding one or more symbolic links in each folder of the plurality of folders to one or more sub-folders in the folder, each sub-folder of the one or more sub-folders corresponding to a version of a specific, predetermined group of libraries used across the plurality of programming environments; inserting, to an environment variable for a new programming environment, one or more link names respectively of the one or more symbolic links in each folder of the plurality of folders, the inserting being performed in an order based on predetermined priorities of the plurality of programming environments.

Description

This application claims the benefit under 35 U.S. C. § 119(e) of U.S. Provisional Application No. 63/716,697, titled “REUSING PROGRAMMING ENVIRONMENTS IN A DISTRIBUTED COMPUTING ENVIRONMENT” and filed on Nov. 5, 2024, the entire contents of which are hereby incorporated by reference as if fully set forth herein. TECHNICAL FIELD The present disclosure relates to programming environment management, and more particularly to reusing previously-built programming environments in a distributed computing environment. BACKGROUND In a distributed computing environment, different devices could contribute code of multiple versions to a repository, which is accessible to other devices. The code can be written in one or more programming languages. Conventionally, building a new programming environment for a specific programming language, such as Python, could involve identifying and retrieving all relevant files and libraries from the repository across a computer network, setting up these files and libraries on a local host, and updating one or more relevant environment variables associated with the specific programming language to reflect the setup. Such a process could take time and delay project development. There exist programming environment managers that facilitate porting programming environments. However, it still takes a relatively long time for such a programming environment manager to create a new programming environment on a specific device in the distributed computing environment. It would be helpful to have an improved mechanism that expedites the creation of a programming environment for active project development and deployment. SUMMARY The appended claims may serve as a summary of the invention. BRIEF DESCRIPTION OF THE DRAWINGS Example embodiments will now be described by way of non-limiting examples with reference to the accompanying drawings, in which: FIG. 1 illustrates an example networked computer system in which various embodiments may be practiced; FIG. 2A illustrates aspects of example programming environments. FIG. 2B illustrates aspects of an example combined programming environment. FIG. 3 illustrates a process of creating a new programming environment from existing programming environments in accordance with disclosed embodiments. FIG. 4 illustrates an example computer system upon which various embodiments may be implemented. DETAILED DESCRIPTION OF CERTAIN EMBODIMENTS In the following description, for the purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the example embodiment(s) of the present invention. It will be apparent, however, that the example embodiment(s) may be practiced without these specific details. In other instances, well-known structures and devices are shown in block diagram form in order to avoid unnecessarily obscuring the example embodiment(s). 1. General Overview A system and related methods for creating a new programming environment from existing programming environments is disclosed. The system is programmed to retrieve relocatable packages of existing programming environments for a programming language from a remote repository and locally set up the existing programming environments as components of a new programming environment for the programming language. The system is programmed to further adjust an environment variable for the programming language based on priorities associated with the existing programming environments. The setup can utilize symbolic links to encapsulate library version information and encourage reuse of the directory structure of the local programming environment represented by the symbolic links when any component of the new programming environment has an update available. In some embodiments, different devices in a distributed computing environment can be configured to manage respective local programming environments for a specific programming language, such as Python. For example, a first type of programming environment can be for building organizational libraries that provide organizational features associated with an organizational account, a second type of programming environment can be for building user libraries that work with user code associated with a specific user account managed by the organizational account, and a third type of programming environment can be for developing the user code. While developing the user code generally depends on the organizational and user libraries from the first type of programming environment and the second type of programming environment, those libraries could generally be developed independently. In some embodiments, the user code associated with the specific user account could be developed, tested, or deployed on any user device generally for individual use or any computing device as part of a cluster managed by a server in the distributed computing environment. For such development, testing, or deployment, the chosen device would est