[ANN] Traits Release beta1

Adrian Lienhard adi at netstyle.ch
Sun Apr 25 18:57:46 UTC 2004


Hi all,

Traits Release beta1
====================
Over the last months we have been working on a new stable implementation of
Traits in Squeak. This is the first public beta release. Please note that
this version features a new language kernel that supports all the necessary
features for creating and composing traits, but that there are still many
features missing that are absolutely crucial for getting the real "traits
experience". (See the limitations section below).

Please find more information and papers about Traits at:
http://www.iam.unibe.ch/~scg/Research/Traits

Our implementation consists of the following parts:

- The Kernel: In contrast to the traits prototype, the new traits
implementation features a clean, efficient and stable kernel, which is an
extension of the traditional Smalltalk-80 kernel of Squeak. The kernel is
feature complete as far as creation and composition of traits is concerned,
but it may still have bugs. Note that in the current version, the kernel
contains some duplicated code between the class and the traits hierarchy.
However, this is not an accident but a conscious design decision as we will
get rid of this duplicated code by bootsrapping/refactoring the kernel using
traits itself.

- The User Interface: We've started implementing a new traits browser with
OmniBrowser. It supports composing and browsing classes and traits and let
you "dive" into the composition structure of traits. In addition, the old
browser has been modified to show a flat view for programmers who like to
view and work with Squeak as it was before.

- Monticello: We've made Monticello traits aware, letting you save and load
traits (even to SqueakSource). Note, that code which is saved with this
modified version of Monticello can not be loaded with a normal Monticello
(even if it does not include traits). This implementation should be
considered as a prototype and should be refactored.
As an alternative you can also use the normal fileOut mechanism which
supports traits as well.

Installation
------------
The implementation is available on SqueakMap under the name "Traits". It is
tested in a new fresh 3.7b image. Prerequisite packages are Monticello and
the newest version of PackageInfo.
Beside loading the kernel and the modified Monticello and OmniBrowser there
will also be KCP-0220-ClassOrganizerFixAndCleanup.14.cs loaded because this
change is not in the update stream yet.
Please note, that the installation takes about 30 Minutes (depending on the
speed of your machine) because it needs to recompile all the classes in the
image. (This is a consequence of the fact that we had to change the format
of the kernel classes.)

Getting Started
---------------
Open the Traits OmniBrowser: World Menu -> open -> Traits Browser
Create a new trait: Open the context menu in the class/trait pane and select
"create trait..."

Limitations
-----------
- There are still many features missing that are absolutely essential for
getting the real "traits experience", but these are mainly related to the UI
and IDE. For example:
  - There are no virtual categories that present the conflicts and glue
methods of a composite class/trait.
  - There is no automatic computation of requirements
  - There is no information that shows which traits/classes provide or
require the currently selected methods
  - There is no support for turning classes into trait
  - etc.

- The current UI is just a "minimal placeholder" that allows one to start
using/playing with traits. However, many improvements are still missing.
- There are known bugs in OmniBrowser (which still is in alpha).
- The OmniBrowser updates very slowly.

- No documentation apart from the papers yet.

Cheers,
Adrian

_____________________
Adrian Lienhard
www.adrian-lienhard.ch
www.netstyle.ch




More information about the Squeak-dev mailing list