Smalltalk-80 on Raspberry Pi: A Bare Metal Implementation
In this technical retrospective (2023), @baptiste313 shares practical architectural lessons learned from running, scaling, or migrating production software under lean constraints.
Core Principles for Independent Builders:
Defaulting to simpler architectures (such as monolithic frameworks, SQLite, or managed VPS) prevents early engineering bankruptcy.
Evaluating true compute and egress costs reveals that high cloud bills can often be slashed by 80%+ through judicious re-platforming.
Code you write at 2 AM as a solo engineer must be easy to debug six months later without complex microservice dependencies.
Community Debate Themes:
HN engineers debated the tradeoffs between cloud convenience and raw server economics, database indexing strategies, and resisting premature architectural complexity.
CATEGORY Frugal Engineering →
HISTORICAL ERA Post-ZIRP & AI (2023–2026)
COMMUNITY SCORE 20 points
TOTAL DISCUSSIONS 5 comments
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.pdf ↗
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 ↗
Related:
Bare metal Smalltalk-80 port to the Raspberry Pi - https://news.ycombinator.com/item?id=23874206 ↗ - July 2020 (63 comments)
Ask HN: Automated SW testing on different Raspberry Pi models? - https://news.ycombinator.com/item?id=23806323 ↗ - July 2020 (1 comment)
I love ST the language, I like ST the image but I hate the tight coupling to the antiquated UI. I know there’s GNU ST but I wish there were more options. I also wonder how difficult it would be to create a modern IDE integration with GNU ST with something like IntelliJ, Eclipse, Net Beans or VS Code.
The README states:
I was curious what "bare metal" means in this context. Does this just mean that the Small Talk VM itself was ported to ARM?
Also, this Java implementation is nice https://github.com/victorr/jsqueak ↗
Look at Squeak Smalltalk for further enhancements