{"id":"https://openalex.org/W3175425298","doi":"https://doi.org/10.1145/3453483.3454052","title":"Concise, type-safe, and efficient structural diffing","display_name":"Concise, type-safe, and efficient structural diffing","publication_year":2021,"publication_date":"2021-06-18","ids":{"openalex":"https://openalex.org/W3175425298","doi":"https://doi.org/10.1145/3453483.3454052","mag":"3175425298"},"language":"en","primary_location":{"id":"doi:10.1145/3453483.3454052","is_oa":false,"landing_page_url":"https://doi.org/10.1145/3453483.3454052","pdf_url":null,"source":null,"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation","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/A5059992246","display_name":"Sebastian Erdweg","orcid":"https://orcid.org/0000-0002-1974-5956"},"institutions":[],"countries":[],"is_corresponding":true,"raw_author_name":"Sebastian Erdweg","raw_affiliation_strings":["JGU Mainz, Germany"],"affiliations":[{"raw_affiliation_string":"JGU Mainz, Germany","institution_ids":[]}]},{"author_position":"middle","author":{"id":"https://openalex.org/A5010111965","display_name":"Tam\u00e1s Szab\u00f3","orcid":"https://orcid.org/0000-0001-9422-8142"},"institutions":[],"countries":[],"is_corresponding":false,"raw_author_name":"Tam\u00e1s Szab\u00f3","raw_affiliation_strings":["JGU Mainz, Germany / Workday, Germany"],"affiliations":[{"raw_affiliation_string":"JGU Mainz, Germany / Workday, Germany","institution_ids":[]}]},{"author_position":"last","author":{"id":"https://openalex.org/A5070204643","display_name":"Andr\u00e9 Pacak","orcid":"https://orcid.org/0000-0001-7441-6955"},"institutions":[],"countries":[],"is_corresponding":false,"raw_author_name":"Andr\u00e9 Pacak","raw_affiliation_strings":["JGU Mainz, Germany"],"affiliations":[{"raw_affiliation_string":"JGU Mainz, Germany","institution_ids":[]}]}],"institutions":[],"countries_distinct_count":0,"institutions_distinct_count":3,"corresponding_author_ids":["https://openalex.org/A5059992246"],"corresponding_institution_ids":[],"apc_list":null,"apc_paid":null,"fwci":1.1017,"has_fulltext":false,"cited_by_count":5,"citation_normalized_percentile":{"value":0.82158284,"is_in_top_1_percent":false,"is_in_top_10_percent":false},"cited_by_percentile_year":{"min":91,"max":96},"biblio":{"volume":null,"issue":null,"first_page":"406","last_page":"419"},"is_retracted":false,"is_paratext":false,"is_xpac":false,"primary_topic":{"id":"https://openalex.org/T10260","display_name":"Software Engineering Research","score":0.9994999766349792,"subfield":{"id":"https://openalex.org/subfields/1710","display_name":"Information Systems"},"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/T10260","display_name":"Software Engineering Research","score":0.9994999766349792,"subfield":{"id":"https://openalex.org/subfields/1710","display_name":"Information Systems"},"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/T10181","display_name":"Natural Language Processing Techniques","score":0.9975000023841858,"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/T10743","display_name":"Software Testing and Debugging Techniques","score":0.9975000023841858,"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.7971473932266235},{"id":"https://openalex.org/keywords/python","display_name":"Python (programming language)","score":0.7339186072349548},{"id":"https://openalex.org/keywords/dependent-type","display_name":"Dependent type","score":0.5364371538162231},{"id":"https://openalex.org/keywords/data-structure","display_name":"Data structure","score":0.5252375602722168},{"id":"https://openalex.org/keywords/tree","display_name":"Tree (set theory)","score":0.5148047804832458},{"id":"https://openalex.org/keywords/contrast","display_name":"Contrast (vision)","score":0.5021657943725586},{"id":"https://openalex.org/keywords/programming-language","display_name":"Programming language","score":0.4787839651107788},{"id":"https://openalex.org/keywords/type","display_name":"Type (biology)","score":0.4780878722667694},{"id":"https://openalex.org/keywords/type-safety","display_name":"Type safety","score":0.4412471652030945},{"id":"https://openalex.org/keywords/algorithm","display_name":"Algorithm","score":0.4334821105003357},{"id":"https://openalex.org/keywords/theoretical-computer-science","display_name":"Theoretical computer science","score":0.4300505816936493},{"id":"https://openalex.org/keywords/artificial-intelligence","display_name":"Artificial intelligence","score":0.20177558064460754},{"id":"https://openalex.org/keywords/mathematics","display_name":"Mathematics","score":0.1446063220500946},{"id":"https://openalex.org/keywords/lambda-calculus","display_name":"Lambda calculus","score":0.1330275535583496},{"id":"https://openalex.org/keywords/combinatorics","display_name":"Combinatorics","score":0.08200699090957642}],"concepts":[{"id":"https://openalex.org/C41008148","wikidata":"https://www.wikidata.org/wiki/Q21198","display_name":"Computer science","level":0,"score":0.7971473932266235},{"id":"https://openalex.org/C519991488","wikidata":"https://www.wikidata.org/wiki/Q28865","display_name":"Python (programming language)","level":2,"score":0.7339186072349548},{"id":"https://openalex.org/C20528804","wikidata":"https://www.wikidata.org/wiki/Q997433","display_name":"Dependent type","level":3,"score":0.5364371538162231},{"id":"https://openalex.org/C162319229","wikidata":"https://www.wikidata.org/wiki/Q175263","display_name":"Data structure","level":2,"score":0.5252375602722168},{"id":"https://openalex.org/C113174947","wikidata":"https://www.wikidata.org/wiki/Q2859736","display_name":"Tree (set theory)","level":2,"score":0.5148047804832458},{"id":"https://openalex.org/C2776502983","wikidata":"https://www.wikidata.org/wiki/Q690182","display_name":"Contrast (vision)","level":2,"score":0.5021657943725586},{"id":"https://openalex.org/C199360897","wikidata":"https://www.wikidata.org/wiki/Q9143","display_name":"Programming language","level":1,"score":0.4787839651107788},{"id":"https://openalex.org/C2777299769","wikidata":"https://www.wikidata.org/wiki/Q3707858","display_name":"Type (biology)","level":2,"score":0.4780878722667694},{"id":"https://openalex.org/C44779574","wikidata":"https://www.wikidata.org/wiki/Q736866","display_name":"Type safety","level":2,"score":0.4412471652030945},{"id":"https://openalex.org/C11413529","wikidata":"https://www.wikidata.org/wiki/Q8366","display_name":"Algorithm","level":1,"score":0.4334821105003357},{"id":"https://openalex.org/C80444323","wikidata":"https://www.wikidata.org/wiki/Q2878974","display_name":"Theoretical computer science","level":1,"score":0.4300505816936493},{"id":"https://openalex.org/C154945302","wikidata":"https://www.wikidata.org/wiki/Q11660","display_name":"Artificial intelligence","level":1,"score":0.20177558064460754},{"id":"https://openalex.org/C33923547","wikidata":"https://www.wikidata.org/wiki/Q395","display_name":"Mathematics","level":0,"score":0.1446063220500946},{"id":"https://openalex.org/C135790938","wikidata":"https://www.wikidata.org/wiki/Q242028","display_name":"Lambda calculus","level":2,"score":0.1330275535583496},{"id":"https://openalex.org/C114614502","wikidata":"https://www.wikidata.org/wiki/Q76592","display_name":"Combinatorics","level":1,"score":0.08200699090957642},{"id":"https://openalex.org/C86803240","wikidata":"https://www.wikidata.org/wiki/Q420","display_name":"Biology","level":0,"score":0.0},{"id":"https://openalex.org/C18903297","wikidata":"https://www.wikidata.org/wiki/Q7150","display_name":"Ecology","level":1,"score":0.0}],"mesh":[],"locations_count":1,"locations":[{"id":"doi:10.1145/3453483.3454052","is_oa":false,"landing_page_url":"https://doi.org/10.1145/3453483.3454052","pdf_url":null,"source":null,"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation","raw_type":"proceedings-article"}],"best_oa_location":null,"sustainable_development_goals":[],"awards":[],"funders":[],"has_content":{"pdf":false,"grobid_xml":false},"content_urls":null,"referenced_works_count":23,"referenced_works":["https://openalex.org/W1509213251","https://openalex.org/W1963502491","https://openalex.org/W1976263585","https://openalex.org/W2019388039","https://openalex.org/W2020749411","https://openalex.org/W2024797550","https://openalex.org/W2040581748","https://openalex.org/W2050204069","https://openalex.org/W2051716170","https://openalex.org/W2065489029","https://openalex.org/W2089243009","https://openalex.org/W2093861610","https://openalex.org/W2153150125","https://openalex.org/W2513927163","https://openalex.org/W2515936044","https://openalex.org/W2518564811","https://openalex.org/W2555714974","https://openalex.org/W2597868857","https://openalex.org/W2898152370","https://openalex.org/W2909261754","https://openalex.org/W2965227619","https://openalex.org/W3098470576","https://openalex.org/W4234461277"],"related_works":["https://openalex.org/W1967061556","https://openalex.org/W129491011","https://openalex.org/W2121993468","https://openalex.org/W2170069181","https://openalex.org/W4213453328","https://openalex.org/W4280592033","https://openalex.org/W4387793259","https://openalex.org/W4246722992","https://openalex.org/W2151994258","https://openalex.org/W2078715622"],"abstract_inverted_index":{"A":[0],"structural":[1,15,33],"diffing":[2,16,34,120,129],"algorithm":[3,35],"compares":[4],"two":[5],"pieces":[6],"of":[7,93,109,134],"tree-shaped":[8],"data":[9],"and":[10,86,90,126],"computes":[11],"their":[12],"difference.":[13],"Existing":[14],"algorithms":[17],"either":[18],"produce":[19],"concise":[20,56],"patches":[21,57,96,111],"or":[22],"ensure":[23],"type":[24,78,105],"safety,":[25,79,106],"but":[26],"never":[27],"both.":[28],"We":[29,76],"present":[30],"a":[31,117,127],"new":[32],"called":[36],"truediff":[37,69,81,103,123],"that":[38,58],"achieves":[39],"both":[40],"properties":[41],"by":[42,131],"treating":[43],"subtrees":[44],"as":[45],"mutable,":[46],"yet":[47],"linearly":[48],"typed":[49,128],"resources.":[50],"Mutation":[51],"is":[52,112],"required":[53],"to":[54,66],"derive":[55],"only":[59],"mention":[60],"changed":[61],"nodes,":[62],"but,":[63],"in":[64],"contrast":[65],"prior":[67],"work,":[68],"guarantees":[70],"all":[71],"intermediate":[72],"trees":[73],"are":[74],"well-typed.":[75],"formalize":[77],"prove":[80],"has":[82],"linear":[83],"run":[84],"time,":[85],"evaluate":[87],"its":[88,110],"performance":[89],"the":[91,94,107],"conciseness":[92],"derived":[95],"empirically":[97],"for":[98],"real-world":[99],"Python":[100],"documents.":[101],"While":[102],"ensures":[104],"size":[108],"on":[113],"par":[114],"with":[115],"Gumtree,":[116],"popular":[118],"untyped":[119],"implementation.":[121],"Regardless,":[122],"outperforms":[124],"Gumtree":[125],"implementation":[130],"an":[132],"order":[133],"magnitude.":[135]},"counts_by_year":[{"year":2025,"cited_by_count":1},{"year":2024,"cited_by_count":2},{"year":2022,"cited_by_count":2}],"updated_date":"2025-11-06T03:46:38.306776","created_date":"2025-10-10T00:00:00"}
