{"id":"https://openalex.org/W3019259517","doi":"https://doi.org/10.1145/3408995","title":"Retrofitting parallelism onto OCaml","display_name":"Retrofitting parallelism onto OCaml","publication_year":2020,"publication_date":"2020-08-02","ids":{"openalex":"https://openalex.org/W3019259517","doi":"https://doi.org/10.1145/3408995","mag":"3019259517"},"language":"en","primary_location":{"id":"doi:10.1145/3408995","is_oa":true,"landing_page_url":"https://doi.org/10.1145/3408995","pdf_url":"https://dl.acm.org/doi/pdf/10.1145/3408995","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":"article","indexed_in":["arxiv","crossref"],"open_access":{"is_oa":true,"oa_status":"diamond","oa_url":"https://dl.acm.org/doi/pdf/10.1145/3408995","any_repository_has_fulltext":true},"authorships":[{"author_position":"first","author":{"id":null,"display_name":"KC Sivaramakrishnan","orcid":"https://orcid.org/0000-0002-3491-1780"},"institutions":[{"id":"https://openalex.org/I24676775","display_name":"Indian Institute of Technology Madras","ror":"https://ror.org/03v0r5n49","country_code":"IN","type":"education","lineage":["https://openalex.org/I24676775"]}],"countries":["IN"],"is_corresponding":false,"raw_author_name":"KC Sivaramakrishnan","raw_affiliation_strings":["IIT Madras, India"],"raw_orcid":"https://orcid.org/0000-0002-3491-1780","affiliations":[{"raw_affiliation_string":"IIT Madras, India","institution_ids":["https://openalex.org/I24676775"]}]},{"author_position":"middle","author":{"id":null,"display_name":"Stephen Dolan","orcid":null},"institutions":[],"countries":[],"is_corresponding":false,"raw_author_name":"Stephen Dolan","raw_affiliation_strings":["OCaml Labs, UK"],"raw_orcid":null,"affiliations":[{"raw_affiliation_string":"OCaml Labs, UK","institution_ids":[]}]},{"author_position":"middle","author":{"id":null,"display_name":"Leo White","orcid":null},"institutions":[],"countries":[],"is_corresponding":false,"raw_author_name":"Leo White","raw_affiliation_strings":["Jane Street, UK"],"raw_orcid":null,"affiliations":[{"raw_affiliation_string":"Jane Street, UK","institution_ids":[]}]},{"author_position":"middle","author":{"id":null,"display_name":"Sadiq Jaffer","orcid":null},"institutions":[],"countries":[],"is_corresponding":false,"raw_author_name":"Sadiq Jaffer","raw_affiliation_strings":["Opsian, UK / OCaml Labs, UK"],"raw_orcid":null,"affiliations":[{"raw_affiliation_string":"Opsian, UK / OCaml Labs, UK","institution_ids":[]}]},{"author_position":"middle","author":{"id":null,"display_name":"Tom Kelly","orcid":null},"institutions":[],"countries":[],"is_corresponding":false,"raw_author_name":"Tom Kelly","raw_affiliation_strings":["OCaml Labs, UK"],"raw_orcid":null,"affiliations":[{"raw_affiliation_string":"OCaml Labs, UK","institution_ids":[]}]},{"author_position":"middle","author":{"id":null,"display_name":"Anmol Sahoo","orcid":null},"institutions":[{"id":"https://openalex.org/I24676775","display_name":"Indian Institute of Technology Madras","ror":"https://ror.org/03v0r5n49","country_code":"IN","type":"education","lineage":["https://openalex.org/I24676775"]}],"countries":["IN"],"is_corresponding":false,"raw_author_name":"Anmol Sahoo","raw_affiliation_strings":["IIT Madras, India"],"raw_orcid":null,"affiliations":[{"raw_affiliation_string":"IIT Madras, India","institution_ids":["https://openalex.org/I24676775"]}]},{"author_position":"middle","author":{"id":null,"display_name":"Sudha Parimala","orcid":null},"institutions":[{"id":"https://openalex.org/I24676775","display_name":"Indian Institute of Technology Madras","ror":"https://ror.org/03v0r5n49","country_code":"IN","type":"education","lineage":["https://openalex.org/I24676775"]}],"countries":["IN"],"is_corresponding":false,"raw_author_name":"Sudha Parimala","raw_affiliation_strings":["IIT Madras, India"],"raw_orcid":null,"affiliations":[{"raw_affiliation_string":"IIT Madras, India","institution_ids":["https://openalex.org/I24676775"]}]},{"author_position":"middle","author":{"id":null,"display_name":"Atul Dhiman","orcid":null},"institutions":[{"id":"https://openalex.org/I24676775","display_name":"Indian Institute of Technology Madras","ror":"https://ror.org/03v0r5n49","country_code":"IN","type":"education","lineage":["https://openalex.org/I24676775"]}],"countries":["IN"],"is_corresponding":false,"raw_author_name":"Atul Dhiman","raw_affiliation_strings":["IIT Madras, India"],"raw_orcid":null,"affiliations":[{"raw_affiliation_string":"IIT Madras, India","institution_ids":["https://openalex.org/I24676775"]}]},{"author_position":"last","author":{"id":null,"display_name":"Anil Madhavapeddy","orcid":null},"institutions":[{"id":"https://openalex.org/I241749","display_name":"University of Cambridge","ror":"https://ror.org/013meh722","country_code":"GB","type":"education","lineage":["https://openalex.org/I241749"]}],"countries":["GB"],"is_corresponding":false,"raw_author_name":"Anil Madhavapeddy","raw_affiliation_strings":["University of Cambridge, UK / OCaml Labs, UK"],"raw_orcid":null,"affiliations":[{"raw_affiliation_string":"University of Cambridge, UK / OCaml Labs, UK","institution_ids":["https://openalex.org/I241749"]}]}],"institutions":[],"countries_distinct_count":2,"institutions_distinct_count":2,"corresponding_author_ids":[],"corresponding_institution_ids":[],"apc_list":null,"apc_paid":null,"fwci":1.4743,"has_fulltext":true,"cited_by_count":33,"citation_normalized_percentile":{"value":0.85897302,"is_in_top_1_percent":false,"is_in_top_10_percent":false},"cited_by_percentile_year":{"min":89,"max":99},"biblio":{"volume":"4","issue":"ICFP","first_page":"1","last_page":"30"},"is_retracted":false,"is_paratext":false,"is_xpac":false,"primary_topic":{"id":"https://openalex.org/T10126","display_name":"Logic, programming, and type systems","score":0.6165000200271606,"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"}},"topics":[{"id":"https://openalex.org/T10126","display_name":"Logic, programming, and type systems","score":0.6165000200271606,"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/T10101","display_name":"Cloud Computing and Resource Management","score":0.07800000160932541,"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/T10054","display_name":"Parallel Computing and Optimization Techniques","score":0.04969999939203262,"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"}}],"keywords":[{"id":"https://openalex.org/keywords/programming-style","display_name":"Programming style","score":0.448199987411499},{"id":"https://openalex.org/keywords/multi-core-processor","display_name":"Multi-core processor","score":0.4350999891757965},{"id":"https://openalex.org/keywords/garbage-collection","display_name":"Garbage collection","score":0.42719998955726624},{"id":"https://openalex.org/keywords/programming-paradigm","display_name":"Programming paradigm","score":0.42329999804496765},{"id":"https://openalex.org/keywords/retrofitting","display_name":"Retrofitting","score":0.4203000068664551},{"id":"https://openalex.org/keywords/parallelism","display_name":"Parallelism (grammar)","score":0.40880000591278076},{"id":"https://openalex.org/keywords/functional-logic-programming","display_name":"Functional logic programming","score":0.3474000096321106},{"id":"https://openalex.org/keywords/code","display_name":"Code (set theory)","score":0.32850000262260437}],"concepts":[{"id":"https://openalex.org/C41008148","wikidata":"https://www.wikidata.org/wiki/Q21198","display_name":"Computer science","level":0,"score":0.8306999802589417},{"id":"https://openalex.org/C199360897","wikidata":"https://www.wikidata.org/wiki/Q9143","display_name":"Programming language","level":1,"score":0.7932000160217285},{"id":"https://openalex.org/C2776245389","wikidata":"https://www.wikidata.org/wiki/Q962139","display_name":"Programming style","level":2,"score":0.448199987411499},{"id":"https://openalex.org/C78766204","wikidata":"https://www.wikidata.org/wiki/Q555032","display_name":"Multi-core processor","level":2,"score":0.4350999891757965},{"id":"https://openalex.org/C105122174","wikidata":"https://www.wikidata.org/wiki/Q322202","display_name":"Garbage collection","level":3,"score":0.42719998955726624},{"id":"https://openalex.org/C34165917","wikidata":"https://www.wikidata.org/wiki/Q188267","display_name":"Programming paradigm","level":2,"score":0.42329999804496765},{"id":"https://openalex.org/C2778368411","wikidata":"https://www.wikidata.org/wiki/Q24662","display_name":"Retrofitting","level":2,"score":0.4203000068664551},{"id":"https://openalex.org/C2781172179","wikidata":"https://www.wikidata.org/wiki/Q853109","display_name":"Parallelism (grammar)","level":2,"score":0.40880000591278076},{"id":"https://openalex.org/C96315309","wikidata":"https://www.wikidata.org/wiki/Q5508829","display_name":"Functional logic programming","level":4,"score":0.3474000096321106},{"id":"https://openalex.org/C173608175","wikidata":"https://www.wikidata.org/wiki/Q232661","display_name":"Parallel computing","level":1,"score":0.34380000829696655},{"id":"https://openalex.org/C2776760102","wikidata":"https://www.wikidata.org/wiki/Q5139990","display_name":"Code (set theory)","level":3,"score":0.32850000262260437},{"id":"https://openalex.org/C137364921","wikidata":"https://www.wikidata.org/wiki/Q27929394","display_name":"Parallel programming model","level":3,"score":0.3109999895095825},{"id":"https://openalex.org/C199305712","wikidata":"https://www.wikidata.org/wiki/Q3205914","display_name":"Fifth-generation programming language","level":3,"score":0.2944999933242798},{"id":"https://openalex.org/C42383842","wikidata":"https://www.wikidata.org/wiki/Q193076","display_name":"Functional programming","level":2,"score":0.2912999987602234},{"id":"https://openalex.org/C19024347","wikidata":"https://www.wikidata.org/wiki/Q211496","display_name":"High-level programming language","level":3,"score":0.28610000014305115},{"id":"https://openalex.org/C11164408","wikidata":"https://www.wikidata.org/wiki/Q18657800","display_name":"Second-generation programming language","level":4,"score":0.2815999984741211},{"id":"https://openalex.org/C50033165","wikidata":"https://www.wikidata.org/wiki/Q15712089","display_name":"Inductive programming","level":3,"score":0.28119999170303345},{"id":"https://openalex.org/C2778029271","wikidata":"https://www.wikidata.org/wiki/Q5421931","display_name":"Extension (predicate logic)","level":2,"score":0.2718000113964081},{"id":"https://openalex.org/C150762246","wikidata":"https://www.wikidata.org/wiki/Q4354073","display_name":"Reactive programming","level":4,"score":0.263700008392334},{"id":"https://openalex.org/C158100120","wikidata":"https://www.wikidata.org/wiki/Q1931402","display_name":"ANSI C","level":3,"score":0.2605000138282776},{"id":"https://openalex.org/C8767382","wikidata":"https://www.wikidata.org/wiki/Q1058454","display_name":"Dynamic compilation","level":3,"score":0.25220000743865967}],"mesh":[],"locations_count":2,"locations":[{"id":"doi:10.1145/3408995","is_oa":true,"landing_page_url":"https://doi.org/10.1145/3408995","pdf_url":"https://dl.acm.org/doi/pdf/10.1145/3408995","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:2004.11663","is_oa":true,"landing_page_url":"http://arxiv.org/abs/2004.11663","pdf_url":"https://arxiv.org/pdf/2004.11663","source":{"id":"https://openalex.org/S4306400194","display_name":"arXiv (Cornell University)","issn_l":"2331-8422","issn":["2331-8422"],"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"}],"best_oa_location":{"id":"doi:10.1145/3408995","is_oa":true,"landing_page_url":"https://doi.org/10.1145/3408995","pdf_url":"https://dl.acm.org/doi/pdf/10.1145/3408995","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":[{"id":"https://openalex.org/F4320320247","display_name":"Royal Commission for the Exhibition of 1851","ror":"https://ror.org/05fdb2817"},{"id":"https://openalex.org/F4320334641","display_name":"Darwin College, University of Cambridge","ror":"https://ror.org/036wvdb36"}],"has_content":{"pdf":true,"grobid_xml":true},"content_urls":{"pdf":"https://content.openalex.org/works/W3019259517.pdf","grobid_xml":"https://content.openalex.org/works/W3019259517.grobid-xml"},"referenced_works_count":34,"referenced_works":["https://openalex.org/W1841066824","https://openalex.org/W1965336482","https://openalex.org/W1972174903","https://openalex.org/W1973165589","https://openalex.org/W1976323078","https://openalex.org/W1994257154","https://openalex.org/W1994845989","https://openalex.org/W2029215055","https://openalex.org/W2056656593","https://openalex.org/W2087960970","https://openalex.org/W2094755621","https://openalex.org/W2098298678","https://openalex.org/W2105655507","https://openalex.org/W2105754437","https://openalex.org/W2115309705","https://openalex.org/W2117848302","https://openalex.org/W2118373998","https://openalex.org/W2121783057","https://openalex.org/W2130055503","https://openalex.org/W2134939854","https://openalex.org/W2156004619","https://openalex.org/W2157766785","https://openalex.org/W2158525816","https://openalex.org/W2161318861","https://openalex.org/W2169347615","https://openalex.org/W2508222108","https://openalex.org/W2512358767","https://openalex.org/W2783280912","https://openalex.org/W2799051758","https://openalex.org/W2898972062","https://openalex.org/W2995576800","https://openalex.org/W3010224878","https://openalex.org/W3032981655","https://openalex.org/W4241990458"],"related_works":[],"abstract_inverted_index":{"OCaml":[0,13,55],"is":[1,14],"an":[2],"industrial-strength,":[3],"multi-paradigm":[4],"programming":[5,23,56,69],"language,":[6],"widely":[7,67],"used":[8,68],"in":[9,87],"industry":[10],"and":[11,41,116,127,134],"academia.":[12],"also":[15,94],"one":[16],"of":[17,43,53,73,75,82,89,97,113],"the":[18,36,50,54,80,90,95,102,108,119],"few":[19],"modern":[20,138],"managed":[21],"system":[22],"languages":[24],"to":[25,62,65],"lack":[26],"support":[27],"for":[28,49,131],"shared":[29],"memory":[30],"parallel":[31],"programming.":[32],"This":[33],"paper":[34,109],"describes":[35],"design,":[37],"a":[38,44,66,111,123],"full-fledged":[39],"implementation":[40],"evaluation":[42],"mostly-concurrent":[45],"garbage":[46],"collector":[47],"(GC)":[48],"multicore":[51,139],"extension":[52],"language.":[57],"Given":[58],"that":[59,118],"we":[60,78],"propose":[61],"add":[63],"parallelism":[64],"language":[70,91],"with":[71,101],"millions":[72],"lines":[74],"existing":[76],"code,":[77],"face":[79],"challenge":[81],"maintaining":[83],"backwards":[84,129],"compatibility--not":[85],"just":[86],"terms":[88],"features":[92],"but":[93],"performance":[96,126],"single-threaded":[98],"code":[99],"running":[100],"new":[103,120],"GC.":[104],"To":[105],"this":[106],"end,":[107],"presents":[110],"series":[112],"novel":[114],"techniques":[115],"demonstrates":[117],"GC":[121],"strikes":[122],"balance":[124],"between":[125],"feature":[128],"compatibility":[130],"sequential":[132],"programs":[133],"scales":[135],"admirably":[136],"on":[137],"processors.":[140]},"counts_by_year":[{"year":2026,"cited_by_count":4},{"year":2025,"cited_by_count":12},{"year":2024,"cited_by_count":6},{"year":2023,"cited_by_count":4},{"year":2022,"cited_by_count":4},{"year":2021,"cited_by_count":2},{"year":2020,"cited_by_count":1}],"updated_date":"2026-08-05T07:39:15.569665","created_date":"2020-05-01T00:00:00"}
