{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,10,28]],"date-time":"2025-10-28T03:16:49Z","timestamp":1761621409271,"version":"3.41.0"},"reference-count":33,"publisher":"Association for Computing Machinery (ACM)","issue":"OOPSLA","license":[{"start":{"date-parts":[[2018,10,24]],"date-time":"2018-10-24T00:00:00Z","timestamp":1540339200000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0\/"}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["Proc. ACM Program. Lang."],"published-print":{"date-parts":[[2018,10,24]]},"abstract":"<jats:p>To leverage the benefits of modern hardware, dynamic languages must support parallelism, and parallelism requires a virtual machine (VM) capable of parallel execution \u2014 a parallel VM. However, unrestricted concurrency and the dynamism of dynamic languages pose great challenges to the implementation of parallel VMs. In a dynamic language, a program changing itself is part of the language model. To help the VM, languages often choose memory models (MM) that weaken consistency guarantees. With lesser guarantees, local program state cannot be affected by every concurrent state change. And less interference allows a VM to make local assumptions about the program state which are not immediately violated. These local assumptions are essential for a VM\u2019s just-in-time compiler for delivering state-of-the-art VM performance.<\/jats:p>\n          <jats:p>Unfortunately, some dynamic languages employ MMs that give exceedingly strong consistency guarantees and thereby hinder the development of parallel VMs. Such is the case in particular for languages that depend on a global interpreter lock, which mandates a MM with sequential consistency and instruction atomicity.<\/jats:p>\n          <jats:p>In this paper, we reflect on a first implementation of the Parallel RPython execution model, which facilitates the development of parallel VMs by decoupling language semantics from the synchronization mechanism used within the VM. The implementation addresses the challenges imposed by strong MMs through strict isolation of concurrent computations. This isolation builds on transactional parallel worlds, which are implemented with a novel combination of software techniques and the capabilities of modern hardware.<\/jats:p>\n          <jats:p>We evaluate a set of parallel Python programs on a parallel VM that relies on Parallel RPython\u2019s implementation. Compared with a serial baseline VM that relies on a global interpreter lock, the parallel VM achieves speedups of up to 7.5\u00d7 on 8 CPU cores. The evaluation shows that our realization of Parallel RPython meets the challenges of dynamic languages, and that it can serve as a solid foundation for the construction of parallel dynamic language VMs.<\/jats:p>","DOI":"10.1145\/3276479","type":"journal-article","created":{"date-parts":[[2018,10,24]],"date-time":"2018-10-24T11:57:18Z","timestamp":1540382238000},"page":"1-25","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":4,"title":["Virtual machine design for parallel dynamic programming languages"],"prefix":"10.1145","volume":"2","author":[{"given":"Remigius","family":"Meier","sequence":"first","affiliation":[{"name":"ETH Zurich, Switzerland"}]},{"given":"Armin","family":"Rigo","sequence":"additional","affiliation":[{"name":"n.n., n.n."}]},{"given":"Thomas R.","family":"Gross","sequence":"additional","affiliation":[{"name":"ETH Zurich, Switzerland"}]}],"member":"320","published-online":{"date-parts":[[2018,10,24]]},"reference":[{"key":"e_1_2_2_1_1","doi-asserted-by":"publisher","DOI":"10.1145\/1504176.1504203"},{"key":"e_1_2_2_2_1","doi-asserted-by":"publisher","DOI":"10.1145\/3857.3859"},{"key":"e_1_2_2_3_1","doi-asserted-by":"publisher","DOI":"10.1145\/1810891.1810910"},{"key":"e_1_2_2_4_1","doi-asserted-by":"publisher","DOI":"10.1145\/988376.988378"},{"key":"e_1_2_2_5_1","doi-asserted-by":"publisher","DOI":"10.1145\/1565824.1565827"},{"key":"e_1_2_2_6_1","doi-asserted-by":"publisher","DOI":"10.1145\/1454456.1454466"},{"key":"e_1_2_2_7_1","doi-asserted-by":"publisher","DOI":"10.1145\/74877.74884"},{"volume-title":"Euro-Par 2010 - Parallel Processing (Lecture Notes in Computer Science)","author":"Dalessandro Luke","key":"e_1_2_2_8_1"},{"key":"e_1_2_2_9_1","doi-asserted-by":"publisher","DOI":"10.1145\/2983990.2984001"},{"key":"e_1_2_2_10_1","doi-asserted-by":"publisher","DOI":"10.1145\/3276478"},{"key":"e_1_2_2_11_1","unstructured":"Alan Dearle. 1988. On the Construction of Persistent Programming Environments. Ph.D. Dissertation. AAIDX86382.   Alan Dearle. 1988. On the Construction of Persistent Programming Environments. Ph.D. Dissertation. AAIDX86382."},{"key":"e_1_2_2_12_1","doi-asserted-by":"publisher","DOI":"10.1145\/1924421.1924440"},{"key":"e_1_2_2_13_1","unstructured":"IronPython. 2018. The IronPython Project. http:\/\/ironpython.net\/.  IronPython. 2018. The IronPython Project. http:\/\/ironpython.net\/."},{"key":"e_1_2_2_14_1","unstructured":"JRuby. 2018. Concurrency in JRuby. https:\/\/github.com\/jruby\/jruby\/wiki\/Concurrency-in-jruby.  JRuby. 2018. Concurrency in JRuby. https:\/\/github.com\/jruby\/jruby\/wiki\/Concurrency-in-jruby."},{"key":"e_1_2_2_15_1","unstructured":"Jython. 2018. Jython Concurrency. http:\/\/www.jython.org\/jythonbook\/en\/1.0\/Concurrency.html.  Jython. 2018. Jython Concurrency. http:\/\/www.jython.org\/jythonbook\/en\/1.0\/Concurrency.html."},{"volume-title":"Concurrent Scheme. In Proceedings of the US\/Japan Workshop on Parallel Lisp: Languages and Systems . Springer-Verlag","author":"Robert","key":"e_1_2_2_16_1"},{"key":"e_1_2_2_17_1","doi-asserted-by":"publisher","DOI":"10.1145\/1562868.1562870"},{"key":"e_1_2_2_18_1","doi-asserted-by":"publisher","DOI":"10.1109\/IWOOOS.1993.324932"},{"volume-title":"Proceedings of the Joint European Conferences on Theory and Practice of Software 17th International Conference on Compiler Construction (CC\u201908\/ETAPS\u201908)","author":"Liu Yu David","key":"e_1_2_2_19_1"},{"volume-title":"EMME: A Formal Tool for ECMAScript Memory Model Evaluation. In Tools and Algorithms for the Construction and Analysis of Systems","year":"2018","author":"Mattarei Cristian","key":"e_1_2_2_20_1"},{"key":"e_1_2_2_21_1","doi-asserted-by":"publisher","DOI":"10.1145\/2989225.2989233"},{"key":"e_1_2_2_22_1","doi-asserted-by":"publisher","DOI":"10.1145\/2150976.2151018"},{"key":"e_1_2_2_23_1","doi-asserted-by":"publisher","DOI":"10.1145\/2555243.2555247"},{"key":"e_1_2_2_24_1","unstructured":"PyPy. 2018. PyPy Benchmarks on Bitbucket. https:\/\/bitbucket.org\/pypy\/benchmarks.  PyPy. 2018. PyPy Benchmarks on Bitbucket. https:\/\/bitbucket.org\/pypy\/benchmarks."},{"key":"e_1_2_2_25_1","unstructured":"Python Software Foundation. 2018. Python FAQ. https:\/\/docs.python.org\/2\/faq\/library.html#what-kinds-of-global-valuemutation-are-thread-safe.  Python Software Foundation. 2018. Python FAQ. https:\/\/docs.python.org\/2\/faq\/library.html#what-kinds-of-global-valuemutation-are-thread-safe."},{"key":"e_1_2_2_26_1","doi-asserted-by":"publisher","DOI":"10.1145\/1176617.1176753"},{"key":"e_1_2_2_27_1","doi-asserted-by":"publisher","DOI":"10.1145\/1176617.1176758"},{"key":"e_1_2_2_28_1","doi-asserted-by":"publisher","DOI":"10.1145\/1869459.1869507"},{"key":"e_1_2_2_29_1","doi-asserted-by":"publisher","DOI":"10.1145\/1978907.1978911"},{"key":"e_1_2_2_30_1","doi-asserted-by":"publisher","DOI":"10.1016\/S0065-2458(09)01205-4"},{"key":"e_1_2_2_31_1","doi-asserted-by":"publisher","DOI":"10.1145\/2442516.2442528"},{"key":"e_1_2_2_32_1","doi-asserted-by":"publisher","DOI":"10.1145\/2384716.2384723"},{"key":"e_1_2_2_33_1","doi-asserted-by":"publisher","DOI":"10.1145\/2384577.2384587"}],"container-title":["Proceedings of the ACM on Programming Languages"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3276479","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3276479","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T01:01:58Z","timestamp":1750208518000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3276479"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2018,10,24]]},"references-count":33,"journal-issue":{"issue":"OOPSLA","published-print":{"date-parts":[[2018,10,24]]}},"alternative-id":["10.1145\/3276479"],"URL":"https:\/\/doi.org\/10.1145\/3276479","relation":{},"ISSN":["2475-1421"],"issn-type":[{"type":"electronic","value":"2475-1421"}],"subject":[],"published":{"date-parts":[[2018,10,24]]},"assertion":[{"value":"2018-10-24","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}