Managing updates using compiler and linker information
AssigneeMicrosoft Corporation
InventorsDavid M. Callaghan, Russell B. Keldorph, Leonard Ciprian Mosescu
Life of this patent
Estimating the term…
Abstract
Generating a next build version of a software application using information generated during a previous build version at the compiler and linker levels. The information describes the structure and build decisions applied during creation of the previous build version. Generation of the current build version is modified based on the information to minimize the binary differences between the builds. In some embodiments, a linker arranges the contents during the previous build in anticipation of the current build. Further, the linker pads the previous build with unused address space to minimize relocation of the contents of the build.
Claims20
A system for optimizing software updates for delivery to a mobile computing device, said system comprising:
- a memory area for storing a first source code version of a software application and a second source code version of the software application;
- and
- a processor programmed to:
- access the first source code version of the software application stored in the memory area;
- generate a first build of the accessed first source code version;
- determine build metadata related to generation of the first build, said determined build metadata describing a structure of the first build and one or more build decisions applied during the generation of the first build;
- access the second source code version of the software application stored in the memory area;
- generate a second build of the accessed second source code version based on the described structure of the first build and based on the build decisions applied during generation of the first build;
- compare the first build to the second build;
- and
- create an incremental update to the first build based on the comparison, wherein a size of the created incremental update is minimized based on the build metadata.
A method comprising:
- accessing information related to generation of a first build of a first source code version of a software application, said information describing a structure of the first build and one or more build decisions applied during generation of the first build;
- receiving one or more modifications to the first source code version to create a second source code version;
- and
- generating a second build of the second source code version based on the described structure of the first build and based on the build decisions applied during generation of the first build, wherein a structure of the generated second build is related to the described structure of the first build, and wherein generating the second build comprises applying at least one of the build decisions from the first build.
One or more computer-readable media having computer-executable components for producing a minimized incremental update to a software program, said components comprising:
- an interface component for receiving source code for the software program;
- a compiler component for compiling the source code received by the interface component into a plurality of object files, said plurality of object files comprising one or more contributions;
- a linker component for linking the object files from the compiler component into an image file, wherein the linker component pads the image file with unused address space in anticipation of an update to the source code, wherein the linker component further arranges the contributions to reduce relocation of the contributions during compiling and linking of the update to the source code;
- and
- a metadata component for identifying locations of the unused address space and the contributions as input for the compiling and linking of the update to the source code.
Dependencies are inferred from the claim text.