<!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/09/01/version-2-23-0">Xtext 2.23.0 Release Notes &mdash; Sep 1, 2020</a></p>
						
							<li><p><a href="#/releasenotes/2020/06/02/version-2-22-0">Xtext 2.22.0 Release Notes &mdash; Jun 2, 2020</a></p>
						
							<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>
						
					</ul>
				</div>
				
				  <hr/>
				  <section id="/releasenotes/2020/09/01/version-2-23-0">
				  	<h1>Xtext 2.23.0 Release Notes<small>&nbsp;&nbsp;Sep 1, 2020</small></h1>
				    <br/>
				    <p>Xtext 2.23.0 is a maintenance release.</p>

<h2 id="call-to-action-secure-the-future-maintenance-of-xtext">Call to Action: Secure the future maintenance of Xtext</h2>

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

<h2 id="xtext-xtend-eclipse-and-java-11">Xtext, Xtend, Eclipse, and Java 11</h2>

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

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

<h2 id="ui-testing">UI Testing</h2>

<p>The AbstractCodeMiningTest and the AbstractMultiQuickfixTest base classes have been added to the org.eclipse.xtext.ui.testing package to provide a convenient way to test the code mining and multi-quickfix capabilities. The Xtext example projects and the Xtend code base have been extended by concrete test cases to demonstrate the usage of these framework classes.</p>

<h2 id="junit-5">Junit 5</h2>

<p><code>InjectionExtension</code> now supports the Junit 5 <code>@Nested</code> tests.</p>

<h2 id="core-api">Core API</h2>

<p>A protected method to get at the lazy proxy information of a LazyLinkingResource was added to enable subclasses to work with these.</p>

<h2 id="eclipse-integration">Eclipse Integration</h2>

<h3 id="quickfix-improvements">Quickfix improvements</h3>

<p>Convert a terminal fragment to a terminal rule. It resolves the following errors:</p>

<ul>
  <li>A rule call in the parser rule points to a terminal fragment.</li>
  <li>A hidden token in the grammar definition or a parser rule points to a terminal fragment.</li>
</ul>

<p>Remove illegal hidden token definition. It resolves the following errors:</p>

<ul>
  <li>The hidden-token points to a parser rule, terminal fragment, or an enum rule.</li>
</ul>

<p>Create a new rule definition. It resolves the following errors:</p>

<ul>
  <li>An undefined parser rule is cross-referenced.</li>
  <li>An undefined enum, terminal, or a terminal fragment is cross-referenced.</li>
</ul>

