{"id":"https://openalex.org/W3195212277","doi":"https://doi.org/10.1145/3473568","title":"Persistent software transactional memory in Haskell","display_name":"Persistent software transactional memory in Haskell","publication_year":2021,"publication_date":"2021-08-19","ids":{"openalex":"https://openalex.org/W3195212277","doi":"https://doi.org/10.1145/3473568","mag":"3195212277"},"language":"en","primary_location":{"id":"doi:10.1145/3473568","is_oa":true,"landing_page_url":"https://doi.org/10.1145/3473568","pdf_url":"https://dl.acm.org/doi/pdf/10.1145/3473568","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":["crossref"],"open_access":{"is_oa":true,"oa_status":"diamond","oa_url":"https://dl.acm.org/doi/pdf/10.1145/3473568","any_repository_has_fulltext":false},"authorships":[{"author_position":"first","author":{"id":"https://openalex.org/A5021222134","display_name":"Nicolas Krauter","orcid":"https://orcid.org/0000-0002-0813-1828"},"institutions":[{"id":"https://openalex.org/I197323543","display_name":"Johannes Gutenberg University Mainz","ror":"https://ror.org/023b0x485","country_code":"DE","type":"education","lineage":["https://openalex.org/I197323543"]}],"countries":["DE"],"is_corresponding":true,"raw_author_name":"Nicolas Krauter","raw_affiliation_strings":["Johannes Gutenberg University Mainz, Germany"],"raw_orcid":"https://orcid.org/0000-0002-0813-1828","affiliations":[{"raw_affiliation_string":"Johannes Gutenberg University Mainz, Germany","institution_ids":["https://openalex.org/I197323543"]}]},{"author_position":"middle","author":{"id":"https://openalex.org/A5007132363","display_name":"Patrick Raaf","orcid":"https://orcid.org/0000-0002-1002-9734"},"institutions":[{"id":"https://openalex.org/I197323543","display_name":"Johannes Gutenberg University Mainz","ror":"https://ror.org/023b0x485","country_code":"DE","type":"education","lineage":["https://openalex.org/I197323543"]}],"countries":["DE"],"is_corresponding":false,"raw_author_name":"Patrick Raaf","raw_affiliation_strings":["Johannes Gutenberg University Mainz, Germany"],"raw_orcid":"https://orcid.org/0000-0002-1002-9734","affiliations":[{"raw_affiliation_string":"Johannes Gutenberg University Mainz, Germany","institution_ids":["https://openalex.org/I197323543"]}]},{"author_position":"middle","author":{"id":"https://openalex.org/A5087194376","display_name":"Peter J. Braam","orcid":null},"institutions":[{"id":"https://openalex.org/I40120149","display_name":"University of Oxford","ror":"https://ror.org/052gg0110","country_code":"GB","type":"education","lineage":["https://openalex.org/I40120149"]}],"countries":["GB"],"is_corresponding":false,"raw_author_name":"Peter Braam","raw_affiliation_strings":["University of Oxford, UK"],"raw_orcid":null,"affiliations":[{"raw_affiliation_string":"University of Oxford, UK","institution_ids":["https://openalex.org/I40120149"]}]},{"author_position":"middle","author":{"id":"https://openalex.org/A5035287543","display_name":"Reza Salkhordeh","orcid":"https://orcid.org/0000-0003-3786-7102"},"institutions":[{"id":"https://openalex.org/I197323543","display_name":"Johannes Gutenberg University Mainz","ror":"https://ror.org/023b0x485","country_code":"DE","type":"education","lineage":["https://openalex.org/I197323543"]}],"countries":["DE"],"is_corresponding":false,"raw_author_name":"Reza Salkhordeh","raw_affiliation_strings":["Johannes Gutenberg University Mainz, Germany"],"raw_orcid":"https://orcid.org/0000-0003-3786-7102","affiliations":[{"raw_affiliation_string":"Johannes Gutenberg University Mainz, Germany","institution_ids":["https://openalex.org/I197323543"]}]},{"author_position":"middle","author":{"id":"https://openalex.org/A5059992246","display_name":"Sebastian Erdweg","orcid":"https://orcid.org/0000-0002-1974-5956"},"institutions":[{"id":"https://openalex.org/I197323543","display_name":"Johannes Gutenberg University Mainz","ror":"https://ror.org/023b0x485","country_code":"DE","type":"education","lineage":["https://openalex.org/I197323543"]}],"countries":["DE"],"is_corresponding":false,"raw_author_name":"Sebastian Erdweg","raw_affiliation_strings":["Johannes Gutenberg University Mainz, Germany"],"raw_orcid":"https://orcid.org/0000-0002-1974-5956","affiliations":[{"raw_affiliation_string":"Johannes Gutenberg University Mainz, Germany","institution_ids":["https://openalex.org/I197323543"]}]},{"author_position":"last","author":{"id":"https://openalex.org/A5011466225","display_name":"Andr\u00e9 Brinkmann","orcid":"https://orcid.org/0000-0003-3083-2775"},"institutions":[{"id":"https://openalex.org/I197323543","display_name":"Johannes Gutenberg University Mainz","ror":"https://ror.org/023b0x485","country_code":"DE","type":"education","lineage":["https://openalex.org/I197323543"]}],"countries":["DE"],"is_corresponding":false,"raw_author_name":"Andr\u00e9 Brinkmann","raw_affiliation_strings":["Johannes Gutenberg University Mainz, Germany"],"raw_orcid":null,"affiliations":[{"raw_affiliation_string":"Johannes Gutenberg University Mainz, Germany","institution_ids":["https://openalex.org/I197323543"]}]}],"institutions":[],"countries_distinct_count":2,"institutions_distinct_count":6,"corresponding_author_ids":["https://openalex.org/A5021222134"],"corresponding_institution_ids":["https://openalex.org/I197323543"],"apc_list":null,"apc_paid":null,"fwci":0.3203,"has_fulltext":true,"cited_by_count":3,"citation_normalized_percentile":{"value":0.61356122,"is_in_top_1_percent":false,"is_in_top_10_percent":false},"cited_by_percentile_year":{"min":89,"max":95},"biblio":{"volume":"5","issue":"ICFP","first_page":"1","last_page":"29"},"is_retracted":false,"is_paratext":false,"is_xpac":false,"primary_topic":{"id":"https://openalex.org/T10772","display_name":"Distributed systems and fault tolerance","score":0.9998999834060669,"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"}},"topics":[{"id":"https://openalex.org/T10772","display_name":"Distributed systems and fault tolerance","score":0.9998999834060669,"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"}},{"id":"https://openalex.org/T10054","display_name":"Parallel Computing and Optimization Techniques","score":0.9961000084877014,"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/T11181","display_name":"Advanced Data Storage Technologies","score":0.9952999949455261,"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/software-transactional-memory","display_name":"Software transactional memory","score":0.8972783088684082},{"id":"https://openalex.org/keywords/haskell","display_name":"Haskell","score":0.897009015083313},{"id":"https://openalex.org/keywords/computer-science","display_name":"Computer science","score":0.8445299863815308},{"id":"https://openalex.org/keywords/transactional-memory","display_name":"Transactional memory","score":0.7848215103149414},{"id":"https://openalex.org/keywords/programming-language","display_name":"Programming language","score":0.6120991110801697},{"id":"https://openalex.org/keywords/memory-management","display_name":"Memory management","score":0.5619039535522461},{"id":"https://openalex.org/keywords/c-dynamic-memory-allocation","display_name":"C dynamic memory allocation","score":0.5583909749984741},{"id":"https://openalex.org/keywords/atomicity","display_name":"Atomicity","score":0.5413278341293335},{"id":"https://openalex.org/keywords/memory-model","display_name":"Memory model","score":0.5332279801368713},{"id":"https://openalex.org/keywords/garbage-collection","display_name":"Garbage collection","score":0.5151061415672302},{"id":"https://openalex.org/keywords/allocator","display_name":"Allocator","score":0.4401733875274658},{"id":"https://openalex.org/keywords/operating-system","display_name":"Operating system","score":0.4015713930130005},{"id":"https://openalex.org/keywords/parallel-computing","display_name":"Parallel computing","score":0.3567740321159363},{"id":"https://openalex.org/keywords/database-transaction","display_name":"Database transaction","score":0.35323843359947205},{"id":"https://openalex.org/keywords/functional-programming","display_name":"Functional programming","score":0.2795224189758301},{"id":"https://openalex.org/keywords/shared-memory","display_name":"Shared memory","score":0.24134686589241028},{"id":"https://openalex.org/keywords/garbage","display_name":"Garbage","score":0.21004554629325867},{"id":"https://openalex.org/keywords/overlay","display_name":"Overlay","score":0.09098851680755615}],"concepts":[{"id":"https://openalex.org/C167149655","wikidata":"https://www.wikidata.org/wiki/Q1189004","display_name":"Software transactional memory","level":4,"score":0.8972783088684082},{"id":"https://openalex.org/C2780624054","wikidata":"https://www.wikidata.org/wiki/Q34010","display_name":"Haskell","level":3,"score":0.897009015083313},{"id":"https://openalex.org/C41008148","wikidata":"https://www.wikidata.org/wiki/Q21198","display_name":"Computer science","level":0,"score":0.8445299863815308},{"id":"https://openalex.org/C134277064","wikidata":"https://www.wikidata.org/wiki/Q878206","display_name":"Transactional memory","level":3,"score":0.7848215103149414},{"id":"https://openalex.org/C199360897","wikidata":"https://www.wikidata.org/wiki/Q9143","display_name":"Programming language","level":1,"score":0.6120991110801697},{"id":"https://openalex.org/C176649486","wikidata":"https://www.wikidata.org/wiki/Q2308807","display_name":"Memory management","level":3,"score":0.5619039535522461},{"id":"https://openalex.org/C34339311","wikidata":"https://www.wikidata.org/wiki/Q1050390","display_name":"C dynamic memory allocation","level":4,"score":0.5583909749984741},{"id":"https://openalex.org/C188045909","wikidata":"https://www.wikidata.org/wiki/Q3306359","display_name":"Atomicity","level":3,"score":0.5413278341293335},{"id":"https://openalex.org/C12186640","wikidata":"https://www.wikidata.org/wiki/Q6815743","display_name":"Memory model","level":3,"score":0.5332279801368713},{"id":"https://openalex.org/C105122174","wikidata":"https://www.wikidata.org/wiki/Q322202","display_name":"Garbage collection","level":3,"score":0.5151061415672302},{"id":"https://openalex.org/C162262903","wikidata":"https://www.wikidata.org/wiki/Q343527","display_name":"Allocator","level":2,"score":0.4401733875274658},{"id":"https://openalex.org/C111919701","wikidata":"https://www.wikidata.org/wiki/Q9135","display_name":"Operating system","level":1,"score":0.4015713930130005},{"id":"https://openalex.org/C173608175","wikidata":"https://www.wikidata.org/wiki/Q232661","display_name":"Parallel computing","level":1,"score":0.3567740321159363},{"id":"https://openalex.org/C75949130","wikidata":"https://www.wikidata.org/wiki/Q848010","display_name":"Database transaction","level":2,"score":0.35323843359947205},{"id":"https://openalex.org/C42383842","wikidata":"https://www.wikidata.org/wiki/Q193076","display_name":"Functional programming","level":2,"score":0.2795224189758301},{"id":"https://openalex.org/C133875982","wikidata":"https://www.wikidata.org/wiki/Q764810","display_name":"Shared memory","level":2,"score":0.24134686589241028},{"id":"https://openalex.org/C75403996","wikidata":"https://www.wikidata.org/wiki/Q5521979","display_name":"Garbage","level":2,"score":0.21004554629325867},{"id":"https://openalex.org/C136085584","wikidata":"https://www.wikidata.org/wiki/Q910289","display_name":"Overlay","level":2,"score":0.09098851680755615}],"mesh":[],"locations_count":1,"locations":[{"id":"doi:10.1145/3473568","is_oa":true,"landing_page_url":"https://doi.org/10.1145/3473568","pdf_url":"https://dl.acm.org/doi/pdf/10.1145/3473568","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"}],"best_oa_location":{"id":"doi:10.1145/3473568","is_oa":true,"landing_page_url":"https://doi.org/10.1145/3473568","pdf_url":"https://dl.acm.org/doi/pdf/10.1145/3473568","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":{"pdf":true,"grobid_xml":true},"content_urls":{"pdf":"https://content.openalex.org/works/W3195212277.pdf","grobid_xml":"https://content.openalex.org/works/W3195212277.grobid-xml"},"referenced_works_count":54,"referenced_works":["https://openalex.org/W200217587","https://openalex.org/W1495766103","https://openalex.org/W1506492451","https://openalex.org/W1508668963","https://openalex.org/W1528361296","https://openalex.org/W1528500212","https://openalex.org/W1543745032","https://openalex.org/W1987201308","https://openalex.org/W1987203566","https://openalex.org/W1992755462","https://openalex.org/W2003078175","https://openalex.org/W2010042648","https://openalex.org/W2016995838","https://openalex.org/W2062950667","https://openalex.org/W2076149580","https://openalex.org/W2094222793","https://openalex.org/W2095621310","https://openalex.org/W2102832761","https://openalex.org/W2105055683","https://openalex.org/W2113637091","https://openalex.org/W2113751407","https://openalex.org/W2124306283","https://openalex.org/W2127382014","https://openalex.org/W2129990308","https://openalex.org/W2136177623","https://openalex.org/W2145893337","https://openalex.org/W2147926533","https://openalex.org/W2148646082","https://openalex.org/W2149089882","https://openalex.org/W2150662965","https://openalex.org/W2151958460","https://openalex.org/W2163285366","https://openalex.org/W2163654949","https://openalex.org/W2166246073","https://openalex.org/W2296715995","https://openalex.org/W2411369279","https://openalex.org/W2511610649","https://openalex.org/W2579368542","https://openalex.org/W2593354228","https://openalex.org/W2742513757","https://openalex.org/W2751166390","https://openalex.org/W2763607872","https://openalex.org/W2809467539","https://openalex.org/W2913125235","https://openalex.org/W2914180539","https://openalex.org/W2947756274","https://openalex.org/W2954830752","https://openalex.org/W2963288320","https://openalex.org/W2969449588","https://openalex.org/W2985559904","https://openalex.org/W3005941131","https://openalex.org/W3010590465","https://openalex.org/W3032981655","https://openalex.org/W3209331740"],"related_works":["https://openalex.org/W2014665656","https://openalex.org/W3046697030","https://openalex.org/W3010421322","https://openalex.org/W2039853491","https://openalex.org/W2035743374","https://openalex.org/W2149556297","https://openalex.org/W2221794457","https://openalex.org/W3195212277","https://openalex.org/W1963124175","https://openalex.org/W2984491831"],"abstract_inverted_index":{"Emerging":[0],"persistent":[1,10,21,40,47,96,116,186,189],"memory":[2,13,22,41,52,70,87,99,132,139],"in":[3,20,49,92],"commodity":[4],"hardware":[5],"allows":[6,179],"byte-granular":[7],"accesses":[8],"to":[9,16,24,33,81,111,175],"state":[11,19],"at":[12],"speeds.":[14],"However,":[15],"prevent":[17],"inconsistent":[18],"due":[23],"unexpected":[25],"system":[26,108],"failures,":[27],"different":[28],"write-semantics":[29],"are":[30],"required":[31],"compared":[32],"volatile":[34],"memory.":[35],"Transaction-based":[36],"library":[37],"solutions":[38],"for":[39],"facilitate":[42],"the":[43,57,77,83,106,137],"atomic":[44],"modification":[45],"of":[46,86,109,115,129,171],"data":[48,118],"languages":[50,63],"where":[51],"is":[53,79,90,150],"explicitly":[54],"managed":[55],"by":[56],"programmer,":[58],"such":[59,184],"as":[60,185],"C/C++.":[61],"For":[62],"that":[64,128],"provide":[65],"extended":[66],"capabilities":[67],"like":[68,143],"automatic":[69],"management,":[71],"a":[72,122],"more":[73],"native":[74],"integration":[75,135],"into":[76,105],"language":[78],"needed":[80],"maintain":[82],"high":[84],"level":[85,166],"abstraction.":[88],"It":[89],"shown":[91],"this":[93],"paper":[94],"how":[95],"software":[97,130],"transactional":[98,117,131],"(PSTM)":[100],"can":[101],"be":[102],"tightly":[103],"integrated":[104],"runtime":[107],"Haskell":[110,190],"atomically":[112],"manage":[113],"values":[114],"types.":[119],"PSTM":[120,159],"has":[121],"clear":[123],"interface":[124],"and":[125,146,149,168,188],"semantics":[126],"extending":[127],"(STM).":[133],"Its":[134],"with":[136,153,164],"language\u2019s":[138],"management":[140],"retains":[141],"features":[142],"garbage":[144],"collection":[145],"allocation":[147],"strategies,":[148],"fully":[151],"compatible":[152],"Haskell's":[154],"lazy":[155],"execution":[156],"model.":[157],"Our":[158],"implementation":[160,178],"demonstrates":[161],"competitive":[162],"performance":[163],"low":[165],"libraries":[167,174],"trivial":[169],"portability":[170],"existing":[172],"STM":[173],"PSTM.":[176],"The":[177],"further":[180],"interesting":[181],"use":[182],"cases,":[183],"memoization":[187],"expressions.":[191]},"counts_by_year":[{"year":2025,"cited_by_count":1},{"year":2023,"cited_by_count":1},{"year":2021,"cited_by_count":1}],"updated_date":"2025-11-06T03:46:38.306776","created_date":"2025-10-10T00:00:00"}
