Table of Contents


Xtend 2.25.0 Release Notes  Mar 2, 2021


Xtend 2.25.0 is a maintenance release.

Call to Action: Secure the future maintenance of Xtext & Xtend

As you might have recognized, the number of people contributing to Xtext & Xtend on a regular basis has declined over the past years and so has the number of contributions. At the same time the amount of work for basic maintenance has stayed the same or even increased with the new release cadence of Java and the Eclipse simultaneous release. Briefly: The future maintenance of Xtext & especially Xtend is at risk, at least in the current form and as part of the Eclipse Simrel. If you care, please join the discussion in https://github.com/eclipse/xtext/issues/1721.

Updates

  • Xtend now makes use of Guava 30.1.

Enhancements

  • #1029: Xtend now generates less unused imports (classes from the same package).
  • #1147: serialVersionUID is no longer flagged as unused.

Credits

The Xtend Language project is thankful for the dedication of each committer and contributor. This release has been made possible by the following persons (in order of the number of contributed commits to this release):

  • Christian Dietrich (itemis)
  • Harald Fassler
  • Karsten Thoms (Karakun)
  • Tamas Miklossy (itemis)
  • Nico Prediger (itemis)

Fixed Issues

As in every release cycle we were eagerly hunting down bugs, and reviewed and integrated plenty of contributions. For further details please refer to the following lists:


Xtend 2.24.0 Release Notes  Dec 1, 2020


Xtend 2.24.0 is a maintenance release.

Call to Action: Secure the future maintenance of Xtext & Xtend

As you might have recognized, the number of people contributing to Xtext & Xtend on a regular basis has declined over the past years and so has the number of contributions. At the same time the amount of work for basic maintenance has stayed the same or even increased with the new release cadence of Java and the Eclipse simultaneous release. Briefly: The future maintenance of Xtext & especially Xtend is at risk. If you care, please join the discussion in https://github.com/eclipse/xtext/issues/1721.

Updates

  • Xtend now uses ASM 9.

Credits

The Xtend Language project is thankful for the dedication of each committer and contributor. This release has been made possible by the following persons (in order of the number of contributed commits to this release):

  • Christian Dietrich (itemis)
  • Karsten Thoms (Karakun)
  • Nico Prediger (itemis)
  • Sebastian Zarnekow (independent)
  • Emmanuel Chebbi (INRIA)

Fixed Issues

As in every release cycle we were eagerly hunting down bugs, and reviewed and integrated plenty of contributions. For further details please refer to the following lists:


Xtend 2.23.0 Release Notes  Sep 1, 2020


Xtend 2.23.0 is a maintenance release.

Call to Action: Secure the future maintenance of Xtext & Xtend

As you might have recognized, the number of people contributing to Xtext & Xtend on a regular basis has declined over the past years and so has the number of contributions. At the same time the amount of work for basic maintenance has stayed the same or even increased with the new release cadence of Java and the Eclipse simultaneous release. Briefly: The future maintenance of Xtext & especially Xtend is at risk. If you care, please join the discussion in https://github.com/eclipse/xtext/issues/1721.

Xtext, Xtend, Eclipse, and Java 11

The Eclipse Platform and Java Development Tools have decided to migrate to Java 11 with the new 2020-09 (4.17) release. Xtext and Xtend depend on these projects both for the integration into Eclipse as well as in the LSP and standalone mode. Xtext 2.23 still works with Java 8, but if you want to work with Xtext in Eclipse 2020-09 (4.17) you have to start your Tycho builds with Java 11 as well as launch your Runtime Eclipse Applications with Java 11.

We decided to follow suit to close a window of opportunity for hard to find bugs. Therefore, the version 2.24 of Xtext and Xtend which is due along with Eclipse 2020-12 will be the first release that depends on Java 11. Please feel encouraged to join the discussion in https://github.com/eclipse/xtext/issues/1804 if you have any concerns, general comments or other suggestions.

Eclipse Integration

Quickfix improvements

A quick fix was added to create a local variable or value in addition to the option to create class members.

Quick Fix: Add local var/val
Quick Fix: Add local var/val

Credits

