Amber Blog

Amber Smalltalk and more


Hi, I have been involved with Amber Smalltalk for a while now. All started with my first reported issue #125 about two years ago shortly after the 0.9.1 release. By now we have almost reached 700 issues on GitHub, split the Amber repositories into multiple projects, moved to a GitHub Organization, and the 0.12.0 release is pending. Now I thought that it is about time to start writing about the ongoings in the project. The main question was about which system to use and where to publish.

After considering some options the choice fell on GitHub pages and then Octopress came into play. A big plus of Octopress is the integration of a variety of useful third party services. With plain GitHub pages a lot of handcrafting would have been necessary to achieve the same functionality.

Going back to Amber Smalltalk, my main contributions so far include a rewrite of the Amber commandline compiler in Node.js, introducing a Grunt.js based build system, and enhancing the Amber server which is used for development.

Previously the Amber commandline compiler was written in a mixture of Bash and Node.js. The main part of the compiler is written in Amber itself but reading files and processing commandline options and so on was done in Bash. Since Amber compiles to JavaScript a logical step was to transform the complete process into a Node.js script and take advantage of the async capabilities of Node.js.

The idea to switch from the Makefile based build system to Grunt.js originated from a pull request by johnnyt which he closed before it was applied because it wasn’t ready yet. After switching the commandline compiler to Node.js integrating it with Grunt.js became almost trivial. By now we are running on Grunt.js 0.4 and the build system is also used to the test cases on Travis.

The Amber server has seen some improvements regarding commandline parameters. The following parameters are available:

# change listening host (default:
# change listening port (default: 4000)
# use basic HTTP authentication: NOT recommended for production
# path to use as root directory (default: ./)
# specify the file to serve instead of a 404 page

Additionally, both Amber repl (read evaluate print loop) and server have been integrated into one tool for Amber 0.12.0. They can be started as follows:

./bin/amber repl
./bin/amber serve [arguments as listed above]

For now that’s all folks. Expect irregular updates in the future.