[squeak-dev] GSoC project ideas

Eliot Miranda eliot.miranda at gmail.com
Sun Jan 18 18:59:32 UTC 2015


A modern Squeak plugin.

Back in the day one could embed computation in web pages by writing web browser plugins.  But the major browsers Balkanized the APIs and Netscape's simple portable scheme died the death.  Nowadays JavaScript is ubiquitous and one can embed begaviour written in arbitrary languages by compiling them to JavaScript.  But this approach is fraught with difficulties in performance and functionality.  Only constructs which map directly to JavaScript are easy to map efficiently and particularly powerful elements of the Smalltalk execution model, such as mixed-mode arithmetic, non-local return, become and thisContext are difficult to map.

One recent approach by Bert Freudenberg is to compile the Squeak /virtual machine/ to JavaScript.  This provides perfect fidelity at the cost of poor performance, since the code is interpreted.

Another approach is to revive the plugin architecture but use JavaScript to mate the standard Squeak VM, the Cog JIT, to various browsers.  

Such a plugin would use JavaScript to collect events, to render and to access the DOM (all of this code can be stolen from Bert's VM). The JavaScript component would connect to the VM via a socket.  The resulting "plugin" would be quite small (the Cog VM is of the order of a megabyte of code, excluding its own plugins).  It would presumably be installed much like the Flash plugin.  Work on small Squeak & Pharo images is also progressing so the entire system, including image might be below 10 meg.

With this architecture there is /no/ difference in the execution semantics, and /no/ performance degradation, and the code is as portable as Bert's VM provided Cog runs on the platform.  This decouples the VM from the browser, allowing both to evolve in parallel.  This frees Squeak & Pharo to implement rich client-side functionality without working around limitations and allows much richer client-server communication based on proven distributed Smalltalk technologies, allowing in-browser development, remote debugging, client-side state (via snapshot), etc etc.  it really does open up a lot of interesting avenues.

Possible mentors:
Florin Mateoc
Bert Freudenberg
Eliot Miranda

Eliot (phone)

On Jan 17, 2015, at 3:44 AM, Frank Shearar <frank.shearar at gmail.com> wrote:

> I had a calendar reminder that we should start gathering ideas for
> GSoC projects, so we don't have last year's scenario of a last-minute
> scramble.
> 
> So.... over to the audience.
> 
> frank
> 


More information about the Squeak-dev mailing list