Abstract

JavaScript, the most popular language on the Web, is rapidly moving to the server-side, becoming even more pervasive. Still, JavaScript lacks support for shared memory parallelism, making it challenging for developers to exploit multicores present in both servers and clients. In this paper we present TigerQuoll, a novel API and runtime for parallel programming in JavaScript. TigerQuoll features an event-based API and a parallel runtime allowing applications to exploit a mutable shared memory space. The programming model of TigerQuoll features automatic consistency and concurrency management, such that developers do not have to deal with shared-data synchronization. TigerQuoll supports an innovative transaction model that allows for eventual consistency to speed up high-contention workloads. Experiments show that TigerQuoll applications scale well, allowing one to implement common parallelism patterns in JavaScript.
- HTML5 Web Worker API specification draft. URL http://dev.w3.org/html5/workers/.Google Scholar
- Node.JS: evented programming for networked services in JS. URL http://www.nodejs.org.Google Scholar
- OpenCL, the standard for parallel programming of GPU. URL http://developer.amd.com.Google Scholar
- Mozilla SpiderMonkey JS engine. URL www.mozilla.org/js/spidermonkey/.Google Scholar
- D. Bonetta, P. Achille, C. Pautasso, and W. Binder. S: a scripting language for high-performance RESTful Web services. In Proc. of PPoPP, pages 97--106, 2012. Google Scholar
Digital Library
- C. Cascaval, C. Blundell, M. Michael, H. W. Cain, P. Wu, S. Chiras, and S. Chatterjee. Software Transactional Memory: Why Is It Only a Research Toy? Queue, 6 (5): 46--58, Sept. 2008. Google Scholar
Digital Library
- P. Charles, C. Grothoff, V. Saraswat, C. Donawa, A. Kielstra, K. Ebcioglu, C. von Praun, and V. Sarkar. X10: an object-oriented approach to non-uniform cluster computing. In Proc. of OOPSLA, OOPSLA '05, pages 519--538, 2005. Google Scholar
Digital Library
- M. Cole. Algorithmic skeletons: structured management of parallel computation. MIT Press, Cambridge, MA, USA, 1991. Google Scholar
Digital Library
- M. Cole. Bringing skeletons out of the closet: a pragmatic manifesto for skeletal parallel programming. Parallel Comput., 30 (3): 389--406, Mar. 2004. Google Scholar
Digital Library
- P. Damron, A. Fedorova, Y. Lev, V. Luchangco, M. Moir, and D. Nussbaum. Hybrid transactional memory. In Proceedings of the 12th international conference on Architectural support for programming languages and operating systems, ASPLOS-XII, pages 336--346, 2006. Google Scholar
Digital Library
- J. Dean and S. Ghemawat. MapReduce: simplified data processing on large clusters. Commun. ACM, 51 (1): 107--113, Jan. 2008. Google Scholar
Digital Library
- D. Dice, O. Shalev, and N. Shavit. Transactional locking II. In Proceedings of the 20th international conference on Distributed Computing, DISC'06, pages 194--208, 2006. Google Scholar
Digital Library
- A. Dragojević, R. Guerraoui, and M. Kapalka. Stretching transactional memory. In Proceedings of the 2009 ACM SIGPLAN conference on Programming language design and implementation, PLDI '09, pages 155--165, 2009. Google Scholar
Digital Library
- A. Dragojević, P. Felber, V. Gramoli, and R. Guerraoui. Why S™ can be more than a research toy. Commun. ACM, 54 (4): 70--77, Apr. 2011. Google Scholar
Digital Library
- A. Erbad, N. C. Hutchinson, and C. Krasic. DOHA: scalable real-time Web applications through adaptive concurrent execution. In Proceedings of the 21st international conference on World Wide Web, WWW '12, pages 161--170, 2012. Google Scholar
Digital Library
- D. Flanagan. JavaScript. The Definitive Guide. O'Reilly, 5th rev. edition, 2006. Google Scholar
Digital Library
- R. H. Halstead, Jr. Multilisp: a language for concurrent symbolic computation. ACM Trans. Program. Lang. Syst., 7 (4): 501--538, Oct. 1985. Google Scholar
Digital Library
- T. Harris, J. Larus, and R. Rajwar. Transactional Memory. Morgan and Claypool, 2nd edition, 2010. Google Scholar
Digital Library
- S. Herhut, R. L. Hudson, T. Shpeisman, and J. Sreeram. Parallel programming for the Web. In Proceedings of the 4th USENIX conference on Hot Topics in Parallelism, HotPar'12, pages 1--6, 2012. Google Scholar
Digital Library
- M. Isard and A. Birrell. Automatic mutual exclusion. In Proceedings of the 11th USENIX workshop on Hot topics in operating systems, HOTOS'07, pages 3:1--3:6, 2007. Google Scholar
Digital Library
- D. Lea. Concurrent Programming in Java. Second Edition: Design Principles and Patterns. Addison-Wesley, Boston, MA, USA, 2nd edition, 1999. Google Scholar
Digital Library
- D. Lea. A Java fork/join framework. In Proceedings of the ACM 2000 conference on Java Grande, JAVA '00, pages 36--43, 2000. Google Scholar
Digital Library
- N. D. Matsakis. Parallel closures: a new twist on an old idea. In Proceedings of the 4th USENIX conference on Hot Topics in Parallelism, HotPar'12, pages 1--6, 2012. Google Scholar
Digital Library
- M. D. McCool. Structured parallel programming with deterministic patterns. In Proceedings of the 2nd USENIX conference on Hot topics in parallelism, HotPar'10, pages 1--6, 2010. Google Scholar
Digital Library
- M. Mehrara, P.-C. Hsu, M. Samadi, and S. A. Mahlke. Dynamic parallelization of JavaScript applications using an ultra-lightweight speculation mechanism. In 17th International Conference on High-Performance Computer Architecture, HPCA-17, pages 87--98, 2011. Google Scholar
Digital Library
- M. Odersky, S. Micheloud, N. Mihaylov, M. Schinz, E. Stenman, M. Zenger, and et al. An overview of the Scala programming language. Technical Report IC/2004/64, EPFL Lausanne, Switzerland, 2004.Google Scholar
- R. Power and J. Li. Piccolo: building fast, distributed programs with partitioned tables. In Proceedings of the 9th USENIX conference on Operating systems design and implementation, OSDI'10, pages 1--14, 2010. Google Scholar
Digital Library
- D. Syme, T. Petricek, and D. Lomov. The F# asynchronous programming model. In Proceedings of the 13th international conference on Practical aspects of declarative languages, PADL'11, pages 175--189, 2011. Google Scholar
Digital Library
Index Terms
TigerQuoll: parallel event-based JavaScript
Recommendations
TigerQuoll: parallel event-based JavaScript
PPoPP '13: Proceedings of the 18th ACM SIGPLAN symposium on Principles and practice of parallel programmingJavaScript, the most popular language on the Web, is rapidly moving to the server-side, becoming even more pervasive. Still, JavaScript lacks support for shared memory parallelism, making it challenging for developers to exploit multicores present in ...
Teaching parallelism with river trail
DCP '12: Proceedings of the 2012 workshop on Developing competency in parallelism: techniques for education and trainingParallel hardware is today's reality and parallel programming models exist for most mainstream languages. Surprisingly JavaScript, the mother tongue of the web, is still stuck in its sequential past. JavaScript's unique programming model, the web's ...
Exploiting parallelism in deterministic shared memory multiprocessing
Multi-threaded programs on shared-memory hardware tend to be non-deterministic, which brings challenges to software debugging and testing. Current deterministic implementations eliminate nondeterminism of multi-threaded programs by trading much ...







Comments