blob: d90f9bb66461640b0baaf739a6ad39c0cb30c5cb [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Xtext - Release Notes</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description"
content="The website of Eclipse Xtext, an open-source framework for development of programming languages and domain-specific languages">
<meta name="author" content="Sven Efftinge">
<meta name="author" content="Miro Spoenemann">
<!-- styles -->
<!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
<!--[if lt IE 9]>
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<!-- Le fav and touch icons -->
<link rel="shortcut icon" href="/Xtext/images/favicon.png">
<link href="/Xtext/css/bootstrap.css" rel="stylesheet" type='text/css'>
<link href="/Xtext/css/bootstrap-responsive.css" rel="stylesheet" type='text/css'>
<link href="/Xtext/css/shield-responsive.css" rel="stylesheet" type='text/css'>
<link href='/Xtext/css/fonts.css' rel='stylesheet' type='text/css'>
<link href="/Xtext/css/prettyPhoto.css" rel="stylesheet" media="screen" type='text/css'>
<link href="/Xtext/css/prettify.css" type="text/css" rel="stylesheet"/>
<link href="/Xtext/css/style.css" rel="stylesheet" type='text/css'>
<!-- cover flow -->
<link href="/Xtext/css/coverflow.css" rel="stylesheet" type='text/css'>
<!--[if lt IE 9]>
<link href="/css/iebugs.css" rel="stylesheet" type='text/css'>
<![endif]-->
<!-- BEGIN Cookie Consent
<link rel="stylesheet" type="text/css" href="//cdnjs.cloudflare.com/ajax/libs/cookieconsent2/3.0.3/cookieconsent.min.css" />
<script src="//cdnjs.cloudflare.com/ajax/libs/cookieconsent2/3.0.3/cookieconsent.min.js"></script>
<script>
window.addEventListener("load", function(){
window.cookieconsent.initialise({
"palette": {
"popup": {
"background": "#000"
},
"button": {
"background": "#f1d600"
}
},
"theme": "edgeless",
"type": "opt-in",
onInitialise: function (status) {
var type = this.options.type;
var didConsent = this.hasConsented();
if (type == 'opt-in' && didConsent) {
// TODO: enable cookies
}
if (type == 'opt-out' && !didConsent) {
// TODO: disable cookies
}
},
onStatusChange: function(status, chosenBefore) {
var type = this.options.type;
var didConsent = this.hasConsented();
if (type == 'opt-in' && didConsent) {
// TODO: enable cookies
}
if (type == 'opt-out' && !didConsent) {
// TODO: disable cookies
}
},
onRevokeChoice: function() {
var type = this.options.type;
if (type == 'opt-in') {
// TODO: disable cookies
}
if (type == 'opt-out') {
// TODO: enable cookies
}
},
"content": {
"href": "http://www.eclipse.org/legal/privacy.php"
}
})});
</script>
END Cookie Consent -->
</head>
<body>
<header class="site-header">
<!-- Navbar -->
<div class="navbar navbar-fixed-top">
<div class="navbar-inner">
<div class="container">
<a class="btn btn-navbar" data-toggle="collapse"
data-target=".nav-collapse"> <span class="icon-bar"></span> <span
class="icon-bar"></span> <span class="icon-bar"></span>
</a> <a class="brand" href="/Xtext/index.html"></a>
<div class="nav-collapse collapse" style="height: 0px;">
<ul class="nav">
<!--li ><a href="/Xtext/news.html">News</a></li-->
<li ><a href="/Xtext/download.html">Download</a></li>
<li ><a href="/Xtext/documentation/index.html">Documentation</a></li>
<li ><a href="/Xtext/community.html">Community</a></li>
<li class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown" href="#">Support &amp; Trainings<span class="caret"></span></a>
<ul class="dropdown-menu">
<li><a href="https://www.itemis.com/en/xtext/support-and-team/" target="_blank">itemis</a></li>
<li><a href="https://typefox.io/trainings-2" target="_blank">TypeFox</a></li>
</ul>
</li>
<li ><a href="http://xtend-lang.org">Xtend</a></li>
</ul>
<!--div class="nav pull-right">
<li ><a><iframe src="https://ghbtns.com/github-btn.html?user=eclipse&repo=xtext&type=star&count=true" frameborder="0" scrolling="0" width="170px" height="20px"></iframe></a></li>
</div-->
</div>
<!--/.nav-collapse -->
</div>
</div>
</div>
<!-- Navbar End -->
</header>
<div id="page">
<div class="inner">
<div class="container">
<br/>
<div>
<h3>Table of Contents</h3>
<ul>
<li><p><a href="#/releasenotes/2020/03/03/version-2-21-0">Xtext 2.21.0 Release Notes &mdash; Mar 3, 2020</a></p>
<li><p><a href="#/releasenotes/2019/12/03/version-2-20-0">Xtext 2.20.0 Release Notes &mdash; Dec 3, 2019</a></p>
<li><p><a href="#/releasenotes/2019/09/03/version-2-19-0">Xtext 2.19.0 Release Notes &mdash; Sep 3, 2019</a></p>
<li><p><a href="#/releasenotes/2019/06/04/version-2-18-0">Xtext 2.18.0 Release Notes &mdash; Jun 4, 2019</a></p>
<li><p><a href="#/releasenotes/2019/04/03/version-2-17-1">Xtext 2.17.1 Release Notes &mdash; Apr 3, 2019</a></p>
<li><p><a href="#/releasenotes/2019/03/05/version-2-17-0">Xtext 2.17.0 Release Notes &mdash; Mar 5, 2019</a></p>
<li><p><a href="#/releasenotes/2018/12/04/version-2-16-0">Xtext 2.16.0 Release Notes &mdash; Dec 4, 2018</a></p>
<li><p><a href="#/releasenotes/2018/09/04/version-2-15-0">Xtext 2.15.0 Release Notes &mdash; Sep 4, 2018</a></p>
<li><p><a href="#/releasenotes/2018/05/23/version-2-14-0">Xtext 2.14.0 Release Notes &mdash; May 23, 2018</a></p>
<li><p><a href="#/releasenotes/2017/10/20/version-2-13-0">Xtext 2.13.0 Release Notes &mdash; Oct 20, 2017</a></p>
</ul>
</div>
<hr/>
<section id="/releasenotes/2020/03/03/version-2-21-0">
<h1>Xtext 2.21.0 Release Notes<small>&nbsp;&nbsp;Mar 3, 2020</small></h1>
<br/>
<p>Xtext 2.21 is mainly a maintenance release with a focus on internal improvements to enable more people to contribute and only a few new features. The internal usage of Xtend was reduced where it is not beneficial. This improves build performance and lowers the barrier for new contributors. Also all the tests that were failing on Windows only were adapted, such that developing Xtext on Windows machines is now more satisfying.</p>
<h2 id="license-change">License Change</h2>
<p>In compliance with general requirements by the Eclipse Foundation the license for Xtext &amp; Xtend has been changed to <a href="https://www.eclipse.org/legal/epl-2.0/">EPL 2.0</a>.</p>
<h2 id="documentation">Documentation</h2>
<p>The <a href="https://www.eclipse.org/Xtext/community.html">Xtext community website</a> has been updated to list all the cool projects people are building around Xtext/Xtend.<br />
The list is not yet complete, so feel free to contact us if you are also interested in listing your project there.</p>
<p>The documentation about the <a href="https://github.com/eclipse/xtext/blob/master/dev-doc/MaintenanceTasks.md">release process</a> was improved to enable more people to contribute to this process.</p>
<h2 id="eclipse-integration">Eclipse Integration</h2>
<h3 id="skip-create-markers-in-target-folders">Skip create markers in target folders</h3>
<p>Creation of markers in target folders is disabled. This avoids confusing error markers and improves performance at the same time.</p>
<h3 id="avoid-generation-of-dependency-to-xpandold-generator">Avoid generation of dependency to Xpand/old generator</h3>
<p>The wizard to generate projects for existing ecore models does not create a dependency to deprecated Xpand/old generator any more.</p>
<h2 id="xtext-maven-plugin">xtext-maven-plugin</h2>
<h3 id="testgenerate-goal">testGenerate Goal</h3>
<p>The Maven plugin has now two goals, <code>generate</code> and <code>testGenerate</code>. The new <code>testGenerate</code> goal runs during the <code>generate-test-sources</code> phase and uses the test classpath of the Maven project.</p>
<h2 id="lsp">LSP</h2>
<h3 id="multiple-root-folders-per-workspace">Multiple root folders per workspace</h3>
<p>Xtext based languages now allow a workspace to be composed of multiple root folders.</p>
<h2 id="upgrades">Upgrades</h2>
<ul>
<li>MWE(2) was updated to 2.11.2 / 1.5.2.</li>
<li>Xtext 2.21 now requires EMF 2.20 as minimal required version.</li>
<li>LSP4J is now on version 0.9.0 / Language Server Protocol version 3.15.</li>
<li>Maven Tycho was updated to version 1.6.0.</li>
<li>JUnit was updated to version 5.6.</li>
</ul>
<h2 id="deprecations">Deprecations</h2>
<ul>
<li>In <code>org.eclipse.xtext.ide</code> many of the LSP Services were changed in the protocol to use service specific parameters instead of <code>TextDocumentPositionParams</code>. We adapted the services to use the new parameter classes and marked the old ones as deprecated and to be removed with Xtext 2.22. If you have custom subclasses of the affected services please adapt your implementations. This also holds true for deprecations in lsp services that we marked as deprecated in earlier releases.</li>
<li>We again encourage you to get rid of the old generator as we might have to remove it in 2020-06 / Xtext 2.22 - see/join <a href="https://github.com/eclipse/xtext/issues/1669">Xtext Issue #1669</a>.</li>
</ul>
<h2 id="credits">Credits</h2>
<p>The Xtext 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 to <a href="https://github.com/eclipse/xtext#repositories">all repositories</a> except <a href="https://github.com/eclipse/xtext-xtend">xtext-xtend</a>):</p>
<ul>
<li>Christian Dietrich (itemis)</li>
<li>Karsten Thoms (Karakun)</li>
<li>Sebastian Zarnekow (independent)</li>
<li>Nico Prediger (itemis)</li>
<li>Tamas Miklossy (itemis)</li>
<li>Arne Deutsch (itemis)</li>
<li>Marcus Mews (NumberFour)</li>
<li>Lorenzo Bettini (Università degli Studi di Firenze)</li>
<li>Sven Efftinge (TypeFox)</li>
<li>Jan Rosczak (Hapag-Lloyd)</li>
<li>Jan Koehnlein (TypeFox)</li>
<li>Robert Lewis <img src="https://img.shields.io/badge/-first%20time%20contributor-green.svg" alt="" /></li>
<li>Ryan Dunn <img src="https://img.shields.io/badge/-first%20time%20contributor-green.svg" alt="" /></li>
<li>Mathias Rieder (Bachmann)</li>
<li>Hannes Niederhausen (itemis) <img src="https://img.shields.io/badge/-first%20time%20contributor-green.svg" alt="" /></li>
<li>David Medina (Sigasi) <img src="https://img.shields.io/badge/-first%20time%20contributor-green.svg" alt="" /></li>
</ul>
<h2 id="fixed-issues">Fixed Issues</h2>
<p>As in every release cycle we were eagerly hunting down bugs, and reviewed and integrated plenty of contributions. Almost 60 issues and 320 pull requests have made it into this release. For further details please refer to the following lists:</p>
<ul>
<li>
<p><a href="https://github.com/search?utf8=%E2%9C%93&amp;q=is%3Aissue+milestone%3ARelease_2.21+is%3Aclosed+repo%3Aeclipse%2Fxtext+repo%3Aeclipse%2Fxtext-core+repo%3Aeclipse%2Fxtext-lib+repo%3Aeclipse%2Fxtext-extras+repo%3Aeclipse%2Fxtext-eclipse+repo%3Aeclipse%2Fxtext-idea+repo%3Aeclipse%2Fxtext-web+repo%3Aeclipse%2Fxtext-maven+repo%3Aeclipse%2Fxtext-xtend&amp;type=Issues&amp;ref=searchresults">Fixed GitHub issues</a></p>
</li>
<li>
<p><a href="https://github.com/search?utf8=%E2%9C%93&amp;q=is%3Apr+milestone%3ARelease_2.21+is%3Aclosed+repo%3Aeclipse%2Fxtext+repo%3Aeclipse%2Fxtext-core+repo%3Aeclipse%2Fxtext-lib+repo%3Aeclipse%2Fxtext-extras+repo%3Aeclipse%2Fxtext-eclipse+repo%3Aeclipse%2Fxtext-idea+repo%3Aeclipse%2Fxtext-web+repo%3Aeclipse%2Fxtext-maven+repo%3Aeclipse%2Fxtext-xtend&amp;type=Issues&amp;ref=searchresults">Closed Pull Requests</a></p>
</li>
<li>
<p><a href="https://bugs.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&amp;bug_status=VERIFIED&amp;bug_status=CLOSED&amp;classification=Modeling&amp;classification=Tools&amp;columnlist=product%2Ccomponent%2Cassigned_to%2Cbug_status%2Cresolution%2Cshort_desc%2Cchangeddate%2Ckeywords&amp;f0=OP&amp;f1=OP&amp;f3=CP&amp;f4=CP&amp;known_name=Xtext%202.21&amp;list_id=16618269&amp;product=TMF&amp;product=Xtend&amp;query_based_on=Xtext%202.21&amp;query_format=advanced&amp;status_whiteboard=v2.21&amp;status_whiteboard_type=allwordssubstr">Fixed Eclipse Bugzilla tickets</a></p>
</li>
</ul>
</section>
<hr/>
<section id="/releasenotes/2019/12/03/version-2-20-0">
<h1>Xtext 2.20.0 Release Notes<small>&nbsp;&nbsp;Dec 3, 2019</small></h1>
<br/>
<p>Xtext 2.20.0 is mainly a maintenance release.</p>
<h2 id="eclipse-integration">Eclipse Integration</h2>
<h3 id="egit-minimal-version">EGit minimal version</h3>
<p>Xtext requires to use EGit 4.1 or newer now. We have removed a workaround that prevented an endless build loop caused by EGit <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=474003">Bug#474003</a>. Since we expect that no clients are still using Xtext &gt;= 2.20 together with the ancient EGit version, we felt safe to finally remove this workaround.</p>
<h3 id="new-project-wizard--new-file-wizard-improvements">New Project Wizard / New File Wizard improvements</h3>
<p>The <code>New Project Wizard</code> / <code>New File Wizard</code> generator fragments have been extended by the <code>generateToolbarButton</code> option. Setting this option to <code>true</code> adds new project wizard / new file wizard buttons to the toolbar. Furthermore, the New Project Wizard templates provide an API to<br />
register images that can be used in the template descriptions. All these wizard improvements are demonstrated by the Statemachine example shipped by the Xtext framework.</p>
<h2 id="xtext-web">Xtext-Web</h2>
<p>The <code>Xtext-Web Entities Example</code> provides improved validator and formatter capabilities, such as validating the entity, property and operation names, validating the uniquness of the property/operation definitions as well as properly formatting the defined packages, entities, properties and operations elements.</p>
<h2 id="upgrades">Upgrades</h2>
<ul>
<li>The Eclipse Modeling Workflow Engine (MWE2) was updated to version 2.11.1.</li>
<li>LSP4J is now on version 0.8.1.</li>
<li>Maven Tycho was updated to version 1.5.1.</li>
<li>Gradle to version 5.6.x (Should also work with Gradle 6.0.x which we will ship with Xtext 2.21).</li>
<li>grgit Gradle Plugin 4.0.0</li>
</ul>
<h2 id="xtend">Xtend</h2>
<p>A word on Xtend. Back in 2013 Xtend was the “Java 10 of today” even before Java 8 was out. Meanwhile Java Release cadence has speeded up and many of Xtends features can be achieved with pure Java, too. There is still some areas where Xtend is particularly advanced like Code generation, Unit tests and lambda heavy APIs like JvmModelInferrer and Formatter. For other tasks there is no need to use Xtend. Also the resources we have no longer allow us to keep the head start against Java. And learning Xtend still is a burden for new Xtext users. To reflect this changed situation we have decided to make Java the default in the wizard again (except e.g. the Generator and a few other APIs). You can still decide if you want Java or Xtend in the workflow.</p>
<h2 id="deprecations">Deprecations</h2>
<h3 id="old-generator">Old Generator</h3>
<p>With Xtext 2.9 we changed the way Xtext languages are generated to a new generator infrastructure/workflow (<code>org.eclipse.xtext.xtext.generator</code>). Until now we still kept the support for the old (Xpand based) workflows and generator (<code>org.eclipse.xtext.generator</code>). We also allowed to use old generator fragments in new workflows through <code>org.eclipse.xtext.generator.adapter.FragmentAdapter</code>. As we want to stop using old Xpand in Xtext we will drop this support in a future Xtext release. We strongly recommend you to migrate to the new workflow and to get rid of the usages of <code>FragmentAdapter</code>.</p>
<h3 id="xtend1-based-ixtext2ecorepostprocessor">Xtend(1) based IXtext2EcorePostProcessor</h3>
<p>Xtext has basically two methods to work with metamodels. The first on is to infer the metamodel from the Grammar. The second one is to maintain it manually and import it in Xtext. In the past we had actually a third option too: To hook into the inference with a <code>IXtext2EcorePostProcessor</code> written in old Xtend(1). We plan to drop this feature in the future and recommend you to switch to a manually maintained metamodel.</p>
<h2 id="credits">Credits</h2>
<p>The Xtext 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 to <a href="https://github.com/eclipse/xtext#repositories">all repositories</a> except <a href="https://github.com/eclipse/xtext-xtend">xtext-xtend</a>):</p>
<ul>
<li>Christian Dietrich (itemis)</li>
<li>Karsten Thoms (itemis)</li>
<li>Sebastian Zarnekow (independent)</li>
<li>Tamas Miklossy (itemis)</li>
<li>D. Gabriel (Bachmann) <img src="https://img.shields.io/badge/-first%20time%20contributor-green.svg" alt="" /></li>
<li>Jan Köhnlein (TypeFox)</li>
<li>Arne Deutsch (itemis)</li>
<li>Mathias Rieder <img src="https://img.shields.io/badge/-first%20time%20contributor-green.svg" alt="" /></li>
<li>Elena Rogleva <img src="https://img.shields.io/badge/-first%20time%20contributor-green.svg" alt="" /></li>
<li>Mark Christiaens (Sigasi)</li>
<li>Simeon Andreev (Advantest) <img src="https://img.shields.io/badge/-first%20time%20contributor-green.svg" alt="" /></li>
<li>Stéphane Galland (Université de Technologie de Belfort)</li>
</ul>
<h2 id="fixed-issues">Fixed Issues</h2>
<p>As in every release cycle we were eagerly hunting down bugs, and reviewed and integrated plenty of contributions. Almost 60 issues and 320 pull requests have made it into this release. For further details please refer to the following lists:</p>
<ul>
<li>
<p><a href="https://github.com/search?utf8=%E2%9C%93&amp;q=is%3Aissue+milestone%3ARelease_2.20+is%3Aclosed+repo%3Aeclipse%2Fxtext+repo%3Aeclipse%2Fxtext-core+repo%3Aeclipse%2Fxtext-lib+repo%3Aeclipse%2Fxtext-extras+repo%3Aeclipse%2Fxtext-eclipse+repo%3Aeclipse%2Fxtext-idea+repo%3Aeclipse%2Fxtext-web+repo%3Aeclipse%2Fxtext-maven+repo%3Aeclipse%2Fxtext-xtend&amp;type=Issues&amp;ref=searchresults">Fixed GitHub issues</a></p>
</li>
<li>
<p><a href="https://github.com/search?utf8=%E2%9C%93&amp;q=is%3Apr+milestone%3ARelease_2.20+is%3Aclosed+repo%3Aeclipse%2Fxtext+repo%3Aeclipse%2Fxtext-core+repo%3Aeclipse%2Fxtext-lib+repo%3Aeclipse%2Fxtext-extras+repo%3Aeclipse%2Fxtext-eclipse+repo%3Aeclipse%2Fxtext-idea+repo%3Aeclipse%2Fxtext-web+repo%3Aeclipse%2Fxtext-maven+repo%3Aeclipse%2Fxtext-xtend&amp;type=Issues&amp;ref=searchresults">Closed Pull Requests</a></p>
</li>
<li>
<p><a href="https://bugs.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&amp;bug_status=VERIFIED&amp;bug_status=CLOSED&amp;classification=Modeling&amp;classification=Tools&amp;columnlist=product%2Ccomponent%2Cassigned_to%2Cbug_status%2Cresolution%2Cshort_desc%2Cchangeddate%2Ckeywords&amp;f0=OP&amp;f1=OP&amp;f3=CP&amp;f4=CP&amp;known_name=Xtext%202.20&amp;list_id=16618269&amp;product=TMF&amp;product=Xtend&amp;query_based_on=Xtext%202.20&amp;query_format=advanced&amp;status_whiteboard=v2.20&amp;status_whiteboard_type=allwordssubstr">Fixed Eclipse Bugzilla tickets</a></p>
</li>
</ul>
</section>
<hr/>
<section id="/releasenotes/2019/09/03/version-2-19-0">
<h1>Xtext 2.19.0 Release Notes<small>&nbsp;&nbsp;Sep 3, 2019</small></h1>
<br/>
<p>Xtext 2.19.0 is mainly a maintenance release.</p>
<h2 id="lsp-integration">LSP Integration</h2>
<p>Xtext 2.19 now uses LSP4J version 0.8.0 / Language Server Protocol version 3.14.0. This allows you to consume Xtext Language Servers through WebSocket.</p>
<h2 id="classgraph">Classgraph</h2>
<p>We use Classgraph to scan the classpath. This allows us to provide Standlone Content Assist proposals (LSP/WEB) not only when the application runs with Java 8 but with Java 11, too.</p>
<h2 id="upgrades">Upgrades</h2>
<p>Xtext now uses Guava 27.1.0. The new version will be picked up automatically if you make use of the Xtext BOM or consume Xtext from its P2 repository.<br />
The MWE(2) version was updated to 2.11.</p>
<h2 id="gradle">Gradle</h2>
<p>We made building Xtext projects and Xtext itself Gradle 6.0 ready and thus future-proof.</p>
<h2 id="maven-tycho">Maven Tycho</h2>
<p>For our integration of Eclipse Tycho based builds with Eclipse Orbit we now make use of the new Orbit Simrel Alias <a href="https://download.eclipse.org/tools/orbit/downloads/2019-09">https://download.eclipse.org/tools/orbit/downloads/2019-09</a> instead of our own solution <a href="https://download.eclipse.org/modeling/tmf/xtext/updates/orbit/2019-09">https://download.eclipse.org/modeling/tmf/xtext/updates/orbit/2019-09</a>.</p>
<h2 id="infrastructure">Infrastructure</h2>
<p>Xtend now is built on the new Kubernetes based CBI infrastructure <a href="https://wiki.eclipse.org/CBI/Jenkins_Migration_FAQ">JIRO</a>.</p>
<h2 id="more-upgrades">More Upgrades</h2>
<p>Xtext always follows the latest releases of the software it relies on. The following software upgrades have been considered for this release:</p>
<ul>
<li>Latest supported Eclipse Platform 4.13 (a.k.a. 2019-09)</li>
<li>Eclipse MWE 2.11</li>
<li>Guava 27.1</li>
<li>LSP4J 0.8</li>
<li>jquery 3.4.1</li>
<li>node 10.16.0</li>
<li>Maven Plugins:
<ul>
<li>maven-compiler-plugin 3.8.1</li>
<li>maven-source-plugin 3.1.0</li>
</ul>
</li>
<li>Gradle 5.5</li>
<li>Gradle Plugins:
<ul>
<li>com.github.johnrengelman.shadow 5.1.0</li>
<li>io.spring.dependency-management 1.0.8.RELEASE</li>
<li>de.esoco.gwt 1.0.9</li>
<li>org.ajoberstar.grgit 3.1.1</li>
</ul>
</li>
</ul>
<h2 id="deprecations">Deprecations</h2>
<h3 id="generator-fragments">Generator Fragments</h3>
<p>The generator fragments</p>
<ul>
<li><code>org.eclipse.xtext.generator.adapter.FragmentAdapter</code></li>
<li><code>org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorComparisonFragment</code></li>
</ul>
<p>have been marked deprecated. They are in the already deprecated bundle <code>org.eclipse.xtext.generator</code>. There is currently no replacement for this fragment in the new <code>org.eclipse.xtext.xtext.generator</code> bundle.</p>
<h2 id="credits">Credits</h2>
<p>The Xtext 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 to <a href="https://github.com/eclipse/xtext#repositories">all repositories</a> except <a href="https://github.com/eclipse/xtext-xtend">xtext-xtend</a>):</p>
<ul>
<li>Christian Dietrich (itemis)</li>
<li>Karsten Thoms (itemis)</li>
<li>Nico Prediger (itemis)</li>
<li>Sebastian Zarnekow (itemis)</li>
<li>Tamas Miklossy (itemis)</li>
<li>Lorenzo Addazi (Mälardalen University Sweden)</li>
<li>Marcus Mews (NumberFour)</li>
</ul>
<h2 id="fixed-issues">Fixed Issues</h2>
<p>As in every release cycle we were eagerly hunting down bugs, and reviewed and integrated plenty of contributions. 85 issues and 330 pull requests have made it into this release. For further details please refer to the following lists:</p>
<ul>
<li>
<p><a href="https://github.com/search?utf8=%E2%9C%93&amp;q=is%3Aissue+milestone%3ARelease_2.19+is%3Aclosed+repo%3Aeclipse%2Fxtext+repo%3Aeclipse%2Fxtext-core+repo%3Aeclipse%2Fxtext-lib+repo%3Aeclipse%2Fxtext-extras+repo%3Aeclipse%2Fxtext-eclipse+repo%3Aeclipse%2Fxtext-idea+repo%3Aeclipse%2Fxtext-web+repo%3Aeclipse%2Fxtext-maven+repo%3Aeclipse%2Fxtext-xtend&amp;type=Issues&amp;ref=searchresults">Fixed GitHub issues</a></p>
</li>
<li>
<p><a href="https://github.com/search?utf8=%E2%9C%93&amp;q=is%3Apr+milestone%3ARelease_2.19+is%3Aclosed+repo%3Aeclipse%2Fxtext+repo%3Aeclipse%2Fxtext-core+repo%3Aeclipse%2Fxtext-lib+repo%3Aeclipse%2Fxtext-extras+repo%3Aeclipse%2Fxtext-eclipse+repo%3Aeclipse%2Fxtext-idea+repo%3Aeclipse%2Fxtext-web+repo%3Aeclipse%2Fxtext-maven+repo%3Aeclipse%2Fxtext-xtend&amp;type=Issues&amp;ref=searchresults">Closed Pull Requests</a></p>
</li>
<li>
<p><a href="https://bugs.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&amp;bug_status=VERIFIED&amp;bug_status=CLOSED&amp;classification=Modeling&amp;classification=Tools&amp;columnlist=product%2Ccomponent%2Cassigned_to%2Cbug_status%2Cresolution%2Cshort_desc%2Cchangeddate%2Ckeywords&amp;f0=OP&amp;f1=OP&amp;f3=CP&amp;f4=CP&amp;known_name=Xtext%202.19&amp;list_id=16618269&amp;product=TMF&amp;product=Xtend&amp;query_based_on=Xtext%202.19&amp;query_format=advanced&amp;status_whiteboard=v2.19&amp;status_whiteboard_type=allwordssubstr">Fixed Eclipse Bugzilla tickets</a></p>
</li>
</ul>
</section>
<hr/>
<section id="/releasenotes/2019/06/04/version-2-18-0">
<h1>Xtext 2.18.0 Release Notes<small>&nbsp;&nbsp;Jun 4, 2019</small></h1>
<br/>
<p>Xtext 2.18.0 is mainly a maintenance release.</p>
<h2 id="eclipse-integration">Eclipse Integration</h2>
<h3 id="search-references-result-page-new-context-actions">Search References Result Page: New Context Actions</h3>
<p>The results of the <em>Search References</em> action can now be copied to the clipboard. Further an action has been added to remove search results from the view. Both actions are available from the context menu and by common keyboard shortcuts.</p>
<p><img src="/Xtext/images/releasenotes/2_18_SearchReferencesResultActions.png" alt="Search References Result Page: New Context Actions" height="50%" width="50%" /></p>
<h3 id="new-quickfix-on-empty-keywords">New Quickfix on Empty Keywords</h3>
<p>Grammar rules with empty keyword statements (<code>''</code>) are raising errors already. Two new quickfixes have been added that can be used to resolve these errors:</p>
<ul>
<li>Remove the empty keyword</li>
<li>Set the keyword value from the declaring rule name</li>
</ul>
<p>(<a href="https://github.com/eclipse/xtext-eclipse/issues/994">xtext-eclipse#994</a>)</p>
<h3 id="fixed-potential-deadlock-on-startup">Fixed Potential Deadlock on Startup</h3>
<p>A deadlock may occur on startup of Eclipse. The builder infrastructure has been improved to avoid locking on loading its stored state. (<a href="https://github.com/eclipse/xtext/issues/1460">#1460</a>)</p>
<h3 id="fixed-exceptions-for-closed-projects">Fixed: Exceptions for Closed Projects</h3>
<p>When projects are removed from the workspace the <code>ProjectOpenedOrClosedListener</code> may caused exceptions that were logged to the error log. This situation has been fixed with <a href="https://github.com/eclipse/xtext-eclipse/issues/1066">xtext-eclipse#1066</a>.</p>
<h3 id="refactoring-support-improved-progress-reporting">Refactoring Support: Improved Progress Reporting</h3>
<p>The <code>ResourceRelocationProcessor</code> did not forward the progress monitor to the change serializer, which prevented proper feedback and cancellation support during the application of a rename refactoring. The progress monitor is now forwarded. (<a href="https://github.com/eclipse/xtext-eclipse/issues/1053">xtext-eclipse#1053</a>)</p>
<h3 id="refactoring-support-improved-memory-utilization">Refactoring Support: Improved Memory Utilization</h3>
<p>During rename or move refactorings a temporary resource set is created and populated. This resource set was kept in memory, leading to unnecessary memory consumption. Now the memory held by this temporary resource set is released properly. (<a href="https://github.com/eclipse/xtext-eclipse/issues/1048">xtext-eclipse#1048</a>)</p>
<h2 id="lsp-integration">LSP Integration</h2>
<h3 id="ilanguageserveraccess-provide-access-to-xtext-index"><code>ILanguageServerAccess</code>: Provide Access to Xtext Index</h3>
<p>A new method <code>doReadIndex</code> has been added to <code>ILanguageServerAccess</code> to allow access to the <code>IResourceDescritions</code> instance (a.k.a. the Xtext Index). This is useful for certain use cases for LS extension developers. (<a href="https://github.com/eclipse/xtext-core/issues/1067">xtext#1067</a>)</p>
<h3 id="report-partial-results-of-cancelled-multi-project-builds">Report Partial Results of Cancelled Multi-Project Builds</h3>
<p>When a multi-project build is canceled (another <code>runWrite</code> coming in from the <code>RequestManager</code>), it could be that some projects have already been built. Even though their <code>ProjectManager</code>s have been updated (e.g. their index state), their deltas were never returned, because the <code>BuildManager</code> aggregated all results in a local variable. Build listeners were never be informed about these changes.</p>
<p>The <code>BuildManager</code> has been improved to report also partial results to listeners. (<a href="https://github.com/eclipse/xtext-core/issues/1124">xtext-core#1124</a>)</p>
<h3 id="improved-handling-of-builds-cancellations-by-didchangewatchedfiles-notifications">Improved Handling of Builds Cancellations by <code>didChangeWatchedFiles</code> Notifications</h3>
<p>When editing files in an auto-saving editor, <code>didChange</code> notifications are usually followed by <code>didChangeWatchedFiles</code> notifications. The latter cancel the build, but only look at their own changes to decide whether a new build should be issued. The changes from the prior <code>didChange</code> queued on the <code>BuildManager</code> were ignored.</p>
<p>This issue has been improved by reprocessing URIs from cancelled builds in. (<a href="https://github.com/eclipse/xtext-core/issues/1121">xtext-core#1121</a>)</p>
<h3 id="fixed-unexpected-occurrance-highlighting">Fixed Unexpected Occurrance Highlighting</h3>
<p>In certain situations occurrances were not highlighted properly. The highlighting service has been improved for that. See <a href="https://github.com/eclipse/xtext-core/issues/1090">xtext-core#1090</a> for details.</p>
<h2 id="xtext-grammar--code-generator">Xtext Grammar &amp; Code Generator</h2>
<h3 id="fixed-illegal-whitespace-removal-in-merged-manifests">Fixed: Illegal Whitespace Removal in Merged Manifests</h3>
<p>When re-generating language implementations whitespace was illegally removed for required bundles with changed versions. (<a href="https://github.com/eclipse/xtext-extras/issues/406">xtext-extras#406</a>)</p>
<h2 id="security">Security</h2>
<p>With <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=544852">Bug#544852</a> a theoretical security issue was reported (CVE-2019-10249). While building Xtext artifacts may be downloaded through HTTP instead of HTTPS. To avoid this, all build related resources have been revised and assured that all artifacts participating in the software build are only downloaded with HTTPS.</p>
<ul>
<li>p2 mirrors are disabled for builds using Eclipse Tycho. (<a href="https://github.com/eclipse/xtext/issues/1427">#1427</a>)</li>
<li>p2 repository URLs changed from HTTP to HTTPS. (<a href="https://github.com/eclipse/xtext-xtend/issues/759">xtext-xtend#759</a>)</li>
<li>Maven repository URLs changed from HTTP to HTTPS. (<a href="https://github.com/eclipse/xtext-maven/issues/74">xtext-maven</a>)</li>
</ul>
<h2 id="upgrades">Upgrades</h2>
<ul>
<li>LSP4J has been upgraded to its latest release 0.7.2.</li>
<li>The Java Bytecode Manipultation library ASM has been upgraded to version 7.1.0. (<a href="https://github.com/eclipse/xtext/issues/1440">#1440</a>)</li>
<li>Gradle based projects have been upgraded to use the Gradle Wrapper version 5.4.1.</li>
<li>Eclipse Tycho has been upgraded to release 1.4.0. (<a href="https://github.com/eclipse/xtext/issues/1422">#1422</a>)</li>
<li>In Gradle builds usages of Spring’s <code>dependency-management-plugin</code> have been upgraded to version 1.0.7.RELEASE. (<a href="https://github.com/eclipse/xtext/issues/1420">#1420</a>)</li>
</ul>
<h2 id="new-features-in-xtend">New Features in Xtend</h2>
<p>Xtend has learned try-with-resources and the ternary operator. See the <a href="https://www.eclipse.org/xtend/releasenotes.html#/releasenotes/2019/06/04/version-2-18-0">Xtend Releasenotes</a> for details.</p>
<h2 id="credits">Credits</h2>
<p>The Xtext 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 to <a href="https://github.com/eclipse/xtext#repositories">all repositories</a> except <a href="https://github.com/eclipse/xtext-xtend">xtext-xtend</a>):</p>
<ul>
<li>Christian Dietrich (itemis)</li>
<li>Karsten Thoms (itemis)</li>
<li>Sebastian Zarnekow (itemis)</li>
<li>Jan Koehnlein (TypeFox)</li>
<li>Holger Schill (itemis)</li>
<li>Arne Deutsch (itemis)</li>
<li>Christian Schneider (TypeFox)</li>
<li>Titouan Vervack (Sigasi)</li>
<li>Max Leuthäuser (itemis) <img src="https://img.shields.io/badge/-first%20time%20contributor-green.svg" alt="" /></li>
<li>Akos Kitta (TypeFox)</li>
<li>Lorenzo Addazi</li>
<li>Lorenzo Bettini (Università degli Studi di Firenze)</li>
<li>Tamas Miklossy (itemis)</li>
<li>Dennis Huebner (TypeFox)</li>
<li>RhiobeT <img src="https://img.shields.io/badge/-first%20time%20contributor-green.svg" alt="" /></li>
<li>Sergio Otero Lopez <img src="https://img.shields.io/badge/-first%20time%20contributor-green.svg" alt="" /></li>
<li>Eva Poell (itemis)</li>
<li>Lieven Lemiengre (Sigasi)</li>
<li>Mark Christiaens (Sigasi)</li>
<li>Michael Budnick (all4net) <img src="https://img.shields.io/badge/-first%20time%20contributor-green.svg" alt="" /></li>
<li>Stéphane Galland (Université de Technologie de Belfort)</li>
</ul>
<h2 id="fixed-issues">Fixed Issues</h2>
<p>As in every release cycle we were eagerly hunting down bugs, and reviewed and integrated plenty of contributions. Almost 100 issues and 300 pull requests have made it into this release. For further details please refer to the following lists:</p>
<ul>
<li>
<p><a href="https://github.com/search?utf8=%E2%9C%93&amp;q=is%3Aissue+milestone%3ARelease_2.18+is%3Aclosed+repo%3Aeclipse%2Fxtext+repo%3Aeclipse%2Fxtext-core+repo%3Aeclipse%2Fxtext-lib+repo%3Aeclipse%2Fxtext-extras+repo%3Aeclipse%2Fxtext-eclipse+repo%3Aeclipse%2Fxtext-idea+repo%3Aeclipse%2Fxtext-web+repo%3Aeclipse%2Fxtext-maven+repo%3Aeclipse%2Fxtext-xtend&amp;type=Issues&amp;ref=searchresults">Fixed GitHub issues</a></p>
</li>
<li>
<p><a href="https://github.com/search?utf8=%E2%9C%93&amp;q=is%3Apr+milestone%3ARelease_2.18+is%3Aclosed+repo%3Aeclipse%2Fxtext+repo%3Aeclipse%2Fxtext-core+repo%3Aeclipse%2Fxtext-lib+repo%3Aeclipse%2Fxtext-extras+repo%3Aeclipse%2Fxtext-eclipse+repo%3Aeclipse%2Fxtext-idea+repo%3Aeclipse%2Fxtext-web+repo%3Aeclipse%2Fxtext-maven+repo%3Aeclipse%2Fxtext-xtend&amp;type=Issues&amp;ref=searchresults">Closed Pull Requests</a></p>
</li>
<li>
<p><a href="https://bugs.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&amp;bug_status=VERIFIED&amp;bug_status=CLOSED&amp;classification=Modeling&amp;classification=Tools&amp;columnlist=product%2Ccomponent%2Cassigned_to%2Cbug_status%2Cresolution%2Cshort_desc%2Cchangeddate%2Ckeywords&amp;f0=OP&amp;f1=OP&amp;f3=CP&amp;f4=CP&amp;known_name=Xtext%202.18&amp;list_id=16618269&amp;product=TMF&amp;product=Xtend&amp;query_based_on=Xtext%202.18&amp;query_format=advanced&amp;status_whiteboard=v2.18&amp;status_whiteboard_type=allwordssubstr">Fixed Eclipse Bugzilla tickets</a></p>
</li>
</ul>
</section>
<hr/>
<section id="/releasenotes/2019/04/03/version-2-17-1">
<h1>Xtext 2.17.1 Release Notes<small>&nbsp;&nbsp;Apr 3, 2019</small></h1>
<br/>
<p>This is a hotfix release. Here is the list of fixed issues:</p>
<ul>
<li>There was a <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=545343">bug</a> in the Xtext Builder that leads to non Xtext projects being built by Xtext.</li>
<li>The <a href="https://github.com/eclipse/xtext-core/issues/1059">LSP4J</a> version in Xtext 2.17.0 did not match the one in Eclipse 2019-03. Upgraded to LSP4J 0.7.0.</li>
<li>The <a href="https://github.com/eclipse/xtext-xtend/issues/750">Xtend Batch Compiler</a> preferred classes found on the classpath over local classes.</li>
</ul>
</section>
<hr/>
<section id="/releasenotes/2019/03/05/version-2-17-0">
<h1>Xtext 2.17.0 Release Notes<small>&nbsp;&nbsp;Mar 5, 2019</small></h1>
<br/>
<p>This release focuses on the compatibility with Java 11 &amp; Eclipse 2019-03, stability, performance and technical debt reduction.</p>
<h2 id="bom">BOM</h2>
<p>Xtext 2.17 introduces a new artifact, a <a href="https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Importing_Dependencies">Maven BOM (<em>bill of materials</em>)</a>. Basically it is an artifact with packaging type <code>pom</code>, which defines dependencies by a <code>&lt;dependencyManagement&gt;</code> section. A BOM is consumed by client projects also by <code>&lt;dependencyManagement&gt;</code> and using the BOM artifact with scope <code>import</code> there.</p>
<p>The BOM declares all dependencies that are used by Xtext and has the coordinates</p>
<ul>
<li><code>groupId</code> : <code>org.eclipse.xtext</code></li>
<li><code>artifactId</code> : <code>xtext-dev-bom</code></li>
</ul>
<p>The <code>xtext-dev-bom</code> is used in Maven configurations as follows:</p>
<pre><code> &lt;dependencyManagement&gt;
&lt;dependencies&gt;
&lt;dependency&gt;
&lt;groupId&gt;org.eclipse.xtext&lt;/groupId&gt;
&lt;artifactId&gt;xtext-dev-bom&lt;/artifactId&gt;
&lt;version&gt;${xtext.version}&lt;/version&gt;
&lt;type&gt;pom&lt;/type&gt;
&lt;scope&gt;import&lt;/scope&gt;
&lt;/dependency&gt;
&lt;/dependencies&gt;
&lt;/dependencyManagement&gt;
</code></pre>
<p>Any artifact declared by the BOM (e.g. Eclipse Core, EMF, MWE, Guava, LSP4J, JDT, ANTLR) can then be used without declaration of a version.</p>
<p>With Gradle 5 support of <a href="https://docs.gradle.org/5.0/userguide/managing_transitive_dependencies.html#sec:bom_import">BOM managed dependency versions</a> was introduced. The Xtext BOM can be consumed by Gradle projects with the <code>platform</code> dependency:</p>
<pre><code> dependencies {
compile platform("org.eclipse.xtext:xtext-dev-bom:${xtextVersion}")
}
</code></pre>
<h2 id="java-11">Java 11</h2>
<p>Xtext and Xtend now fully support Java 11! With Xtext 2.16 it was already possible to run Xtext on a Java 11 VM, but it was not possible to use Java 11 also as the target Java version. Since this required Java 11 enabled versions of Eclipse JDT, Tycho and Gradle and not all were available and especially not tested with Xtext, we had to defer the full support to 2.17.</p>
<p>Now with that latest and greatest versions of JDT, Tycho and Gradle integrated, there are no restrictions to use Java 11 in any of the configurations.</p>
<h2 id="customizable-exception-handling-of-validation-code">Customizable Exception Handling of Validation Code</h2>
<p>By default Xtext swallows <code>NullPointerException</code> occuring during the execution of validators. While this behavior is desirable in most cases and users are not bothered with faulty validation or the likely case of NPEs caused by accessing unresolvable proxies, it may be desirable to report or rethrow these exceptions. To minimize the effort of customizing, the handling of exceptions is delegated to the new API method <code>AbstractDeclarativeValidator#handleExceptionDuringValidation(Throwable)</code>. Clients may overroide this method to change the exception handling behavior in their validator classes. (<a href="https://github.com/eclipse/xtext-core/issues/983">to issue</a>)</p>
<h2 id="guava-210-version-pinning">Guava 21.0 Version Pinning</h2>
<p>Xtext allowed a version range from 14.0 to 21.0 for the Guava library in the past. Effectively this range became invalid since API introduced with Guava 20.0 was used in Xbase. The open version range lead also to other surprises in the past.</p>
<p>With Xtext 2.17 it was decided to pin the required version of the Guava library to 21.0 only. This affects all bundle manifests for plugin builds as well as Gradle &amp; Maven builds through the introduced BOM (see above). Also the <em>New Project Wizard</em> will respect this restriction for newly created projects. (<a href="https://github.com/eclipse/xtext/issues/1391">to issue</a>)</p>
<h2 id="xtext-grammar-language">Xtext Grammar Language</h2>
<h3 id="new-validation-first-rule-must-not-be-a-fragment">New Validation: First Rule Must Not Be a Fragment</h3>
<p>An Xtext grammar’s first rule must not start with a fragment rule. This is now checked by an additional validation rule. (<a href="https://github.com/eclipse/xtext-core/pull/1041">to issue</a>)</p>
<p><img src="/Xtext/images/releasenotes/2_17_Xtext_First-rule-not-a-fragment.gif" alt="Validation: first rule not a fragment" height="50%" width="50%" /></p>
<h2 id="testing">Testing</h2>
<h3 id="hyperlinking">Hyperlinking</h3>
<p>A new base class <code>AbstractHyperlinkingTest</code> has been added to provide a convenient way to test hyperlinking navigation.</p>
<p>All standard example projects have been updated to provide a test class (<code>&lt;LangugageName&gt;HyperlinkingTest.java</code>) for demonstration. (<a href="https://github.com/eclipse/xtext-eclipse/issues/949">to issue</a>)</p>
<h3 id="junit-5-support">JUnit 5 Support</h3>
<p>The package <code>org.eclipse.xtext.testing.extensions</code> introduced with release 2.14 is now public API, thus users of Xtext JUnit 5 support will no longer receive restricted API usage warnings.</p>
<p>The <em>New Project Wizard</em> selects JUnit 5 as default.</p>
<p><img src="/Xtext/images/releasenotes/2_17_Xtext_JUnit5-default.png" alt="JUnit 5 support as default" height="50%" width="50%" /></p>
<h2 id="xtext-maven-plugin">xtext-maven-plugin</h2>
<h3 id="output-configuration-name">Output Configuration Name</h3>
<p>It is now possible to configure set the <code>name</code> attribute for non-default output configurations. (<a href="https://github.com/eclipse/xtext-maven/issues/62">to issue</a>)</p>
<h3 id="upgrade-to-maven-3-api">Upgrade to Maven 3 API</h3>
<p>The <code>xtext-maven-plugin</code> 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.</p>
<h2 id="xtext-web">xtext-web</h2>
<p>The Xtext web support has been updated to the latest versions of the used libraries and editors. Particularly we upgraded to:</p>
<ul>
<li>requirejs 2.3.6</li>
<li>jquery 3.3.1-1</li>
<li>ace 1.3.3</li>
<li>codemirror 5.41.0</li>
<li>Orion 17</li>
</ul>
<h2 id="upgrades">Upgrades</h2>
<p>Xtext builts on top of numerous technologies which frequently provide releases. An important task is therefore to keep up-to-date with the latest from the used technology stack. All upgrades affect Xtext in multiple ways:</p>
<ul>
<li>All internal usages for building Xtext use the upgraded versions</li>
<li>The <em>New Project Wizard</em> produces projects that make use of upgrades</li>
<li>Our provided Oomph setup has been updated to reflect the latest changes</li>
</ul>
<h3 id="eclipse-2019-03">Eclipse 2019-03</h3>
<p>As member of the Eclipse Simultaneous Release Xtext is also built against the latest target platform 2019-03.</p>
<h3 id="gradle-521">Gradle 5.2.1</h3>
<p>We upgraded to Gradle 5.2.1. This version is used especially to support the introduced Maven BOM (see above) “natively” in Gradle configurations.</p>
<h3 id="tycho-130">Tycho 1.3.0</h3>
<p>Tycho 1.3.0 is required especially for full Java 11 support.</p>
<h3 id="mwe-210">MWE 2.10</h3>
<p>Xtext is now the latest release 2.10 of the Modeling Workflow Engine (MWE). The MWE project has been updated to use a recent Xtext version itself and supports now separate source folders for main sources and tests.</p>
<h3 id="eclipse-orbit">Eclipse Orbit</h3>
<p>Xtext uses the Orbit repository <a href="https://download.eclipse.org/releases/2019-03/">https://download.eclipse.org/releases/2019-03/</a> for third party libraries. The location redirects to the latest repository recommended for the simultanous release.</p>
<h2 id="credits">Credits</h2>
<p>The Xtext 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 to <a href="https://github.com/eclipse/xtext#repositories">all repositories</a> except <a href="https://github.com/eclipse/xtext-xtend">xtext-xtend</a>):</p>
<ul>
<li>Christian Dietrich (itemis)</li>
<li>Karsten Thoms (itemis)</li>
<li>Sebastian Zarnekow (itemis)</li>
<li>Tamas Miklossy (itemis)</li>
<li>Holger Schill (itemis)</li>
<li>Arne Deutsch (itemis)</li>
<li>Prajwal Gowda (itemis) <img src="https://img.shields.io/badge/-first%20time%20contributor-green.svg" alt="" /></li>
<li>Anders Dahlberg (Ericsson) <img src="https://img.shields.io/badge/-first%20time%20contributor-green.svg" alt="" /></li>
<li>Eva Poell (itemis) <img src="https://img.shields.io/badge/-first%20time%20contributor-green.svg" alt="" /></li>
<li>Lorenzo Addazi <img src="https://img.shields.io/badge/-first%20time%20contributor-green.svg" alt="" /></li>
<li>Jan Rosczak <img src="https://img.shields.io/badge/-first%20time%20contributor-green.svg" alt="" /></li>
<li>Jelle Schuhmacher (Altran) <img src="https://img.shields.io/badge/-first%20time%20contributor-green.svg" alt="" /></li>
<li>Titouan Vervack (Sigasi)</li>
<li>Jonathan Menzies <img src="https://img.shields.io/badge/-first%20time%20contributor-green.svg" alt="" /></li>
<li>Christian Schneider (TypeFox)</li>
</ul>
<h2 id="fixed-issues">Fixed Issues</h2>
<p>As in every release cycle we were eagerly hunting down bugs, and reviewed and integrated plenty of contributions. Almost 80 issues and 240 pull requests have made it into this release. For further details please refer to the following lists:</p>
<ul>
<li>
<p><a href="https://github.com/search?utf8=%E2%9C%93&amp;q=is%3Aissue+milestone%3ARelease_2.17+is%3Aclosed+repo%3Aeclipse%2Fxtext+repo%3Aeclipse%2Fxtext-core+repo%3Aeclipse%2Fxtext-lib+repo%3Aeclipse%2Fxtext-extras+repo%3Aeclipse%2Fxtext-eclipse+repo%3Aeclipse%2Fxtext-idea+repo%3Aeclipse%2Fxtext-web+repo%3Aeclipse%2Fxtext-maven+repo%3Aeclipse%2Fxtext-xtend&amp;type=Issues&amp;ref=searchresults">Fixed GitHub issues</a></p>
</li>
<li>
<p><a href="https://github.com/search?utf8=%E2%9C%93&amp;q=is%3Apr+milestone%3ARelease_2.17+is%3Aclosed+repo%3Aeclipse%2Fxtext+repo%3Aeclipse%2Fxtext-core+repo%3Aeclipse%2Fxtext-lib+repo%3Aeclipse%2Fxtext-extras+repo%3Aeclipse%2Fxtext-eclipse+repo%3Aeclipse%2Fxtext-idea+repo%3Aeclipse%2Fxtext-web+repo%3Aeclipse%2Fxtext-maven+repo%3Aeclipse%2Fxtext-xtend&amp;type=Issues&amp;ref=searchresults">Closed Pull Requests</a></p>
</li>
<li>
<p><a href="https://bugs.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&amp;bug_status=VERIFIED&amp;bug_status=CLOSED&amp;classification=Modeling&amp;classification=Tools&amp;columnlist=product%2Ccomponent%2Cassigned_to%2Cbug_status%2Cresolution%2Cshort_desc%2Cchangeddate%2Ckeywords&amp;f0=OP&amp;f1=OP&amp;f3=CP&amp;f4=CP&amp;known_name=Xtext%202.17&amp;list_id=16618269&amp;product=TMF&amp;product=Xtend&amp;query_based_on=Xtext%202.17&amp;query_format=advanced&amp;status_whiteboard=v2.17&amp;status_whiteboard_type=allwordssubstr">Fixed Eclipse Bugzilla tickets</a></p>
</li>
</ul>
</section>
<hr/>
<section id="/releasenotes/2018/12/04/version-2-16-0">
<h1>Xtext 2.16.0 Release Notes<small>&nbsp;&nbsp;Dec 4, 2018</small></h1>
<br/>
<p>This release focuses on stability, performance and the compatibility with Eclipse 2018-12.</p>
<h2 id="java-11-preparation">Java 11 preparation</h2>
<p>Java 11 has been released in September 2018 and <a href="https://github.com/eclipse/xtext/issues/1182">Xtext is in preparation</a> for full support. Xtext relies on plenty of different components, each of which need to work with Java 11. So far, not all of these are available themselves. Other parties have released new versions that could not be integrated yet. As a result we had to reschedule Java 11 support for Xtext 2.17. However, some preparational work has already been included into Xtext 2.16:</p>
<ul>
<li>ASM 7: The ASM bytecode analysis and manipulation framework has been upgraded to the latest version 7.0.</li>
<li>Tycho 1.3: Tycho 1.3 is built against latest JDT, which is required to use Java 11. All projects and wizards have been upgraded to Tycho 1.3.</li>
<li>Gradle: Xtext 2.16 builds against and uses Gradle 4.10.2 now.</li>
</ul>
<h2 id="testing">Testing</h2>
<h3 id="quickfix-testing-api">Quickfix testing API</h3>
<p>A new base class <a href="https://github.com/eclipse/xtext-eclipse/blob/master/org.eclipse.xtext.ui.testing/src/org/eclipse/xtext/ui/testing/AbstractQuickfixTest.java"><code>AbstractQuickfixTest</code></a> allows the definition of test cases for quickfixes. Quickfixes can be tested by using the method</p>
<pre><code class="language-java">public void testQuickfixesOn(CharSequence model, String issueCode, Quickfix... quickfixes)
</code></pre>
<p>This method takes the original DSL text as its first argument. The second argument is the issue code of the problem that can be fixed by the quickfixes under test. Finally the third argument is an array of <code>Quickfix</code> testing instances. A testable Quickfix defines a label, a description and the expected resulting DSL text.</p>
<pre><code class="language-xtend"> @Data
protected static class Quickfix {
String label
String description
String result
}
</code></pre>
<p>The Xtext example projects Domainmodel, Statemachine and Home Automation do include exemplary tests to demonstrate its usage. The Domainmodel example’s quickfix test looks like this:</p>
<pre><code class="language-xtend">class QuickfixTest extends AbstractQuickfixTest {
@Before
def void setup() {
}
@Test
def fix_invalid_entity_name() {
'''
entity blog {
}
'''.testQuickfixesOn(INVALID_TYPE_NAME, new Quickfix("Capitalize name", "Capitalize name of 'blog'", '''
entity Blog {
}
''')
)
}
..
}}
</code></pre>
<h2 id="new-project-wizard">New Project Wizard</h2>
<ul>
<li>The New Xtext Project wizard selects JUnit 5 as default now.</li>
<li><em>Maven</em> build support: the <code>maven-clean-plugin</code> configuration in the parent <code>pom.xml</code> has been fixed.</li>
<li><em>Gradle</em> build support: Upgrade to Gradle wrapper 4.10.2.</li>
</ul>
<h2 id="xbase-library">Xbase Library</h2>
<p>The Xbase library supports now accessors for two-dimensional arrays.</p>
<h2 id="parallel-project-build-support">Parallel Project Build Support</h2>
<p>With Eclipse 4.8 (Photon) the Eclipse Platform is supporting parallel build of projects in the workspace. Enabling this feature requires that all configured builders of a project are defining a fine grained scheduling rule. For the XtextBuilder the scheduling rule is configurable by preference now.</p>
<p>The preference is not configurable through preference pages. To enable it, set the <code>org.eclipse.xtext.builder/schedulingrule</code> preference option programmatically or by providing a preference file. The supported values are:</p>
<ul>
<li><code>WORKSPACE</code>: Workspace root scheduling. This is the default value.</li>
<li><code>ALL_XTEXT_PROJECTS</code>: Lock all projects with Xtext nature configured. Allows projects of other natures to be built in parallel.</li>
<li><code>PROJECT</code>: Locks the currently built project.</li>
<li><code>NULL</code>: No locking</li>
</ul>
<p>This feature is <em>experimental</em> for now.</p>
<h2 id="language-server-support">Language Server Support</h2>
<h3 id="upgrade-to-eclipse-lsp4j-060">Upgrade to Eclipse LSP4J 0.6.0</h3>
<p>Xtext 2.16 integrates Eclipse LSP4J version 0.6.0.</p>
<h3 id="hierarchical-document-symbols">Hierarchical Document Symbols</h3>
<p>Xtext now supports the <em>hierarchical document symbols</em> as a response to the <code>textDocument/documentSymbol</code> request (introduced in <a href="https://microsoft.github.io/language-server-protocol/specification#version_3_10_0">LSP 3.10.0</a>). For this support a new interface <a href="https://github.com/eclipse/xtext-core/blob/9e46f302bb7bfd68b61f1a05f1c9bb5d830b7fa1/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/symbol/IDocumentSymbolService.xtend"><code>IDocumentSymbolService</code></a> has been added to the bundle <code>org.eclipse.xtext.ide</code>. By default it binds to a no-op implementation. Hierarchical symbols can be activated by binding the interface to the <a href="https://github.com/eclipse/xtext-core/blob/9e46f302bb7bfd68b61f1a05f1c9bb5d830b7fa1/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/symbol/HierarchicalDocumentSymbolService.xtend"><code>HierarchicalDocumentSymbolService</code></a> implementation.</p>
<h3 id="configurable-server-exit-behavior">Configurable Server Exit Behavior</h3>
<p>The default behavior on receiving the <code>exit</code> command of Xtext language servers was to call <code>System.exit</code> and thus terminate the JVM. While this is desirable when a host process is shut down (like termination of the editing tool), it harms <a href="https://github.com/eclipse/xtext-core/issues/885">scenarios</a> where the language server and client run on the same JVM.</p>
<p>To support both use cases, the <code>exit</code> command is now delegated to the <code>ILanguageServerShutdownAndExitHandler</code>. Its default implementation <code>ILanguageServerShutdownAndExitHandler.DefaultImpl</code> preserves the existing behavior and invokes <code>System.exit()</code>. For embedded scenarios, the interface can be bound to <code>ILanguageServerShutdownAndExitHandler.NullImpl</code> instead, which ignores the exit request and keeps the JVM alive.</p>
<h2 id="minimal-target-platform">Minimal Target Platform</h2>
<p>The Eclipse Platform has changed the release cadence after its Photon release (4.9) to quartely major releases. This increases the speed of changes to the platform that Xtext relies on. Since Xtext integrates deeply with the platform, its becoming harder to to support a wide range of releases. Therefore we decided to cut off the supported Eclipse releases and require at least Eclipse 4.7.3a (Oxygen.3a, latest Oxygen release).</p>
<p>This has now been enforced by constraining the lower bound of all bundles of the Eclipse Platform. As a consequence, Xtext 2.16 can no longer be installed on an older Eclipse release.</p>
<h2 id="deprecation-of-gwt">Deprecation of GWT</h2>
<p>We will no longer maintain the GWT versions of Xbase and Xtend Lib. The corresponding jars will be no longer published with future versions of Xtext (likely from 2.17 on).</p>
<h2 id="outlook-for-217">Outlook for 2.17</h2>
<p>Java 11 Support, a Maven BOM and a new MWE version are planned for 2.17</p>
<h2 id="fixed-issues">Fixed Issues</h2>
<p>As in every release cycle we were eagerly hunting down bugs, and reviewed and integrated plenty of contributions. Almost 100 issues and 300 pull requests have made it into this release. For further details please refer to the following lists:</p>
<ul>
<li>
<p><a href="https://github.com/search?utf8=%E2%9C%93&amp;q=is%3Aissue+milestone%3ARelease_2.16+is%3Aclosed+repo%3Aeclipse%2Fxtext+repo%3Aeclipse%2Fxtext-core+repo%3Aeclipse%2Fxtext-lib+repo%3Aeclipse%2Fxtext-extras+repo%3Aeclipse%2Fxtext-eclipse+repo%3Aeclipse%2Fxtext-idea+repo%3Aeclipse%2Fxtext-web+repo%3Aeclipse%2Fxtext-maven+repo%3Aeclipse%2Fxtext-xtend&amp;type=Issues&amp;ref=searchresults">Fixed GitHub issues</a></p>
</li>
<li>
<p><a href="https://github.com/search?utf8=%E2%9C%93&amp;q=is%3Apr+milestone%3ARelease_2.16+is%3Aclosed+repo%3Aeclipse%2Fxtext+repo%3Aeclipse%2Fxtext-core+repo%3Aeclipse%2Fxtext-lib+repo%3Aeclipse%2Fxtext-extras+repo%3Aeclipse%2Fxtext-eclipse+repo%3Aeclipse%2Fxtext-idea+repo%3Aeclipse%2Fxtext-web+repo%3Aeclipse%2Fxtext-maven+repo%3Aeclipse%2Fxtext-xtend&amp;type=Issues&amp;ref=searchresults">Closed Pull Requests</a></p>
</li>
<li>
<p><a href="https://bugs.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&amp;bug_status=VERIFIED&amp;bug_status=CLOSED&amp;classification=Modeling&amp;classification=Tools&amp;columnlist=product%2Ccomponent%2Cassigned_to%2Cbug_status%2Cresolution%2Cshort_desc%2Cchangeddate%2Ckeywords&amp;f0=OP&amp;f1=OP&amp;f3=CP&amp;f4=CP&amp;known_name=Xtext%202.16&amp;list_id=16618269&amp;product=TMF&amp;product=Xtend&amp;query_based_on=Xtext%202.16&amp;query_format=advanced&amp;status_whiteboard=v2.16&amp;status_whiteboard_type=allwordssubstr">Fixed Eclipse Bugzilla tickets</a></p>
</li>
</ul>
</section>
<hr/>
<section id="/releasenotes/2018/09/04/version-2-15-0">
<h1>Xtext 2.15.0 Release Notes<small>&nbsp;&nbsp;Sep 4, 2018</small></h1>
<br/>
<p>This release focusses on stability, performance and the integration in Eclipse 2018-09.</p>
<h2 id="minimal-required-target-platform">Minimal Required Target Platform</h2>
<p>Xtext and Xtend 2.15 are built and tested against Eclipse Oxygen 3a and newer. Thus we recommend to use at least Eclipse Oxygen 3a or even better Eclipse 2018-09. For older versions of the Eclipse Platform we cannot guarantee backwards compatibility even though we carefully assess any changes that are made.</p>
<h2 id="support-for-designated-test-source-folders">Support for designated test source folders</h2>
<p>Recently Eclipse started to support Java projects with additional source folders that are specifically used for test sources. The project layout thus is more flexible and can be aligned with Maven or Gradle defaults. Test folders are highlighted in the UI and the class path for test sources and non-test sources are separated. This ensures that production code does not reference any test code. The Xtext new project wizard now ensures that new projects mark their source folders appropriately.</p>
<h2 id="improved-testing-support">Improved Testing Support</h2>
<p>The Xtext UI Testing infrastructure provides the <code>org.eclipse.xtext.ui.testing.AbstractHighlightingTest</code> base class for testing the syntactical/semantical highlighting behaviour. The Homeautomation and the State-Machine examples contain corresponding highlighting test cases to demonstrate the usage of the <code>AbstractHighlightingTest</code> class.</p>
<h2 id="improved-progress-reporting">Improved Progress Reporting</h2>
<p>The progress reporting for the Xtext builder was enhanced and does now provide more detailed information about the current task. Especially for full builds it is not easier to estimate the remaining time.</p>
<p><img src="/Xtext/images/releasenotes/2_15_progressmonitor.gif" alt="" height="50%" width="50%" /></p>
<h2 id="task-tags-and-task-tags">Task tags and TASK tags</h2>
<p>The Xtext API for ToDo task tags now supports case sensitive patterns such that a TASK can be rendered differently than a mere Task.</p>
<p><img src="/Xtext/images/releasenotes/2_15_tasktags.png" alt="" height="50%" width="50%" /></p>
<h2 id="navigation-in-external-files">Navigation in External Files</h2>
<p>The editing experience for files that are not contained in a workspace has been improved. Navigation and editing works more reliable now.</p>
<h2 id="command-line-interface-class-for-project-creation">Command line interface class for project creation</h2>
<p>Xtext projects can be created from a command line by invoking the <code>org.eclipse.xtext.xtext.wizard.cli.CliProjectsCreatorMain</code> main class. This class exposes all options that the New Project Wizard offers as command-line options. Call the class to see all options.</p>
<p>Example arguments for the creation of a typical DSL targetting Eclipse UI and Maven Tycho build on Java 10:</p>
<pre><code>-targetDir=./mydsl
-languageName=org.xtext.example.mydsl.MyDsl
-baseName=org.xtext.example.mydsl
-extension=mydsl
-enabledProjects=GenericIDE,RuntimeTest,UIProject,UITest,P2Project
-buildSystem=MAVEN
-sourceLayout=PLAIN
-languageServer=APP
-xtextVersion=2.15.0
-projectLayout=FLAT
-javaVersion=JAVA10
</code></pre>
<h2 id="api-improvements">API Improvements</h2>
<p>The API when working with the Xtext documents was improved. Convenience methods have been added that are more robust against broken document content when the model is accessed from units of work. If you don’t want to see any null resource or if you want to handle exceptions specifically when accessing the model, you may want to use <a href="https://github.com/eclipse/xtext-core/blob/master/org.eclipse.xtext.util/src/org/eclipse/xtext/util/concurrent/IWriteAccess.java#L53"><code>tryModify</code></a> or <code>tryReadOnly</code> respectively.</p>
<h2 id="lsp4j-050">LSP4J 0.5.0</h2>
<p>We have updated to LSP4J 0.5.0 which adds support for semantic highlighting.</p>
<p>Although the semantic highlighting <a href="https://microsoft.github.io/language-server-protocol/specification">Language Server Protocol</a> extension is still in a <a href="https://github.com/Microsoft/vscode-languageserver-node/pull/367">proposal</a> state, the Xtext-based language server (LS) is one of the early adopters. The semantic highlighting information is calculated on the Xtext language server and pushed to the client as a notification. This notification carries information about the ranges that have to be colored on the client-side. The desired coloring details are given as <a href="https://manual.macromates.com/en/language_grammars">TextMate scopes</a> for each affected range. Adopters can reuse the entire highlighting logic from the <a href="https://github.com/eclipse/xtext-core/blob/f7c7a604ed9d922a3ea5595a42e6922bccd123e6/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/editor/syntaxcoloring/ISemanticHighlightingCalculator.java#L23"><code>ISemanticHighlightingCalculator</code></a> implementation as is to enable the LS-based semantic highlighting. The only thing they have to provide is a mapping between the style IDs and the desired TextMate scopes via the recently introduced <a href="https://github.com/eclipse/xtext-core/blob/f7c7a604ed9d922a3ea5595a42e6922bccd123e6/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/semanticHighlight/ISemanticHighlightingStyleToTokenMapper.xtend#L26">token mapper</a>. At this state, it is a must to map each style ID to the corresponding scopes manually.</p>
<p><img src="/Xtext/images/releasenotes/2_15_semantic-highlighting.gif" alt="" height="50%" width="50%" /></p>
<h2 id="update-gradle-to-49">Update Gradle to 4.9</h2>
<p>We have upgraded Gradle to 4.9. New projects are built against the this version.</p>
<h2 id="fixed-issues">Fixed Issues</h2>
<p>As in every release cycle we were eagerly hunting down bugs, and reviewed and integrated plenty of contributions. More than a 100 issues and almost 300 pull requests have made it into this release. For further details please refer to the following lists:</p>
<ul>
<li>
<p><a href="https://github.com/search?utf8=%E2%9C%93&amp;q=is%3Aissue+milestone%3ARelease_2.15+is%3Aclosed+repo%3Aeclipse%2Fxtext+repo%3Aeclipse%2Fxtext-core+repo%3Aeclipse%2Fxtext-lib+repo%3Aeclipse%2Fxtext-extras+repo%3Aeclipse%2Fxtext-eclipse+repo%3Aeclipse%2Fxtext-idea+repo%3Aeclipse%2Fxtext-web+repo%3Aeclipse%2Fxtext-maven+repo%3Aeclipse%2Fxtext-xtend&amp;type=Issues&amp;ref=searchresults">Fixed GitHub issues</a></p>
</li>
<li>
<p><a href="https://github.com/search?utf8=%E2%9C%93&amp;q=is%3Apr+milestone%3ARelease_2.15+is%3Aclosed+repo%3Aeclipse%2Fxtext+repo%3Aeclipse%2Fxtext-core+repo%3Aeclipse%2Fxtext-lib+repo%3Aeclipse%2Fxtext-extras+repo%3Aeclipse%2Fxtext-eclipse+repo%3Aeclipse%2Fxtext-idea+repo%3Aeclipse%2Fxtext-web+repo%3Aeclipse%2Fxtext-maven+repo%3Aeclipse%2Fxtext-xtend&amp;type=Issues&amp;ref=searchresults">Closed Pull Requests</a></p>
</li>
<li>
<p><a href="https://bugs.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&amp;bug_status=VERIFIED&amp;bug_status=CLOSED&amp;classification=Modeling&amp;classification=Tools&amp;columnlist=product%2Ccomponent%2Cassigned_to%2Cbug_status%2Cresolution%2Cshort_desc%2Cchangeddate%2Ckeywords&amp;f0=OP&amp;f1=OP&amp;f3=CP&amp;f4=CP&amp;known_name=Xtext%202.15&amp;list_id=16618269&amp;product=TMF&amp;product=Xtend&amp;query_based_on=Xtext%202.15&amp;query_format=advanced&amp;status_whiteboard=v2.15&amp;status_whiteboard_type=allwordssubstr">Fixed Eclipse Bugzilla tickets</a></p>
</li>
</ul>
</section>
<hr/>
<section id="/releasenotes/2018/05/23/version-2-14-0">
<h1>Xtext 2.14.0 Release Notes<small>&nbsp;&nbsp;May 23, 2018</small></h1>
<br/>
<p>While the Xtext project has paid more attention on bug fixing for the past release, Xtext 2.14 is bringing a whole bunch of new features. This version is part of the Eclipse Photon (4.8) simultaneous release. An important focus was to keep up with the fast development pace of important technologies that Xtext is building on. Since its past release, Java 9 and 10 came out. Build technologies like Maven Tycho and Gradle were changed to support that, too. The Language Server Protocol is evolving rapidly. JUnit 5 is adopted by IDEs and build systems. And Xtext is now ready for all of them!</p>
<h2 id="java-9-and-10-support">Java 9 and 10 Support</h2>
<p>Xtext and Xtend 2.14 are able to compile with and against Java 9 &amp; 10. Here are a few notes on the support</p>
<ul>
<li>There is no native support for Java 9/10 module visibilities but we fall back to jdt/javac on that topic.</li>
<li>A current Maven version is required (tested with 3.5)</li>
<li>When using Gradle, version 4.7 is required at least. The wizard will create projects accordingly.</li>
<li>Java 9 requires Tycho 1.1 or newer, Java 10 requires Tycho 1.2</li>
<li>Java 9 requires Oxygen.1a at least, Java 10 requires Oxygen.3a. Eclipse Photon works fine for both.</li>
<li>Java 10 requires the org.objectweb.asm library in version 6.1.1</li>
</ul>
<p>For upgrading existing project use the New Project Wizard to create a project with the desired settings and compare build relevant files (MANIFEST.MF, build.gradle, pom.xml, *.target) with the existing projects.</p>
<h2 id="junit-5-support">JUnit 5 Support</h2>
<p>Xtext now supports the JUnit 5 framework for writing tests. JUnit 5.1 or newer is required.</p>
<p>For new projects the project wizard’s advanced page allows to select the desired JUnit version.</p>
<p><img src="/Xtext/images/releasenotes/2_14_wizard_junit5.gif" alt="" /></p>
<p>Created test projects directly only depend on the JUnit 5 API artifact</p>
<pre><code>org.junit.jupiter:junit-jupiter-api:5.0.0
</code></pre>
<p>Additional dependencies are configured by the JUnit Library container. This lowers the coupling to concrete JUnit versions and the test engine used. For example, Eclipse Photon is using JUnit 5.1, while Eclipse Oxygen is using JUnit 5.0. Furthermore, the execution of tests in build systems is using the test engines provided by the build system’s test plugins.</p>
<h2 id="new-grammar-annotations">New Grammar Annotations</h2>
<p>The Xtext Grammar language supports the following additional annotations for parser rules:</p>
<h3 id="deprecated">@Deprecated</h3>
<p><img src="/Xtext/images/releasenotes/2_14_annotation_deprecated.png" alt="" /></p>
<p>This annotation marks a rule to be deprecated. Issue markers with are produced where a deprecated rule is used. By default the severity of issue is <em>Warning</em>. The severity level can be configured in the preferences. This feature will help you to do smooth langauage evolution of the time by informing your users about deprecated parts.</p>
<p><img src="/Xtext/images/releasenotes/2_14_annotation_preference.png" alt="" /></p>
<h3 id="final">@Final</h3>
<p><img src="/Xtext/images/releasenotes/2_14_annotation_final.png" alt="" /></p>
<p>A rule marked with <code>@Final</code> cannot be overridden.</p>
<h3 id="exported">@Exported</h3>
<p>As a default Xtext exports all elements to the index that have a name. For customizing this behaviour you need to create a custom IDefaultResourceDescriptionStrategy manually.<br />
With <code>@Exported</code> it can be customized on grammar level, which element types are exported to the index. The customization takes effect when at least one rule in a grammar is annotated with <code>@Exported</code>. By doing that you can easily manage visibility of elements and safe memory.</p>
<h2 id="eclipse-integration">Eclipse Integration</h2>
<h3 id="create-action-quickfix">Create Action Quickfix</h3>
<p>Rules that can be consumed without object instantiation usually require a <em>Create Action</em>. A typical example is when a rule defines an optional assignment. Xtext reports this as a warning in the grammar file.</p>
<p>For problems of this kind a new <em>quickfix</em> has been added that inserts the <em>Create Action</em> at the proper place of the parser rule.</p>
<p><img src="/Xtext/images/releasenotes/2_14_create-action.gif" alt="" /></p>
<h3 id="code-mining-support">Code Mining Support</h3>
<p>Eclipse Photon (4.8) adds a new API called <em>Code Mining</em>. With it text editors can inline additional semantic information into the text, which is not part of the text itself. A useful example to leverage this is to display names of inferred types, parameter names of a called function etc.</p>
<p>Xtext adds a new bundle <code>org.eclipse.xtext.ui.codemining</code> which is offering an API for usage of Code Mining with Xtext. The code generator fragment <code>org.eclipse.xtext.xtext.generator.ui.codemining.CodeMiningFragment</code> can be added to the generator workflow to create a stub implementation and provide all dependencies and bindings for the use of this API.</p>
<p>An example implementation has been added to the Domainmodel Example DSL. To learn more about the usage of this API install the example from the File menu and look up the <code>DomainmodelCodeMiningProvider</code> class.</p>
<p><img src="/Xtext/images/releasenotes/2_14_domainmodel-codemining.gif" alt="" /></p>
<h3 id="new-project-and-file-wizard">New Project and File Wizard</h3>
<p>With two simple switches you can turn on the generation of a New Project Wizard and a New File Wizard for your language.</p>
<p>These wizards are based on flexible templates to generate one or many projects with any number of files. You can enable the generation from your .mwe2 file with two simple switches:</p>
<pre><code>language = StandardLanguage {
name = "org.xtext.example.mydsl.MyDsl"
fileExtensions = "mydsl"
fileWizard = {
generate = true
}
projectWizard = {
generate = true
}
}
</code></pre>
<p>The wizard to create projects allows to select from a number of templates and creates one or, in certain situations helpful, even many projects.</p>
<p><img src="/Xtext/images/releasenotes/2_14_new-file-wizard.png" alt="" /></p>
<p>The wizard to create files is more simple in its basic form and skips the template selection if there is only one file template.</p>
<p><img src="/Xtext/images/releasenotes/2_14_new-project-wizard-template-selection.png" alt="" /></p>
<p>In case there are many templates the wizard gets a second page to configure the parameter whereas on the first page a combo box to select the template appears.</p>
<p>The UI for the parameters of the templates as well as the templates them self are defined in code with a concise API. You do not need to fiddle around with SWT widgets and get most UI stuff for free. The templates are generated in the UI project of your language. You can adapt the generated templates, add new ones or contribute new template providers through extension points.</p>
<p>If you generate the wizards for an existing project the <code>plugin.xml</code> is not regenerated to not risk loosing manual changes you might have applied. Instead a <code>plugin.xml_gen</code> is created. You have to merge the generated extensions to your <code>plugin.xml</code> manually.</p>
<h3 id="console-icon">Console Icon</h3>
<p>The Xtext icon has been added for the Xtext console:</p>
<p><img src="/Xtext/images/releasenotes/2_14_console-icon.png" alt="" /></p>
<h2 id="language-server-support">Language Server Support</h2>
<p>Xtext has been upgraded to LSP4J version 0.4.0. This includes the following features:</p>
<ul>
<li>Implementation of the Language Server Protocol 3.7.0</li>
<li>Implementation of the VS Code Debug Protocol 1.25.0</li>
<li>Support multiple local and remote services</li>
<li>Improved error handling</li>
</ul>
<h2 id="emf-support">EMF Support</h2>
<p>With EMF 2.14 a new registry <code>EAnnotationValidator.Registry.INSTANCE</code>, which had to be considered in Xtext’s testing support for resetting.</p>
<p>EMF 2.8 <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=367569#c7">introduced</a> the concept <code>ResourceLocator</code> in <code>ResourceSet</code>s. Xtext’s specialized implementation <code>XtextResourceSet</code> did not support that so far and has been extended now.</p>
<h2 id="change-serializer--rename-refactoring">Change Serializer &amp; Rename Refactoring</h2>
<p>The past <a href="/Xtext/releasenotes.html#/releasenotes/2017/10/20/version-2-13-0">release 2.13</a> introduced a new API for EMF Model Manipulation and an improved rename refactoring based on the new <code>IChangeSerializer</code> API.</p>
<p>These new features are still incubating. Several issues that were identified by the adoption of the features have been solved.</p>
<h2 id="performance">Performance</h2>
<h3 id="output-configurations-cache">Output Configurations Cache</h3>
<p>A performance bottleneck was <a href="https://github.com/eclipse/xtext-eclipse/issues/535">discovered</a> in the access to <code>IOutputConfiguration</code>s in builder participants. The problem depends on the amount of files produced by code generators.</p>
<p>A cache was introduced in class <code>BuilderParticipant</code> to solve the issue.</p>
<h3 id="semantic-highlighting">Semantic Highlighting</h3>
<p>Computation of semantic highlighting <a href="https://github.com/eclipse/xtext-eclipse/issues/347">was performed twice</a>. This was fixed and should improve editing experience especially for larger files with intensive use of semantic highlighting, for example like the Xtend language.</p>
<h3 id="queuedbuilddata">QueuedBuildData</h3>
<p>A bottleneck in class <code>QueuedBuildData</code> has been <a href="https://github.com/eclipse/xtext-eclipse/issues/40">found</a> that affects the build time for a large number of resources. The build time has been improved for this scenario.</p>
<h2 id="execution-environment">Execution Environment</h2>
<p>Xtext 2.14 comes with the following requirements for the execution environment:</p>
<ul>
<li>Java: 1.8, 9 or 10</li>
<li>Eclipse Luna (4.4) or newer</li>
<li>EMF 2.10 or newer</li>
<li>Guice 3.0</li>
<li>Tycho 1.1, 1.2 (Java 10 or JUnit 5)</li>
<li>JUnit 4.12 or 5.1</li>
</ul>
<p>Note that bundle <code>org.eclipse.xtext.xbase.lib</code> was compiled with Java 1.8 now, while being compatible to 1.6 in earlier versions.</p>
<h2 id="links">Links</h2>
<p>More detailed information on some topics have been written in blog posts:</p>
<ul>
<li><a href="https://blogs.itemis.com/en/xtext-2.14-adds-support-for-junit-5">“Xtext 2.14 adds support for JUnit 5”</a></li>
<li><a href="https://blogs.itemis.com/en/code-mining-support-in-xtext">“Code Mining Support in Xtext”</a></li>
<li><a href="https://blogs.itemis.com/en/generating-a-new-project-wizard-with-xtext-2.14">“Generating a new project wizard with Xtext 2.14”</a></li>
<li><a href="https://blogs.itemis.com/en/new-file-wizard-easy-to-generate-with-xtext-2.14">“New File Wizard – easy to generate with Xtext 2.14”</a></li>
<li><a href="https://blogs.itemis.com/de/new-project-wizard-einfach-mit-xtext-2-14-generieren">“New Project Wizard: einfach mit Xtext 2.14 generieren”</a> (German)</li>
<li><a href="https://blogs.itemis.com/de/new-file-wizard-einfach-mit-xtext-2.14-generieren">“Erzeugen des New File Wizards”</a> (German)</li>
<li><a href="https://github.com/eclipse/lsp4j/blob/master/CHANGELOG.md">LSP4J Changelog</a></li>
</ul>
<h2 id="fixed-issues">Fixed Issues</h2>
<p>As in every release we are eagerly hunting down the bugs, review and integrate lots of contributions. 88 issues, 62 Pull Requests and 60 Bugzilla tickets have made it into this release. For further details please refer to the following lists:</p>
<ul>
<li>
<p><a href="https://github.com/search?utf8=%E2%9C%93&amp;q=is%3Aissue+milestone%3ARelease_2.14+is%3Aclosed+repo%3Aeclipse%2Fxtext+repo%3Aeclipse%2Fxtext-core+repo%3Aeclipse%2Fxtext-lib+repo%3Aeclipse%2Fxtext-extras+repo%3Aeclipse%2Fxtext-eclipse+repo%3Aeclipse%2Fxtext-idea+repo%3Aeclipse%2Fxtext-web+repo%3Aeclipse%2Fxtext-maven+repo%3Aeclipse%2Fxtext-xtend&amp;type=Issues&amp;ref=searchresults">Fixed GitHub issues</a></p>
</li>
<li>
<p><a href="https://github.com/search?utf8=%E2%9C%93&amp;q=is%3Apr+milestone%3ARelease_2.14+is%3Aclosed+repo%3Aeclipse%2Fxtext+repo%3Aeclipse%2Fxtext-core+repo%3Aeclipse%2Fxtext-lib+repo%3Aeclipse%2Fxtext-extras+repo%3Aeclipse%2Fxtext-eclipse+repo%3Aeclipse%2Fxtext-idea+repo%3Aeclipse%2Fxtext-web+repo%3Aeclipse%2Fxtext-maven+repo%3Aeclipse%2Fxtext-xtend&amp;type=Issues&amp;ref=searchresults">Closed Pull Requests</a></p>
</li>
<li>
<p><a href="https://bugs.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&amp;bug_status=VERIFIED&amp;bug_status=CLOSED&amp;classification=Modeling&amp;classification=Tools&amp;columnlist=product%2Ccomponent%2Cassigned_to%2Cbug_status%2Cresolution%2Cshort_desc%2Cchangeddate%2Ckeywords&amp;f0=OP&amp;f1=OP&amp;f3=CP&amp;f4=CP&amp;known_name=Xtext%202.14&amp;list_id=16618269&amp;product=TMF&amp;product=Xtend&amp;query_based_on=Xtext%202.14&amp;query_format=advanced&amp;status_whiteboard=v2.14&amp;status_whiteboard_type=allwordssubstr">Fixed Eclipse Bugzilla tickets</a></p>
</li>
</ul>
</section>
<hr/>
<section id="/releasenotes/2017/10/20/version-2-13-0">
<h1>Xtext 2.13.0 Release Notes<small>&nbsp;&nbsp;Oct 20, 2017</small></h1>
<br/>
<h2 id="language-server-support">Language Server Support</h2>
<h3 id="eclipse-new-project-wizard-language-server-build">Eclipse New Project Wizard: Language Server Build</h3>
<p>The New Project Wizard allows now to build an executable distribution of language server. On the advanced page a new option was added which is enabled when a Build System was selected. The option allows the selection of a distribution type:</p>
<ul>
<li><strong>Regular</strong>: A batch script is created that is used to start the server. The DSL jars and all of its runtime dependencies are copied to the output folder.</li>
<li><strong>Fat Jar</strong>: The language server is packaged in a single executable jar.</li>
</ul>
<p>Both Gradle and Maven are supported. When activated, the build script of the language’s Generic IDE project is extended and the language server is packaged to the project’s build</p>
<p><img src="/Xtext/images/releasenotes/2_13_project-wizard-ls.png" alt="" /></p>
<h2 id="eclipse-integration">Eclipse Integration</h2>
<h3 id="configuration-error-detection">Configuration Error Detection</h3>
<p>Invalid combinations of bundles are a frequent source of errors. This can be caused by an invalid mixture of Xtext’s UI and runtime plugins, or by DSL plugins developed with a different version of Xtext than used in the environment where it fails.</p>
<p>Although there can’t be done anything to get the plugins working on an invalid environment, the resulting failure messages were not good for the user, leaving an impression of an unstable framework.</p>
<p>When running in an error during the initial creation of Guice injectors in the DSL’s UI or Xtext’s Shared UI bundle, the error is catched and an analysis of the runtime environment is included in the failure message. This allows better analysis of the root cause.</p>
<h3 id="multi-quickfixes">Multi-Quickfixes</h3>
<p>These are quickfixes that allow to be applied to multiple markers at once.</p>
<p>TBD</p>
<h3 id="better-cancellation-in-refactorings">Better Cancellation in Refactorings</h3>
<p>You can how hit the cancel dialog in refactorings and it will actually cancel at the next opportunity and not at the end only.</p>
<h3 id="content-type-descriptor">Content Type Descriptor</h3>
<p>Xtext UI projects provide a Content Type Descriptor by contributing to the <a href="https://help.eclipse.org/oxygen/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Fguide%2Fruntime_content_contributing.htm"><code>org.eclipse.core.contenttype.contentTypes</code> extension point</a> to the <code>plugin.xml</code> file. This is affecting performance on text searches in Eclipse, since Eclipse can decide that a DSL file has no binary content based on the content type’s base type. (<a href="https://github.com/eclipse/xtext-eclipse/issues/379">xtext-eclipse/issues/379</a>)</p>
<pre><code>&lt;extension point="org.eclipse.core.contenttype.contentTypes"&gt;
&lt;content-type
base-type="org.eclipse.core.runtime.text"
file-extensions="mydsl"
id="org.eclipse.xtext.mydsl.MyDSL.contenttype"
name="MyDSL File"
priority="normal"&gt;
&lt;/content-type&gt;
&lt;/extension&gt;
</code></pre>
<h2 id="new-api">New API</h2>
<h3 id="emf-model-manipulation-api-incubating">EMF Model Manipulation API (incubating)</h3>
<p>The <code>IChangeSerializer</code> is a new API to listen to changes that are made to the EMF model of an XtextResource and serialize them back to the document’s text. It has a number of benefits to the old <code>XtextDocument.modify()</code> approach:</p>
<ul>
<li>Direct integration with the formatter, such that changes are automatically nicely formatted.</li>
<li>Minimum text region changes resulting in less noise.</li>
<li>Many points to hook into, e.g. for automatic update of an import section.</li>
<li>More ways to optimize for a specific language and to tune performance.</li>
<li>Independence from Eclipse-UI concepts like the <code>Document</code>. This makes it reusable in languages server implementations.</li>
</ul>
<p>You can use the <code>IChangeSerializer</code> for refactorings, semantic quickfixes, code lens etc. It still has a few limitations, e.g. it does not work with derived state models, that’s why we keep it provisional for now.</p>
<p>Nevertheless, we have added the following new features based on it:</p>
<h3 id="rename-participants-for-eclipse-file-operations">Rename Participants for Eclipse File Operations</h3>
<p>Some languages tie the model file name to the content, like the package declaration in Java. For such cases you might want to participate in operations on files or directories, like move, rename or paste, to adapt your models automatically. Based on the new <code>IChangeSerializer</code> we have implemented some generic file refactoring participants. You will get notified of such changes to react appropriately by registering your own <code>IResourceRelocationStrategy</code>.</p>
<pre><code>&lt;extension point="org.eclipse.xtext.ui.resourceRelocationStrategy"&gt;
&lt;strategy class="mydsl.MydslExecutableExtensionFactory:mydsl.MydslResourceRelocationStrategy"&gt;
&lt;/strategy&gt;
&lt;/extension&gt;
</code></pre>
<h3 id="alternative-rename-refactoring-for-xtext">Alternative Rename Refactoring for Xtext</h3>
<p>By enabling <code>useChangeSerializer</code> flag in the workflow of your language</p>
<pre><code>Workflow {
component = XtextGenerator {
...
language = StandardLanguage {
...
renameRefactoring = {
useChangeSerializer = true
...
</code></pre>
<p>you will use an new, alternative rename refactoring for Eclipse based on the <code>IChangeSerializer</code>. This flag will also generate the binding for the <code>IRenameService</code> and thereby enable rename refactoring on your language server.</p>
<h3 id="xbase-library-orgeclipsextextxbaselib">Xbase Library (<code>org.eclipse.xtext.xbase.lib</code>)</h3>
<h4 id="no-arg-overloads-to-all-mutable-collection-literals">No-arg overloads to all mutable collection literals</h4>
<p>Class <code>CollectionLiterals</code> was extended by no-arg methods for all mutable collection literals:</p>
<ul>
<li><code>newArrayList()</code></li>
<li><code>newHashMap()</code></li>
<li><code>newHashSet()</code></li>
<li><code>newLinkedHashMap()</code></li>
<li><code>newLinkedHashSet()</code></li>
<li><code>newLinkedList()</code></li>
</ul>
<p>Xtext’s code base was refactored to use these methods where appropriate. As a consequence Xtext requires at least version 2.13 of <code>org.eclipse.xtext.xbase.lib</code>. Therefore bundle manifests were refactored to constraint the library bundle’s lower version. New projects will automatically add the version constraint to manifests.</p>
<h4 id="flatmap-extension-method">flatMap extension method</h4>
<p>A new convenience method <code>flatMap</code> has been added to <code>IterableExtensions</code> and <code>IteratorExtensions</code>, which combines <code>map</code> and <code>flatten</code>.</p>
<pre><code>@FinalFieldsConstructor
@Accessors
class Planet {
final String name
final List&lt;Moon&gt; moons
}
@FinalFieldsConstructor
@Accessors
class Moon {
final String name
}
class Planets {
def static void main (String[] args) {
val Iterable&lt;Planet&gt; planets = #[
new Planet("Earth", #[new Moon ("Moon")]),
new Planet("Mars", #[new Moon ("Phobos"), new Moon("Deimos")])
]
val moonNames_old = planets.map[moons].flatten.map[name]
val moonNames_new = planets.flatMap[moons].map[name]
}
}
</code></pre>
<h2 id="tracing">Tracing</h2>
<p>Tracing can now be used for debugging in generated Java code as well. The <code>@Traced</code> annotation now takes optionally a <code>useForDebugging=true</code>. The <code>@TracedAccessors</code> are now adds to the <code>._&lt;feature&gt;()</code> extension method a <code>._&lt;feature&gt;(useForDebugging)</code> extension method.</p>
<h2 id="refactoring">Refactoring</h2>
<h3 id="jdt-dependency-reduction">JDT Dependency Reduction</h3>
<p>Xtext languages can be deployed in environments without JDT UI. In some use cases it was detected that this can still lead to runtime errors due to (<code>NoClassDefFoundError</code>). Dependencies in the following bundles have been resolved:</p>
<ul>
<li><code>org.eclipse.xtext.builder</code> (<a href="https://github.com/eclipse/xtext-eclipse/issues/386">issue#386</a>)</li>
<li><code>org.eclipse.xtext.xbase.ui</code> (<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=509630">bug#509630</a>)</li>
</ul>
<p>We reduced usage of internal API which is subject for removal in JDT. Since older Xtext versions rely on this API, the API is kept by the JDT team for backwards compatibility of Xtext. (<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=525462">bug#525462</a>)</p>
<h3 id="improved-support-for-indentation-based-languages">Improved Support for Indentation Based Languages</h3>
<p>Token placement for INDENT / DEDENT tokens have been improved. This improves content assist for indentation based languages. (<a href="https://github.com/eclipse/xtext-core/pull/366">issue#366</a>)</p>
<h3 id="new-generator-infrastructure">New Generator Infrastructure</h3>
<p>Xtext 2.9 introduced a new generator infrastructure. While new projects created with Xtext and the main languages in Xtext already used this generator, there were still some languages, especially test languages, that still used the deprecated old infrastructure. All languages are now migrated to the new generator.</p>
<h2 id="an-eye-on-quality">An Eye on Quality</h2>
<p>With every release we are working hard on fixing as many bugs as possible. Besides our Bugtrackers Eclipse Bugzilla and GitHub Issues the <a href="https://www.codetrails.com/error-analytics/">Automatic Error Reporting System</a> at Eclipse (AERI) is an incredible valuable source of information for us. It uncovers real problems by real users, and has made error reporting to Eclipse a no-brainer.</p>
<p>As Xtext is a complex framework with an incredible flexibility, much can go wrong. Often these errors indicate ways of usage which we could not predict, or they show problems in custom DSLs. Sometimes they uncover also errors in code that we use. We are actively visiting the reports we get into EARI, with a focus on frequently occuring events and new ones.</p>
<p>The Xtext team is proud that this continuous effort finally pays off. For the first time ever, we had several weeks with no new problem report. And fighting against the existing issues no a clear burn-down curve (see the Incidents Timeline). From all problems reported to AERI, we have just ~12% open, and the most frequent and urgent ones are solved.</p>
<p><img src="/Xtext/images/releasenotes/2_13_aeri_problem_status.png" alt="" /><br />
<img src="/Xtext/images/releasenotes/2_13_aeri_problem_resolution.png" alt="" /><br />
<img src="/Xtext/images/releasenotes/2_13_aeri_incidents_timeline.png" alt="" /></p>
<h2 id="improved-developer-contribution-support">Improved Developer Contribution Support</h2>
<p>Setting up a developer workspace has never been so easy! We have reviewed and updated our Oomph Setup which allows you to create an Eclipse development environment for Xtext with a few clicks. Just get the <a href="https://www.eclipse.org/downloads/">Eclipse Installer</a>, go to Advanced Mode and select the Xtext subprojects you are working with. Let the Installer do the rest of the work while getting a fresh coffee.</p>
<h3 id="execution-environment">Execution Environment</h3>
<p>Minimal requirements are:</p>
<ul>
<li>Java 8</li>
<li>Eclipse Luna</li>
<li>EMF 2.10</li>
<li>Guice 3.0</li>
</ul>
<p>Xtext has been tested also on Eclipse Oxygen.1a and Eclipse Photon M2.</p>
<h2 id="some-words-on-java-9">Some words on Java 9</h2>
<p>Java 9 Support in Eclipse Oxygen 1a and Xtext 2.13 is not yet in a perfect state. To be able to run mwe workflows you need either to remove <code>org.objectweb.asm</code> from the mwe classpath (adapting manifest or build.properties) or install ASM 6.0 from the latest Eclipse Orbit repositories. The Compilation of Xtext projects with Java 9 is terrible slow due to a know <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=526209">bug</a> in JDT. So using Xtext 2.13 and Java 9 in production should be considered thrice and is not recommended. Setting the compiler level to 1.8 mitigates the performance issue slightly.</p>
<h2 id="fixed-issues">Fixed Issues</h2>
<p>As in every release we are eagerly hunting down the bugs, review and integrate lots of contributions. 88 issues, 62 Pull Requests and 60 Bugzilla tickets have made it into this release. For further details please refer to the following lists:</p>
<ul>
<li>
<p><a href="https://github.com/search?utf8=%E2%9C%93&amp;q=is%3Aissue+milestone%3ARelease_2.13+is%3Aclosed+repo%3Aeclipse%2Fxtext+repo%3Aeclipse%2Fxtext-core+repo%3Aeclipse%2Fxtext-lib+repo%3Aeclipse%2Fxtext-extras+repo%3Aeclipse%2Fxtext-eclipse+repo%3Aeclipse%2Fxtext-idea+repo%3Aeclipse%2Fxtext-web+repo%3Aeclipse%2Fxtext-maven+repo%3Aeclipse%2Fxtext-xtend&amp;type=Issues&amp;ref=searchresults">Fixed GitHub issues</a></p>
</li>
<li>
<p><a href="https://github.com/search?utf8=%E2%9C%93&amp;q=is%3Apr+milestone%3ARelease_2.13+is%3Aclosed+repo%3Aeclipse%2Fxtext+repo%3Aeclipse%2Fxtext-core+repo%3Aeclipse%2Fxtext-lib+repo%3Aeclipse%2Fxtext-extras+repo%3Aeclipse%2Fxtext-eclipse+repo%3Aeclipse%2Fxtext-idea+repo%3Aeclipse%2Fxtext-web+repo%3Aeclipse%2Fxtext-maven+repo%3Aeclipse%2Fxtext-xtend&amp;type=Issues&amp;ref=searchresults">Closed Pull Requests</a></p>
</li>
<li>
<p><a href="https://bugs.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&amp;bug_status=VERIFIED&amp;bug_status=CLOSED&amp;classification=Modeling&amp;classification=Tools&amp;columnlist=product%2Ccomponent%2Cassigned_to%2Cbug_status%2Cresolution%2Cshort_desc%2Cchangeddate%2Ckeywords&amp;f0=OP&amp;f1=OP&amp;f3=CP&amp;f4=CP&amp;known_name=Xtext%202.13&amp;list_id=16618269&amp;product=TMF&amp;product=Xtend&amp;query_based_on=Xtext%202.13&amp;query_format=advanced&amp;status_whiteboard=v2.13&amp;status_whiteboard_type=allwordssubstr">Fixed Eclipse Bugzilla tickets</a></p>
</li>
</ul>
</section>
</div>
</div>
</div>
<footer class="site-footer">
<div id="extra">
<div class="inner">
<div class="container">
<div class="row">
<div class="span6">
<h3 class="footer-links-header">Quick Links</h3>
<ul class="footer-links clearfix">
<li><a href="http://www.eclipse.org/legal/privacy.php">Privacy Policy</a></li>
<li><a href="http://www.eclipse.org/legal/termsofuse.php">Terms of Use</a></li>
<li><a href="http://www.eclipse.org/legal/copyright.php">Copyright Agent</a></li>
<li><a href="http://www.eclipse.org/legal/">Legal</a></li>
</ul>
<ul class="footer-links clearfix">
<li><a href="http://www.eclipse.org">Eclipse Home</a></li>
<li><a href="http://marketplace.eclipse.org/">Market Place</a></li>
<li><a href="http://live.eclipse.org/">Eclipse Live</a></li>
<li><a href="http://www.planeteclipse.org/">Eclipse Planet</a></li>
</ul>
</div>
<div class="span6">
<!-- Social Media Links -->
<h3 class="footer-links-header"">Social Media</h3>
<ul class="footer-links clearfix">
<li>
<a href="https://twitter.com/xtext"><img src="/Xtext/images/Twitter-bird-darkgray.png" class="img-responsive" style="margin-right: 5px;height: 1em;" alt="Twitter icon">@xtext on Twitter</a>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
<a href="#" class="scrollup fadeOutRight animated" style="display: none;">ScrollUp</a>
<!-- Le javascript
================================================== -->
<!-- Placed at the end of the document so the pages load faster -->
<script src="/Xtext/js/jquery-1.11.3.min.js"></script>
<script src="/Xtext/js/bootstrap.min.js"></script>
<script src="/Xtext/js/jquery.easing.1.3.js" type="text/javascript"></script>
<script src="/Xtext/js/jquery.prettyPhoto.js" type="text/javascript"></script>
<script src="/Xtext/js/prettify.js" type="text/javascript"></script>
<script src="/Xtext/js/lang-xtend.js" type="text/javascript"></script>
<script src="/Xtext/js/lang-common.js" type="text/javascript"></script>
<script src="/Xtext/js/custom.js" type="text/javascript"></script>
<!--script src="https://apis.google.com/js/platform.js" async defer></script-->
<!--script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push([ '_setAccount', 'UA-2429174-3' ]);
_gaq.push([ '_trackPageview' ]);
(function() {
var ga = document.createElement('script');
ga.type = 'text/javascript';
ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl'
: 'http://www')
+ '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(ga, s);
})();
</script-->
<script src="/Xtext/js/coverflow.min.js" type="text/javascript"></script>
<script>
$(function() {
$('#coverflow').coverflow({
active : 1,
visibleAside: 2,
overlap : 0.5,
scale : 0.9,
angle : 20,
trigger : {
"itemfocus" : true,
"swipe" : true,
"mousewheel" : false
}
});
$('#coverflow :hidden').toggle();
$(window).resize(function() {
$('#coverflow').coverflow();
});
});
</script>
</footer>
</body>
</html>