Grace specification 0.1

The Grace language specification v0.1 is now available.

Most of the changes since 0.095 are minor/detail changes. Our goal for 0.1 was to focus on the sequential core and object model: we think we’ve done that, although especially the details of inheritance and pattern matching mechanisms remain to be worked out. Our plan now is to work towards 0.2 hopefully around the end of July, making progress on types/modules/encapsulation – we hope the workshop tomorrow will help us to plan the next phase of the project.

As ever, we’d very much appreciate comments on what is in the spec, what isn’t in the spec, and what we might do next.

Grace Workshop San Jose, Sat 4 June

Here are the details for the Grace Workshop on Saturday 4 June:

Four Points by Sheraton San Jose
211 S First Street
San Jose, CA 95113
United States of America
Phone: 1 (408) 282-8800

We’ll aim to start around 10am.

If you feel that you will be able to come, and have not yet emailed Andrew or James your name, please do so when you get a chance.

Grace Workshops

We are planning to hold more three Grace workshops in the rest of this year:

  • Saturday 4th June – San Jose (before PLDI)
  • Saturday 30 July – Lancaster (after ECOOP)
  • Late October – Portland (around SPLASH/OOPSLA)

These workshops are to report progress on the design, to discuss challenges, and hopefully to involve others to the project.

So, if you’re interested in the Grace project, and would like to come to one of these workshops, the please let us know by emailing James, kjx@ecs.vuw.ac.nz.

Grace Workshops

We’ve always claimed that Grace’s design would be provisional, especially early on, and that we were after feedback on the design, both here on the blog, and at workshops or events we were attending.

Last weekend we held couple of workshops in Darmstadt and London. Participating were Jonathan Aldrich, Gavin Bierman, Sophia Drossopoulou, Susan Eisenbach, Erik Ernst, Dick Gabriel, Theo D’Hondt, Carsten Kolassa, Michael Kölling, Dirk Riehle, Lawrence Tratt, Andrew Black & James Noble. They were workshops, work was done, which will result in an updated spec soon. The largest changes we’re contemplating are:

  • Requiring curly braces for all blocks. Because braces delay evaluation, they are semantically as well as syntactically important. Requiring braces will make this clearer to novices. Code layout must still be consistent with bracketing, and layout will still be used to elide semicolons. This means that Grace code will look more like Scala and Java and less like Python or Haskell.
  • Operator precedence for arithmetic operators only (+,-,*,/). All other operators will have no precedence, working left-to-right. Operators without precedence will still require explicit parentheses.
  • A streamlined class declaration and initialisation protocol that will soon be a topic of a blog post.

plus a range of minor changes, generally simplifying Grace by choosing just one option where we had been considering allowing programmers’ choices. Especially for novices, every option adds complexity to a language and makes it harder to learn, so we’re trying to purge unnecessary options from the design.