Smalltalk-80 on Raspberry Pi: A Bare Metal Implementation

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • SaaSHub - Software Alternatives and Reviews
  • Smalltalk

    By the Bluebook implementation of Smalltalk-80

  • Author here, feel free to ask any questions you have :).

    It's amazing this little project shows up again here. So far, I received a lot of very positive and friendly feedback about this little pet project of mine.

    The whole project would not have been possible without the work of Rene Stange, who created the circle bare-metal library for the Raspberry Pi (https://github.com/rsta2) and Dan Banay, who created a C++ implementation of the Smalltalk-80 VM (https://github.com/dbanay/Smalltalk). I mostly hacked together some glue code...

    If you want to dig deeper, the Blue Book by Adele Goldberg and David Robson (scan provided by Stephane Ducasse, thanks a lot!) is _the_ reference on both the language and the structure and implementation of the underlying bytecode VM: http://stephane.ducasse.free.fr/FreeBooks/BlueBook/Bluebook....

    Beware, though it's fully functional, crosstalk is still limited by constraints of the original Smalltalk 80 system - e.g. in terms of color (black and white only), possible screen resolution (2^20 pixels, the system crashes if you try to increase the resolution beyond this) and available memory (~1 MB!).

    Nevertheless, I think it's a rather authentic reproduction of a more than 40 year old system and I learned (in a comment thread on a completely different topic) that one of our fellow hackernews regulars used it to teach his kid Smalltalk programming - love it! I haven't tried to optimize it significantly, so there's no JIT compiler or bitblit acceleration using the Raspberry Pi GPU.

    There's a more modern bare-metal Smalltalk implementation based on Squeak (https://squeak.org) for the Raspberry Pi by Pablo Marx, though this seems to have some stability problems according to the author: https://github.com/pablomarx/RaspberrySqueak

    Finally, if you are interested in alternative bare-metal language/OS environments for the Raspberry Pi, you could also give Lukas Hartmann's (of MNT Reform notebook fame) Interim OS a try: http://interim-os.com

  • crosstalk

    Smalltalk-80 bare metal implementation for the Raspberry Pi

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
  • RaspberrySqueak

    Bare metal Squeak for Raspberry Pi

  • Author here, feel free to ask any questions you have :).

    It's amazing this little project shows up again here. So far, I received a lot of very positive and friendly feedback about this little pet project of mine.

    The whole project would not have been possible without the work of Rene Stange, who created the circle bare-metal library for the Raspberry Pi (https://github.com/rsta2) and Dan Banay, who created a C++ implementation of the Smalltalk-80 VM (https://github.com/dbanay/Smalltalk). I mostly hacked together some glue code...

    If you want to dig deeper, the Blue Book by Adele Goldberg and David Robson (scan provided by Stephane Ducasse, thanks a lot!) is _the_ reference on both the language and the structure and implementation of the underlying bytecode VM: http://stephane.ducasse.free.fr/FreeBooks/BlueBook/Bluebook....

    Beware, though it's fully functional, crosstalk is still limited by constraints of the original Smalltalk 80 system - e.g. in terms of color (black and white only), possible screen resolution (2^20 pixels, the system crashes if you try to increase the resolution beyond this) and available memory (~1 MB!).

    Nevertheless, I think it's a rather authentic reproduction of a more than 40 year old system and I learned (in a comment thread on a completely different topic) that one of our fellow hackernews regulars used it to teach his kid Smalltalk programming - love it! I haven't tried to optimize it significantly, so there's no JIT compiler or bitblit acceleration using the Raspberry Pi GPU.

    There's a more modern bare-metal Smalltalk implementation based on Squeak (https://squeak.org) for the Raspberry Pi by Pablo Marx, though this seems to have some stability problems according to the author: https://github.com/pablomarx/RaspberrySqueak

    Finally, if you are interested in alternative bare-metal language/OS environments for the Raspberry Pi, you could also give Lukas Hartmann's (of MNT Reform notebook fame) Interim OS a try: http://interim-os.com

  • squeak.org

    Squeak/Smalltalk Website

  • Author here, feel free to ask any questions you have :).

    It's amazing this little project shows up again here. So far, I received a lot of very positive and friendly feedback about this little pet project of mine.

    The whole project would not have been possible without the work of Rene Stange, who created the circle bare-metal library for the Raspberry Pi (https://github.com/rsta2) and Dan Banay, who created a C++ implementation of the Smalltalk-80 VM (https://github.com/dbanay/Smalltalk). I mostly hacked together some glue code...

    If you want to dig deeper, the Blue Book by Adele Goldberg and David Robson (scan provided by Stephane Ducasse, thanks a lot!) is _the_ reference on both the language and the structure and implementation of the underlying bytecode VM: http://stephane.ducasse.free.fr/FreeBooks/BlueBook/Bluebook....

    Beware, though it's fully functional, crosstalk is still limited by constraints of the original Smalltalk 80 system - e.g. in terms of color (black and white only), possible screen resolution (2^20 pixels, the system crashes if you try to increase the resolution beyond this) and available memory (~1 MB!).

    Nevertheless, I think it's a rather authentic reproduction of a more than 40 year old system and I learned (in a comment thread on a completely different topic) that one of our fellow hackernews regulars used it to teach his kid Smalltalk programming - love it! I haven't tried to optimize it significantly, so there's no JIT compiler or bitblit acceleration using the Raspberry Pi GPU.

    There's a more modern bare-metal Smalltalk implementation based on Squeak (https://squeak.org) for the Raspberry Pi by Pablo Marx, though this seems to have some stability problems according to the author: https://github.com/pablomarx/RaspberrySqueak

    Finally, if you are interested in alternative bare-metal language/OS environments for the Raspberry Pi, you could also give Lukas Hartmann's (of MNT Reform notebook fame) Interim OS a try: http://interim-os.com

  • jsqueak

    Unofficial repository for JSqueak: A Java implementation of Squeak Smalltalk.

  • Also, this Java implementation is nice https://github.com/victorr/jsqueak

    Look at Squeak Smalltalk for further enhancements

  • circle

    A C++ bare metal environment for Raspberry Pi with USB (32 and 64 bit) (by rsta2)

  • It uses the circle library (https://github.com/rsta2/circle) to provide a minimal runtime (mainly to interface with the hardware).

  • RoarVM

    RoarVM is a manycore Smalltalk Virtual Machine

  • I wanted to keep the system as close to the original as possible, but some extensions such as increasing the available memory space and screen resolution would be nice even for the original system. It would also be interesting to implement the early ideas for a JIT compiler.

    Starting with Squeak is probably the easier way if you want advanced features such as color or network connectivity - still, there might be some interesting ideas to improve the system. One idea I had was to accelerate the bitblit functions using the Raspberry Pi's GPU. Currently, crosstalk uses a simple framebuffer and the runtime has to convert all monochrome bitblit operations into color ones since the Raspberry GPU doesn't have a 1bpp mode.

    Support for multiple cores (available in all but the most simple Raspberry Pis) would also be nice. Here, the Roar system (https://github.com/smarr/RoarVM) might be an interesting starting point.

    Let's see if I can find some students who want to work on some of these tasks... but my students are nowadays rather interested in Rust and RISC V :) (though a port of crosstalk to the Allwinner D1/Nezha and related boards and JH7110/Vision Five 2 is on my to-do list).

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts