Monday, October 05, 2009

Helios M2 of Xtext, Xpand and MWE

The M2 builds are promoted (with Athena!). And here's the promised update on what we've already done for the M2 of Helios.

You can find the details in the bugzilla links. Here I'll only mention new big features.

Xtext (fixed bugzillas)

Quickfix Support

It is now possible to register quickfixes for validation rules. The feature is documented as part of the validation section.

JVM - EMF bridge
This one allows referencing Java elements from EMF models, as it is desired in most DSLs which are used in a JVM context. We already wrote a small MWE prototype (without XML syntax), which makes use of this new component. It took us a day to come up with a neat MWE editor. Our upcoming base language will be based on top of this type system.
Sebastian is going to blog about the details soon.

EMF Index integration
We made some good progress with regards to the index integration. However, as it was not finished by M2 and the changes were too big we decided to hold it back. It will be shipped with M3 and I will write a separate blog about it soon.

Xpand (fixed bugzillas)

Incremental Generation
There's support for incremental generation now. It leverages EMFCompare to find out what has changed and only triggers those parts in a generator which could possibly be affected by the changes. In typical scenarios where one has big models and only very little changes between the builds this can yield a significant performance boost. The implementation is there and the unit tests should be a good starting point (org.eclipse.xpand.incremental.tests). Documentation and an example workflow will follow.

Xpand Profiler
If you want to improve the overall execution performance of your generator, the new Xpand profiler comes in handy. Heiko already blogged about it. There's also documentation available.

MWE (fixed bugzillas)

For MWE only some bugs were fixed. The new MWE syntax we're working on has not yet been checked in. It is primarily meant as a test language for the Java EMF bridge. In order to replace the current parser and infrastructure we need to implement an XML based reader (for backward compatibility) and of course the interpreter needs to work on EMF models. This is not planned for M3 as we have little resources and want to focus on the EMF Index integration as well as the Java EMF bridge. But I'm pretty sure we'll do this during one of the next milestones.

Disclaimer: We encourage everybody to use and test our milestones. It really helps to get as much feedback as possible. However, note that every API we introduce between M1 to M5 might be changed or even be removed completely in future milestones. Also milestones are usually not as stable as releases.

If you want to test the milestones just take the composite updates site from itemis:
Check the Antlr feature ("Xtext Antlr Support 0.8.0 M2" -> "Xtext Antlr Feature") and p2 will do the rest.

Just in case you're interested in what is planned for M3. Here are the bugzilla queries:
  1. Xtext M3 bugzillas
  2. Xpand M3 bugzillas
  3. MWE M3 bugzillas