<p>(<a href="https://github.com/eclipse/xtext-eclipse/issues/1448">xtext-eclipse#1448</a>)</p>

<h3 id="eclipse-api">Eclipse API</h3>

<p>The class org.eclipse.xtext.ui.editor.reconciler.TemplatePositionUpdater is now public to be usable for clients.</p>

<h2 id="upgrades">Upgrades</h2>

<ul>
  <li>Eclipse platform dependencies where updated (e.g org.eclipse.core.runtime:3.17.100 to 3.18.0).</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>Nico Prediger (itemis)</li>
  <li>Sebastian Zarnekow (independent)</li>
  <li>Karsten Thoms (Karakun)</li>
  <li>Tamas Miklossy (itemis)</li>
  <li>Arne Deutsch (itemis)</li>
  <li>Jan Koehnlein (TypeFox)</li>
  <li>Neeraj Bhusare (Zafin)</li>
  <li>Titouan Vervack (Sigasi)</li>
  <li>Hendrik Eeckhaut (Sigasi)</li>
  <li>Frank Benoit (ETAS) <img src="https://img.shields.io/badge/-first%20time%20contributor-green.svg" alt="" /></li>
  <li>Aaron R Miller <img src="https://img.shields.io/badge/-first%20time%20contributor-green.svg" alt="" /></li>
  <li>Ivan Nieves <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. 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.23+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.23+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.23&amp;list_id=16618269&amp;product=TMF&amp;product=Xtend&amp;query_based_on=Xtext%202.23&amp;query_format=advanced&amp;status_whiteboard=v2.23&amp;status_whiteboard_type=allwordssubstr">Fixed Eclipse Bugzilla tickets</a></p>
  </li>
</ul>

				  </section>
				
				  <hr/>
				  <section id="/releasenotes/2020/06/02/version-2-22-0">
				  	<h1>Xtext 2.22.0 Release Notes<small>&nbsp;&nbsp;Jun 2, 2020</small></h1>
				    <br/>
				    <p>Xtext 2.22.0 is mainly a maintenance release.</p>

<h2 id="call-to-action-secure-the-future-maintenance-of-xtext">Call to Action: Secure the future maintenance of Xtext</h2>

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

<h2 id="documentation">Documentation</h2>

<p>The <a href="https://www.eclipse.org/Xtext/community.html">Xtext community website</a> and the <a href="https://www.eclipse.org/Xtext/documentation/index.html">Xtext documentation website</a> have been updated. New Xtext-based projects have been added, some editor features and the Unit testing / UI testing capabilities have been documented and the embedded code snippets have been updated as well.</p>

<p>We further enhanced the <a href="https://github.com/eclipse/xtext/tree/master/dev-doc">Xtext Developer Documentation</a> to enable the community to easily contribute to Xtext.</p>

<h2 id="code-generation-improvements">Code Generation improvements</h2>
<p>This release contains some fixes to improve the generated code in the <code>src-gen</code> folders. The following files are affected:</p>

<ul>
  <li><code>Internal&lt;dslName&gt;.g</code> file in the <strong>runtime</strong> module - <a href="https://github.com/eclipse/xtext-core/issues/1467">xtext-core#1467</a></li>
  <li><code>Internal&lt;dslName&gt;Parser.java</code> file in the <strong>runtime</strong> module - <a href="https://github.com/eclipse/xtext-core/issues/1467">xtext-core#1467</a></li>
  <li><code>&lt;dslName&gt;GrammarAccess.java</code> file in the <strong>runtime</strong> module - <a href="https://github.com/eclipse/xtext-core/issues/269">xtext-core#269</a></li>
  <li><code>Partial&lt;dslName&gt;ContentAssistParser.java</code> file in the <strong>ide</strong> module - <a href="https://github.com/eclipse/xtext-core/issues/1418">xtext-core#1418</a></li>
</ul>

<p>We encourage you to regenerate your languages with the latest Xtext version. Usually you do not recognize any changes, unless you check-in the <code>src-gen</code> folders in a version control system.</p>

<h2 id="eclipse-integration">Eclipse Integration</h2>

<h2 id="upgrades">Upgrades</h2>

<ul>
  <li>Xtext 2.22 requires ASM 8.0.1 (updated from 7.2.0).</li>
  <li>Maven Tycho was updated to version 1.7.0.</li>
  <li>MWE(2) was updated to 2.11.3/1.5.3.</li>
</ul>

<h2 id="removals">Removals</h2>

<ul>
  <li>Xtext no longer has a direct dependency to ICU4J. If you use ICU4J in your codebase you should also consider to get rid of this dependencies as it will no longer be supported by Eclipse (Platform).</li>
  <li>As announced in the 2.21 Release the deprecated API in the LSP area was removed.</li>
  <li>We also removed the outdated leftovers of IDEA Support in <code>org.eclipse.xtext.xtext.generator</code>.</li>
</ul>

<h2 id="deprecations">Deprecations</h2>

<ul>
  <li><code>IXtext2EcorePostProcessor</code> &amp; <code>XtendXtext2EcorePostProcessor</code> &amp; <code>ProjectAwareXtendXtext2EcorePostProcessor</code> were deprecated as they depend on old Xpand/Xtend(1). As already announced in the <a href="2020-03-03-version-2-21-0.md">2.21 release notes</a> you should avoid depending on the old Xpand based <code>org.eclipse.xtext.generator</code> as well as on Xtend(1) based postprocessing. So if you have an <code>.ext</code> file right next to your <code>.xtext</code> file or subclass the interface it’s about time to switch to a manually maintained Ecore model.</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>Tamas Miklossy (itemis)</li>
  <li>Nico Prediger (itemis)</li>
  <li>Sebastian Zarnekow (independent)</li>
  <li>Karsten Thoms (Karakun)</li>
  <li>Neeraj Bhusare (Zafin)</li>
  <li>Arne Deutsch (itemis)</li>
  <li>Jan Koehnlein (TypeFox)</li>
  <li>George Suaridze (1C LLC) <img src="https://img.shields.io/badge/-first%20time%20contributor-green.svg" alt="" /></li>
  <li>Mathias Rieder (Bachmann)</li>
  <li>Mikael Barbero (Eclipse Foundation)</li>
  <li>Titouan Vervack (Sigasi)</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. 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.22+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.22+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.22&amp;list_id=16618269&amp;product=TMF&amp;product=Xtend&amp;query_based_on=Xtext%202.22&amp;query_format=advanced&amp;status_whiteboard=v2.22&amp;status_whiteboard_type=allwordssubstr">Fixed Eclipse Bugzilla tickets</a></p>
  </li>
</ul>

				  </section>
				
				  <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 Leuthä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>
				
			
		</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>
