<!DOCTYPE html>
<html>

  <head>
	<meta charset="UTF-8">
	<title>Xtend - News</title>
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<meta name="description"
		content="Xtend is a statically typed programming language sitting on top of Java.">
	<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="/xtend/images/favicon.png">
	
	<link href="/xtend/css/bootstrap.css" rel="stylesheet" type='text/css'>
	<link href="/xtend/css/bootstrap-responsive.css" rel="stylesheet" type='text/css'>
	<link href="/xtend/css/shield-responsive.css" rel="stylesheet" type='text/css'>
	<link href='/xtend/css/fonts.css' rel='stylesheet' type='text/css'>
	<link href="/xtend/css/prettyPhoto.css" rel="stylesheet" media="screen" type='text/css'>
	<link href="/xtend/css/prettify.css" type="text/css" rel="stylesheet"/>
	<link href="/xtend/css/style.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>

    <!-- Navbar -->
  <div class="navbar navbar-fixed-top"
    style="border-bottom: 1px solid #000;">
    <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="/xtend/index.html"></a>
        <div class="nav-collapse collapse" style="height: 0px;">
          <ul class="nav">
            <li ><a href="/xtend/download.html">Download</a></li>
            <li ><a href="/xtend/documentation/index.html">Documentation</a></li>
            <li ><a href="/xtend/community.html">Community</a></li>
            <li ><a href="http://xtext.org">Xtext</a></li>
            <li ><a href="http://www.eclipse.org">Eclipse.org</a></li>
          </ul>
              <!--div class="btn-group pull-right">
                <div class="g-plusone" data-href="http://www.xtend-lang.org"></div>
              </div-->
        </div>
        <!--/.nav-collapse -->
      </div>
    </div>
  </div>
  <!-- Navbar End -->


    <div id="page">  
	<div class="inner">
		<div class="container clearfix">
			<h1>Latest News</h1>
			
				<div class="post">
					<h2>IntelliJ IDEA Support Released<small>&nbsp;&nbsp;&nbsp;Dec 1, 2015 (Sven Efftinge)</small></h2>
					<p>Finally! The team is proud to release Xtend 2.9.0 and with it the new IDEA plugin. <br />
For more details please have a look at the <a href="/xtend/releasenotes.html#/releasenotes/2015/12/01/version-2-9-0">release notes</a>.</p>

<p><img src="https://www.jetbrains.com/idea/docs/logo_intellij_idea.png" alt="" /></p>

					<br/>
				</div>
			
				<div class="post">
					<h2>Intellij IDEA Plug-in Preview<small>&nbsp;&nbsp;&nbsp;Oct 2, 2015 (Sven Efftinge)</small></h2>
					<p>Today we are pleased to announce, that we have put out a preview (beta version) of the upcoming IntelliJ IDEA plugin.<br />
The repository URL is:</p>

<p><a href="http://download.eclipse.org/modeling/tmf/xtext/idea/2.9.0.beta5/updatePlugins.xml">http://download.eclipse.org/modeling/tmf/xtext/idea/2.9.0.beta5/updatePlugins.xml</a></p>

<p>Note, that it requires <a href="https://www.jetbrains.com/idea/nextversion/">IDEA 15 Preview</a>.<br />
Please try it out and <a href="https://bugs.eclipse.org/bugs/enter_bug.cgi?product=Xtend">file tickets</a> when you hit any bugs!</p>

					<br/>
				</div>
			
				<div class="post">
					<h2>Xtend 2.8.0 Released<small>&nbsp;&nbsp;&nbsp;Mar 11, 2015 (Sven Efftinge)</small></h2>
					<p>The team is proud to release Xtext &amp; Xtend 2.8.0. The new release comes with over 260 bugfixes and enhancements, the runtime performance as well as the tool performance have been improved significantly. Version 2.8.0 is the best Xtext &amp; Xtend ever! :-)</p>

