About the clean of SystemDictionary
stéphane ducasse
ducasse at iam.unibe.ch
Tue Sep 28 15:13:03 UTC 2004
Hi all
we the KCP team are cleaning the kernel of squeak not for fun nor for
the beauty (ok sometimes I think that
we need beauty to dream about new languages since they should be even
more beautiful). Now we would like to have
squeak as a system that can mutate over the next 20 next years. We want
to use squeak to dream about new languages
and so on. For that we need clean code (such as the AST visitor because
to check literal or whatever we do not want to
have a recompile and fix ugly code everywhere).
Now we would like to be able to define new kernel inside squeak: yes a
different Object and Class classes.
for that we need to clean SystemDictionary but we would like to avoid
to impact anybody else and
still have a good system at the end. After trying last year (with some
successes and some lose of brain cells
for example Beeper), we would like to fix that class once for all.
Here is the plan:
- 1 introduce a clean namespace class:
(warning warning not something complex, no composition, no nesting,
no inheritance....
just a class that holds binding but does not inherits from Dictionary
and has a cool interface and not 12 responsibilities)
- 2 delegates from system dictionary to it
Namespace smalltalk would return Smalltalk
- 3 fixes all the ugly Smalltalk at: ...to use the new interface of
Namespace but keeping the old ones in SystemDict
so that people can still load their code without any problems
Note that point 4 and 5 should be atomic
- 4 deprecate everything "move" **everything** from SystemDictionary
to SmalltalkImage and other classes
- 5 then introduce Smalltalk as a pointer to SmalltalkImage default
this way after this period of time:
- Smalltalk will work for old code
- Smalltalk will be not a subclass of Dictionary
- We will have a clean Namespace and the tools using it
- And Smalltalk/SmalltalkImage will be clean.
So we are looking for feedback.
Stef
More information about the Squeak-dev
mailing list
|