Progress report

Brian T Rice water at tunes.org
Mon Mar 15 08:13:20 PST 2004


I know it's been quiet lately, but quite a bit has been going on; both Lee
and I have been busy with our school/work, so that's been a major factor.
However, we did manage to put together a 0.2.2 in the downloads area,
although we didn't really publicize it.

More importantly, we spent the last week, during his off-week, working on
the VM-related code, and improving the dialect used to build it. Also,
several important optimizations were made: by a default compile, Slate is
now about 6 /times/ faster than it was. This was done mainly by focussing
on array-access and slot-access messages, which turned out to take up most
of the time in long VM-building runs (which are now thankfully short).
There's also a new optimization for lookup in general, short-circuiting in
certain cases where the logically most-relevant method is known to be
found first.

The rest of the improvements are largely bug-fixes and refactorings. A few
of the major API changes which have not been updated in the online manual
are:

ExtensibleSequence (Smalltalk's OrderedCollection) is now ExtensibleArray,
and the abstract type AbstractExtensibleSequence is now
ExtensibleSequence.

Explicitly invoking blocks now has a different syntax from the value,
value:, value:value:, values:, etc. pattern. Now, there is:

applyTo: argArray (much like sendTo:)
applyWtih: argArray and applyWith:with:(with:) (like sendWith:(with:..))
do, instead of value, performing the same thing, again.

These were chosen to keep the protocols clear and consistent, and because
value/value:/values: tend to be easily confused with other protocols.

If you want to try to see what bootstrapping consists of, see my earlier
email:

http://lists.tunes.org/archives/slate/2004-January/000323.html

Running "Compiler generateVM." now, though, will give you a lot of tracing
information, which might give you a better idea of what it does. In any
case, example.slate from the src/mobius/vm/ directory has example Pidgin
code:

http://slate.tunes.org/cgi-bin/viewcvs.cgi/slate/src/mobius/vm/example.slate?rev=1.2&sortby=date&content-type=text/vnd.viewcvs-markup

The output C code is much what you'd expect. Modifying build.slate to act
on one desired file is all you really need to turn Pidgin code into a C
program (or reasonable portion of one).

Finally, I will be presenting Slate at this year's Smalltalk Solutions
conference, which is in Seattle just a few miles from my home. So visit if
you can; it'll be the first week of May.

http://www.smalltalksolutions.com/

I've been collaborating with Craig Latta to learn from his Flow framework
(the streaming and I/O basis for Slate's) and plugin code, along with his
Squat project, so there's been a lot of assistance there, and has sped
some progress nicely.

Anyway, I'll try to update things more frequently. Likely I'll wait until
the end of the month for a 0.2.3, and hopefully by that time should have a
buildable VM or working source tree that can be used. The Mobius manual
needs a lot of updates, since we've made various changes to the low-level
format and bytecode set as we learn more. At any rate, the information in
doc/ is kept up to date, for those curious.

Again, if you're not using CVS, the current tarball can be had from the
main website under the Downloads section, which has the recent
"safe/stable"  checkout from CVS.

-- 
Brian T. Rice
LOGOS Research and Development
http://tunes.org/~water/



More information about the Slate mailing list