The Xtend Language project is thankful for the dedication of each committer and contributor. This release has been made possible by the following persons (in order of the number of contributed commits to this release):

  • Christian Dietrich (itemis)
  • Sebastian Zarnekow (independent)
  • Nico Prediger (itemis)
  • Lorenzo Addazi (Mälardalen University Sweden)
  • Aaron R Miller
  • Karsten Thoms (Karakun)
  • Tamas Miklossy (itemis)

Fixed Issues

As in every release cycle we were eagerly hunting down bugs, and reviewed and integrated plenty of contributions. For further details please refer to the following lists:


Xtend 2.22.0 Release Notes  Jun 2, 2020


Xtend 2.22.0 is mainly a maintenance release with a small number of usability improvements.

Call to Action: Secure the future maintenance of Xtext & Xtend

As you might have recognized, the number of people contributing to Xtext & Xtend on a regular basis has declined over the past years and so has the number of contributions. At the same time the amount of work for basic maintenance has stayed the same or even increased with the new release cadence of Java and the Eclipse simultaneous release. Briefly: The future maintenance of Xtext & especially Xtend is at risk. If you care, please join the discussion in https://github.com/eclipse/xtext/issues/1721.

Documentation

The Xtend community website has been updated to list the recently published videos, presentations and blog posts around Xtend. The list is not yet complete, so feel free to contact us if you are also interested in listing your articles there.

Eclipse Integration

Credits

The Xtend Language project is thankful for the dedication of each committer and contributor. This release has been made possible by the following persons (in order of the number of contributed commits to this release):

  • Christian Dietrich (itemis)
  • Nico Prediger (itemis)
  • Tamas Miklossy (itemis)
  • Sebastian Zarnekow (independent)
  • Karsten Thoms (Karakun)
  • Mathias Rieder (Bachmann)

Fixed Issues

As in every release cycle we were eagerly hunting down bugs, and reviewed and integrated plenty of contributions. For further details please refer to the following lists:


Xtend 2.21.0 Release Notes  Mar 3, 2020


Xtend 2.21.0 is a maintenance release with some usability improvements.

License Change

In compliance with general requirements by the Eclipse Foundation the license for Xtext & Xtend has been changed to EPL 2.0.

Xtend Compiler

Unnecessary modifiers

The Xtend compiler has been improved to avoid generating unnecessary modifiers. No modifier is produced in these contexts:

  • static modifier for nested types within interfaces
  • public modifier for interface members
  • abstract modifier for operations within interfaces

Example:

interface FooItf {
  def void bar ()
  static class FooItfImpl implements FooItf {
    override void bar () {}
  }
}

Old compilation result:

public interface FooItf {
  public static class FooItfImpl implements FooItf {
    @Override
    public void bar () {
    }
  }

  public abstract void bar();
}

New compilation result:

public interface FooItf {
  class FooItfImpl implements FooItf {
    @Override
    void bar () {
    }
  }

  void bar();
}

Credits

The Xtend Language project is thankful for the dedication of each committer and contributor. This release has been made possible by the following persons (in order of the number of contributed commits to this release):

  • Christian Dietrich (itemis)
  • Karsten Thoms (Karakun)
  • Arne Deutsch (itemis)
  • Nico Prediger (itemis)
  • Sven Efftinge (TypeFox)

Fixed Issues

As in every release cycle we were eagerly hunting down bugs, and reviewed and integrated plenty of contributions. For further details please refer to the following lists:


Xtend 2.20.0 Release Notes  Dec 3, 2019


Xtend 2.20.0 is mainly a maintenance release with a small number of usability improvements

Eclipse Integration

New Refactoring: Import Static Method and Import Static Extension Method

