New Release of Essence#: Lot-4 (Alpha Build 10)

The Lot-4 release is a combination of bug fixes along with a substantial refactoring of (the C# implementation of) the classes ESBehavior and ESMethod, and also of the AbstractSyntaxTreeNode classes. The refactoring was for the purpose of supporting the implementation of Traits.

Other than the bug fixes, the only change visible to those not directly dealing with the C# code is that instances of Behavior no longer support the specification of instance variables for their instances. That makes Behavior instances more like those in Squeak, Pharo or VisualWorks.

The new release can be downloaded from the Essence# site on CodePlex (which gets you the installer.) Alternatively, the code for the run time system (written in C#) can be obtained from theEssence# CodePlex site using Git, and the code for the Essence# Standard Library can be obtained from GitHub.





4 responses to “New Release of Essence#: Lot-4 (Alpha Build 10)

  1. Essence# looks really interesting. Is there a description somewhere how one can get started with Essence# ? I’m an experienced Smalltalk developer on Windows. But I have no .NET development experience. What IDE should I use?


    • Hi Jan,

      The only descriptions available are in the documentation section of the Essence# CodePlex site. That’s because a) there’s only me working on the project, and b) my primary focus right now is on finishing the core functionality. The only reason I even published it as soon as I did was in the off chance that one or a few people might decide to help out (no offers so far.)

      The features that still need to be implemented are listed in the Issues section of the Essence# site on CodePlex.

      As for development tools, that depends on whether you’re interested in working on the implementation of the language itself or just on using it. I’m using VisualStudio Express 2013 to work on the implementation of the language itself. When I write Essence# code, I use Notepad++.

      My current development plan is to finish the implementation of Traits, implement the Observer pattern using .Net Events, port the system to Mono, and then attempt to create a real application using Essence# (so that further work will be driven by actual requirements and actual usage experience.)


  2. Essence# looks very promising. I’m a Smalltalk guy that’s forced to work with C# for some of my projects. I sure miss the power, domain model abstraction features, productivity and ease of programming available with Smalltalk. I can envision the best of both Smalltalk and C# worlds with Essence#. Good design and good work!

    For building real-world apps, an industrial strength, high performance database is needed. After years of using RDBMS (Relational DB Management Systems, or SQL), then discovering ODBMS (Object Database Management Systems) such as Versant and Gemstone, the object database systems are game-changers in terms of flexibility, performance and ability to easily handle complexity. For C#, I’ve been using VelocityDB. See: and also the Features tab on that site. Running on a $900 PC, VelocityDB can out-perform million dollar hardware using relational databases. Dictionary and Collection instances can be persistsed, indexed, selected… beauty.

    I would love to use VelocityDb with Essence#. Reading about the power of your forthcoming Traits features, I’m wondering if it is possible to use VelocityDb with Essence#?

    As you mention migrating Essence# to Mono, I note that VelocityDb is already available under Mono.


    • Thanks for the encouragement.

      I’m very aware of the advantages of object databases…and of the strong bias against them in the corporate/enterprise architecture world. But that’s not a battle I have to fight any more 🙂

      I know of no reason that Essence# couldn’t work with an object database…other than the fact that databases generally need to have a language-specific binding–meaning someone will have to create one between Essence# and VelocityDB. One issue with doing that will be object serialization, which I have not yet implemented. I know, of course, that such is absolutely necessary. But there’s only me working on Essence#, and I can’t do everything at once.

      Any help would be appreciated 🙂

      And that reminds me that I should add object serialization to the official “to do” list on the Essence# CodePlex site.


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