Archives for posts with tag: selflanguage

Self’s Morphic interface actually has a lot of charm, but unfortunatly it is in a early NeXT fashion. Lots of grey. Or is that gray? One of the things which scratches an itch for me is cleaning up the interface to make it more comfortable to use.

Adventurous people can download a snapshot which shows the current thinking. Not much has changed, but font styles and sizes have been altered and some colour brought in:

The guiding principles for this makeover, which come from the idea of Self itself, is the creative intersection between minimalism and humanism.

More will be coming – why not join us for the ride?




Dear all,

I would like to announce the release of version 4.4 of the Self environment.

Self is a prototype-based dynamic object-oriented programming language, environment, and virtual machine centred around the principles of simplicity, uniformity, concreteness, and liveness.

Self includes a programming language, a collection of objects defined in the Self language, and a programming environment built in Self for writing Self programs. The language and environment attempt to present objects to the programmer and user in as direct and physical a way as possible. The system uses the prototype-based style of object construction.

Self is the canonical prototype based language within the Smalltalk family.  It is open source under a BSD-like licence and includes a fast VM and a development environment built on the original Morphic GUI that Squeak’s Morphic is a descendent of.

Changes in release 4.4 include:

  • an improved Quartz based backend for the MacOS X version and
  • a working port of Self to Linux (x86);
  • various bug fixes and general improvements.

You can download Self from the website at in binary form and all sources are available either by running Self or at

Documentation includes the Self Handbook at and a large number of published papers on Self at

You can keep up to date with Self by following either the Self blog at or joining the Self mailing list – details at and archive at

Be selfish! Download today!

Chris Cunnington has been making a number of Smalltalk videos available on his YouTube channel; one of these is a short introduction to Self from the point of view of a Smalltalk-80 programmer. Enjoy:

Hi guys,

I’ve released Self 4.4 Beta 1.

Download VM installers for MacOS X and Linux and Clean and Demo snapshots from:  As usual, the sources for the Self VM and objects are available from including as a tarball.

Barring minor fixes, I will reissue this release as Self 4.4 at the start of April. The proper description of Self 4.4 is a revived Self running on modern Mac OS X and Linux x86 and ready as a base for new functionality.

Self 4.4 will be the first Self release since Self 4.3 which was released in June 2006. In future we will attempt a slightly faster turnaround 🙂

Please post bugs to the Self bugtracker at and to this mailing list.




Since Alpha 2 we have changed (this is a quick dump from commit messages):

  • Changes to SelfDroplet to ensure proper registration of filetype
  • Minor changes to website
  • Fix for bug ticket #3 – Compressed snapshots now work on Linux
  • Fix to UI1 text editing and small improvement to error handling
  • Fix for bug ticket #2 – Self will now compile on Ubuntu
  • Fix for bug ticket #1 – Linux: Display will now reopen after saving world in new snapshot
  • Added -Wno-write-strings flag to GCC compile
  • Initial copy of Self Handbook (incorporates existing manuals in RST for Sphinx)
  • Changes for Snow Leopard
  • Add a nice icon for the Dock in MacOS X
  • Removed some binaries from the git repository, split sortedList out of the list module.
  • Fix colorsFor: in ‘traits ui2Image’ to account for mapped or unmapped
  • Add PNG support and fix JPG/GIF support in webBrowser
  • Changed flag to be “-headless” to start image without ui2
  • Added Chris Double as an AUTHOR
  • Make webBrowser send Host: header
  • Add linux build files to .gitignore
  • Set the module for linux socketConstants
  • Added value:With:With:With:With:With:With:.
  • Get builds working under Arch Linux
  • Add a socketConstants slot for os_file under linux
  • Fix sockets under Linux
  • Clarification of copyright AUTHORS to include Sun and Stanford University
  • Split mirrorProgramming from mirror, so that Klein won’t need to file it in.
  • Added blockTests.self.
  • Clean up and clarification of copyright terms
  • Source tree cleanup
  • Fixes to UI1
  • Starting to refactor the tests to make it easier to use them in Klein.
  • Also refactored the slotFinder to be iterative instead of recursive.
  • Made the javaServer stuff file in OK (sort of, I think). It still needs to be filed in from the terminal, without the Self desktop running.
  • Updated website to Sphinx 0.6.1 and added links to blog
  • Fixed a typo in some comments, added max: and min: methods to the ordered mixin.

Last year, David Ungar, the co-creator of Self, spoke at Stanford as part of the Department of Electrical Engineering Computer Systems Colloquium. This is a great talk, covering the history of Self and Dave’s role in it:

After looking through some of the issue tracking sites that people  on the Self mailing list kindly pointed me to, I’ve set up a trial issue tracker for the Self project on Lighthouse.  It looks like Lighthouse has a good balance between power, simplicity and user friendliness.

It is at:

You can see from the information there that the current plan is to issue a new release in late January, and a hopefully final Self 4.4 on Linux and Mac in late February.