Two refactoring commands have been added which can add as static or static extension import the selected static method call and update all the occurrences in the document. The refactoring commands can be triggered from the Refactoring > Import Static | Import Static Extension context menu in the Xtend editor or using M1+Shift+M and M1+Shift+Alt+M key shortcuts. (#751)

Refactoring: Import Static Method

Improved JUnit test case recognition/execution

The Xtend IDE has been improved to recognize and execute all JUnit test cases (implemented in Xtend) event if the cursor is currently located before/after the test class definition.

New Quick Fix: Add JUnit 4 or 5 to the classpath

A quick fix was added which adds the necessary libraries for JUnit 4 or 5 to the classpath. The quick fix will show on import errors starting with org.junit.jupiter (for JUnit 5) or org.junit (for JUnit 4). It works both for plug-in projects and regular Java projects. (#919

Quick Fix: Add JUnit 4 to Classpath
Quick Fix: Add JUnit 5 to Classpath

Credits

The Xtend Language project is thankful for the dedication of each committer and contributor. This release has been made possible by the following persons (in order of the number of contributed commits to this release):

  • Christian Dietrich (itemis)
  • Sebastian Zarnekow (independent)
  • Karsten Thoms (itemis)
  • Tamas Miklossy (itemis)
  • Vivien Jovet (TORO Limited)

Fixed Issues

As in every release cycle we were eagerly hunting down bugs, and reviewed and integrated plenty of contributions. For further details please refer to the following lists:


Xtend 2.19.0 Release Notes  Sep 3, 2019


Xtend 2.19.0 is mainly a maintenance release.

Fixes

  • The Delegate Active Annotation now uses a stable order.
  • Improved @Override annotations in generated code.
  • Improved ambigous constructor calls.

Upgrades

Xtend now uses Guava 27.1.0. The new version will be picked up automatically if you make use of the Xtext BOM or consume Xtend from its P2 repository.

Infrastructure

Xtend is built now on the new Kubernetes based CBI infrastructure JIRO.

Credits

The Xtend Language project is thankful for the dedication of each committer and contributor. This release has been made possible by the following persons (in order of the number of contributed commits to this release):

  • Christian Dietrich (itemis)
  • Karsten Thoms (itemis)
  • Nico Prediger (itemis)
  • Sebastian Zarnekow (itemis)
  • Tamas Miklossy (itemis)

Fixed Issues

As in every release cycle we were eagerly hunting down bugs, and reviewed and integrated plenty of contributions. 5 issues and 62 pull requests have made it into this release. For further details please refer to the following lists:


Xtend 2.18.0 Release Notes  Jun 4, 2019


Xtend 2.18.0 provides new language features (Ternary Expressions and Try-With-Resources) and some smaller improvements.

Ternary Expressions

Xtend now allows to use the ternary operator. This enables to assign conditional values to variables in the shortest possible way, as already well known from Java.

val v = condition ? “thenValue” : “elseValue”

If it is disapproved to use ternary expressions, it is possible to flag them with an error and convert them via quickfix into a traditional if-expression.

val v = if(condition) “thenValue” else “elseValue”

Try With Resources

Try statements are often used with resources, that have to be closed in the finally block. Xtend now supports the convenient try-with-resources expression. This closes the opened resources automatically at the end of the try block - without having to code that explicitly.

def m() {
    val resource = new StringReader("This \n is a text!");
    try
        return resource.read
    finally
        resource?.close     
}

Becomes:

def m() {
    try (val resource = new StringReader("This \n is a text!"))
        return resource.read
}

Eclipse Integration

New Quickfix: Rename Class

When an Xtend class name does not match the file name it is defined in then Xtend raises a warning. A new quickfix has been provided to rename the class according to the file name. (#744)

Quickfix: Rename Class

Quickfix “Remove Unused Member” Improved

The quickfix “Remove member” for unused members was improved. Additionally to the member itself the quickfix will now also remove obsolete import statements and write accesses. (xtext-xtend)

Xtend Elements Wizards in Project Explorer / Navigator View

Context menu entries to trigger New Wizards for Xtend elements were only offered in the Package Explorer. These entries are now additionally offered in the context menu in the Project Explorer and Navigator views. (xtext-xtend#699)

Maven Integration

When the goal xtend-install-debug-info is executed on empty source directories, a warning is raised by default:

[WARNING] Directory <SOURCE_DIR> is empty. Can't process.

This warning can now be suppressed by configure the new parameter showEmptyDirWarning to false. (xtext#787)

Xtend Compiler

The Xtend batch compiler lookup order preferred classes in jars on the classpath before local classes that are on the source path. The order has been changed so that local classes are now first on the search path. (#750)

Credits

The Xtend Language project is thankful for the dedication of each committer and contributor. This release has been made possible by the following persons (in order of the number of contributed commits to this release):

  • Christian Dietrich (itemis)
  • Karsten Thoms (itemis)
  • Sebastian Zarnekow (itemis)
  • Arne Deutsch (itemis)
  • Holger Schill (itemis)
  • Eva Poell (itemis)
  • Lorenzo Addazi
  • Niko Stotz (Altran)
  • Max Leuthäuser (itemis)
  • Vivien Jovet (TORO Limited)

Fixed Issues

As in every release cycle we were eagerly hunting down bugs, and reviewed and integrated plenty of contributions. More than 20 issues and almost 60 pull requests have made it into this release. For further details please refer to the following lists:


Xtend 2.17.1 Release Notes  Apr 3, 2019


This is a hotfix release. Here is the list of fixed issues:

  • There was a bug in the Xtext Builder that leads to non Xtext projects being built by Xtext.
  • The LSP4J version in Xtext 2.17.0 did not match the one in Eclipse 2019-03. Upgraded to LSP4J 0.7.0.
  • The Xtend Batch Compiler preferred classes found on the classpath over local classes.

Xtend 2.17.0 Release Notes  Mar 5, 2019


This release focuses on the compatibility with Java 11 & Eclipse 2019-03, stability, performance and technical debt reduction.

Java 11

Xtend is now fully compliant with Java 11. Java 11 can be chosen as runtime VM and as target version for the compiler.

xtend-maven-plugin

BOM Managed Dependencies

One major pain point with past releases was that the xtend-maven-plugin used ranged dependencies. This lead sometimes to problems with the plugin execution, which had to be worked around by clients by explicit dependency management.

Solving this problem was one of the main motivations behind the introduction of the new Maven BOM. With this BOM all external dependencies of Xtext and its Maven plugins are managed in compatible versions without room for interpretation of dependency version ranges.

Upgrade to Maven 3 API

The xtext-maven-plugin has been refactored to use the latest Maven 3 API. The most significant internal change is that all doclet based configurations have been changed to use Maven 3 annotation API.

Faster Startup

The plugin was using version ranges for some of its dependencies, especially Google Guava. Resolving the metadata of these ranged dependencies lead to a short time delay on execution of the plugin. All used dependency versions have been pinned to a single version, which speeds up the plugin execution.

Resolve Usage of Deprecated API

The plugin has been refactored to resolve all usages of deprecated API from Eclipse Platform and m2e bundles. (to issue)

Quickfixes

Quickfix for ‘unused private member’

The unused private member issue can now be resolved by a quickfix. The quickfix is capable to resolve multiple selected issues at once when selected from the Problems view. (details)

Quickfix for 'unused private member'

Quickfix to Add the Abstract Modifier

If a class is named something like ‘AbstractFoo’ but is not declared abstract. A warning is raised and can be resolved via quickfix insertion of the abstract modifier. (details)

Quickfix to add the abstract modifier

Static Member Favorites

Annoyed by typing org.junit.Assert.assertEquals to use static methods? Wouldn’t it be cool having all your favorite static methods at hand and let the language do the import automatically? In JDT this feature is known as Static Member Favorites and it comes with a preference page, where you can configure which class’s methods should be visible. Besides wildcard imports you could make a single method visible - it’s up to you.

Use favorites for static import

We thought it’s a good idea to reuse the already defined JDT preferences in Xtend. Since this release Xtend supports Static Member Favorites like Java does - but a bit more.

Invoke content assist static import

In Xtend we have extension methods. Here the first parameter becomes the implicit receiver. The visible static methods are analysed to fit as an extension method and then gets imported like that.

Invoke content assist static import

Deprecations

Deprecation of Android Archetype

The Maven archetype org.eclipse.xtend.maven.android.archetype has been deprecated with this version and is no longer published.

The bundles org.eclipse.xtend.lib.gwt and org.eclipse.xtext.xbase.lib.gwt are now deprecated. They are subject for removal in one of the next releases.

Credits

The Xtend Language project is thankful for the dedication of each committer and contributor. This release has been made possible by the following persons (in order of the number of contributed commits to this release):

  • Christian Dietrich (itemis)
  • Karsten Thoms (itemis)
  • Holger Schill (itemis)
  • Tamas Miklossy (itemis)
  • Sebastian Zarnekow (itemis)
  • Arne Deutsch (itemis)
  • Prajwal Gowda (itemis)
  • Eva Poell (itemis)
  • Stéphane Galland

Fixed Issues

As in every release cycle we were eagerly hunting down bugs, and reviewed and integrated plenty of contributions. More than 18 issues and almost 50 pull requests have made it into this release. For further details please refer to the following lists: