[ANN] Gravel Smalltalk, a modern Smalltalk implementation for the JVM.

181 views
Skip to first unread message

Wouter Gazendam

unread,
Dec 20, 2013, 2:37:13 PM12/20/13
to jvm-la...@googlegroups.com
We're happy to announce Gravel Smalltalk, a modern Smalltalk implementation for the JVM.

Gravel.st aim to be a fully ANSI compliant Smalltalk implementation with modern language enhancements as optional typing, namespaces and traits.

Gravel Smalltalk is developed in Smalltalk itself, in the spirit of Squeak's Slang. It's core functionality is then transformed to java source code which is then used to compile smalltalk code and bootstrap the system.

*Features:
 - Traits
 - Optional typing
 - Patching compiler
 - Full block closures
 - Resumable exceptions
 - Namespaces
 - Mirror based reflection facilities

We aim to provide an interactive development environment in the Smalltalk philosophy as well as a stable and fast runtime platform. To facilitate interactive development we've developed the so-called patching compiler which can add or change running class and method definitions in the JVM.

Gravel Smalltalk uses the jsr-292 (aka invokedynamic) language and VM enhancements in the JVM. So you need Oracle Java 7 or OpenJDK Java 7 or up.

*Current status:
Gravel Smalltalk is very alpha. We have enough code in the base library to boot the Gravel IDE and to run SUnit. Work is currently being done on the online debugger, IDE and base library. The typed Smalltalk to Java translation is not yet ported from VisualWorks Smalltalk since we have a dependency on our Pegon Type System (http://sourceforge.net/projects/pegon).

*License:
Gravel Smalltalk is licensed under the very liberal Apache-2.0 License, except for parts of the Gravel IDE where we redistribute code from semantic-ui and codemirror.net. These are licensed under the compatible MIT License and CodeMirror licence. We also use code in the base library from Squeak, this is also licensed under the Apache-2.0 License or MIT License.



Happy Smalltalk,

Wouter Gazendam


--
Wouter Gazendam
AG5 B.V.
Willem Fenengastraat 4-C
1096 BN  Amsterdam
http://www.ag5.nl
Tel: 020-4630942
Fax: 020-4630946

Simon Ochsenreither

unread,
Dec 20, 2013, 7:46:04 PM12/20/13
to jvm-la...@googlegroups.com
Hi Wouter,

that sounds quite interesting! For those of us who don't follow the events in the Smalltalk space too closely, could you comment on what sets Gravel apart from other Smalltalk implementations (e. g. Redline)?

Thanks and bye,

Simon

Wouter Gazendam

unread,
Dec 22, 2013, 3:40:30 PM12/22/13
to jvm-la...@googlegroups.com
Hi Simon,

Our aim is to be able to use a running JVM as an interactive development environment. I'd like to be able to add/change/remove methods; add classes and add/rename/move fields in classes. Also we'd like to have a debugger. Since the support for changing classes on the JVM is very limited we work around this limitation by rerouting added/changed methods to new versions of the methods compiled in static jvm methods. This is done by our so-called Patching Compiler.

Furthermore we have language support for traits, namespaces and resumable exceptions.

I hope this answers your question,

Cheers,

Wouter

Simon Ochsenreither

unread,
Dec 23, 2013, 2:11:23 AM12/23/13
to jvm-la...@googlegroups.com
Yes, thanks for the hints!

How did you design/implement optional typing, especially the border between types and untyped parts of the program/library?

Wouter Gazendam

unread,
Dec 23, 2013, 3:13:10 AM12/23/13
to jvm-la...@googlegroups.com
From the compiler perspective the whole world (except some statically inferrable parts around literal integer) is untyped. The typing will only be used for checking the software contract (currently nothing is checked).

The whole parser/compiler except for some glue code is developed in typed Smalltalk. This (wholly typed) part is translated to java source; here we use the typing information to satisfy the java translation.

Cheers,

Wouter

jamesl

unread,
Dec 23, 2013, 4:29:16 PM12/23/13
to jvm-la...@googlegroups.com
Hi Wouter,

This is a great thing!
I wish you a lot of luck with it.

I'm the creator of Redline Smalltalk and I'm excited there is another Smalltalk on the JVM.
Maybe we can exchange advice / solutions etc

BTW - Redline supports all the same things as you but we differ in that our Classloader will 
automatically load modified classes, and Redline interfaces natively at the bytecode level with
other classes (developers in Java or other).

Good Luck,

- James

Wouter Gazendam

unread,
Dec 25, 2013, 7:49:48 AM12/25/13
to jvm-la...@googlegroups.com
Hi James,

Thanks for your best wishes. I'm very impressed by your work on Redline Smalltalk. In many ways it is a more 'pure' approach than Gravel's (e.g. you seem to have contexts reified, Gravel has only the JVM stack).

My impression is that it takes a lot of effort to get a working base library. Could you tell me what's the Redline approach. Implement all base classes yourself? Borrow from squeak/pharo? Perhaps we can share some experience there.

Thanks and Merry Christmas,

Wouter


--
You received this message because you are subscribed to a topic in the Google Groups "JVM Languages" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/jvm-languages/VSyaXEh32s8/unsubscribe.
To unsubscribe from this group and all its topics, send an email to jvm-language...@googlegroups.com.
To post to this group, send email to jvm-la...@googlegroups.com.
Visit this group at http://groups.google.com/group/jvm-languages.
For more options, visit https://groups.google.com/groups/opt_out.
Reply all
Reply to author
Forward
0 new messages