It's an ultra-minimal ultra-late-bound prototype-based object-oriented language. The minimalisim seems to scale: the example code written using the comically minimal core looks much the same as the real code found inside the tarball (e.g. OpenGL bindings). Io looks like an interesting candidate for hosting on the Cola system.
Here're a few things I find interesting about Io based on a very quick glance:
- Objects are just collections of named slots and everything else is a message. To execute a method a
callobject (activation record) is created that can produce the argument values on-demand, so the method can choose its own evaluation strategy. That means
ifcan evaluate its arguments specially whereas most code can simply evaluate left-to-right and store the values in named slots of the
callobject for use during execution.
- Names are unified. Every name is resolved to a slot by depth-first search up the object-tree (parent pointers). The top-level object
Lobbyincludes slots with names like
Object, etc so the name search will always find these. So you don't need to distinguish the names of local variables, slots, classes, keywords, etc - these are all the same.