New Smalltalk Site

The “Smalltalk-on-Rails” project has been replaced by a newer project based on JavaScript.

“MySmalltalk” is written entirely in JavaScript and runs on:

  • desktop as a Chrome application (windows, mac, linux)
  • browsers (Chrome, Safari, Firefox, IE)
  • tablets (Android, iPad)
  • smartphones (Android, iPhone)
  • servers using Node.js

You can test it out online here:

http://mysmalltalk.com

The project is based on the Qooxdoo framework and will incorporate both desktop and mobile widgets.

There will be a free desktop version available from the Google Store in early June.

http://qooxdoo.org/

The mysmalltalk.com server is written in Node.js using a Postgresql database, Redis for caching, and Socket.io for messaging.

The blog for MySmalltalk is here:

https://mysmalltalkblog.wordpress.com/

 

 

Introduction

smalltalkonrails

Smalltalk-on-Rails development environment running on Heroku

This blog covers a new version of Smalltalk implemented as a DSL in Ruby.

The goal of the project is to provide an object-oriented scripting environment for web applications running on Ruby-on-Rails.

Multiple applications share common libraries and resources on the web server. The user interface and business logic for each application are written in Smalltalk and are stored in the database in serialized JSON format.

Currently the project is in limited production use running in a Ruby-on-Rails environment on Heroku. It has also been successfully tested running on the Java JVM (using JRuby) on both Amazon AWS and Heroku.

The Smalltalk syntax closely follows the Smalltalk-80 standard with the main exceptions being literal notation for arrays and dictionaries and use of zero-base for arrays.

{} => empty array

{1,2,3,’hello’} => an array of 4 elements (commas are used as delimiters

{:} => empty dictionary

{a: ‘hello’, b: ‘world’} => a dictionary of two elements

Global variables, instance variables, class variables, and pool dictionaries are all supported.

Smalltalk methods are translated to equivalent Ruby code and then compiled. Speed is comparable to native Ruby code (with some overhead for message lookup) and appears to be considerably faster than Pharo or Squeak based on limited testing.

The developer interface is built using Sencha’s ExtJS which runs in any modern browser. This allows live updating of applications on the server without redeployment or restarts.

I expect to be in full production supporting a small number of websites within the next couple of weeks. And I will also be testing deployment to Google’s Compute Engine later this month.

Questions and comments are of course welcome.

My next post will discuss the compiler and serialization of Smalltalk classes.