US 12,093,669 B1
Massively parallel compilation of application code
Troy Aaron Johnson, Eagan, MN (US); Stephen Markus Sachs, Berlin (DE); Pate Motter, Seattle, WA (US); and Luiz Antonio DeRose, Rosemount, MN (US)
Assigned to AMAZON TECHNOLOGIES, INC., Seattle, WA (US)
Filed by Amazon Technologies, Inc., Seattle, WA (US)
Filed on Mar. 9, 2021, as Appl. No. 17/196,127.
Int. Cl. G06F 8/41 (2018.01)
CPC G06F 8/443 (2013.01) [G06F 8/45 (2013.01)] 20 Claims
OG exemplary drawing
 
1. A system, comprising:
a plurality of computing devices comprising at least one hardware processor; and
program instructions stored in memory and executable by the at least one hardware processor that, when executed, direct the at least one computing device to:
direct installation of a compiler application in a compute instance of a cloud computing service;
receive an instruction to compile source code into an executable application, wherein the instruction comprises a flag to compile at least a portion of the source code separate from the compute instance;
pre-process the source code in the compute instance to generate a plurality of pre-processed source code files, individual ones of the preprocessed source code files comprising at least one dependency corresponding to at least one of a library, a header, an include file, or any combination thereof, wherein the at least one dependency specified and unincluded in respective ones of a plurality of source code files is retrieved and incorporated into the individual ones of the preprocessed source code files;
create a plurality of serverless functions executable by an on-demand code execution service remotely from the plurality of computing devices, wherein individual ones of the plurality of serverless functions of the plurality of serverless functions are assigned to compile a single respective pre-processed source code file of the plurality of pre-processed source code files in parallel with respect to other serverless functions of the plurality of serverless functions that are assigned to compile other pre-processed source code files of the plurality of pre-processed source code files;
receive a plurality of build artifacts from the plurality of serverless functions that correspond to individual ones of the plurality of pre-processed source code files; and
generate the executable application by linking the build artifacts received from the plurality of serverless functions.