Grace at ECOOP 2016

Grace will be around in various ways at the ECOOP 2016 conference in Rome in July.

We’ve just heard that Tim Jones will be presenting at technical paper on inheritance design, which includes a models of Grace’s inheritance.

ECOOP is also hosting a workshop on GRACE (and similar language designs). The workshop is interested in short research papers, position papers, and tool demonstrations in areas such as:

  • experience implementing Grace
  • critiques and feedback on the Grace specification
  • proposed extensions to Grace
  • lessons that Grace may take from other related language projects (such as Pyret, Racket, BlueJ, Wyvern, Stride,TouchDevelop, TrumpScript etc)
  • lessons that Grace may take from language workbench implementation tools

particularly given the recent Draft Grace Language Specification

Expressions of interest to submit position papers or make presentations should be emailed to the organisers.

Grace specification draft 0.7: request for comments.

The Grace project team is delighted to announce that we have released the Grace Language Specification Draft Version 0.7.0 for public comment at The core language specification is accompanied by a draft description of the standard prelude and key modules.

grace-spec-0.7.0.pdf Grace Draft Language Specification 0.7.0 (pdf)
grace-spec-0.7.0.html Grace Draft Language Specification 0.7.0 (html)
grace-prelude-0.7.0.pdf Grace Draft Standard Prelude 0.7.0 (pdf)
grace-prelude-0.7.0.html Grace Draft Standard Prelude 0.7.0 (html)

This specification is very much a draft. We expect the specification itself, and the langauge described by the specification, to continue to change as we work towards a stable version of the language — indeed, we hope that this evolution will be driven by the comments on this and subsequent drafts.

The specification drafts are supported by several implementations (minigrace, Kernan, and Hopper, also available at none of which implement the full specification at the time of writing. We know these implementations are prototypes, which is why we are primarily interested in feedback on the language specification.

You can give us feedback in a range of ways: by commenting here; by emailling; or by joining the
Grace community.
We look forwards to hearing from you.

Changes to Generics

The Grace 0.7.0 specification replaces the use of angle brackets for generic type arguments Foo<o> with double square brackets: Foo[[o]].

This change only affects the syntax of the language, not the semantics. Generic arguments remain optional, and if not supplied have the Unknown type.

*          *          *          *          *

The reasons for this change are to make Grace programs easier to read (for people) and to parse (for programs). Using the old syntax, for example, code such as:

could call a one-argument method run passing the result of a generic call a<B,C>(1), or it could call the two-argument method run, with arguments a<B and c>(1).

The new syntax resolves these cases clearly. Compare:


*          *          *          *          *

At the time of this post, no Grace implementation supports this new syntax.