[Cuis-dev] UK Smalltalk User Group Meeting - Wednesday, December 29th
Giovanni Corriga
giovanni at corriga.net
Thu Dec 9 14:10:19 PST 2021
For our December meeting, Florin Mateoc will show us JsSqueak (
https://github.com/fmateoc/JsSqueak ), a JavaScript implementation of
(JavaScript compiled) Squeak.
Whereas SqueakJS or TruffleSqueak are implementations of the Squeak stack
VM which run the Squeak bytecodes, JsSqueak compiles all the Squeak code to
JavaScript (including the VM plugins), it exports the image state as one
big JavaScript storeString, and then loads them, and runs the JavaScript
implemented minimal VM (mostly primitives) and the JavaScript-translated
Squeak methods as one combined JavaScript application. The compiled
JavaScript application can be run either in a browser or in Node.js
While JavaScript, especially with its newest additions, is a very powerful
language, which allows us to implement most Smalltalk-specific features
(e.g. processes/green threads are implemented using generator functions and
recursive yield* for all invocations, DNU is implemented using proxies and
proto manipulation, the Smalltalk parallel class hierarchy is implemented
using JavaScript classes with static properties and their parallel
prototypes hierarchy, weak classes are implemented using JavaScript WeakRef
instances in their (weak) slots), one obvious challenge is implementing
contexts.
Since we compile Squeak classes to JavaScript classes, Squeak methods to
JavaScript methods (and class-side Squeak methods to static JavaScript
methods), the code runs on the native JavaScript call stack, and we do not
have a mapping between the JavaScript function activations and reified
contexts. Nevertheless, it turns out that, by providing specialized
implementations for various aspects that are implemented using
contexts/stack walking in Squeak, we can actually run almost all Squeak
code as-is.
Florin Mateoc ( https://fmateoc.js.org/ ) is an electronics engineer who
has always loved programming and who has actually only ever worked as a
software engineer.
Florin has worked as a professional Smalltalk programmer in Enfin (later
called ObjectStudio), VisualAge, VisualWorks, and a little bit as a
hobbyist in Squeak.
This will be an online meeting from home.
If you'd like to join us, please sign up in advance on the meeting's Meetup
page ( https://www.meetup.com/UKSTUG/events/282445345/ ) to receive the
meeting details. Don’t forget to bring your laptop and drinks!
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.cuis.st/mailman/archives/cuis-dev/attachments/20211209/f63cb1d1/attachment.htm>
More information about the Cuis-dev
mailing list