Deeply parallel source code compilation

US9760346B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-9760346-B2
Application numberUS-201313907709-A
CountryUS
Kind codeB2
Filing dateMay 31, 2013
Priority dateMay 31, 2013
Publication dateSep 12, 2017
Grant dateSep 12, 2017

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.

Abstract Syntax Trees (ASTs) are generated using the source code of a programming language that include information relating to the structure of the program. The generation of the ASTs may be performed in parallel. The types are split into a number of modules (e.g. configurable) that form an assembly. During the different stages of the compilation process, each module may be compiled in parallel. As the different modules are being compiled (e.g. in parallel), compiler metadata from the different modules may be written to a repository accessible by the different compilation processes. After flowing through the compilation pipeline, each of the enriched ASTs are used for code generation where they are transformed into the target language (e.g. a code stream that can be executed on hardware). The executable code is then stored as part of the assembly. The storage of the code may also be performed in parallel.

First claim

Opening claim text (preview).

What is claimed is: 1. A method for compiling source code in parallel, comprising: accessing the source code; identifying types contained within the source code, the types comprising at least one type; parsing the types identified in the source code to generate a plurality of Abstract Syntax Trees (ASTs), the plurality of ASTs being generated in parallel; adding semantic information to each of the plurality of ASTs to form a plurality of enriched ASTs; splitting, based on a name of the at least one type, the enriched ASTs to different modules that form an assembly, wherein the different modules are determined by classes in the source code; performing compilation for each of the different modules that is performed in parallel; and generating executable code for each of the modules. 2. The method of claim 1 , wherein splitting the enriched ASTs to different modules that form an assembly comprises determining a number of modules to store the enriched ASTs and splitting the enriched ASTs to the number of modules. 3. The method of claim 1 , wherein each module is an independent subdivision of the assembly that is part of a NET framework. 4. The method of claim 1 , wherein identifying the types contained within the source code occurs in parallel. 5. The method of claim 1 , wherein performing the compilation for each of the different modules comprises associating each module with a separate processing thread. 6. The method of claim 1 , wherein performing the compilation for each of the different modules comprises further enriching an AST during passes of the compilation. 7. The method of claim 1 , further comprising storing each of the modules in parallel after executable code for the modules are generated. 8. The method of claim 1 , wherein splitting the enriched ASTs to different modules that form an assembly comprises determining a number of modules to split the enriched ASTs between based in part on a number of processors available for compilation. 9. A computer-readable memory storing computer-executable instructions for compiling source code in parallel, comprising: accessing the source code; identifying each of the types contained within the source code, the types comprising at least one type; parsing the types identified in the source code to generate a plurality of Abstract Syntax Trees (ASTs), the plurality of ASTs being generated in parallel; adding semantic information to each of the plurality of ASTs to form a plurality of enriched ASTs; splitting, based on a name of the at least one type, the enriched ASTs to different modules that form an assembly, wherein the different modules are determined by classes in the source code; performing compilation for each of the different modules that is performed in parallel; and storing executable code for each of the modules generated during the compilation using different processing threads. 10. The computer-readable memory of claim 9 , wherein splitting the enriched ASTs to different modules that form an assembly comprises determining a number of modules to store the enriched ASTs and splitting the enriched ASTs to the number of modules. 11. The computer-readable memory of claim 9 , wherein identifying the types contained within the source code occurs in parallel and wherein performing the compilation for each of the different modules comprises associating each module with a separate processing thread. 12. The computer-readable memory of claim 9 , wherein performing the compilation for each of the different modules comprises further enriching an AST during passes of the compilation. 13. The computer-readable memory of claim 9 , wherein storing the executable code occurs in parallel. 14. The computer-readable memory of claim 9 , wherein splitting the enriched ASTs to different modules that form an assembly comprises determining a number of modules to split the enriched ASTs between based in part on a number of processors available for compilation. 15. A system for compiling source code in parallel, comprising: a processor and memory; an operating environment executing using the processor; and a compilation manager that is configured to perform actions comprising: accessing the source code; identifying each of the types contained within the source code; parsing the types identified in the source code to generate a plurality of Abstract Syntax Trees (ASTs), the plurality of ASTs being generated in parallel; adding semantic information to each of the plurality of ASTs to form a plurality of enriched ASTs; splitting, based on a name of one type, the enriched ASTs to different modules that form an assembly, wherein the different modules are determined by classes in the source code; performing compilation for each of the different modules that is performed in parallel; and storing executable code for each of the modules generated during the compilation using different processing threads. 16. The system of claim 15 , wherein splitting the enriched ASTs to different modules that form an assembly comprises determining a number of modules to store the enriched ASTs and splitting the enriched ASTs to the number of modules based at least in part on a number of processors available for compilation. 17. The system of claim 15 , wherein performing the compilation for each of the different modules comprises associating each module with a separate processing thread and storing the executable code occurs in parallel. 18. The system of claim 15 , wherein performing the compilation for each of the different modules comprises further enriching an AST during passes of the compilation.

Assignees

Inventors

Classifications

  • Type checking · CPC title

  • Parsing · CPC title

  • G06F8/41Primary

    Compilation · CPC title

  • Code distribution (considering CPU load at run-time G06F9/505; load rebalancing G06F9/5083) · 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 US9760346B2 cover?
Abstract Syntax Trees (ASTs) are generated using the source code of a programming language that include information relating to the structure of the program. The generation of the ASTs may be performed in parallel. The types are split into a number of modules (e.g. configurable) that form an assembly. During the different stages of the compilation process, each module may be compiled in paralle…
Who is the assignee on this patent?
Microsoft Technology Licensing Llc
What technology area does this patent fall under?
Primary CPC classification G06F8/41. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Sep 12 2017 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 8 related publications on this page (citations in our corpus or others sharing the same primary CPC).