Adaptive selection of programming language versions for compilation of software programs

US9489184B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-9489184-B2
Application numberUS-201113341105-A
CountryUS
Kind codeB2
Filing dateDec 30, 2011
Priority dateDec 30, 2011
Publication dateNov 8, 2016
Grant dateNov 8, 2016

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

The disclosed embodiments provide a system that facilitates the development and compilation of a software program. During operation, the system obtains a set of compilation units to be used in the software program and a version order associated with a programming language of the compilation units. Next, for each compilation unit from the set of compilation units, the system uses the version order to select a version of the programming language that is compatible with the compilation unit. The system then uses the version to compile the compilation unit.

First claim

Opening claim text (preview).

What is claimed is: 1. A method, comprising: at a computer system, obtaining: a set of source code modules to be used in a software program; and an ordering between one or more older versions of a programming language and one or more newer versions of the programming language, wherein one or more versions of the programming language are to be used while compiling the source code modules; and for each source code module from the set of source code modules: selecting a version of the programming language from a set of versions of the programming language by using the ordering, wherein the selected version of the programming language is compatible with the source code module, and wherein the selecting the version of the programming language that is compatible with the source code module involves: attempting to compile the source code module using a first version of the programming language in the ordering, responsive to the source code module compiling successfully with the first version of the programming language, selecting the first version of the programming language, and responsive to the source code module not compiling successfully with the first version of the programming language, attempting to compile the source code module using a second version of the programming language following the first version of the programming language in the ordering; and compiling the source code module with the selected version of the programming language. 2. The method of claim 1 , further comprising: obtaining a range of versions of the programming language with which the set of source code modules may be compiled; and selecting the version of the programming language from the range of versions of the programming language. 3. The method of claim 2 , wherein the range of versions of the programming language specifies an oldest version of the programming language and a newest version of the programming language. 4. The method of claim 1 , wherein the ordering comprises at least one of an ascending order, a descending order, and a user-specified order. 5. The method of claim 1 , wherein the second version of the programming language is selected if the source code module compiles successfully with the second version of the programming language. 6. The method of claim 5 , wherein the second version of the programming language is selected only if other source code modules in the set of source code modules also compile successfully with the second version of the programming language. 7. The method of claim 6 , wherein the set of source code modules corresponds to at least one of a package, and a code base for the software program. 8. The method of claim 1 , wherein: a first source code module of the set of source code modules is compiled with the first version of the programming language in the ordering and a second source code module of the set of source code modules is compiled with the second version of the programming language in the ordering; and the first source code module is linked to a first library for the first version of the programming language in the ordering and the second source code module is linked to a second library for the second version of the programming language in the ordering. 9. A system, comprising: a processor; a memory; a software development kit (SDK) configured to facilitate creation of a set of source code modules to be used in a software program; and a compilation manager configured to: obtain an ordering between one or more older versions of a programming language and one or more newer versions of the programming language, wherein one or more versions of the programming language are to be used while compiling the source code modules; and for each source code module from the set of source code modules: select a version of the programming language from a set of versions of the programming language by using the ordering, wherein the selected version of the programming language is compatible with the source code module, and wherein the selecting of the version of the programming language that is compatible with the source code module further involves:  attempting to compile the source code module using a first version of the programming language in the ordering, responsive to the source code module compiling successfully with the first version of the programming language, selecting the first version of the programming language, and  responsive to the source code module not compiling successfully with the first version of the programming language, attempting to compile the source code module using a second version of the programming language following the first version of the programming language in the ordering; and  compile the source code module with the selected version of the programming language. 10. The system of claim 9 , wherein the compilation manager is further configured to: obtain a range of versions of the programming language with which the set of source code modules may be compiled; and select the version of the programming language from the range of versions of the programming language. 11. The system of claim 9 , wherein the ordering comprises at least one of an ascending order, a descending order, and a user-specified order. 12. The system of claim 9 , wherein the second version of the programming language is selected if the source code module compiles successfully with the second version of the programming language. 13. The system of claim 12 , wherein the second version of the programming language is selected only if other source code modules in the set of source code modules also compile successfully with the second version of the programming language. 14. The system of claim 13 , wherein the set of source code modules corresponds to at least one of a package, and a code base for the software program. 15. One or more non-transitory computer-readable storage media storing instructions that when executed by a computer cause the computer to perform a method comprising: obtaining a set of source code modules to be used in a software program and an ordering between older versions of a programming language and newer versions of the programming language, wherein one or more versions of the programming language are to be used while compiling the source code modules; and for each source code module from the set of source code modules: selecting a version of the programming language from a set of versions of the programming language by using the ordering, wherein the selected version of the programming language is compatible with the source code module, and wherein the selecting the version of the programming language that is compatible with the source code module further involves: attempting to compile the source code module using a first version of the programming language in the ordering, responsive to the source code module compiling successfully with the first version of the programming language, selecting the first version of the programming language, and responsive to the source code module not compiling successfully with the first version of the programming language, attempting to compile the source code module using a second version of the programming language following the first version of the programming language in the ordering; and compiling the source code module with the selected version of the programming language. 16. The one or more non-transitory computer-readable storage media of claim 15 , the method further comprising: obtaining a range of versions of the programming language with which the set of source code

Assignees

Inventors

Classifications

  • Installation · CPC title

  • Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking · CPC title

  • G06F8/47Primary

    Retargetable compilers · CPC title

  • Selecting among different versions · CPC title

  • Optimisation · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US9489184B2 cover?
The disclosed embodiments provide a system that facilitates the development and compilation of a software program. During operation, the system obtains a set of compilation units to be used in the software program and a version order associated with a programming language of the compilation units. Next, for each compilation unit from the set of compilation units, the system uses the version ord…
Who is the assignee on this patent?
Goetz Brian, Buckley Alexander R, Oracle Int Corp
What technology area does this patent fall under?
Primary CPC classification G06F8/47. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Nov 08 2016 00:00:00 GMT+0000 (Coordinated Universal Time) (B2). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 2 related publications on this page (citations in our corpus or others sharing the same primary CPC).