12 ms·
Smalltalk-80 on Raspberry Pi: A bare metal implementation
- pulse7 4y agoAny screenshots?
- slim 4y agoit's based on this https://github.com/dbanay/Smalltalk https://github.com/dbanay/Smalltalk (there's one screenshot there)
- wrycoder 4y agoFrom 2020: https://news.ycombinator.com/item?id=23307700 https://news.ycombinator.com/item?id=23307700
- johndoe0815 4y agoSee my blog entries here (beware, something about the certificate for the web server is broken right now, will try to fix it right away): https://www.multicores.org/blog/tag_Smalltalk.html https://www.multicores.org/blog/tag_Smalltalk.html
- slim 4y agonothing is wrong with your certificate, it's just self signed and browsers don't support that correctly. They just show the same unsecure usual message.
- johndoe0815 4y agoThanks for the feedback! You're correct, but I seem to remember that I configured a letsencrypt certificate for nginx, which should be recognized as fully verified as far as I know.
- AlbertoGP 4y agoWell, right now I’m getting a self-signed certificate with a validity of one year, not the letsencrypt one. Issuer name Country: de Organization: multicores Email Address: engel@multicores.org
- layer8 4y agoThe problem is that the certificate is issued for multicores.org, but not for www.multicores.org. Removing the "www." from the URL makes it work. You need to have the certificate issued for all subdomains you want to use it for (or for a wildcard subdomain).
- johndoe0815 4y agoUh, good catch, thanks - that explains it!
- johndoe0815 4y agoAuthor 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 https://github.com/rsta2) and Dan Banay, who created a C++ implementation of the Smalltalk-80 VM (https://github.com/dbanay/Smalltalk 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 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 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 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 http://interim-os.com
- b33j0r 4y agoI’m baffled that I never saw the name Alan Kay. Given, I did not read everything. Expected it to be in bright lights, based on the story I was told ;) (That’s my malformed question)
- johndoe0815 4y ago
- daitangio 4y agoAlso, this Java implementation is nice https://github.com/victorr/jsqueak https://github.com/victorr/jsqueak Look at Squeak Smalltalk for further enhancements
- dang 4y agoRelated: Bare metal Smalltalk-80 port to the Raspberry Pi - https://news.ycombinator.com/item?id=23874206 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 https://news.ycombinator.com/item?id=23806323 - July 2020 (1 comment)
- johndoe0815 4y agoThanks for the links dang! I still haven't managed to set up the automated test environment on different Raspberry Pi models, this might be an interesting project for one of my students...
- narutowindy 4y agoSomeone explain what's smalltalk?
- johndoe0815 4y agoSmalltalk is a programming language (+runtime, GUI, development environment) that originated at the Xerox PARC research center in the early 1970s on the Alto computer. Smalltalk was one of the first object-oriented systems (along with the Norwegian Simula system), it differs from Simula/C++-style OO due to using dynamic dispatch (late binding), i.e., selecting which implementation of a polymorphic operation (method or function) to call at run time instead of at compile time. It had significant influence on the development of the personal computer. Projects at Apple (Lisa/Mac) and Microsoft (Windows) were influenced by the Smalltalk GUI and Smalltalk was also the basis for Objective C, the language behind the NeXT/MacOS/iOS UI frameworks - now on the way to be supplanted by Swift. More details, as usual, on Wikipedia: https://en.wikipedia.org/wiki/Smalltalk https://en.wikipedia.org/wiki/Smalltalk
- JKCalhoun 4y agoI knew of Smalltalk but was unaware it was 1) byte code rather than compiled and 2) it influences Objective C. Very cool. Seeing also Pascal, Modula, Forth, Prolog... The 70's were an innovative era for programming languages. https://en.wikipedia.org/wiki/Timeline_of_programming_languages#1970s https://en.wikipedia.org/wiki/Timeline_of_programming_langua...
- pinewurst 4y agoIt also introduced (in its later ParcPlace form) the idea of JITing interpretive languages.
- pjmlp 4y agoAll Xerox PARC environments (Interlisp, Smalltalk, Mesa, Cedar) were bytecode based, because their CISC CPUs were microcoded. So the first thing a machine would do on boot would be to load the right microcode into the CPU, and then those bytecodes were effectively the Assembly language for the CPU. They were also the genesis of the first JIT compilers, and the OpenJDK Hotspot traces back its heritage to StrongTalk JIT compiler.
- 0x445442 4y agoI 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.
- shadowofneptune 4y agoI'm looking at it myself from the other end: one of the most interesting ideas from Smalltalk, Oberon, Plan9, etc. was having text be executable as programs in a text editor. It's to a visual editor as a command line shell is to a line editor. I've heard it called an 'integrating development environment,' a system where all the tools to use it like an IDE are there. EDIT: OP has a blog post showing the similarities between the mentioned systems: https://www.multicores.org/blog/what-have-i-been-up-to.html https://www.multicores.org/blog/what-have-i-been-up-to.html
- johndoe0815 4y agoI can recommend Stephen Kell's publications on this topic, e.g. "Unix, Plan 9 and the Lurking Smalltalk": https://www.humprog.org/~stephen/research/papers/kell19unix-personal.pdf https://www.humprog.org/~stephen/research/papers/kell19unix-... Video: https://www.youtube.com/watch?v=LwicN2u6Dro https://www.youtube.com/watch?v=LwicN2u6Dro More on Stephen's research can be found at https://www.humprog.org/~stephen/ https://www.humprog.org/~stephen/
- 0x445442 4y agoI’m fairly confident executable text as well the other functionality of current smalltalk systems can be implemented within a modern IDE framework. What needs updating are the UI components, views, layout, etc. For example, I can envision a left hand tree component for the display of packages/classes/protocols/methods the same way it’s done for for almost every other language. Could the modern IDE paradigm be approximated within current Smalltalks? Probably, but pulling that off in Squeak or Pharo seems like the wrong approach. Also, deployment of server side applications is more cumbersome in Squeak or Pharo than with GNU Smalltalk.
- bogomipz 4y agoThe README states: >"Smalltalk-80 for Raspberry Pi version 0.2 This is a bare metal Smalltalk-80 port to the Raspberry Pi." I was curious what "bare metal" means in this context. Does this just mean that the Small Talk VM itself was ported to ARM?
- johndoe0815 4y agoIt means that it runs without an underlying operating system (so it doesn't require Linux etc.), so the Smalltalk VM (or, to be precise, the circle runtime) acts as the OS.
- ngcc_hk 4y agoIs that meant not really small talk-80 control the hardware, up, interrupt? Barebones?
- infinite8s 4y agoIt uses the circle library (https://github.com/rsta2/circle https://github.com/rsta2/circle) to provide a minimal runtime (mainly to interface with the hardware).
- doomDOTwad 4y ago(2020)