<p>For more details please have a look at the <a href="/xtend/releasenotes.html#/releasenotes/2015/03/11/version-2-8-0">release notes</a>.</p>

					<br/>
				</div>
			
				<div class="post">
					<h2>Xtend 2.7.3 is out!<small>&nbsp;&nbsp;&nbsp;Nov 20, 2014 (Sven Efftinge)</small></h2>
					<p>We have just released version 2.7.3 of Xtend. It comes with some important bugfixes and is recommended for any 2.7.x users.</p>

<p>Here is the <a href="http://goo.gl/bPLxSD">full log</a>.</p>

					<br/>
				</div>
			
				<div class="post">
					<h2>Xtend 2.7.0 Available<small>&nbsp;&nbsp;&nbsp;Sep 3, 2014 (Sebastian Zarnekow)</small></h2>
					<p>We are proud to announce the general availability of Xtend 2.7.0. The release contains again tons of improvements, new features, and bugfixes. Check out the <a href="/xtend/releasenotes.html#/releasenotes/2014/09/02/version-2-7-0">release notes</a> for details.</p>

<p>Special thanks go to all those who contributed to this release: Anton Kosyakov, Dennis Huebner, Holger Schill, Jan Köhnlein, Jan Rosczak, Jörg Reichert, Knut Wannheden, Michael Vorburger, Moritz Eysholdt, Ralf Kretzschmar-Auer, Sebastian Zarnekow, Stefan Oehme, Stéphane Galland, Sven Efftinge, Thomas Fritsch, and Vladimir Piskarev.</p>

<p>We’re also very grateful for the feedback that we get everyday. It helped us to get where we are now.</p>

					<br/>
				</div>
			
				<div class="post">
					<h2>Xtend 2.6.0 Available<small>&nbsp;&nbsp;&nbsp;May 22, 2014 (Sven Efftinge)</small></h2>
					<p>We are happy to announce that Xtend 2.6.0 is now available for download. It includes many bugfixes, performance improvements, and new features. Have a look at the <a href="/xtend/releasenotes.html#/releasenotes/2014/05/21/version-2-6-0">release notes</a> for more.</p>

					<br/>
				</div>
			
				<div class="post">
					<h2>Xtend 2.5.1 Available<small>&nbsp;&nbsp;&nbsp;Feb 4, 2014 (Sven Efftinge)</small></h2>
					<p>We have just released the 2.5.1 bugfix release. It not only comes with lots of bug fixes, but also provides significant performance improvements, especially in the editor.</p>

<p>Here’s the <a href="https://bugs.eclipse.org/bugs/buglist.cgi?list_id=8132880&amp;status_whiteboard=v2.5.1">full list of bugzillas</a>.</p>

					<br/>
				</div>
			
		</div>
  	</div>
</div>
    
    <footer class="site-footer">
  <div id="extra">
    <div class="container inner-footer">
      <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://www.planeteclipse.org/">Eclipse Planet</a></li>
            <li><a href="https://www.eclipse.org/forums/index.php/f/27/">Xtext Forum</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/xtendlang"><img src="/xtend/images/Twitter-bird-darkgray.png" class="img-responsive" style="margin-right: 5px;height: 1em;" alt="Twitter icon">@xtendlang on Twitter</a>
              </li>
            </ul>
          </div>

      </div>
    </div>
  </div>
  <a href="#" class="scrollup fadeOutRight animated" style="display: none;">ScrollUp</a>
  <a href="http://dryicons.com/">Icons by http://dryicons.com</a>
  <!-- Le javascript
      ================================================== -->
  <!-- Placed at the end of the document so the pages load faster -->
  <script src="/xtend/js/jquery-1.7.1.min.js" type="text/javascript"></script>
  <script src="/xtend/js/bootstrap.min.js" type="text/javascript"></script>
  
  <!-- include pretty-print files -->
  <script src="/xtend/js/prettify.js" type="text/javascript" ></script>
  <script src="/xtend/js/lang-xtend.js" type="text/javascript"></script>
  
  <!-- Include the plug-in -->
  <script src="/xtend/js/jquery.prettyPhoto.js" type="text/javascript"></script>
  <script src="/xtend/js/jquery.easing.1.3.js" type="text/javascript"></script>
  <script src="/xtend/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-4' ]);
    _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-->
</footer>

  </body>

</html>
