Slate and Agora; building the Slate VM
Brian Rice
water at tunes.org
Tue Dec 28 08:37:47 PST 2004
On Dec 28, 2004, at 12:07 AM, Shaping wrote:
> Greetings:
>
> I seek a comparison of the relative merits of Slate and Agora. Have
> any of you used Agora? I don't think it has been developed actively
> since 1997-98.
I don't think I've thought about Agora (see
http://prog.vub.ac.be/research/agora/ ) since then. We do have
Self-style delegation, although more and more we are abstracting over
it, since Self's style is pretty much unsound. Our gradual goal is to
shape it into a system of behavior composition (think of safe mixin
operators). More importantly, Slate has object-based multiple dispatch,
which changes the character of the language a bit, but makes it more
powerful in return.
Slate also has a lot of very powerful core libraries, more powerful
than Smalltalk's or Self's for collections and streams, for example.
Much of the reason of developing this new language was so that many
more powerful infrastructure libraries could be built, to allow a kind
of continuous and propagating elimination of design complexity. So far
this has exceeded our expectations, so much so that we won't go back to
those old languages.
> Several years ago I developed a passion for Agora, but was not able to
> make use of it at the time. Recently I've begun studying it again.
> There are three versions available, Agora94 on VW Smalltalk, Agora96,
> a C++ app, and Agora98 in Java. I'm experimenting with each of these
> now.
I stopped messing around with it a few years ago once I decided on
Slate features (which I had to revise a few times before it became
usable, admittedly).
> Having developed almost exclusively in Smalltalk (VW mostly) for the
> last decade, I lean toward Agora94. I want something I can carry
> forward easily with browsing tools I know, but I'm willing to consider
> new directions. About when will there be a basic GUI framework for
> Slate?
It already exists, but is not entirely complete. See src/ui/* in the
Slate distribution. It's a hybrid of the Morphic and CLIM frameworks -
design documents are at http://slate.tunes.org/doc/ui/ . There are
backends (abstractions over portable subsets of various bindings, could
also include PostScript and HTML) in progress for X11 and SDL, although
they aren't complete. There's also code for the console which is just
now being developed and may be a backend soon.
Now, the question you /really/ want answered is when a browsing
framework will exist within this. I have already intended to port the
OmniBrowser framework from Squeak, but right now my main concern is to
make Slate a safely-concurrent language, using the influence of E (see
http://erights.org/ ). Note: it's a limit right now that Slate is
single-threaded.
Right now the development focusses are to enhance the basic REPL and
debugger and in-image editing capabilities, which all the basic
facilities exist for. And our resident systems programmer is working on
the direct-to-native dynamic compiler framework (see
src/mobius/optimizer/ although there is a super-simple PIC-using
compiler which might see the light of day much sooner).
> I'm concerned mostly about performance and expression. Footprint
> matters least to me. I do a lot of math-modeling and 3D graphics. I
> have a large, novel, OpenGL framework I spent 2.5 years developing in
> VW, and performance-tuning for both run-time speed and develop-time
> speed (clarity), but not size (it's bloated!), and it's giving me a
> headache as I try to refactor it for space-efficiency, while
> maintaining the same high level of expression/clarity I'm used to. I
> have a minimal, consistent, natural-language grammar I've evolved and
> used with moderate success in Smalltalk for many years. I want to
> implement that grammar more completely, and I think that Agora/Slate
> will let me do so.
Slate is strictly more expressive than Agora, and the syntax is more
flexible, so I don't see the point of an Agora layer atop it if that is
what you mean. However, if it convinces you of this, or informs you on
how to extend Slate with whatever Agora features remain outstanding,
then perhaps it is a worthwhile exercise. ;)
Alternatively, the OpenGL experience would be interesting for the guys
working on UI backends, since OpenGL (well, significantly, 3d shapes
and embedding) is a valid backend. Please look at the UI code if the
interest tickles you, and feel free to ask more questions.
> Regarding both languages, I'm concerned about browser support for
> organizing, finding, and viewing prototypes, their evolution, and the
> mixins themselves. I don't have enough experience with either to
> fully appreciate what is required, but I'm fairly
> certain that working with large nested blocks of Agora code will
> become awkward, eventually unproductive, and likely cause a
> disconnection and return to Smalltalk.
Hopefully you've tried Self out, at least. It has a decidedly
anti-browser focus, forcing everything into direct representation
exploration, but that's because Self is a /demo/ of these ideas, and
not anything serious. However, it does demonstrate many (but by no
means all!) of the basic elements of a prototype-oriented development
system.
> Right now I'm trying to build the vm with VC++ 6.0. I've seen problems
> with this approach in the archives, but I thought I'd try, anyway.
> I'm getting "long followed by long" errors, for starters. Is there
> any easy way to take all of the needed .c and .h files from the
> provided directory tree, copy them to the top-level Slate 0.3
> directory, create a project (.dsp) for all of these, tweak the
> compiler options, use __int64 for "long long", and get this to
> compile? Has someone already worked this out cleanly on Windows XP
> with VC++? I'm very Windows-centric (not by choice), and haven't used
> Linux for development yet, unfortunately.
Under src/mobius/vm/platforms/windows/ there is a .sln and .vcproj but
no .dsp. Please see if these work for you. If not, adjust them or do
what you need, and send us what does work and we will incorporate them.
Isn't 6.0 a really old version?
> Or should I install Cygwin 1.5.12-1 (the latest)? This was suggested
> in the installation notes, and GCC seems to produce a faster .exe. Is
> this consistently true?
You should only need MinGW (see http://www.mingw.org/ ), which is a
much lighter setup, if you just need the GCC support.
--
Brian T. Rice
LOGOS Research and Development
http://tunes.org/~water/
More information about the Slate
mailing list