[Pharo-project] GSoC: ARM jitter for Squeak VM

Esteban Lorenzano estebanlm at gmail.com
Thu Mar 8 12:22:30 EST 2012

I would really like to co-mentor something like this... but I presume I have more things to learn than to teach :)

anyway, if there is a place to help, count me in.


El 08/03/2012, a las 8:07a.m., Nick Ager escribió:

> Here's hoping that in a similar way to Yanni and the ePUB proposal and someone will jump in and say that they are already working on this.
> Quoting Eliot:
> It's not overambitious for someone good.  And I'd love to see it happen.  But finding time to be a mentor has proven difficult for me in the past.  I'd happily be part-mentor, but I need someone to at least help in the GSoC process...
> so if there is anyone out there that can help Eliot and Igor with mentoring or the GSoC process, jump in and offer support.
> The proposal:
> -----
> Name: ARM jitter for Squeak VM
> Level: Advanced
> Possible mentor: Eliot Miranda
> Possible second mentor:  Igor Stasenko
> Description
> The Squeak VM is the dynamic virtual machine used for many open-source software projects such as Scratch [1], eToys [2], Pharo [3], the Newspeak language [4], the innovative web framework Seaside [5] and many others. CogVM [6] is a development of the Squeak VM which adds a powerful Intel x86 JITer [7]. The CogVM JIT has significantly improved the performance of the open-source Smalltalk projects which have adapted to use it.
> Increasingly low cost highly capable ARM hardware such as the Raspberry Pi [8] and the Beagle Board [9] have become widely available. In addition the new version of the one-laptop-per-child is based on the ARM platform [10]. The Squeak VM compiles for ARM platforms, but currently there is no JIT on ARM platforms, significantly decreasing the performance of popular software on ARM. The goal of this project is to add simple ARM JITTing capability to the CogVM.
> [1] http://scratch.mit.edu/
> [2] http://www.squeakland.org/about/intro/
> [3] http://www.pharo-project.org
> [4] http://newspeaklanguage.org/
> [5] http://seaside.st/
> [6] http://gitorious.org/cogvm
> [7] http://en.wikipedia.org/wiki/Just-in-time_compilation
> [8] http://www.raspberrypi.org/
> [9] http://beagleboard.org/bone
> [10] http://one.laptop.org/about/xo-3
> Technical Details
> The work would require a interest in virtual machine optimisation, some knowledge of Intel x86 and ARM assembler and knowledge of C and dynamic languages.
> The Squeak and Cog VM are written in a simplified subset of Smalltalk known as slang [11] - which then generates C output and forms the basis of the VM.
> As the Squeak VM is a Smalltalk program, it is developed in Smalltalk, and the Cog JIT is no exception.  The VM, including the JIT, is written in Smalltalk and run in the context of the Smalltalk IDE, but the JIT still generates machine-code that must be evaluated within the Smalltalk environment.  On x86 is done by interfacing to an x86 simulator library derived from the Bochs x86/x86-64 PC simulator, written in C++.  Implementing the ARM port should be no different.  The first task will be to choose and interface to a suitable ARM simualtor/emulator.  Once this is working, the ARM code generator can be incrementally developed within Smalltalk.  Finally once the simulator is fully functional one can get down and dirty with an actual physical ARM machine - such as the Raspberry Pi or Beagle Board.
> [11] http://wiki.squeak.org/squeak/2267
> Benefits to the Student
> The student will gain an in-depth knowledge of virtual machine optimisation, working in a productive innovative environment - it's 
> great fun to be able to implement a JIT in a safe high-level dynamic language, instead of the traditional route of developing in C/C++ and debugging in GDB.
> The student will have the satisfaction of seeing performance gains for a range of high-profile projects which use the Squeak VM on ARM. 
> Benefits to the Community
> The Smalltalk community will gain an initial implementation of an ARM Jitter which can then be further developed along-side the x86 dynamic translation work. An ARM Jitter for the CogVM will improve the performance of many notable open-source projects on low-cost ARM hardware, bringing innovative software and development environments to wider community.  
> ----
> Cheers
> Nick

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.pharo.org/pipermail/pharo-dev_lists.pharo.org/attachments/20120308/9d067620/attachment-0001.html>

More information about the Pharo-dev mailing list