skip to main content
research-article

SqueakJS: a modern and practical smalltalk that runs in any browser

Authors Info & Claims
Published:14 October 2014Publication History
Skip Abstract Section

Abstract

We report our experience in implementing SqueakJS, a bit-compatible implementation of Squeak/Smalltalk written in pure JavaScript. SqueakJS runs entirely in the Web browser with a virtual filesystem that can be directed to a server or client-side storage. Our implementation is notable for simplicity and performance gained through adaptation to the host object memory and deployment leverage gained through the Lively Web development environment. We present several novel techniques as well as performance measurements for the resulting virtual machine. Much of this experience is potentially relevant to preserving other dynamic language systems and making them available in a browser-based environment.

References

  1. C. F. Bolz. Meta-tracing Just-in-time Compilation for RPython. PhD thesis, Mathematisch-Naturwissenschaftliche Fakultät, Heinrich Heine Universität Düsseldorf, 2012.Google ScholarGoogle Scholar
  2. C. F. Bolz, A. Kuhn, A. Lienhard, N. D. Matsakis, O. Nierstrasz, L. Renggli, A. Rigo, and T. Verwaest. Back to the Future in One Week--Implementing a Smalltalk VM in PyPy. In phSelf-Sustaining Systems (S3), volume 5146 of phLecture Notes in Computer Science, pages 123--139. Springer, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. B. Canou, V. Balat, and E. Chailloux. O'Browser: Objective Caml on Browsers. In phACM SIGPLAN Workshop on ML, pages 69--78. ACM, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. A. C. Davison and D. V. Hinkley. phBootstrap Methods and Their Application, chapter 5. Cambridge, 1997.Google ScholarGoogle Scholar
  5. A. Goldberg and D. Robson. phSmalltalk-80: The Language and its Implementation. Addison-Wesley, 1983. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. M. Guzdial and K. Rose. phSqueak--Open Personal Computing and Multimedia. Prentice Hall, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. I. Hickson. Web storage. phW3C Recommendation, 2013.Google ScholarGoogle Scholar
  8. D. H. Ingalls, T. Kaehler, J. Maloney, S. Wallace, and A. Kay. Back to the Future: the Story of Squeak, a Practical Smalltalk Written in Itself. In phConference on Object- Oriented Programming, Systems, Languages, and Applications (OOPSLA), pages 318--326. ACM, 1997. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. A. Kay. Squeak Etoys, Children & Learning. Technical Report RN-2005-001, Viewpoints Research Institute, 2005.Google ScholarGoogle Scholar
  10. J. Lincke, R. Krahn, D. Ingalls, M. Röder, and R. Hirschfeld. The Lively PartsBin: A Cloud-Based Repository for Collaborative Development of Active Web Content. In phHawaii International Conference on System Science (HICSS), pages 693--701. IEEE, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. J. Maloney. Morphic: The self user interface framework. phSelf, 4, 1995.Google ScholarGoogle Scholar
  12. J. Maloney, L. Burd, Y. Kafai, N. Rusk, B. Silverman, and M. Resnick. Scratch: A Sneak Preview. In phConference on Creating, Connecting and Collaborating through Computing (C5), pages 104--109. IEEE, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. S. Marr and T. D'Hondt. Identifying a Unifying Mechanism for the Implementation of Concurrency Abstractions on Multi-language Virtual Machines. In phConference on Objects, Models, Components, Patterns (TOOLS), volume 7304 of phLecture Notes in Computer Science, pages 171--186. Springer, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. N. Mehta, J. Sicking, E. Graff, A. Popescu, J. Orlow, and J. Bell. Web storage. phW3C Candidate Recommendation, 2013.Google ScholarGoogle Scholar
  15. E. Miranda. The Cog Smalltalk Virtual Machine: Writing a JIT in a High-level Dynamic Language. In phWorkshop on Virtual Machines and Intermediate Languages (VMIL), 2011.Google ScholarGoogle Scholar
  16. D. Ungar and S. S. Adams. Hosting an Object Heap on Manycore Hardware: an Exploration. phSIGPLAN Notices, 44 (12): 99--110, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. L. Wassermann. Tracing Algorithmic Primitives in R/Squeak-VM. Master's thesis, Software Architecture Group, Hasso-Plattner-Institut Potsdam, 2013.Google ScholarGoogle Scholar
  18. M. Wolczko. self includes: Smalltalk. In phWorkshop on Prototype-Based Languages (co-located with ECOOP), Linz, Austria, 1996.Google ScholarGoogle Scholar
  19. D. Yoo and S. Krishnamurthi. Whalesong: Running Racket in the Browser. phSIGPLAN Notices, 49 (2): 97--108, 2013. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. A. Zakai. Emscripten: An LLVM-to-JavaScript Compiler. In phSPLASH'11 Companion (Wavefront), pages 301--312. ACM, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. SqueakJS: a modern and practical smalltalk that runs in any browser

    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 50, Issue 2
      DLS '14
      February 2015
      146 pages
      ISSN:0362-1340
      EISSN:1558-1160
      DOI:10.1145/2775052
      • Editor:
      • Andy Gill
      Issue’s Table of Contents
      • cover image ACM Conferences
        DLS '14: Proceedings of the 10th ACM Symposium on Dynamic languages
        October 2014
        160 pages
        ISBN:9781450332118
        DOI:10.1145/2661088

      Copyright © 2014 ACM

      Publisher

      Association for Computing Machinery

      New York, NY, United States

      Publication History

      • Published: 14 October 2014

      Check for updates

      Qualifiers

      • research-article

    PDF Format

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader
    About Cookies On This Site

    We use cookies to ensure that we give you the best experience on our website.

    Learn more

    Got it!