{"id":"https://openalex.org/W3201219443","doi":"https://doi.org/10.1145/3485513","title":"Copy-and-patch compilation: a fast compilation algorithm for high-level languages and bytecode","display_name":"Copy-and-patch compilation: a fast compilation algorithm for high-level languages and bytecode","publication_year":2021,"publication_date":"2021-10-15","ids":{"openalex":"https://openalex.org/W3201219443","doi":"https://doi.org/10.1145/3485513","mag":"3201219443"},"language":"en","primary_location":{"id":"doi:10.1145/3485513","is_oa":true,"landing_page_url":"https://doi.org/10.1145/3485513","pdf_url":"https://dl.acm.org/doi/pdf/10.1145/3485513","source":{"id":"https://openalex.org/S4210216081","display_name":"Proceedings of the ACM on Programming Languages","issn_l":"2475-1421","issn":["2475-1421"],"is_oa":true,"is_in_doaj":false,"is_core":true,"host_organization":"https://openalex.org/P4310319798","host_organization_name":"Association for Computing Machinery","host_organization_lineage":["https://openalex.org/P4310319798"],"host_organization_lineage_names":["Association for Computing Machinery"],"type":"journal"},"license":"cc-by","license_id":"https://openalex.org/licenses/cc-by","version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the ACM on Programming Languages","raw_type":"journal-article"},"type":"preprint","indexed_in":["arxiv","crossref","datacite"],"open_access":{"is_oa":true,"oa_status":"diamond","oa_url":"https://dl.acm.org/doi/pdf/10.1145/3485513","any_repository_has_fulltext":true},"authorships":[{"author_position":"first","author":{"id":"https://openalex.org/A5073352990","display_name":"Haoran Xu","orcid":"https://orcid.org/0009-0005-4190-5257"},"institutions":[{"id":"https://openalex.org/I97018004","display_name":"Stanford University","ror":"https://ror.org/00f54p054","country_code":"US","type":"education","lineage":["https://openalex.org/I97018004"]}],"countries":["US"],"is_corresponding":true,"raw_author_name":"Haoran Xu","raw_affiliation_strings":["Stanford University, USA","Stanford University ()"],"affiliations":[{"raw_affiliation_string":"Stanford University, USA","institution_ids":["https://openalex.org/I97018004"]},{"raw_affiliation_string":"Stanford University ()","institution_ids":["https://openalex.org/I97018004"]}]},{"author_position":"last","author":{"id":"https://openalex.org/A5041886781","display_name":"Fredrik Kj\u00f8lstad","orcid":"https://orcid.org/0000-0002-2267-903X"},"institutions":[{"id":"https://openalex.org/I97018004","display_name":"Stanford University","ror":"https://ror.org/00f54p054","country_code":"US","type":"education","lineage":["https://openalex.org/I97018004"]}],"countries":["US"],"is_corresponding":false,"raw_author_name":"Fredrik Kjolstad","raw_affiliation_strings":["Stanford University, USA","Stanford University ()"],"affiliations":[{"raw_affiliation_string":"Stanford University, USA","institution_ids":["https://openalex.org/I97018004"]},{"raw_affiliation_string":"Stanford University ()","institution_ids":["https://openalex.org/I97018004"]}]}],"institutions":[],"countries_distinct_count":1,"institutions_distinct_count":2,"corresponding_author_ids":["https://openalex.org/A5073352990"],"corresponding_institution_ids":["https://openalex.org/I97018004"],"apc_list":null,"apc_paid":null,"fwci":0.0,"has_fulltext":true,"cited_by_count":0,"citation_normalized_percentile":{"value":0.14276904,"is_in_top_1_percent":false,"is_in_top_10_percent":false},"cited_by_percentile_year":null,"biblio":{"volume":"5","issue":"OOPSLA","first_page":"1","last_page":"30"},"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.9994999766349792,"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.9994999766349792,"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.9940999746322632,"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/T10715","display_name":"Distributed and Parallel Computing Systems","score":0.9883999824523926,"subfield":{"id":"https://openalex.org/subfields/1705","display_name":"Computer Networks and Communications"},"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.863028883934021},{"id":"https://openalex.org/keywords/compiler","display_name":"Compiler","score":0.8112269043922424},{"id":"https://openalex.org/keywords/programming-language","display_name":"Programming language","score":0.6231771111488342},{"id":"https://openalex.org/keywords/bytecode","display_name":"Bytecode","score":0.6172245144844055},{"id":"https://openalex.org/keywords/dead-code-elimination","display_name":"Dead code elimination","score":0.5650418996810913},{"id":"https://openalex.org/keywords/code-generation","display_name":"Code generation","score":0.5207576751708984},{"id":"https://openalex.org/keywords/parallel-computing","display_name":"Parallel computing","score":0.5137180089950562},{"id":"https://openalex.org/keywords/bootstrapping","display_name":"Bootstrapping (finance)","score":0.4837353527545929},{"id":"https://openalex.org/keywords/machine-code","display_name":"Machine code","score":0.48087695240974426},{"id":"https://openalex.org/keywords/optimizing-compiler","display_name":"Optimizing compiler","score":0.46815231442451477},{"id":"https://openalex.org/keywords/interprocedural-optimization","display_name":"Interprocedural optimization","score":0.4329800307750702},{"id":"https://openalex.org/keywords/just-in-time-compilation","display_name":"Just-in-time compilation","score":0.4270508587360382},{"id":"https://openalex.org/keywords/code","display_name":"Code (set theory)","score":0.4221377372741699},{"id":"https://openalex.org/keywords/operating-system","display_name":"Operating system","score":0.3050680160522461},{"id":"https://openalex.org/keywords/redundant-code","display_name":"Redundant code","score":0.25188612937927246},{"id":"https://openalex.org/keywords/virtual-machine","display_name":"Virtual machine","score":0.2043761909008026},{"id":"https://openalex.org/keywords/loop-optimization","display_name":"Loop optimization","score":0.1785704493522644},{"id":"https://openalex.org/keywords/key","display_name":"Key (lock)","score":0.09801766276359558},{"id":"https://openalex.org/keywords/mathematics","display_name":"Mathematics","score":0.07365214824676514}],"concepts":[{"id":"https://openalex.org/C41008148","wikidata":"https://www.wikidata.org/wiki/Q21198","display_name":"Computer science","level":0,"score":0.863028883934021},{"id":"https://openalex.org/C169590947","wikidata":"https://www.wikidata.org/wiki/Q47506","display_name":"Compiler","level":2,"score":0.8112269043922424},{"id":"https://openalex.org/C199360897","wikidata":"https://www.wikidata.org/wiki/Q9143","display_name":"Programming language","level":1,"score":0.6231771111488342},{"id":"https://openalex.org/C2779818221","wikidata":"https://www.wikidata.org/wiki/Q837330","display_name":"Bytecode","level":3,"score":0.6172245144844055},{"id":"https://openalex.org/C2144512","wikidata":"https://www.wikidata.org/wiki/Q1143090","display_name":"Dead code elimination","level":5,"score":0.5650418996810913},{"id":"https://openalex.org/C133162039","wikidata":"https://www.wikidata.org/wiki/Q1061077","display_name":"Code generation","level":3,"score":0.5207576751708984},{"id":"https://openalex.org/C173608175","wikidata":"https://www.wikidata.org/wiki/Q232661","display_name":"Parallel computing","level":1,"score":0.5137180089950562},{"id":"https://openalex.org/C207609745","wikidata":"https://www.wikidata.org/wiki/Q4944086","display_name":"Bootstrapping (finance)","level":2,"score":0.4837353527545929},{"id":"https://openalex.org/C115168132","wikidata":"https://www.wikidata.org/wiki/Q55813","display_name":"Machine code","level":3,"score":0.48087695240974426},{"id":"https://openalex.org/C190902152","wikidata":"https://www.wikidata.org/wiki/Q1325106","display_name":"Optimizing compiler","level":3,"score":0.46815231442451477},{"id":"https://openalex.org/C111564260","wikidata":"https://www.wikidata.org/wiki/Q4288856","display_name":"Interprocedural optimization","level":5,"score":0.4329800307750702},{"id":"https://openalex.org/C76782552","wikidata":"https://www.wikidata.org/wiki/Q110546","display_name":"Just-in-time compilation","level":3,"score":0.4270508587360382},{"id":"https://openalex.org/C2776760102","wikidata":"https://www.wikidata.org/wiki/Q5139990","display_name":"Code (set theory)","level":3,"score":0.4221377372741699},{"id":"https://openalex.org/C111919701","wikidata":"https://www.wikidata.org/wiki/Q9135","display_name":"Operating system","level":1,"score":0.3050680160522461},{"id":"https://openalex.org/C151578736","wikidata":"https://www.wikidata.org/wiki/Q1251793","display_name":"Redundant code","level":4,"score":0.25188612937927246},{"id":"https://openalex.org/C25344961","wikidata":"https://www.wikidata.org/wiki/Q192726","display_name":"Virtual machine","level":2,"score":0.2043761909008026},{"id":"https://openalex.org/C29331672","wikidata":"https://www.wikidata.org/wiki/Q3354468","display_name":"Loop optimization","level":4,"score":0.1785704493522644},{"id":"https://openalex.org/C26517878","wikidata":"https://www.wikidata.org/wiki/Q228039","display_name":"Key (lock)","level":2,"score":0.09801766276359558},{"id":"https://openalex.org/C33923547","wikidata":"https://www.wikidata.org/wiki/Q395","display_name":"Mathematics","level":0,"score":0.07365214824676514},{"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/C149782125","wikidata":"https://www.wikidata.org/wiki/Q160039","display_name":"Econometrics","level":1,"score":0.0}],"mesh":[],"locations_count":4,"locations":[{"id":"doi:10.1145/3485513","is_oa":true,"landing_page_url":"https://doi.org/10.1145/3485513","pdf_url":"https://dl.acm.org/doi/pdf/10.1145/3485513","source":{"id":"https://openalex.org/S4210216081","display_name":"Proceedings of the ACM on Programming Languages","issn_l":"2475-1421","issn":["2475-1421"],"is_oa":true,"is_in_doaj":false,"is_core":true,"host_organization":"https://openalex.org/P4310319798","host_organization_name":"Association for Computing Machinery","host_organization_lineage":["https://openalex.org/P4310319798"],"host_organization_lineage_names":["Association for Computing Machinery"],"type":"journal"},"license":"cc-by","license_id":"https://openalex.org/licenses/cc-by","version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the ACM on Programming Languages","raw_type":"journal-article"},{"id":"pmh:oai:arXiv.org:2011.13127","is_oa":true,"landing_page_url":"http://arxiv.org/abs/2011.13127","pdf_url":"https://arxiv.org/pdf/2011.13127","source":{"id":"https://openalex.org/S4306400194","display_name":"arXiv (Cornell University)","issn_l":null,"issn":null,"is_oa":true,"is_in_doaj":false,"is_core":false,"host_organization":"https://openalex.org/I205783295","host_organization_name":"Cornell University","host_organization_lineage":["https://openalex.org/I205783295"],"host_organization_lineage_names":[],"type":"repository"},"license":null,"license_id":null,"version":"submittedVersion","is_accepted":false,"is_published":false,"raw_source_name":null,"raw_type":"text"},{"id":"mag:3201219443","is_oa":true,"landing_page_url":"https://arxiv.org/pdf/2011.13127.pdf","pdf_url":null,"source":{"id":"https://openalex.org/S4306400194","display_name":"arXiv (Cornell University)","issn_l":null,"issn":null,"is_oa":true,"is_in_doaj":false,"is_core":false,"host_organization":"https://openalex.org/I205783295","host_organization_name":"Cornell University","host_organization_lineage":["https://openalex.org/I205783295"],"host_organization_lineage_names":[],"type":"repository"},"license":null,"license_id":null,"version":"submittedVersion","is_accepted":false,"is_published":false,"raw_source_name":"arXiv (Cornell University)","raw_type":null},{"id":"doi:10.48550/arxiv.2011.13127","is_oa":true,"landing_page_url":"https://doi.org/10.48550/arxiv.2011.13127","pdf_url":null,"source":{"id":"https://openalex.org/S4306400194","display_name":"arXiv (Cornell University)","issn_l":null,"issn":null,"is_oa":true,"is_in_doaj":false,"is_core":false,"host_organization":"https://openalex.org/I205783295","host_organization_name":"Cornell University","host_organization_lineage":["https://openalex.org/I205783295"],"host_organization_lineage_names":[],"type":"repository"},"license":null,"license_id":null,"version":null,"is_accepted":false,"is_published":null,"raw_source_name":null,"raw_type":"article-journal"}],"best_oa_location":{"id":"doi:10.1145/3485513","is_oa":true,"landing_page_url":"https://doi.org/10.1145/3485513","pdf_url":"https://dl.acm.org/doi/pdf/10.1145/3485513","source":{"id":"https://openalex.org/S4210216081","display_name":"Proceedings of the ACM on Programming Languages","issn_l":"2475-1421","issn":["2475-1421"],"is_oa":true,"is_in_doaj":false,"is_core":true,"host_organization":"https://openalex.org/P4310319798","host_organization_name":"Association for Computing Machinery","host_organization_lineage":["https://openalex.org/P4310319798"],"host_organization_lineage_names":["Association for Computing Machinery"],"type":"journal"},"license":"cc-by","license_id":"https://openalex.org/licenses/cc-by","version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the ACM on Programming Languages","raw_type":"journal-article"},"sustainable_development_goals":[],"awards":[],"funders":[],"has_content":{"grobid_xml":true,"pdf":true},"content_urls":{"pdf":"https://content.openalex.org/works/W3201219443.pdf","grobid_xml":"https://content.openalex.org/works/W3201219443.grobid-xml"},"referenced_works_count":30,"referenced_works":["https://openalex.org/W1519503583","https://openalex.org/W1589656661","https://openalex.org/W1964428590","https://openalex.org/W1971175915","https://openalex.org/W1989988531","https://openalex.org/W2002325351","https://openalex.org/W2018016444","https://openalex.org/W2019722731","https://openalex.org/W2021246880","https://openalex.org/W2024598204","https://openalex.org/W2062414112","https://openalex.org/W2096070062","https://openalex.org/W2106771621","https://openalex.org/W2120575449","https://openalex.org/W2132598718","https://openalex.org/W2137299450","https://openalex.org/W2137406503","https://openalex.org/W2141194372","https://openalex.org/W2160620982","https://openalex.org/W2339802588","https://openalex.org/W2584555500","https://openalex.org/W2590246587","https://openalex.org/W2765206444","https://openalex.org/W2996849306","https://openalex.org/W3003972248","https://openalex.org/W3013026118","https://openalex.org/W4229813677","https://openalex.org/W4232865065","https://openalex.org/W4241563291","https://openalex.org/W4302565961"],"related_works":["https://openalex.org/W3207840788","https://openalex.org/W2764197309","https://openalex.org/W3139973110","https://openalex.org/W2301768425","https://openalex.org/W2048423324","https://openalex.org/W2552803129","https://openalex.org/W2765510215","https://openalex.org/W2134520807","https://openalex.org/W2259134112","https://openalex.org/W150926849","https://openalex.org/W154475364","https://openalex.org/W2147423491","https://openalex.org/W3200251584","https://openalex.org/W3195022246","https://openalex.org/W1973162794","https://openalex.org/W2894643122","https://openalex.org/W2072211164","https://openalex.org/W1994742583","https://openalex.org/W2798992527","https://openalex.org/W2268114144"],"abstract_inverted_index":{"Fast":[0],"compilation":[1,5,30,130],"is":[2,39],"important":[3],"when":[4],"occurs":[6],"at":[7],"runtime,":[8],"such":[9],"as":[10],"query":[11,154],"compilers":[12],"in":[13,21,138,220],"modern":[14,22],"database":[15,153,167],"systems":[16],"and":[17,46,92,119,162,180,201,234],"WebAssembly":[18,208,217,236],"virtual":[19],"machines":[20],"browsers.":[23],"We":[24,65,84,102,148],"present":[25],"copy-and-patch,":[26],"an":[27,136,151,194],"extremely":[28],"fast":[29],"technique":[31],"that":[32,97,164],"also":[33,226],"produces":[34,133],"good":[35],"quality":[36],"code.":[37,101],"It":[38],"capable":[40],"of":[41,61,107,158,174,183,196],"lowering":[42],"both":[43],"high-level":[44,113,125],"languages":[45],"low-level":[47],"bytecode":[48],"programs":[49],"to":[50,87,144],"binary":[51,62,68,100],"code,":[52],"by":[53,229],"stitching":[54],"together":[55],"code":[56,82,134,171,192,211,225],"from":[57,135],"a":[58,89,109,112,120],"large":[59],"library":[60,91],"implementation":[63],"variants.":[64],"call":[66],"these":[67],"implementations":[69],"stencils":[70],"because":[71],"they":[72],"have":[73,149],"holes":[74],"where":[75],"missing":[76],"values":[77],"must":[78],"be":[79],"inserted":[80],"during":[81],"generation.":[83],"show":[85,163],"how":[86],"construct":[88,145],"stencil":[90],"describe":[93],"the":[94,146,216,232],"copy-and-patch":[95,169],"algorithm":[96],"generates":[98,170,210],"optimized":[99],"demonstrate":[103],"two":[104,172],"use":[105],"cases":[106],"copy-and-patch:":[108],"compiler":[110,121,127,155,209,219],"for":[111,117,122],"C-like":[114],"language":[115,126],"intended":[116],"metaprogramming":[118,160],"WebAssembly.":[123],"Our":[124,207],"has":[128],"negligible":[129],"cost:":[131],"it":[132,142],"AST":[137],"less":[139],"time":[140],"than":[141,177,186,199,204,214],"takes":[143],"AST.":[147],"implemented":[150],"SQL":[152],"on":[156,165,231],"top":[157],"this":[159],"system":[161],"TPC-H":[166],"benchmarks,":[168],"orders":[173,182],"magnitude":[175,184,197],"faster":[176,185,198,203,213],"LLVM":[178,205],"-O0":[179],"three":[181],"higher":[187],"optimization":[188],"levels.":[189],"The":[190,223],"generated":[191,224],"runs":[193],"order":[195],"interpretation":[200],"14%":[202],"-O0.":[206],"4.9X-6.5X":[212],"Liftoff,":[215],"baseline":[218],"Google":[221],"Chrome.":[222],"outperforms":[227],"Liftoff's":[228],"39%-63%":[230],"Coremark":[233],"PolyBenchC":[235],"benchmarks.":[237]},"counts_by_year":[],"updated_date":"2026-03-20T23:20:44.827607","created_date":"2025-10-10T00:00:00"}