We can then move on to more exiting improvements!

I encourage everyone to add issues etc…

Back in the far off days of 1995, when the world was young and Windows 95 was new and exciting, Sun made an introductory Self video. It’s about 20 minutes long; unfortunately the version here isn’t the best quality but it’s still a good overview of Self, Morphic and the Self VM.

It is both good and bad that most of the stuff described in this video works much the same way today—but at least Self will now run on your Macbook or Linux box!

Staring Randall B Smith, David Ungar and Mario Wolczko: Self, the Video!

Documentation is at the heart of any successful open source project and, as Self wakes from its slumbers, documentation is vital to providing a way for interested people to learn and participate.

Self has a number of manuals, as well as important published papers, but these have been available only as pdf.

Three of these manuals (the Programmers Reference Manual, the Programming Environment Manual and the Morphic Manual) have been turned into HTML and combined into the new Self Handbook, which is available to read on line at

This is quite comprehensive—in pdf form it is at the moment around 140 pages.

Read and enjoy 🙂

David Ungar, co-creator of Self, is due to speak to the at the Stanford University Department of Electrical Engineering Computer Systems Colloquium on September 30, 2009.
The talk will cover a range of material including, in Dave’s words, “a fair amount of Self in it”.
Check out the <a href=””>Colloquium website</a>, which should have links to live video streaming.  There is also the possiblity that the talk will be later available from Stanford through iTunes or Youtube.

David Ungar, co-creator of Self, is due to speak to the at the Stanford University Department of Electrical Engineering Computer Systems Colloquium on September 30, 2009.

The talk will cover a range of material including, in Dave’s words, “a fair amount of Self in it”.

Check out the Colloquium website, which should have links to live video streaming.  There is also the possiblity that the talk will be later available from Stanford through iTunes or Youtube.

I never actually wanted to be a VM guy.

I fell in love with Smalltalk because it was simple and powerful and it fit the way I thought. (Later I fell in love with Self because it was even more so. ;)) The languages that I like best are the ones that are designed for human beings (rather than for computers or drones or mathematicians).

But every so often I have a language idea I’d like to try out – and to do that, it helps to be able to tinker with VMs. Unfortunately, VMs these days tend to be written in languages like C – and thanks to all the cool optimization technologies needed to make a language like Self run fast, they tend to be fairly hefty chunks of C, too. The Self VM is over 100,000 lines of C++, and I’m kinda scared of it.

So I dream of having a VM that’s simple and malleable and debuggable and written in a high-level language, but also includes enough Self-style optimization technology that it can make a really pure OO language run well. That’s one of the reasons why I was so excited about Klein – one of our goals was to produce a VM like that, written almost entirely in full object-oriented Self, and a VM-development environment that’s as comfortable and interactive as a regular Self or Smalltalk application-development environment. (So far, it seems to me like the “fully OO” part has been working out pretty well, but the interactiveness part has proven to be a major challenge – the project is still plagued by long compile times. I think it’s solvable, though.)

There hasn’t been any serious work done on Klein since Sun cancelled the project back in late 2005, but I pulled out the code a few months ago and started spending my spare time working on it. There’s nothing in there really worth seeing yet – I’m still working out the bugs in the inlining compiler that I just wrote, so everything’s kinda broken right now. (I’m hoping to have the inlining compiler working dynamically soon, though, at which point it’ll be interesting to see how much of a difference it makes, since practically everything in Klein, right down to the innermost loops of the GC, is written in an OO style with lots of message sends.) But one of the reasons I’m writing this post is because I’m wondering whether there’s anybody out there who feels like doing some hacking on Klein – there’s lots of fun stuff to be done, and I’d welcome the help.

I’m also wondering whether there’s another VM out there that’s further along towards fulfilling Klein’s goals. (I haven’t been keeping up with the VM world over the past few years.) Maybe Exupery?

And my third wondering is whether there’d be interest in Klein outside the Self community. If Klein ever does become a usable Self VM, it ought to be usable for other OO languages too, especially Smalltalk. If there was interest in the Smalltalk community in having a Klein-style VM, I’d make it a higher priority to teach Klein to handle non-LIFO blocks, which was one of the main obstacles preventing Mario Wolczko’s Smalltalk-to-Self translator from being a production-ready Smalltalk. (Sometimes I think about doing that for the current Self VM, just because I envy the size of the Smalltalk community – it’d be nice to be able to use Smalltalk libraries inside Self. Plus it might be kinda fun to work in a system with Smalltalk objects and Self objects living side-by-side – though the purist in me thinks it’d be a shame to complexify Self with all those unnecessary “class” things. 😉 But that’s a topic for another blog post.)

Anyway, that’s what’s going on with Klein these days. I’m not sure whether it’s worth pursuing or not. Working on the GC and the inlining compiler has been kinda fun (turns out that being a VM guy isn’t so bad after all), but I’m more likely to keep going with it if I know that people are actually interested in it.