Thursday, October 29, 2009

Eclipse Summit Europe 2009

This year's Eclipse Summit Europe is again a very nice happening. It's so important to meet all the people you're chatting and mailing with in person.
Yesterday, Sebastian and I had the chance to demo some of the new Xtext features we've been working on in the Helios train. It was much fun and we got very positive feedback for both the talk and (more important) the features. We'll post the demos to our blogs very soon.

I'm especially excited about how well Xtext is accepted within the Eclipse Community. Yesterday there were at least three talks about other projects which make use of Xtext:
  • The b3 guys are working on a DSL to describe builds
  • In the new EMF Search implementation the query language is implemented with Xtext
  • The Relax NG tools are as well implemented in Xtext
How about e4? Designing UIs works good in a WYSIWYG style, but there are scenarios where you want to program parts of it. In addition storing the UI descriptions in XMI is not necessarily the best option. You cannot read it and it's very hard to diff and merge them. I can imagine that a programmer friendly textual syntax might please the modeling skeptics a bit. We can still use a WYSIWYS editor on top.

Implementing the CSS functionality with Xtext could be another opportunity to get more for less. To find out, I'll have to attend Kai's talk about the CSS customization in e4 this morning.
There are lots of other interesting sessions to attend today. Unfortunately I have to decide between listening to
because they are both scheduled for 14:40.

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:
http://download.itemis.com/updates/milestones/
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