Enabling Fine-Grained Incremental Builds by Making Compiler Stateful
Incremental builds are commonly employed in software development, involving minor changes to existing source code that is then frequently recompiled. Speeding up incremental builds not only enhances the software development workflow but also improves CI/CD systems by enabling faster verification ste...
Uložené v:
| Vydané v: | Proceedings / International Symposium on Code Generation and Optimization s. 221 - 232 |
|---|---|
| Hlavní autori: | , , |
| Médium: | Konferenčný príspevok.. |
| Jazyk: | English |
| Vydavateľské údaje: |
IEEE
02.03.2024
|
| Predmet: | |
| ISSN: | 2643-2838 |
| On-line prístup: | Získať plný text |
| Tagy: |
Pridať tag
Žiadne tagy, Buďte prvý, kto otaguje tento záznam!
|
| Abstract | Incremental builds are commonly employed in software development, involving minor changes to existing source code that is then frequently recompiled. Speeding up incremental builds not only enhances the software development workflow but also improves CI/CD systems by enabling faster verification steps. Current solutions for incremental builds primarily rely on build systems that analyze file dependencies to avoid unnecessary recompilation of unchanged files. However, for the files that do undergo changes, these build systems simply invoke compilers to recompile them from scratch. This approach reveals a fundamental asymmetry in the system: while build systems operate in a stateful manner, compilers are stateless. As a result, incremental builds are applied only at a coarse-grained level, focusing on entire source files, rather than at a more fine-grained level that considers individual code sections. In this paper, we propose an innovative approach for enabling the fine-grained incremental build by introducing statefulness into compilers. Under this paradigm, the compiler leverages its profiling history to expedite the compilation process of modified source files, thereby reducing overall build time. Specifically, the stateful compiler retains dormant information of compiler passes executed in previous builds and uses this data to bypass dormant passes during subsequent incremental compilations. We also outline the essential changes needed to transform conventional stateless compilers into stateful ones. For practical evaluation, we modify the Clang compiler to adopt a stateful architecture and evaluate its performance on real-world C++ projects. Our comparative study indicates that the stateful version outperforms the standard Clang compiler in incremental builds, accelerating the end-to-end build process by an average of 6.72%. |
|---|---|
| AbstractList | Incremental builds are commonly employed in software development, involving minor changes to existing source code that is then frequently recompiled. Speeding up incremental builds not only enhances the software development workflow but also improves CI/CD systems by enabling faster verification steps. Current solutions for incremental builds primarily rely on build systems that analyze file dependencies to avoid unnecessary recompilation of unchanged files. However, for the files that do undergo changes, these build systems simply invoke compilers to recompile them from scratch. This approach reveals a fundamental asymmetry in the system: while build systems operate in a stateful manner, compilers are stateless. As a result, incremental builds are applied only at a coarse-grained level, focusing on entire source files, rather than at a more fine-grained level that considers individual code sections. In this paper, we propose an innovative approach for enabling the fine-grained incremental build by introducing statefulness into compilers. Under this paradigm, the compiler leverages its profiling history to expedite the compilation process of modified source files, thereby reducing overall build time. Specifically, the stateful compiler retains dormant information of compiler passes executed in previous builds and uses this data to bypass dormant passes during subsequent incremental compilations. We also outline the essential changes needed to transform conventional stateless compilers into stateful ones. For practical evaluation, we modify the Clang compiler to adopt a stateful architecture and evaluate its performance on real-world C++ projects. Our comparative study indicates that the stateful version outperforms the standard Clang compiler in incremental builds, accelerating the end-to-end build process by an average of 6.72%. |
| Author | Zhao, Jisheng Han, Ruobing Kim, Hyesoon |
| Author_xml | – sequence: 1 givenname: Ruobing surname: Han fullname: Han, Ruobing email: hanruobing@gatech.edu organization: Georgia Institute of Technology,Atlanta,USA – sequence: 2 givenname: Jisheng surname: Zhao fullname: Zhao, Jisheng email: jisheng.zhao@cc.gatech.edu organization: Georgia Institute of Technology,Atlanta,USA – sequence: 3 givenname: Hyesoon surname: Kim fullname: Kim, Hyesoon email: hyesoon@cc.gatech.edu organization: Georgia Institute of Technology,Atlanta,USA |
| BookMark | eNo1j0tOwzAUAA0Cibb0Bgj5Agn-xvYSQhsqFXUBrKvn-AUZErdK0kVv3yJgNZvRSDMlV2mXkJB7znLOmXsoq402hWS5YELlnCmlbKEvyNwZZ6Vm0mnm3CWZiELJTFhpb8h0GL4YE0ZxOSHPiwS-jemTLmPCrOrhjEBXqe6xwzRCS58OsQ0D9Uf6Ct8_Zrnr9rHFnr6NMGJzaG_JdQPtgPM_zsjHcvFevmTrTbUqH9cZCMfGDAXW3BujkYO02iGa4DXY4NE3TDuogwMjjORolbWaN84x6-35AISsg5yRu99uRMTtvo8d9Mft_7U8AUjxTcU |
| ContentType | Conference Proceeding |
| DBID | 6IE 6IL CBEJK RIE RIL |
| DOI | 10.1109/CGO57630.2024.10444865 |
| DatabaseName | IEEE Electronic Library (IEL) Conference Proceedings IEEE Proceedings Order Plan All Online (POP All Online) 1998-present by volume IEEE Xplore All Conference Proceedings IEEE Electronic Library (IEL) IEEE Proceedings Order Plans (POP All) 1998-Present |
| DatabaseTitleList | |
| Database_xml | – sequence: 1 dbid: RIE name: IEEE Electronic Library (IEL) url: https://ieeexplore.ieee.org/ sourceTypes: Publisher |
| DeliveryMethod | fulltext_linktorsrc |
| Discipline | Computer Science |
| EISBN | 9798350395099 |
| EISSN | 2643-2838 |
| EndPage | 232 |
| ExternalDocumentID | 10444865 |
| Genre | orig-research |
| GroupedDBID | 29O 6IE 6IF 6IK 6IL 6IN AAJGR ABLEC ADZIZ ALMA_UNASSIGNED_HOLDINGS BEFXN BFFAM BGNUA BKEBE BPEOZ CBEJK CHZPO IEGSK IPLJI OCL RIE RIL |
| ID | FETCH-LOGICAL-a290t-e2ec1b775e1a3859ee7db5a8dbebf059acd9a72731e848851f9908b8099a23cd3 |
| IEDL.DBID | RIE |
| ISICitedReferencesCount | 0 |
| ISICitedReferencesURI | http://www.webofscience.com/api/gateway?GWVersion=2&SrcApp=Summon&SrcAuth=ProQuest&DestLinkType=CitingArticles&DestApp=WOS_CPL&KeyUT=001179185400018&url=https%3A%2F%2Fcvtisr.summon.serialssolutions.com%2F%23%21%2Fsearch%3Fho%3Df%26include.ft.matches%3Dt%26l%3Dnull%26q%3D |
| IngestDate | Wed Aug 27 02:18:31 EDT 2025 |
| IsPeerReviewed | false |
| IsScholarly | true |
| Language | English |
| LinkModel | DirectLink |
| MergedId | FETCHMERGED-LOGICAL-a290t-e2ec1b775e1a3859ee7db5a8dbebf059acd9a72731e848851f9908b8099a23cd3 |
| PageCount | 12 |
| ParticipantIDs | ieee_primary_10444865 |
| PublicationCentury | 2000 |
| PublicationDate | 2024-March-2 |
| PublicationDateYYYYMMDD | 2024-03-02 |
| PublicationDate_xml | – month: 03 year: 2024 text: 2024-March-2 day: 02 |
| PublicationDecade | 2020 |
| PublicationTitle | Proceedings / International Symposium on Code Generation and Optimization |
| PublicationTitleAbbrev | CGO |
| PublicationYear | 2024 |
| Publisher | IEEE |
| Publisher_xml | – name: IEEE |
| SSID | ssj0027413 ssib057256076 |
| Score | 2.2555661 |
| Snippet | Incremental builds are commonly employed in software development, involving minor changes to existing source code that is then frequently recompiled. Speeding... |
| SourceID | ieee |
| SourceType | Publisher |
| StartPage | 221 |
| SubjectTerms | C++ languages Codes Optimization Software Source coding Transforms |
| Title | Enabling Fine-Grained Incremental Builds by Making Compiler Stateful |
| URI | https://ieeexplore.ieee.org/document/10444865 |
| WOSCitedRecordID | wos001179185400018&url=https%3A%2F%2Fcvtisr.summon.serialssolutions.com%2F%23%21%2Fsearch%3Fho%3Df%26include.ft.matches%3Dt%26l%3Dnull%26q%3D |
| hasFullText | 1 |
| inHoldings | 1 |
| isFullTextHit | |
| isPrint | |
| link | http://cvtisr.summon.serialssolutions.com/2.0.0/link/0/eLvHCXMwlV07T8MwELZoxcBUHkW85YE1pXac2F4pbVkoHUDqVvlxlpCqFvWB1H_P2U2KGBjYIis6WZecv-8cf_kIubey9Dp4l1klDTYowmQKcTUT2nubB8GZcMlsQo5GajLR40qsnrQwAJAOn0EnXqZv-X7hNnGrDCtcYDdRFg3SkLLcibXql6eQEbwjtu67LZZXkmDW1Q-94StS67yLLSEXnTrSL0-VBCmD1j8nc0zaP-I8Ot7Dzgk5gPkpadXuDLQq1jPy1I-yKLyFDpBJZsPoBQGe4oKw2xI0M_oYPbFX1G7pSzKlojEKLhMYJXLQsJm1yfug_9Z7zirPhMxw3V1nwMExK2UBzOSq0ADS28Iob8EGpFLGeW0iZ2GgsHYLFhCOlFVIFA3Pnc_PSXO-mMMFoTz3jEnDBNMgHFIJVUBphQgBQ3MIl6QdszL93P0WY1on5OqP8WtyFHOfDnDxG9JcLzdwSw7d1_pjtbxLD_Mb2JWeSA |
| linkProvider | IEEE |
| linkToHtml | http://cvtisr.summon.serialssolutions.com/2.0.0/link/0/eLvHCXMwlV3JTsMwELWgIMGpLEXs-MA1JXbsxrlSuiDa0kORequ8TCSkqkVdkPh7xm5SxIEDt8iKRpHt8Xtj--URcm_ShstyZyOjUo0FitCRQlyNROacSXLBmbDBbCIdDNR4nA0LsXrQwgBAuHwGdf8YzvLd3K79VhlmuMBqoiF3yZ4UgscbuVY5fWTq4duj67beYkkhCmZx9tDsvCK5TmIsCrmol7F-uaoEUGlX__k5R6T2I8-jwy3wHJMdmJ2QaunPQIt0PSVPLS-MwldoG7lk1PFuEOAoLgmbTUE9pY_eFXtJzRftB1sq6qPgQoFRPAvN19MaeWu3Rs1uVLgmRJpn8SoCDpaZNJXAdKJkBpA6I7VyBkyOZEpbl2nPWhgozF7JcgQkZRRSRc0T65IzUpnNZ3BOKE8cY6lmgmUgLJIJJaFhhMhzDM0hvyA13yuTj82PMSZlh1z-0X5HDrqjfm_Sex68XJFDPw7hOhe_JpXVYg03ZN9-rt6Xi9swsN9G9aGP |
| openUrl | ctx_ver=Z39.88-2004&ctx_enc=info%3Aofi%2Fenc%3AUTF-8&rfr_id=info%3Asid%2Fsummon.serialssolutions.com&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=proceeding&rft.title=Proceedings+%2F+International+Symposium+on+Code+Generation+and+Optimization&rft.atitle=Enabling+Fine-Grained+Incremental+Builds+by+Making+Compiler+Stateful&rft.au=Han%2C+Ruobing&rft.au=Zhao%2C+Jisheng&rft.au=Kim%2C+Hyesoon&rft.date=2024-03-02&rft.pub=IEEE&rft.eissn=2643-2838&rft.spage=221&rft.epage=232&rft_id=info:doi/10.1109%2FCGO57630.2024.10444865&rft.externalDocID=10444865 |