{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,11,21]],"date-time":"2025-11-21T11:29:12Z","timestamp":1763724552434,"version":"3.41.0"},"reference-count":65,"publisher":"Association for Computing Machinery (ACM)","issue":"3","license":[{"start":{"date-parts":[[2021,9,3]],"date-time":"2021-09-03T00:00:00Z","timestamp":1630627200000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"funder":[{"name":"National Science Foundation","award":["CCF-1527923 and CNS-1704336"],"award-info":[{"award-number":["CCF-1527923 and CNS-1704336"]}]}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["ACM Trans. Program. Lang. Syst."],"published-print":{"date-parts":[[2021,9,30]]},"abstract":"<jats:p>\n            Modern \u201csafe\u201d programming languages follow a design principle that we call\n            <jats:italic>safety by default<\/jats:italic>\n            and\n            <jats:italic>performance by choice<\/jats:italic>\n            . By default, these languages enforce important programming abstractions, such as memory and type safety, but they also provide mechanisms that allow expert programmers to explicitly trade some safety guarantees for increased performance. However, these same languages have adopted the inverse design principle in their support for multithreading. By default, multithreaded programs violate important abstractions, such as program order and atomic access to individual memory locations to admit compiler and hardware optimizations that would otherwise need to be restricted. Not only does this approach conflict with the design philosophy of safe languages, but very little is known about the practical performance cost of providing a stronger default semantics.\n          <\/jats:p>\n          <jats:p>\n            In this article, we propose a safe-by-default and performance-by-choice multithreading semantics for safe languages, which we call\n            <jats:italic>\n              <jats:monospace>volatile<\/jats:monospace>\n            <\/jats:italic>\n            <jats:italic>-by-default<\/jats:italic>\n            . Under this semantics, programs have\n            <jats:italic>sequential consistency<\/jats:italic>\n            (SC) by default, which is the natural \u201cinterleaving\u201d semantics of threads. However, the\n            <jats:monospace>volatile<\/jats:monospace>\n            -by-default design also includes annotations that allow expert programmers to avoid the associated overheads in performance-critical code. We describe the design, implementation, optimization, and evaluation of the\n            <jats:monospace>volatile<\/jats:monospace>\n            -by-default semantics for two different safe languages: Java and Julia. First, we present\n            <jats:sc>V<\/jats:sc>\n            BD-HotSpot and\n            <jats:sc>V<\/jats:sc>\n            BDA-HotSpot, modifications of Oracle\u2019s HotSpot JVM that enforce the\n            <jats:monospace>volatile<\/jats:monospace>\n            -by-default semantics on Intel x86-64 hardware and ARM-v8 hardware. Second, we present\n            <jats:sc>S<\/jats:sc>\n            C-Julia, a modification to the just-in-time compiler within the standard Julia implementation that provides best-effort enforcement of the\n            <jats:monospace>volatile<\/jats:monospace>\n            -by-default semantics on x86-64 hardware for the purpose of performance evaluation. We also detail two different implementation techniques: a\n            <jats:italic>baseline<\/jats:italic>\n            approach that simply reuses existing mechanisms in the compilers for handling atomic accesses, and a\n            <jats:italic>speculative<\/jats:italic>\n            approach that avoids the overhead of enforcing the\n            <jats:monospace>volatile<\/jats:monospace>\n            -by-default semantics until there is the possibility of an SC violation. Our results show that the cost of enforcing SC is significant but arguably still acceptable for some use cases today. Further, we demonstrate that compiler optimizations as well as programmer annotations can reduce the overhead considerably.\n          <\/jats:p>","DOI":"10.1145\/3462206","type":"journal-article","created":{"date-parts":[[2021,9,4]],"date-time":"2021-09-04T03:51:15Z","timestamp":1630727475000},"page":"1-50","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":6,"title":["Safe-by-default Concurrency for Modern Programming Languages"],"prefix":"10.1145","volume":"43","author":[{"given":"Lun","family":"Liu","sequence":"first","affiliation":[{"name":"University of California, Los Angeles, CA, USA"}]},{"given":"Todd","family":"Millstein","sequence":"additional","affiliation":[{"name":"University of California, Los Angeles, CA, USA"}]},{"given":"Madanlal","family":"Musuvathi","sequence":"additional","affiliation":[{"name":"Microsoft Research, Redmond, WA, USA"}]}],"member":"320","published-online":{"date-parts":[[2021,9,3]]},"reference":[{"volume-title":"LLVM Atomic Instructions and Concurrency Guide: Atomic orderings. Retrieved on","year":"2021","key":"e_1_2_1_1_1","unstructured":"[n.d.]. LLVM Atomic Instructions and Concurrency Guide: Atomic orderings. Retrieved on June 2021 from https:\/\/llvm.org\/docs\/Atomics.html#atomic-orderings. [n.d.]. LLVM Atomic Instructions and Concurrency Guide: Atomic orderings. Retrieved on June 2021 from https:\/\/llvm.org\/docs\/Atomics.html#atomic-orderings."},{"volume-title":"LLVM Language Reference Manual. Retrieved on","year":"2021","key":"e_1_2_1_2_1","unstructured":"[n.d.]. LLVM Language Reference Manual. Retrieved on June 2021 from https:\/\/releases.llvm.org\/3.3\/docs\/LangRef.html. [n.d.]. LLVM Language Reference Manual. Retrieved on June 2021 from https:\/\/releases.llvm.org\/3.3\/docs\/LangRef.html."},{"volume-title":"Metadata. Retrieved on","year":"2021","key":"e_1_2_1_3_1","unstructured":"[n.d.]. \u201c tbaa \u201d Metadata. Retrieved on June 2021 from https:\/\/llvm.org\/docs\/LangRef.html#tbaa-metadata. [n.d.]. \u201ctbaa\u201d Metadata. Retrieved on June 2021 from https:\/\/llvm.org\/docs\/LangRef.html#tbaa-metadata."},{"key":"e_1_2_1_4_1","doi-asserted-by":"publisher","DOI":"10.1145\/1787234.1787255"},{"volume-title":"Proceedings of the 17th International Symposium on Computer Architecture. ACM, 2\u201314","author":"Adve S. V.","key":"e_1_2_1_5_1","unstructured":"S. V. Adve and M. D. Hill . 1990. Weak ordering-A new definition . In Proceedings of the 17th International Symposium on Computer Architecture. ACM, 2\u201314 . S. V. Adve and M. D. Hill. 1990. Weak ordering-A new definition. In Proceedings of the 17th International Symposium on Computer Architecture. ACM, 2\u201314."},{"key":"e_1_2_1_6_1","doi-asserted-by":"publisher","DOI":"10.1145\/1669112.1669131"},{"key":"e_1_2_1_7_1","volume-title":"Proceedings of the 26th International Conference on Computer-aided Verification. 508\u2013524","author":"Alglave Jade","year":"2014","unstructured":"Jade Alglave , Daniel Kroening , Vincent Nimal , and Daniel Poetzl . 2014 . Don\u2019t sit on the fence\u2014A static analysis approach to automatic fence insertion . In Proceedings of the 26th International Conference on Computer-aided Verification. 508\u2013524 . Jade Alglave, Daniel Kroening, Vincent Nimal, and Daniel Poetzl. 2014. Don\u2019t sit on the fence\u2014A static analysis approach to automatic fence insertion. In Proceedings of the 26th International Conference on Computer-aided Verification. 508\u2013524."},{"key":"e_1_2_1_8_1","doi-asserted-by":"publisher","DOI":"10.1147\/sj.442.0399"},{"issue":"2","key":"e_1_2_1_9_1","first-page":"1","article-title":"ARM Cortex-A Series Programmer\u2019s Guide for ARMv8-A Version: 1.0","volume":"13","year":"2018","unstructured":"ARMv8 2018 . ARM Cortex-A Series Programmer\u2019s Guide for ARMv8-A Version: 1.0 , Section 13 . 2 . 1 . Retrieved on June 2021 from http:\/\/infocenter.arm.com\/help\/index.jsp?topic=\/com.arm.doc.den0024a\/CHDCJBGA.html. ARMv8 2018. ARM Cortex-A Series Programmer\u2019s Guide for ARMv8-A Version: 1.0, Section 13.2.1. Retrieved on June 2021 from http:\/\/infocenter.arm.com\/help\/index.jsp?topic=\/com.arm.doc.den0024a\/CHDCJBGA.html.","journal-title":"Section"},{"key":"e_1_2_1_10_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-662-46669-8_12"},{"key":"e_1_2_1_11_1","doi-asserted-by":"publisher","DOI":"10.1145\/1925844.1926394"},{"key":"e_1_2_1_12_1","doi-asserted-by":"publisher","DOI":"10.1137\/141000671"},{"key":"e_1_2_1_13_1","volume-title":"Announcing Composable Multi-threaded Parallelism in Julia. Retrieved on","author":"Bezanson Jeff","year":"2021","unstructured":"Jeff Bezanson , Jameson Nash , and Kiran Pamnany . [n.d.]. Announcing Composable Multi-threaded Parallelism in Julia. Retrieved on June 2021 from https:\/\/julialang.org\/blog\/2019\/07\/multithreading\/. Jeff Bezanson, Jameson Nash, and Kiran Pamnany. [n.d.]. Announcing Composable Multi-threaded Parallelism in Julia. Retrieved on June 2021 from https:\/\/julialang.org\/blog\/2019\/07\/multithreading\/."},{"key":"e_1_2_1_14_1","doi-asserted-by":"publisher","DOI":"10.1145\/2814270.2814292"},{"volume-title":"Proceedings of the 21st ACM SIGPLAN Conference on Object-Oriented Programing, Systems, Languages, and Applications. ACM Press","author":"Blackburn S. M.","key":"e_1_2_1_15_1","unstructured":"S. M. Blackburn , R. Garner , C. Hoffman , A. M. Khan , K. S. McKinley , R. Bentzur , A. Diwan , D. Feinberg , D. Frampton , S. Z. Guyer , M. Hirzel , A. Hosking , M. Jump , H. Lee , J. E. B. Moss , A. Phansalkar , D. Stefanovi\u0107 , T. VanDrunen , D. von Dincklage , and B. Wiedermann . 2006. The DaCapo benchmarks: Java benchmarking development and analysis . In Proceedings of the 21st ACM SIGPLAN Conference on Object-Oriented Programing, Systems, Languages, and Applications. ACM Press , New York, NY, 169\u2013190. S. M. Blackburn, R. Garner, C. Hoffman, A. M. Khan, K. S. McKinley, R. Bentzur, A. Diwan, D. Feinberg, D. Frampton, S. Z. Guyer, M. Hirzel, A. Hosking, M. Jump, H. Lee, J. E. B. Moss, A. Phansalkar, D. Stefanovi\u0107, T. VanDrunen, D. von Dincklage, and B. Wiedermann. 2006. The DaCapo benchmarks: Java benchmarking development and analysis. In Proceedings of the 21st ACM SIGPLAN Conference on Object-Oriented Programing, Systems, Languages, and Applications. ACM Press, New York, NY, 169\u2013190."},{"key":"e_1_2_1_16_1","doi-asserted-by":"publisher","DOI":"10.5555\/2001252.2001255"},{"key":"e_1_2_1_17_1","doi-asserted-by":"publisher","DOI":"10.1145\/2414729.2414732"},{"volume-title":"Proceedings of the Workshop on Memory Systems Performance and Correctness (MSPC\u201914)","author":"J.","key":"e_1_2_1_18_1","unstructured":"Hans- J. Boehm and Brian Demsky. 2014. Outlawing ghosts: Avoiding out-of-thin-air results . In Proceedings of the Workshop on Memory Systems Performance and Correctness (MSPC\u201914) . ACM. Hans-J. Boehm and Brian Demsky. 2014. Outlawing ghosts: Avoiding out-of-thin-air results. In Proceedings of the Workshop on Memory Systems Performance and Correctness (MSPC\u201914). ACM."},{"key":"e_1_2_1_19_1","volume-title":"16th European Symposium on Programming (Lecture Notes in Computer Science), Rocco De Nicola (Ed.)","volume":"4421","author":"Cenciarelli Pietro","year":"2007","unstructured":"Pietro Cenciarelli , Alexander Knapp , and Eleonora Sibilio . 2007 . The Java memory model: Operationally, denotationally, axiomatically. In Programming Languages and Systems , 16th European Symposium on Programming (Lecture Notes in Computer Science), Rocco De Nicola (Ed.) , Vol. 4421 . Springer, 331\u2013346. Pietro Cenciarelli, Alexander Knapp, and Eleonora Sibilio. 2007. The Java memory model: Operationally, denotationally, axiomatically. In Programming Languages and Systems, 16th European Symposium on Programming (Lecture Notes in Computer Science), Rocco De Nicola (Ed.), Vol. 4421. Springer, 331\u2013346."},{"key":"e_1_2_1_20_1","doi-asserted-by":"publisher","DOI":"10.1145\/1250662.1250697"},{"key":"e_1_2_1_21_1","doi-asserted-by":"publisher","DOI":"10.1145\/2429069.2429110"},{"key":"e_1_2_1_22_1","doi-asserted-by":"publisher","DOI":"10.1145\/2485922.2485941"},{"key":"e_1_2_1_23_1","doi-asserted-by":"publisher","DOI":"10.1145\/1450058.1450093"},{"volume-title":"Proceedings of the 31st ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI\u201910)","author":"Flanagan Cormac","key":"e_1_2_1_24_1","unstructured":"Cormac Flanagan and Stephen N. Freund . 2010. Adversarial memory for detecting destructive races . In Proceedings of the 31st ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI\u201910) . ACM, 244\u2013254. Cormac Flanagan and Stephen N. Freund. 2010. Adversarial memory for detecting destructive races. In Proceedings of the 31st ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI\u201910). ACM, 244\u2013254."},{"key":"e_1_2_1_25_1","doi-asserted-by":"publisher","DOI":"10.1145\/1297027.1297033"},{"key":"e_1_2_1_26_1","doi-asserted-by":"publisher","DOI":"10.1109\/ISSRE.2016.48"},{"key":"e_1_2_1_27_1","volume-title":"Retrieved on","author":"Machine Java Virtual","year":"2021","unstructured":"Java Virtual Machine Specification 2017. Retrieved on June 2021 from https:\/\/docs.oracle.com\/javase\/specs\/jvms\/se8\/html. Java Virtual Machine Specification 2017. Retrieved on June 2021 from https:\/\/docs.oracle.com\/javase\/specs\/jvms\/se8\/html."},{"key":"e_1_2_1_28_1","doi-asserted-by":"publisher","DOI":"10.1145\/2933575.2934536"},{"volume-title":"JSR-133 Cookbook for Compiler Writers. Retrieved on","year":"2021","key":"e_1_2_1_29_1","unstructured":"JSR133 2018. JSR-133 Cookbook for Compiler Writers. Retrieved on June 2021 from http:\/\/g.oswego.edu\/dl\/jmm\/cookbook.html. JSR133 2018. JSR-133 Cookbook for Compiler Writers. Retrieved on June 2021 from http:\/\/g.oswego.edu\/dl\/jmm\/cookbook.html."},{"volume-title":"The Julia Language. Retrieved on","year":"2021","key":"e_1_2_1_30_1","unstructured":"JuliaLang. 2020. The Julia Language. Retrieved on June 2021 from https:\/\/github.com\/JuliaLang\/julia\/commits\/v1.4.1. JuliaLang. 2020. The Julia Language. Retrieved on June 2021 from https:\/\/github.com\/JuliaLang\/julia\/commits\/v1.4.1."},{"key":"e_1_2_1_31_1","volume-title":"Proceedings of the 31st European Conference on Object-Oriented Programming (ECOOP\u201917) (Leibniz International Proceedings in Informatics (LIPIcs)), Peter M\u00fcller (Ed.)","volume":"74","author":"Kaiser Jan-Oliver","year":"2017","unstructured":"Jan-Oliver Kaiser , Hoang-Hai Dang , Derek Dreyer , Ori Lahav , and Viktor Vafeiadis . 2017 . Strong logic for weak memory: Reasoning about release-acquire consistency in iris . In Proceedings of the 31st European Conference on Object-Oriented Programming (ECOOP\u201917) (Leibniz International Proceedings in Informatics (LIPIcs)), Peter M\u00fcller (Ed.) , Vol. 74 . 17:1\u201317:29. Jan-Oliver Kaiser, Hoang-Hai Dang, Derek Dreyer, Ori Lahav, and Viktor Vafeiadis. 2017. Strong logic for weak memory: Reasoning about release-acquire consistency in iris. In Proceedings of the 31st European Conference on Object-Oriented Programming (ECOOP\u201917) (Leibniz International Proceedings in Informatics (LIPIcs)), Peter M\u00fcller (Ed.), Vol. 74. 17:1\u201317:29."},{"volume-title":"Proceedings of the ACM\/IEEE Conference on Supercomputing. IEEE Computer Society.","author":"Kamil A.","key":"e_1_2_1_32_1","unstructured":"A. Kamil , J. Su , and K. Yelick . 2005. Making sequential consistency practical in Titanium . In Proceedings of the ACM\/IEEE Conference on Supercomputing. IEEE Computer Society. A. Kamil, J. Su, and K. Yelick. 2005. Making sequential consistency practical in Titanium. In Proceedings of the ACM\/IEEE Conference on Supercomputing. IEEE Computer Society."},{"key":"e_1_2_1_33_1","doi-asserted-by":"publisher","DOI":"10.1145\/3009837.3009850"},{"key":"e_1_2_1_34_1","doi-asserted-by":"publisher","DOI":"10.1145\/3062341.3062352"},{"key":"e_1_2_1_35_1","doi-asserted-by":"publisher","DOI":"10.1109\/TC.1979.1675439"},{"volume-title":"Proceedings of the International Symposium on Code Generation and Optimization: Feedback-directed and Runtime Optimization. IEEE Computer Society.","author":"Lattner C.","key":"e_1_2_1_36_1","unstructured":"C. Lattner and V. Adve . 2004. LLVM: A compilation framework for lifelong program analysis & transformation . In Proceedings of the International Symposium on Code Generation and Optimization: Feedback-directed and Runtime Optimization. IEEE Computer Society. C. Lattner and V. Adve. 2004. LLVM: A compilation framework for lifelong program analysis & transformation. In Proceedings of the International Symposium on Code Generation and Optimization: Feedback-directed and Runtime Optimization. IEEE Computer Society."},{"key":"e_1_2_1_38_1","doi-asserted-by":"publisher","DOI":"10.1145\/3133873"},{"key":"e_1_2_1_39_1","doi-asserted-by":"publisher","DOI":"10.1145\/3314221.3314611"},{"key":"e_1_2_1_40_1","volume-title":"Proceedings of the 37th International Symposium on Computer Architecture.","author":"Lucia Brandon","year":"2010","unstructured":"Brandon Lucia , Luis Ceze , Karin Strauss , Shaz Qadeer , and Hans Boehm . 2010 . Conflict exceptions: Providing simple parallel language semantics with precise hardware exceptions . In Proceedings of the 37th International Symposium on Computer Architecture. Brandon Lucia, Luis Ceze, Karin Strauss, Shaz Qadeer, and Hans Boehm. 2010. Conflict exceptions: Providing simple parallel language semantics with precise hardware exceptions. In Proceedings of the 37th International Symposium on Computer Architecture."},{"key":"e_1_2_1_41_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-31424-7_36"},{"volume-title":"Proceedings of the ACM SIGPLAN Symposium on Principles of Programming Languages. ACM, 378\u2013391","author":"Manson J.","key":"e_1_2_1_42_1","unstructured":"J. Manson , W. Pugh , and S. Adve . 2005. The Java memory model . In Proceedings of the ACM SIGPLAN Symposium on Principles of Programming Languages. ACM, 378\u2013391 . J. Manson, W. Pugh, and S. Adve. 2005. The Java memory model. In Proceedings of the ACM SIGPLAN Symposium on Principles of Programming Languages. ACM, 378\u2013391."},{"key":"e_1_2_1_43_1","volume-title":"Proceedings of the 1st Summit on Advances in Programming Languages (SNAPL\u201915)","volume":"32","author":"Marino Daniel","year":"2015","unstructured":"Daniel Marino , Todd Millstein , Madanlal Musuvathi , Satish Narayanasamy , and Abhayendra Singh . 2015 . The silently shifting semicolon . In Proceedings of the 1st Summit on Advances in Programming Languages (SNAPL\u201915) (Leibniz International Proceedings in Informatics (LIPIcs)), Thomas Ball, Rastislav Bodik, Shriram Krishnamurthi, Benjamin S. Lerner, and Greg Morrisett (Eds.) , Vol. 32 . 177\u2013189. Daniel Marino, Todd Millstein, Madanlal Musuvathi, Satish Narayanasamy, and Abhayendra Singh. 2015. The silently shifting semicolon. In Proceedings of the 1st Summit on Advances in Programming Languages (SNAPL\u201915) (Leibniz International Proceedings in Informatics (LIPIcs)), Thomas Ball, Rastislav Bodik, Shriram Krishnamurthi, Benjamin S. Lerner, and Greg Morrisett (Eds.), Vol. 32. 177\u2013189."},{"key":"e_1_2_1_44_1","doi-asserted-by":"publisher","DOI":"10.1145\/1806596.1806636"},{"key":"e_1_2_1_45_1","doi-asserted-by":"publisher","DOI":"10.1145\/1993498.1993522"},{"key":"e_1_2_1_46_1","volume-title":"MLlib: Machine learning in apache spark. CoRR abs\/1505.06807","author":"Meng Xiangrui","year":"2015","unstructured":"Xiangrui Meng , Joseph K. Bradley , Burak Yavuz , Evan R. Sparks , Shivaram Venkataraman , Davies Liu , Jeremy Freeman , D. B. Tsai , Manish Amde , Sean Owen , Doris Xin , Reynold Xin , Michael J. Franklin , Reza Zadeh , Matei Zaharia , and Ameet Talwalkar . 2015. MLlib: Machine learning in apache spark. CoRR abs\/1505.06807 ( 2015 ). Xiangrui Meng, Joseph K. Bradley, Burak Yavuz, Evan R. Sparks, Shivaram Venkataraman, Davies Liu, Jeremy Freeman, D. B. Tsai, Manish Amde, Sean Owen, Doris Xin, Reynold Xin, Michael J. Franklin, Reza Zadeh, Matei Zaharia, and Ameet Talwalkar. 2015. MLlib: Machine learning in apache spark. CoRR abs\/1505.06807 (2015)."},{"key":"e_1_2_1_47_1","doi-asserted-by":"publisher","DOI":"10.1145\/2491956.2491967"},{"key":"e_1_2_1_48_1","doi-asserted-by":"publisher","DOI":"10.1145\/3276506"},{"key":"e_1_2_1_49_1","doi-asserted-by":"publisher","DOI":"10.5555\/3241639.3241651"},{"key":"e_1_2_1_50_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-03359-9_27"},{"key":"e_1_2_1_51_1","doi-asserted-by":"publisher","DOI":"10.1145\/2837614.2837616"},{"key":"e_1_2_1_52_1","volume-title":"Types and Programming Languages","author":"Pierce Benjamin","year":"2021","unstructured":"Benjamin Pierce . 2002. Types and Programming Languages . The MIT Press . Retrieved on June 2021 from http:\/\/www.cis.upenn.edu\/ bcpierce\/tapl\/index.html. Benjamin Pierce. 2002. Types and Programming Languages. The MIT Press. Retrieved on June 2021 from http:\/\/www.cis.upenn.edu\/ bcpierce\/tapl\/index.html."},{"key":"e_1_2_1_53_1","doi-asserted-by":"publisher","DOI":"10.1145\/1755913.1755922"},{"volume-title":"Proceedings of the 21st ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming (PPoPP\u201916)","author":"Carl","key":"e_1_2_1_54_1","unstructured":"Carl G. Ritson and Scott Owens. 2016. Benchmarking weak memory models . In Proceedings of the 21st ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming (PPoPP\u201916) . Carl G. Ritson and Scott Owens. 2016. Benchmarking weak memory models. In Proceedings of the 21st ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming (PPoPP\u201916)."},{"key":"e_1_2_1_55_1","doi-asserted-by":"publisher","DOI":"10.1145\/1993316.1993520"},{"key":"e_1_2_1_56_1","volume-title":"Schmidt and Tim Harrison","author":"Douglas","year":"1997","unstructured":"Douglas C. Schmidt and Tim Harrison . 1997 . Double-checked locking: An optimization pattern for efficiently initializing and accessing thread-safe objects. In Pattern Languages of Program Design 3, Robert C. Martin, Dirk Riehle, and Frank Buschmann (Eds.). Addison-Wesley Longman Publishing Co. , Inc., 363\u2013375. Douglas C. Schmidt and Tim Harrison. 1997. Double-checked locking: An optimization pattern for efficiently initializing and accessing thread-safe objects. In Pattern Languages of Program Design 3, Robert C. Martin, Dirk Riehle, and Frank Buschmann (Eds.). Addison-Wesley Longman Publishing Co., Inc., 363\u2013375."},{"key":"e_1_2_1_57_1","volume-title":"Proceedings of the 20th International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS\u201915)","author":"Sengupta Aritra","year":"2015","unstructured":"Aritra Sengupta , Swarnendu Biswas , Minjia Zhang , Michael D. Bond , and Milind Kulkarni . 2015 . Hybrid static\u2013dynamic analysis for statically bounded region serializability . In Proceedings of the 20th International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS\u201915) . 561\u2013575. Aritra Sengupta, Swarnendu Biswas, Minjia Zhang, Michael D. Bond, and Milind Kulkarni. 2015. Hybrid static\u2013dynamic analysis for statically bounded region serializability. In Proceedings of the 20th International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS\u201915). 561\u2013575."},{"key":"e_1_2_1_58_1","doi-asserted-by":"publisher","DOI":"10.1145\/2807426.2807432"},{"key":"e_1_2_1_59_1","volume-title":"Proceedings of the 31st European Conference on Object-oriented Programming (ECOOP\u201908)","author":"Sevc\u00edk Jaroslav","year":"2008","unstructured":"Jaroslav Sevc\u00edk and David Aspinall . 2008 . On validity of program transformations in the Java memory model . In Proceedings of the 31st European Conference on Object-oriented Programming (ECOOP\u201908) . 27\u201351. Jaroslav Sevc\u00edk and David Aspinall. 2008. On validity of program transformations in the Java memory model. In Proceedings of the 31st European Conference on Object-oriented Programming (ECOOP\u201908). 27\u201351."},{"key":"e_1_2_1_60_1","doi-asserted-by":"publisher","DOI":"10.1145\/42190.42277"},{"key":"e_1_2_1_61_1","doi-asserted-by":"publisher","DOI":"10.1145\/1950365.1950375"},{"volume-title":"Proceedings of the 39th International Symposium on Computer Architecture. 524 \u2013535","author":"Singh Abhayendra","key":"e_1_2_1_62_1","unstructured":"Abhayendra Singh , S. Narayanasamy , D. Marino , T. Millstein , and M. Musuvathi . 2012. End-to-end Sequential Consistency . In Proceedings of the 39th International Symposium on Computer Architecture. 524 \u2013535 . Abhayendra Singh, S. Narayanasamy, D. Marino, T. Millstein, and M. Musuvathi. 2012. End-to-end Sequential Consistency. In Proceedings of the 39th International Symposium on Computer Architecture. 524 \u2013535."},{"volume-title":"Proceedings of the 10th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming. 2\u201313","author":"Sura Z.","key":"e_1_2_1_63_1","unstructured":"Z. Sura , X. Fang , C. L. Wong , S. P. Midkiff , J. Lee , and D. Padua . 2005. Compiler techniques for high performance sequentially consistent Java programs . In Proceedings of the 10th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming. 2\u201313 . Z. Sura, X. Fang, C. L. Wong, S. P. Midkiff, J. Lee, and D. Padua. 2005. Compiler techniques for high performance sequentially consistent Java programs. In Proceedings of the 10th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming. 2\u201313."},{"volume-title":"Proceedings of the 22nd ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming (PPoPP\u201917)","author":"Vollmer Michael","key":"e_1_2_1_64_1","unstructured":"Michael Vollmer , Ryan G. Scott , Madanlal Musuvathi , and Ryan R. Newton . 2017. SC-Haskell: Sequential consistency in languages that minimize mutable shared heap . In Proceedings of the 22nd ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming (PPoPP\u201917) . ACM, 283\u2013298. Michael Vollmer, Ryan G. Scott, Madanlal Musuvathi, and Ryan R. Newton. 2017. SC-Haskell: Sequential consistency in languages that minimize mutable shared heap. In Proceedings of the 22nd ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming (PPoPP\u201917). ACM, 283\u2013298."},{"key":"e_1_2_1_65_1","doi-asserted-by":"publisher","DOI":"10.1145\/2934664"},{"volume-title":"Proceedings of the ACM SIGPLAN International Symposium on Memory Management (ISMM\u201917)","author":"Zhang Minjia","key":"e_1_2_1_66_1","unstructured":"Minjia Zhang , Swarnendu Biswas , and Michael D. Bond . 2017. Avoiding consistency exceptions under strong memory models . In Proceedings of the ACM SIGPLAN International Symposium on Memory Management (ISMM\u201917) . ACM, 115\u2013127. Minjia Zhang, Swarnendu Biswas, and Michael D. Bond. 2017. Avoiding consistency exceptions under strong memory models. In Proceedings of the ACM SIGPLAN International Symposium on Memory Management (ISMM\u201917). ACM, 115\u2013127."}],"container-title":["ACM Transactions on Programming Languages and Systems"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3462206","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3462206","content-type":"application\/pdf","content-version":"vor","intended-application":"syndication"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3462206","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,17]],"date-time":"2025-06-17T20:48:53Z","timestamp":1750193333000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3462206"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2021,9,3]]},"references-count":65,"journal-issue":{"issue":"3","published-print":{"date-parts":[[2021,9,30]]}},"alternative-id":["10.1145\/3462206"],"URL":"https:\/\/doi.org\/10.1145\/3462206","relation":{},"ISSN":["0164-0925","1558-4593"],"issn-type":[{"type":"print","value":"0164-0925"},{"type":"electronic","value":"1558-4593"}],"subject":[],"published":{"date-parts":[[2021,9,3]]},"assertion":[{"value":"2020-09-01","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2021-04-01","order":1,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2021-09-03","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}