skip to main content
10.1145/2661088.2661100acmconferencesArticle/Chapter ViewAbstractPublication PagessplashConference Proceedingsconference-collections
research-article

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

Published: 14 October 2014 Publication History

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.
[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.
[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.
[4]
A. C. Davison and D. V. Hinkley. phBootstrap Methods and Their Application, chapter 5. Cambridge, 1997.
[5]
A. Goldberg and D. Robson. phSmalltalk-80: The Language and its Implementation. Addison-Wesley, 1983.
[6]
M. Guzdial and K. Rose. phSqueak--Open Personal Computing and Multimedia. Prentice Hall, 2002.
[7]
I. Hickson. Web storage. phW3C Recommendation, 2013.
[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.
[9]
A. Kay. Squeak Etoys, Children & Learning. Technical Report RN-2005-001, Viewpoints Research Institute, 2005.
[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.
[11]
J. Maloney. Morphic: The self user interface framework. phSelf, 4, 1995.
[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.
[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.
[14]
N. Mehta, J. Sicking, E. Graff, A. Popescu, J. Orlow, and J. Bell. Web storage. phW3C Candidate Recommendation, 2013.
[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.
[16]
D. Ungar and S. S. Adams. Hosting an Object Heap on Manycore Hardware: an Exploration. phSIGPLAN Notices, 44 (12): 99--110, 2009.
[17]
L. Wassermann. Tracing Algorithmic Primitives in R/Squeak-VM. Master's thesis, Software Architecture Group, Hasso-Plattner-Institut Potsdam, 2013.
[18]
M. Wolczko. self includes: Smalltalk. In phWorkshop on Prototype-Based Languages (co-located with ECOOP), Linz, Austria, 1996.
[19]
D. Yoo and S. Krishnamurthi. Whalesong: Running Racket in the Browser. phSIGPLAN Notices, 49 (2): 97--108, 2013.
[20]
A. Zakai. Emscripten: An LLVM-to-JavaScript Compiler. In phSPLASH'11 Companion (Wavefront), pages 301--312. ACM, 2011.

Cited By

View all
  • (2020)The evolution of Smalltalk: from Smalltalk-72 through SqueakProceedings of the ACM on Programming Languages10.1145/33863354:HOPL(1-101)Online publication date: 12-Jun-2020
  • (2019)GraalSqueak: toward a smalltalk-based tooling platform for polyglot programmingProceedings of the 16th ACM SIGPLAN International Conference on Managed Programming Languages and Runtimes10.1145/3357390.3361024(14-26)Online publication date: 21-Oct-2019
  • (2019)Efficient implementation of Smalltalk activation records in language implementation frameworksCompanion Proceedings of the 3rd International Conference on the Art, Science, and Engineering of Programming10.1145/3328433.3328440(1-3)Online publication date: 1-Apr-2019
  • Show More Cited By

Index Terms

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

    Recommendations

    Comments

    Information & Contributors

    Information

    Published In

    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
    • 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
    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 the author(s) 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].

    Sponsors

    In-Cooperation

    Publisher

    Association for Computing Machinery

    New York, NY, United States

    Publication History

    Published: 14 October 2014

    Permissions

    Request permissions for this article.

    Check for updates

    Author Tags

    1. javascript
    2. languages
    3. performance
    4. smalltalk
    5. squeak
    6. virtual machines
    7. web browsers

    Qualifiers

    • Research-article

    Conference

    SPLASH '14
    Sponsor:

    Acceptance Rates

    DLS '14 Paper Acceptance Rate 13 of 28 submissions, 46%;
    Overall Acceptance Rate 32 of 77 submissions, 42%

    Upcoming Conference

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)10
    • Downloads (Last 6 weeks)1
    Reflects downloads up to 20 Feb 2025

    Other Metrics

    Citations

    Cited By

    View all
    • (2020)The evolution of Smalltalk: from Smalltalk-72 through SqueakProceedings of the ACM on Programming Languages10.1145/33863354:HOPL(1-101)Online publication date: 12-Jun-2020
    • (2019)GraalSqueak: toward a smalltalk-based tooling platform for polyglot programmingProceedings of the 16th ACM SIGPLAN International Conference on Managed Programming Languages and Runtimes10.1145/3357390.3361024(14-26)Online publication date: 21-Oct-2019
    • (2019)Efficient implementation of Smalltalk activation records in language implementation frameworksCompanion Proceedings of the 3rd International Conference on the Art, Science, and Engineering of Programming10.1145/3328433.3328440(1-3)Online publication date: 1-Apr-2019
    • (2016)How to Build a High-Performance VM for Squeak/Smalltalk in Your Spare TimeProceedings of the 11th edition of the International Workshop on Smalltalk Technologies10.1145/2991041.2991062(1-10)Online publication date: 23-Aug-2016
    • (2016)smalltalkCIProceedings of the 11th edition of the International Workshop on Smalltalk Technologies10.1145/2991041.2991044(1-9)Online publication date: 23-Aug-2016
    • (2016)A world of active objects for work and play: the first ten years of livelyProceedings of the 2016 ACM International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software10.1145/2986012.2986029(238-249)Online publication date: 20-Oct-2016
    • (2016)Evolving User Interfaces From Within Self-supporting Programming EnvironmentsProceedings of the Programming Experience 2016 (PX/16) Workshop10.1145/2984380.2984386(43-59)Online publication date: 18-Jul-2016
    • (2016)Multi-level debugging for interpreter developersCompanion Proceedings of the 15th International Conference on Modularity10.1145/2892664.2892679(91-93)Online publication date: 14-Mar-2016
    • (2015)Towards reducing the need for algorithmic primitives in dynamic language VMs through a tracing JITProceedings of the 10th Workshop on Implementation, Compilation, Optimization of Object-Oriented Languages, Programs and Systems10.1145/2843915.2843924(1-10)Online publication date: 4-Jul-2015
    • (2018)Test-driven development for generated portable Javascript appsScience of Computer Programming10.1016/j.scico.2018.02.003161:C(2-17)Online publication date: 1-Sep-2018
    • Show More Cited By

    View Options

    Login options

    View options

    PDF

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader

    Figures

    Tables

    Media

    Share

    Share

    Share this Publication link

    Share on social media