skip to main content
research-article

S: a scripting language for high-performance RESTful web services

Published:25 February 2012Publication History
Skip Abstract Section

Abstract

There is an urgent need for novel programming abstractions to leverage the parallelism in modern multicore machines. We introduce S, a new domain-specific language targeting the server-side scripting of high-performance RESTful Web services. S promotes an innovative programming model based on explicit (control-flow) and implicit (process-level) parallelism control, allowing the service developer to specify which portions of the control-flow should be executed in parallel. For each service, the choice of the best level of parallelism is left to the runtime system. We assess performance and scalability by implementing two non-trivial composite Web services in S. Experiments show that S-based Web services can handle thousands of concurrent client requests on a modern multicore machine.

References

  1. HTTP protocol specification. URL http://www.w3.org/Protocols/rfc2616/rfc2616.html.Google ScholarGoogle Scholar
  2. G. Agha. Actors: a model of concurrent computation in distributed systems. MIT Press, Cambridge, MA, USA, 1986. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. J. Aldrich, J. Sunshine, D. Saini, and Z. Sparks. Typestate-oriented programming. In Proc. of OOPSLA, pages 1015--1022, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. J. Aldrich, R. Garcia, M. Hahnenberg, M. Mohr, K. Naden, D. Saini, S. Stork, J. Sunshine, E. Tanter, and R. Wolff. Permission-based programming languages: Nier track. In Proc. of ICSE, pages 828--831, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. E. D. Berger, T. Yang, T. Liu, and G. Novark. Grace: safe multithreaded programming for C/C++. In Proc. of OOPSLA, pages 81--96, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. C. Boyapati, R. Lee, and M. Rinard. Ownership types for safe programming: preventing data races and deadlocks. In Proc. of OOPSLA, pages 211--230, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. L. Dagum and R. Menon. Openmp: An industry-standard api for shared-memory programming. IEEE Comput. Sci. Eng., 5: 46--55, January 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. C. Elliott and P. Hudak. Functional reactive animation. In Proc. of ICFP, pages 263--273, 1997. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. A. Fettig and G. Lefkowitz. Twisted network programming essentials. O'Reilly, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. R. T. Fielding. Architectural Styles and the Design of Network-based Software Architectures. PhD thesis, University of California, Irvine, 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. E. Fortuna, O. Anderson, L. Ceze, and S. Eggers. A limit study of JavaScript parallelism. In Proc. of IISWC, pages 1--10, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. P. Haller and M. Odersky. Scala actors: Unifying thread-based and event-based programming. Theor. Comput. Sci., 410: 202--220, February 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. I. Hickson. Web workers. World Wide Web Consortium, Working Draft WD-workers-20110310, March 2011.Google ScholarGoogle Scholar
  14. J. Hogg. Islands: aliasing protection in object-oriented languages. In Proc. of OOPSLA, pages 271--285, 1991. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. J. C. Jenista, Y. h. Eom, and B. C. Demsky. OoOJava: software out-of-order execution. In Proc. of PPoPP, pages 57--68, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. L. A. Meyerovich, A. Guha, J. Baskin, G. H. Cooper, M. Greenberg, A. Bromfield, and S. Krishnamurthi. Flapjax: a programming language for ajax applications. In Proc. of OOPSLA, pages 1--20, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. K. Ostrowski, C. Sakoda, and K. Birman. Self-replicating objects for multicore platforms. In Proc. of ECOOP, pages 452--477, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. K. H. Randall. Cilk: efficient multithreaded computing. PhD thesis, 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. S. Tilkov and S. Vinoski. Node.js: Using JavaScript to build high-performance network programs. IEEE Internet Computing, 14: 80--83, November 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. R. Virding, C. Wikström, and M. Williams. Concurrent programming in ERLANG (2nd ed.). Prentice Hall International (UK) Ltd., 1996. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. C. von Praun, L. Ceze, and C. Caşcaval. Implicit parallelism with ordered transactions. In Proc. of PPoPP, pages 79--89, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. S: a scripting language for high-performance RESTful web services

      Recommendations

      Comments

      Login options

      Check if you have access through your login credentials or your institution to get full access on this article.

      Sign in

      Full Access

      • Published in

        cover image ACM SIGPLAN Notices
        ACM SIGPLAN Notices  Volume 47, Issue 8
        PPOPP '12
        August 2012
        334 pages
        ISSN:0362-1340
        EISSN:1558-1160
        DOI:10.1145/2370036
        Issue’s Table of Contents
        • cover image ACM Conferences
          PPoPP '12: Proceedings of the 17th ACM SIGPLAN symposium on Principles and Practice of Parallel Programming
          February 2012
          352 pages
          ISBN:9781450311601
          DOI:10.1145/2145816

        Copyright © 2012 ACM

        Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

        Publisher

        Association for Computing Machinery

        New York, NY, United States

        Publication History

        • Published: 25 February 2012

        Check for updates

        Qualifiers

        • research-article

      PDF Format

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader