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.
- 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 Scholar
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- A. C. Davison and D. V. Hinkley. phBootstrap Methods and Their Application, chapter 5. Cambridge, 1997.Google Scholar
- A. Goldberg and D. Robson. phSmalltalk-80: The Language and its Implementation. Addison-Wesley, 1983. Google Scholar
Digital Library
- M. Guzdial and K. Rose. phSqueak--Open Personal Computing and Multimedia. Prentice Hall, 2002. Google Scholar
Digital Library
- I. Hickson. Web storage. phW3C Recommendation, 2013.Google Scholar
- 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 Scholar
Digital Library
- A. Kay. Squeak Etoys, Children & Learning. Technical Report RN-2005-001, Viewpoints Research Institute, 2005.Google Scholar
- 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 Scholar
Digital Library
- J. Maloney. Morphic: The self user interface framework. phSelf, 4, 1995.Google Scholar
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- N. Mehta, J. Sicking, E. Graff, A. Popescu, J. Orlow, and J. Bell. Web storage. phW3C Candidate Recommendation, 2013.Google Scholar
- 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 Scholar
- D. Ungar and S. S. Adams. Hosting an Object Heap on Manycore Hardware: an Exploration. phSIGPLAN Notices, 44 (12): 99--110, 2009. Google Scholar
Digital Library
- L. Wassermann. Tracing Algorithmic Primitives in R/Squeak-VM. Master's thesis, Software Architecture Group, Hasso-Plattner-Institut Potsdam, 2013.Google Scholar
- M. Wolczko. self includes: Smalltalk. In phWorkshop on Prototype-Based Languages (co-located with ECOOP), Linz, Austria, 1996.Google Scholar
- D. Yoo and S. Krishnamurthi. Whalesong: Running Racket in the Browser. phSIGPLAN Notices, 49 (2): 97--108, 2013. Google Scholar
Digital Library
- A. Zakai. Emscripten: An LLVM-to-JavaScript Compiler. In phSPLASH'11 Companion (Wavefront), pages 301--312. ACM, 2011. Google Scholar
Digital Library
Index Terms
SqueakJS: a modern and practical smalltalk that runs in any browser
Recommendations
The evolution of Smalltalk: from Smalltalk-72 through Squeak
This paper presents a personal view of the evolution of six generations of Smalltalk in which the author played a part, starting with Smalltalk-72 and progressing through Smalltalk-80 to Squeak and Etoys. It describes the forces that brought each ...
SqueakJS: a modern and practical smalltalk that runs in any browser
DLS '14: Proceedings of the 10th ACM Symposium on Dynamic languagesWe 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 ...
NXTalk: dynamic object-oriented programming in a constrained environment
IWST '09: Proceedings of the International Workshop on Smalltalk TechnologiesDynamic programming languages offer high expressiveness and flexibility, improving programmer productivity. Still, making dynamic programming languages available for embedded systems is challenging because such environments are often constrained in ...







Comments