Scaling Services with Smalltalk
A while ago someone tweeted that Node.js microservices were basically Smalltalk with an unstable runtime. While somewhat true, and rather funny, an unfortunate implication is that Smalltalk doesn’t scale, as if Smalltalk were a single threaded language such as JavaScript, or a language limited by running in the Java VM such as Scala or Clojure.
Perhaps it’s simply due to the word ‘small’ in its name. This might make people think twice though about Smalltalk’s scalability:
IBM’s RVM works with Squeak and earlier versions of Pharo, and can be modified fairly easily to work with current Pharo versions.
So far IBM has tested it to scale linearly to 1024 cores — the largest machine they had.
Love to see Node.js do that. Oh, wait, Node.js can’t scale to a Core 2 Duo ..,
“RoarVM — The Manycore Squeak/Pharo VM
RoarVM, formerly known as the Renaissance Virtual Machine (RVM) is developed as part of a IBM Research project to investigate programming paradigms and languages for manycore systems of the future. Specifically, this VM is meant to support manycore systems with more than 1000 cores in the future.
The RVM was open sourced by IBM Research under the Eclipse Public License. Please see the open source announcement for further information.
Today, the RoarVM supports the parallel execution of Smalltalk programs on x86 compatible multicore systems and Tilera TILE64-based manycore systems. It is tested with standard Squeak 4.1 closure-enabled images, and with a stripped down version of a MVC-based Squeak 3.9 image.
The RoarVM provides parallel execution of Smalltalk processes and thus, the programming model is a typical shared-memory model similar to classical Pthreads for C/C++ … “
Combined with Gemstone/S now distributed by VMWare, which is a distributed object cache rather than a data cache, where messages can be sent / methods called, and results obtained from whatever Gemstone node the object happens to be in, nothing has equivalent demonstrated scalability (without introducing the the complexity of massively parallel systems) as modern versions of Smalltalk.
It may be niche language, but a niche language that just works, has the best development environment, and scales to that degree is hardly a bad niche to be in.
Unless you can’t even maintain state in a single threaded application … in that case, stick to JavaScript.