A (build) target specifies the information that is needed to automatically build a software artifact. This paper focuses on underutilized targets—an important dependency problem that we identified at Google. An underutilized target is one with files not needed by some of its dependents. Underutilized targets result in less modular code, overly large artifacts, slow builds, and unnecessary build and test triggers. To mitigate these problems, programmers decompose underutilized targets into smaller targets. However, manually decomposing a target is tedious and error-prone. Although we prove that finding the best target decomposition is NP-hard, we introduce a greedy algorithm that proposes a decomposition through iterative unification of the ...
Software build tools like Maven and Gradle help us automate projects’ build phase but still require ...
Build systems are used in all but the smallest software projects to invoke the right build tools on ...
Automated build systems are routinely used by software engineers to minimize the number of objects t...
A (build) target specifies the information that is needed to automatically build a software artifact...
A large number of open source projects are hosted on the Internet by popular repository sites like G...
Many opportunities for easy, big-win, program optimizations are missed by compilers. This is especia...
Slow builds remain a plague for software developers. The fre-quency with which code can be built (co...
This paper describes a software-build tool named Amake, an extension of GNU Make. Its additional fea...
Most Java programmers would agree that Java is a language that promotes a philosophy of “create and ...
This paper presents a strategy, called almost-whole-program compilation, for extending the benefits ...
Along with new artifact development, software engineering also includes other tasks. One of these ta...
Many modern applications (e.g. web applications) are composed of a relatively small amount of applic...
Abstract. The possible applications of Java range from small applets to large, data-intensive scient...
Dependency management is an important task in software maintenance. However, identifying and removin...
Java developers often use decompilers to aid reverse engineering and obfuscators to prevent it. Deco...
Software build tools like Maven and Gradle help us automate projects’ build phase but still require ...
Build systems are used in all but the smallest software projects to invoke the right build tools on ...
Automated build systems are routinely used by software engineers to minimize the number of objects t...
A (build) target specifies the information that is needed to automatically build a software artifact...
A large number of open source projects are hosted on the Internet by popular repository sites like G...
Many opportunities for easy, big-win, program optimizations are missed by compilers. This is especia...
Slow builds remain a plague for software developers. The fre-quency with which code can be built (co...
This paper describes a software-build tool named Amake, an extension of GNU Make. Its additional fea...
Most Java programmers would agree that Java is a language that promotes a philosophy of “create and ...
This paper presents a strategy, called almost-whole-program compilation, for extending the benefits ...
Along with new artifact development, software engineering also includes other tasks. One of these ta...
Many modern applications (e.g. web applications) are composed of a relatively small amount of applic...
Abstract. The possible applications of Java range from small applets to large, data-intensive scient...
Dependency management is an important task in software maintenance. However, identifying and removin...
Java developers often use decompilers to aid reverse engineering and obfuscators to prevent it. Deco...
Software build tools like Maven and Gradle help us automate projects’ build phase but still require ...
Build systems are used in all but the smallest software projects to invoke the right build tools on ...
Automated build systems are routinely used by software engineers to minimize the number of objects t...