Are we there yet?

If you’re waiting for the next release, the current ETA is Monday 30 June.

Implementing Traits has required multiple major refactorings of the C# code. Its impact has been both broad and deep. Even the class library format has to be extended (and the Library Loader has be to extended accordingly.)

The Essence# implementation of Traits will mirror the functionality and API of Traits as implemented in Pharo. That’s partly out of respect for prior art, partly for inter-Smalltalk compatibility, but most importantly because Professor Ducasse got the formalism right.

I also took into account the Pharo team’s work on Traits that define instance variables, so although the initial release won’t have that feature, adding support for it in the future should not be all that hard. As an example of that, in the next release the compiler will be able to use one Behavior-like object for binding to instance variables but another one for binding to global variables–which is necessary in order to have Traits that define instance variables. It’s also necessary to support Traits that have their own namespaces–which the initial release will in fact support.


3 responses to “Are we there yet?

  1. I have thoroughly enjoyed my first experience with Essence#. I worked through the first part of Sven Van Caekenberghe’s new HP35 tutorial at, as far as “We are now ready to start writing unit tests.” I encountered 2 or 3 puzzles along the way that I posted on your Codeplex issue tracker, but nothing that stopped me from having fun.


    • David,

      The following code works in the new release (Golden Rule):

      | class |
      class := Class new.
      	superclass: Object;
      	name: #Color;
      	instanceVariableNames: #(red green blue).
      class new


  2. Thanks for your kind responses on the issue tracker. I wish I could help with some of the coding, but I fear that so far I have only created more work for you. Thanks again.


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s