{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,6,18]],"date-time":"2026-06-18T06:45:57Z","timestamp":1781765157750,"version":"3.54.5"},"reference-count":35,"publisher":"Association for Computing Machinery (ACM)","issue":"ICFP","license":[{"start":{"date-parts":[[2018,7,30]],"date-time":"2018-07-30T00:00:00Z","timestamp":1532908800000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0\/"}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["Proc. ACM Program. Lang."],"published-print":{"date-parts":[[2018,7,30]]},"abstract":"<jats:p>Build systems are awesome, terrifying -- and unloved. They are used by every developer around the world, but are rarely the object of study. In this paper we offer a systematic, and executable, framework for developing and comparing build systems, viewing them as related points in landscape rather than as isolated phenomena. By teasing apart existing build systems, we can recombine their components, allowing us to prototype new build systems with desired properties.<\/jats:p>","DOI":"10.1145\/3236774","type":"journal-article","created":{"date-parts":[[2018,7,31]],"date-time":"2018-07-31T19:41:18Z","timestamp":1533066078000},"page":"1-29","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":28,"title":["Build systems \u00e0 la carte"],"prefix":"10.1145","volume":"2","author":[{"given":"Andrey","family":"Mokhov","sequence":"first","affiliation":[{"name":"Newcastle University, UK"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Neil","family":"Mitchell","sequence":"additional","affiliation":[{"name":"Digital Asset, UK"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Simon","family":"Peyton Jones","sequence":"additional","affiliation":[{"name":"Microsoft Research, UK"}],"role":[{"vocabulary":"crossref","role":"author"}]}],"member":"320","published-online":{"date-parts":[[2018,7,30]]},"reference":[{"key":"e_1_2_2_1_1","doi-asserted-by":"publisher","DOI":"10.1145\/503272.503296"},{"key":"e_1_2_2_2_1","doi-asserted-by":"publisher","DOI":"10.5555\/1762174.1762216"},{"key":"e_1_2_2_3_1","unstructured":"Daniel J. Bernstein. 2003. Rebuilding target files when source files have changed. (2003). http:\/\/cr.yp.to\/redo.html .  Daniel J. Bernstein. 2003. Rebuilding target files when source files have changed. (2003). http:\/\/cr.yp.to\/redo.html ."},{"key":"e_1_2_2_4_1","doi-asserted-by":"publisher","DOI":"10.4204\/EPTCS.153.2"},{"key":"e_1_2_2_5_1","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796899003342"},{"key":"e_1_2_2_6_1","unstructured":"T.H. Cormen C.E. Leiserson R.L. Rivest and C. Stein. 2001. Introduction To Algorithms. MIT Press.   T.H. Cormen C.E. Leiserson R.L. Rivest and C. Stein. 2001. Introduction To Algorithms. MIT Press."},{"key":"e_1_2_2_7_1","volume-title":"Advanced Excel for Scientific Data Analysis","author":"Levie R. De","unstructured":"R. De Levie . 2004. Advanced Excel for Scientific Data Analysis . Oxford University Press . R. De Levie. 2004. Advanced Excel for Scientific Data Analysis. Oxford University Press."},{"key":"e_1_2_2_8_1","doi-asserted-by":"publisher","DOI":"10.1145\/567532.567544"},{"key":"e_1_2_2_9_1","first-page":"79","article-title":"Nix: A Safe and Policy-Free System for Software Deployment","volume":"4","author":"Dolstra Eelco","year":"2004","unstructured":"Eelco Dolstra , Merijn De Jonge , Eelco Visser , 2004 . Nix: A Safe and Policy-Free System for Software Deployment . In LISA , Vol. 4. 79 \u2013 92 . Eelco Dolstra, Merijn De Jonge, Eelco Visser, et al. 2004. Nix: A Safe and Policy-Free System for Software Deployment. In LISA, Vol. 4. 79\u201392.","journal-title":"LISA"},{"key":"e_1_2_2_10_1","doi-asserted-by":"publisher","DOI":"10.1145\/2814270.2814316"},{"key":"e_1_2_2_11_1","doi-asserted-by":"publisher","DOI":"10.1145\/2889160.2889222"},{"key":"e_1_2_2_12_1","volume-title":"Buck: A high-performance build tool.","year":"2013","unstructured":"Facebook. 2013 . Buck: A high-performance build tool. (2013). https:\/\/buckbuild.com\/ . Facebook. 2013. Buck: A high-performance build tool. (2013). https:\/\/buckbuild.com\/ ."},{"key":"e_1_2_2_13_1","volume-title":"Make\u2014A program for maintaining computer programs. Software: Practice and experience 9, 4","author":"Feldman Stuart I","year":"1979","unstructured":"Stuart I Feldman . 1979. Make\u2014A program for maintaining computer programs. Software: Practice and experience 9, 4 ( 1979 ), 255\u2013265. Stuart I Feldman. 1979. Make\u2014A program for maintaining computer programs. Software: Practice and experience 9, 4 (1979), 255\u2013265."},{"key":"e_1_2_2_14_1","unstructured":"Google. 2016. Bazel. (2016). http:\/\/bazel.io\/ .  Google. 2016. Bazel. (2016). http:\/\/bazel.io\/ ."},{"key":"e_1_2_2_15_1","volume-title":"Reflow: A system for incremental data processing in the cloud.","author":"GRAIL.","year":"2017","unstructured":"GRAIL. 2017 . Reflow: A system for incremental data processing in the cloud. (2017). https:\/\/github.com\/grailbio\/reflow . GRAIL. 2017. Reflow: A system for incremental data processing in the cloud. (2017). https:\/\/github.com\/grailbio\/reflow ."},{"key":"e_1_2_2_16_1","volume-title":"Purely top-down software rebuilding. Master\u2019s thesis","author":"Grosskurth Alan","unstructured":"Alan Grosskurth . 2007. Purely top-down software rebuilding. Master\u2019s thesis . University of Waterloo . Alan Grosskurth. 2007. Purely top-down software rebuilding. Master\u2019s thesis. University of Waterloo."},{"key":"e_1_2_2_17_1","volume-title":"Fabricate: The better build tool.","author":"Hoyt Berwyn","year":"2009","unstructured":"Berwyn Hoyt , Bryan Hoyt , and Ben Hoyt . 2009 . Fabricate: The better build tool. (2009). https:\/\/github.com\/SimonAlfie\/ fabricate . Berwyn Hoyt, Bryan Hoyt, and Ben Hoyt. 2009. Fabricate: The better build tool. (2009). https:\/\/github.com\/SimonAlfie\/ fabricate ."},{"key":"e_1_2_2_18_1","doi-asserted-by":"publisher","DOI":"10.1016\/S0167-6423(99)00023-4"},{"key":"e_1_2_2_19_1","unstructured":"Solomon Hykes. 2013. Docker container: A standardized unit of software. (2013). https:\/\/www.docker.com\/what-container .  Solomon Hykes. 2013. Docker container: A standardized unit of software. (2013). https:\/\/www.docker.com\/what-container ."},{"key":"e_1_2_2_20_1","volume-title":"Incremental: A library for incremental computations.","author":"Street Jane","year":"2015","unstructured":"Jane Street . 2015 . Incremental: A library for incremental computations. (2015). https:\/\/github.com\/janestreet\/incremental . Jane Street. 2015. Incremental: A library for incremental computations. (2015). https:\/\/github.com\/janestreet\/incremental ."},{"key":"e_1_2_2_21_1","volume-title":"Dune: A composable build system.","author":"Street Jane","year":"2018","unstructured":"Jane Street . 2018 . Dune: A composable build system. (2018). https:\/\/github.com\/ocaml\/dune . Jane Street. 2018. Dune: A composable build system. (2018). https:\/\/github.com\/ocaml\/dune ."},{"key":"e_1_2_2_22_1","volume-title":"Soviet physics doklady","author":"Levenshtein Vladimir I","unstructured":"Vladimir I Levenshtein . 1966. Binary codes capable of correcting deletions, insertions, and reversals . In Soviet physics doklady , Vol. 10 . 707\u2013710. Vladimir I Levenshtein. 1966. Binary codes capable of correcting deletions, insertions, and reversals. In Soviet physics doklady, Vol. 10. 707\u2013710."},{"key":"e_1_2_2_23_1","doi-asserted-by":"publisher","DOI":"10.1145\/199448.199528"},{"key":"e_1_2_2_24_1","doi-asserted-by":"publisher","DOI":"10.1145\/2692915.2628144"},{"key":"e_1_2_2_25_1","unstructured":"Evan Martin. 2017. Ninja build system homepage. (2017). https:\/\/ninja-build.org\/ .  Evan Martin. 2017. Ninja build system homepage. (2017). https:\/\/ninja-build.org\/ ."},{"key":"e_1_2_2_26_1","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796807006326"},{"key":"e_1_2_2_27_1","unstructured":"Microsoft. 2011. Excel Recalculation (MSDN documentation). (2011). https:\/\/msdn.microsoft.com\/en-us\/library\/office\/ bb687891.aspx . Also available in Internet Archive https:\/\/web.archive.org\/web\/20180308150857\/https:\/\/msdn.microsoft. com\/en-us\/library\/office\/bb687891.aspx .  Microsoft. 2011. Excel Recalculation (MSDN documentation). (2011). https:\/\/msdn.microsoft.com\/en-us\/library\/office\/ bb687891.aspx . Also available in Internet Archive https:\/\/web.archive.org\/web\/20180308150857\/https:\/\/msdn.microsoft. com\/en-us\/library\/office\/bb687891.aspx ."},{"key":"e_1_2_2_28_1","unstructured":"Microsoft. 2017. Git Virtual File System. (2017). https:\/\/www.gvfs.io\/ .  Microsoft. 2017. Git Virtual File System. (2017). https:\/\/www.gvfs.io\/ ."},{"key":"e_1_2_2_29_1","doi-asserted-by":"publisher","DOI":"10.1145\/2398856.2364538"},{"key":"e_1_2_2_30_1","unstructured":"Neil Mitchell. 2013. How to write fixed point build rules in Shake. (2013). https:\/\/stackoverflow.com\/questions\/14622169\/ how-to-write-fixed-point-build-rules-in-shake-e-g-latex .  Neil Mitchell. 2013. How to write fixed point build rules in Shake. (2013). https:\/\/stackoverflow.com\/questions\/14622169\/ how-to-write-fixed-point-build-rules-in-shake-e-g-latex ."},{"key":"e_1_2_2_31_1","doi-asserted-by":"publisher","DOI":"10.1145\/2976002.2976011"},{"key":"e_1_2_2_32_1","unstructured":"Avery Pennarun. 2012. redo: a top-down software build system. (2012). https:\/\/github.com\/apenwarr\/redo .  Avery Pennarun. 2012. redo: a top-down software build system. (2012). https:\/\/github.com\/apenwarr\/redo ."},{"key":"e_1_2_2_33_1","unstructured":"Fran\u00e7ois Pottier. 2009. Lazy least fixed points in ML. (2009). http:\/\/gallium.inria.fr\/~fpottier\/publis\/fpottier-fix.pdf .  Fran\u00e7ois Pottier. 2009. Lazy least fixed points in ML. (2009). http:\/\/gallium.inria.fr\/~fpottier\/publis\/fpottier-fix.pdf ."},{"key":"e_1_2_2_34_1","unstructured":"Alexey Radul. 2009. Propagation Networks: A Flexible and Expressive Substrate for Computation. Ph.D. Dissertation. MIT.  Alexey Radul. 2009. Propagation Networks: A Flexible and Expressive Substrate for Computation. Ph.D. Dissertation. MIT."},{"key":"e_1_2_2_35_1","unstructured":"Mike Shal. 2009. Build System Rules and Algorithms. (2009). http:\/\/gittup.org\/tup\/build_system_rules_and_algorithms.pdf\/ .  Mike Shal. 2009. Build System Rules and Algorithms. (2009). http:\/\/gittup.org\/tup\/build_system_rules_and_algorithms.pdf\/ ."}],"container-title":["Proceedings of the ACM on Programming Languages"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3236774","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3236774","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T21:41:28Z","timestamp":1750282888000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3236774"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2018,7,30]]},"references-count":35,"journal-issue":{"issue":"ICFP","published-print":{"date-parts":[[2018,7,30]]}},"alternative-id":["10.1145\/3236774"],"URL":"https:\/\/doi.org\/10.1145\/3236774","relation":{},"ISSN":["2475-1421"],"issn-type":[{"value":"2475-1421","type":"electronic"}],"subject":[],"published":{"date-parts":[[2018,7,30]]},"assertion":[{"value":"2018-07-30","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}