{"id":"https://openalex.org/W3139323122","doi":"https://doi.org/10.1109/cgo51591.2021.9370333","title":"BuildIt: A Type-Based Multi-stage Programming Framework for Code Generation in C++","display_name":"BuildIt: A Type-Based Multi-stage Programming Framework for Code Generation in C++","publication_year":2021,"publication_date":"2021-02-27","ids":{"openalex":"https://openalex.org/W3139323122","doi":"https://doi.org/10.1109/cgo51591.2021.9370333","mag":"3139323122"},"language":"en","primary_location":{"id":"doi:10.1109/cgo51591.2021.9370333","is_oa":false,"landing_page_url":"https://doi.org/10.1109/cgo51591.2021.9370333","pdf_url":null,"source":null,"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"2021 IEEE/ACM International Symposium on Code Generation and Optimization (CGO)","raw_type":"proceedings-article"},"type":"article","indexed_in":["crossref"],"open_access":{"is_oa":false,"oa_status":"closed","oa_url":null,"any_repository_has_fulltext":false},"authorships":[{"author_position":"first","author":{"id":"https://openalex.org/A5046807118","display_name":"Ajay Brahmakshatriya","orcid":"https://orcid.org/0000-0002-5295-4186"},"institutions":[],"countries":[],"is_corresponding":true,"raw_author_name":"Ajay Brahmakshatriya","raw_affiliation_strings":["CSAIL, MIT, Cambridge, USA"],"affiliations":[{"raw_affiliation_string":"CSAIL, MIT, Cambridge, USA","institution_ids":[]}]},{"author_position":"last","author":{"id":"https://openalex.org/A5046791216","display_name":"Saman Amarasinghe","orcid":"https://orcid.org/0000-0002-7231-7643"},"institutions":[],"countries":[],"is_corresponding":false,"raw_author_name":"Saman Amarasinghe","raw_affiliation_strings":["CSAIL, MIT, Cambridge, USA"],"affiliations":[{"raw_affiliation_string":"CSAIL, MIT, Cambridge, USA","institution_ids":[]}]}],"institutions":[],"countries_distinct_count":0,"institutions_distinct_count":2,"corresponding_author_ids":["https://openalex.org/A5046807118"],"corresponding_institution_ids":[],"apc_list":null,"apc_paid":null,"fwci":2.7634,"has_fulltext":false,"cited_by_count":15,"citation_normalized_percentile":{"value":0.90107289,"is_in_top_1_percent":false,"is_in_top_10_percent":true},"cited_by_percentile_year":{"min":89,"max":99},"biblio":{"volume":null,"issue":null,"first_page":"39","last_page":"51"},"is_retracted":false,"is_paratext":false,"is_xpac":false,"primary_topic":{"id":"https://openalex.org/T10054","display_name":"Parallel Computing and Optimization Techniques","score":0.9995999932289124,"subfield":{"id":"https://openalex.org/subfields/1708","display_name":"Hardware and Architecture"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},"topics":[{"id":"https://openalex.org/T10054","display_name":"Parallel Computing and Optimization Techniques","score":0.9995999932289124,"subfield":{"id":"https://openalex.org/subfields/1708","display_name":"Hardware and Architecture"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},{"id":"https://openalex.org/T10126","display_name":"Logic, programming, and type systems","score":0.9991999864578247,"subfield":{"id":"https://openalex.org/subfields/1702","display_name":"Artificial Intelligence"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},{"id":"https://openalex.org/T11450","display_name":"Model-Driven Software Engineering Techniques","score":0.9959999918937683,"subfield":{"id":"https://openalex.org/subfields/1712","display_name":"Software"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}}],"keywords":[{"id":"https://openalex.org/keywords/computer-science","display_name":"Computer science","score":0.9009561538696289},{"id":"https://openalex.org/keywords/toolchain","display_name":"Toolchain","score":0.8668875098228455},{"id":"https://openalex.org/keywords/programming-language","display_name":"Programming language","score":0.7736796140670776},{"id":"https://openalex.org/keywords/control-flow","display_name":"Control flow","score":0.6289410591125488},{"id":"https://openalex.org/keywords/digital-subscriber-line","display_name":"Digital subscriber line","score":0.5933778285980225},{"id":"https://openalex.org/keywords/language-construct","display_name":"Language construct","score":0.5925887823104858},{"id":"https://openalex.org/keywords/compiler","display_name":"Compiler","score":0.5878151059150696},{"id":"https://openalex.org/keywords/functional-programming","display_name":"Functional programming","score":0.5161124467849731},{"id":"https://openalex.org/keywords/type-inference","display_name":"Type inference","score":0.48464757204055786},{"id":"https://openalex.org/keywords/code-generation","display_name":"Code generation","score":0.48143407702445984},{"id":"https://openalex.org/keywords/scala","display_name":"Scala","score":0.4367642104625702},{"id":"https://openalex.org/keywords/code","display_name":"Code (set theory)","score":0.4202178120613098},{"id":"https://openalex.org/keywords/parsing","display_name":"Parsing","score":0.4129372239112854},{"id":"https://openalex.org/keywords/abstract-syntax","display_name":"Abstract syntax","score":0.4125911593437195},{"id":"https://openalex.org/keywords/semantics","display_name":"Semantics (computer science)","score":0.33575016260147095},{"id":"https://openalex.org/keywords/operating-system","display_name":"Operating system","score":0.23875689506530762},{"id":"https://openalex.org/keywords/java","display_name":"Java","score":0.2184511125087738},{"id":"https://openalex.org/keywords/key","display_name":"Key (lock)","score":0.2017553150653839},{"id":"https://openalex.org/keywords/artificial-intelligence","display_name":"Artificial intelligence","score":0.18917766213417053},{"id":"https://openalex.org/keywords/software","display_name":"Software","score":0.15545806288719177},{"id":"https://openalex.org/keywords/inference","display_name":"Inference","score":0.1428758203983307}],"concepts":[{"id":"https://openalex.org/C41008148","wikidata":"https://www.wikidata.org/wiki/Q21198","display_name":"Computer science","level":0,"score":0.9009561538696289},{"id":"https://openalex.org/C2777062904","wikidata":"https://www.wikidata.org/wiki/Q545406","display_name":"Toolchain","level":3,"score":0.8668875098228455},{"id":"https://openalex.org/C199360897","wikidata":"https://www.wikidata.org/wiki/Q9143","display_name":"Programming language","level":1,"score":0.7736796140670776},{"id":"https://openalex.org/C160191386","wikidata":"https://www.wikidata.org/wiki/Q868299","display_name":"Control flow","level":2,"score":0.6289410591125488},{"id":"https://openalex.org/C201374245","wikidata":"https://www.wikidata.org/wiki/Q104534","display_name":"Digital subscriber line","level":2,"score":0.5933778285980225},{"id":"https://openalex.org/C48859967","wikidata":"https://www.wikidata.org/wiki/Q6486712","display_name":"Language construct","level":2,"score":0.5925887823104858},{"id":"https://openalex.org/C169590947","wikidata":"https://www.wikidata.org/wiki/Q47506","display_name":"Compiler","level":2,"score":0.5878151059150696},{"id":"https://openalex.org/C42383842","wikidata":"https://www.wikidata.org/wiki/Q193076","display_name":"Functional programming","level":2,"score":0.5161124467849731},{"id":"https://openalex.org/C198370458","wikidata":"https://www.wikidata.org/wiki/Q586459","display_name":"Type inference","level":3,"score":0.48464757204055786},{"id":"https://openalex.org/C133162039","wikidata":"https://www.wikidata.org/wiki/Q1061077","display_name":"Code generation","level":3,"score":0.48143407702445984},{"id":"https://openalex.org/C109701466","wikidata":"https://www.wikidata.org/wiki/Q460584","display_name":"Scala","level":3,"score":0.4367642104625702},{"id":"https://openalex.org/C2776760102","wikidata":"https://www.wikidata.org/wiki/Q5139990","display_name":"Code (set theory)","level":3,"score":0.4202178120613098},{"id":"https://openalex.org/C186644900","wikidata":"https://www.wikidata.org/wiki/Q194152","display_name":"Parsing","level":2,"score":0.4129372239112854},{"id":"https://openalex.org/C114408938","wikidata":"https://www.wikidata.org/wiki/Q333373","display_name":"Abstract syntax","level":3,"score":0.4125911593437195},{"id":"https://openalex.org/C184337299","wikidata":"https://www.wikidata.org/wiki/Q1437428","display_name":"Semantics (computer science)","level":2,"score":0.33575016260147095},{"id":"https://openalex.org/C111919701","wikidata":"https://www.wikidata.org/wiki/Q9135","display_name":"Operating system","level":1,"score":0.23875689506530762},{"id":"https://openalex.org/C548217200","wikidata":"https://www.wikidata.org/wiki/Q251","display_name":"Java","level":2,"score":0.2184511125087738},{"id":"https://openalex.org/C26517878","wikidata":"https://www.wikidata.org/wiki/Q228039","display_name":"Key (lock)","level":2,"score":0.2017553150653839},{"id":"https://openalex.org/C154945302","wikidata":"https://www.wikidata.org/wiki/Q11660","display_name":"Artificial intelligence","level":1,"score":0.18917766213417053},{"id":"https://openalex.org/C2777904410","wikidata":"https://www.wikidata.org/wiki/Q7397","display_name":"Software","level":2,"score":0.15545806288719177},{"id":"https://openalex.org/C2776214188","wikidata":"https://www.wikidata.org/wiki/Q408386","display_name":"Inference","level":2,"score":0.1428758203983307},{"id":"https://openalex.org/C177264268","wikidata":"https://www.wikidata.org/wiki/Q1514741","display_name":"Set (abstract data type)","level":2,"score":0.0},{"id":"https://openalex.org/C76155785","wikidata":"https://www.wikidata.org/wiki/Q418","display_name":"Telecommunications","level":1,"score":0.0}],"mesh":[],"locations_count":1,"locations":[{"id":"doi:10.1109/cgo51591.2021.9370333","is_oa":false,"landing_page_url":"https://doi.org/10.1109/cgo51591.2021.9370333","pdf_url":null,"source":null,"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"2021 IEEE/ACM International Symposium on Code Generation and Optimization (CGO)","raw_type":"proceedings-article"}],"best_oa_location":null,"sustainable_development_goals":[],"awards":[{"id":"https://openalex.org/G3699551437","display_name":null,"funder_award_id":"HR0011-18- 3\u20130007","funder_id":"https://openalex.org/F4320332180","funder_display_name":"Defense Advanced Research Projects Agency"}],"funders":[{"id":"https://openalex.org/F4320332180","display_name":"Defense Advanced Research Projects Agency","ror":"https://ror.org/02caytj08"}],"has_content":{"grobid_xml":false,"pdf":false},"content_urls":null,"referenced_works_count":43,"referenced_works":["https://openalex.org/W1489951562","https://openalex.org/W1497081062","https://openalex.org/W1532096540","https://openalex.org/W1650987719","https://openalex.org/W1968024460","https://openalex.org/W1986454448","https://openalex.org/W1989988531","https://openalex.org/W1990854931","https://openalex.org/W2006590676","https://openalex.org/W2009403519","https://openalex.org/W2009775190","https://openalex.org/W2020217406","https://openalex.org/W2023541076","https://openalex.org/W2027991598","https://openalex.org/W2054253211","https://openalex.org/W2055312318","https://openalex.org/W2062813067","https://openalex.org/W2083044913","https://openalex.org/W2087929260","https://openalex.org/W2096314727","https://openalex.org/W2102075452","https://openalex.org/W2132598718","https://openalex.org/W2154697693","https://openalex.org/W2166813996","https://openalex.org/W2171334441","https://openalex.org/W2590246587","https://openalex.org/W2612725873","https://openalex.org/W2897764559","https://openalex.org/W2898123186","https://openalex.org/W2898231337","https://openalex.org/W2905135312","https://openalex.org/W2920536219","https://openalex.org/W2949967139","https://openalex.org/W2979609173","https://openalex.org/W3008451639","https://openalex.org/W3013026118","https://openalex.org/W3121402054","https://openalex.org/W3163302786","https://openalex.org/W4240476803","https://openalex.org/W4242355549","https://openalex.org/W4250959568","https://openalex.org/W6629750690","https://openalex.org/W6631562755"],"related_works":["https://openalex.org/W3097949243","https://openalex.org/W3139323122","https://openalex.org/W4233008630","https://openalex.org/W3085129376","https://openalex.org/W2127491409","https://openalex.org/W4223653439","https://openalex.org/W2068706008","https://openalex.org/W2749943653","https://openalex.org/W3093669422","https://openalex.org/W2135265328"],"abstract_inverted_index":{"The":[0],"simplest":[1],"implementation":[2],"of":[3,34,65,77,107,153,181,265,281],"a":[4,75,113,119,143,208,258,266,279],"domain-specific":[5],"language":[6,14,45],"is":[7,51],"to":[8,69,74,83,85,90,156,192,198,210,241,278],"embed":[9],"it":[10,240],"in":[11,79,112,179,285],"an":[12,243,246],"existing":[13],"using":[15,142,239],"operator":[16],"overloading.":[17],"This":[18,95],"way,":[19],"the":[20,32,39,52,63,104,110,154,164,193,217,251,262],"DSL":[21,58],"can":[22,173,230],"inherit":[23],"parsing,":[24],"syntax":[25,99],"and":[26,31,36,81,93,100,137,139,162,184,214,222],"type":[27],"checking,":[28],"error":[29],"handling,":[30],"toolchain":[33],"debuggers":[35],"IDEs":[37],"from":[38,234],"host":[40,44],"language.":[41,248],"A":[42],"natural":[43],"choice":[46],"for":[47,138,202,216,245],"most":[48,286],"high-performance":[49,54],"DSLs":[50],"de-facto":[53],"language,":[55],"C++.":[56],"However,":[57],"designers":[59],"quickly":[60],"run":[61],"into":[62],"problem":[64,127,259,269],"not":[66,102],"being":[67],"able":[68],"extract":[70],"control":[71,131,159],"flows":[72],"due":[73],"lack":[76],"introspection":[78,273],"C++":[80],"have":[82],"resort":[84],"special":[86],"functions":[87],"with":[88],"lambdas":[89,111],"represent":[91],"loops":[92,141],"conditionals.":[94],"approach":[96],"introduces":[97],"unnecessary":[98],"does":[101],"capture":[103],"side":[105],"effects":[106],"updates":[108],"inside":[109],"safe":[114],"way.":[115],"We":[116,169,187,225],"present":[117],"BuildIt,":[118],"type-based":[120],"multi-stage":[121],"execution":[122,152,185],"framework":[123],"that":[124,171,228],"solves":[125],"this":[126,149,175],"by":[128,150,167,238,260],"extracting":[129],"all":[130,158],"flow":[132,160],"operators":[133],"like":[134,272],"if-then-else":[135],"conditionals":[136],"while":[140,219],"pure":[144],"library":[145],"approach.":[146],"BuildIt":[147,172,206,229,249],"achieves":[148],"repeated":[151],"program":[155],"explore":[157],"paths":[161],"construct":[163],"AST":[165],"piece":[166],"piece.":[168],"show":[170],"do":[174],"without":[176],"exponential":[177],"blow-up":[178],"terms":[180],"output":[182],"size":[183],"time.":[186],"apply":[188],"BuildIt's":[189],"staging":[190],"capabilities":[191],"state-of-the-art":[194],"tensor":[195],"compiler":[196,276],"TACO":[197],"generate":[199,231],"low-level":[200],"IR":[201],"custom-level":[203],"formats.":[204],"Thus,":[205],"offers":[207],"way":[209,252],"get":[211],"both":[212],"generalization":[213],"programmability":[215],"user":[218],"generating":[220],"specialized":[221,275],"efficient":[223],"code.":[224],"also":[226],"demonstrate":[227],"rich":[232],"control-flow":[233],"relatively":[235],"simple":[236],"code":[237],"stage":[242],"interpreter":[244],"esoteric":[247],"changes":[250],"we":[253],"think":[254],"about":[255],"multi-staging":[256],"as":[257],"reducing":[261],"PL":[263],"complexity":[264],"supposedly":[267],"harder":[268],"requiring":[270],"features":[271,283],"or":[274],"support":[277],"set":[280],"common":[282],"found":[284],"languages.":[287]},"counts_by_year":[{"year":2025,"cited_by_count":3},{"year":2024,"cited_by_count":7},{"year":2023,"cited_by_count":4},{"year":2022,"cited_by_count":1}],"updated_date":"2025-11-06T03:46:38.306776","created_date":"2025-10-10T00:00:00"}
