Scala IDE 4.0.0 on Scala 2.11.6, with Scala 2.10.5<p>The latest release, Scala IDE 4.0.0, has been re-build on and re-packaged with the latest Scala releases: 2.11.6 and 2.10.5.</p>
<p>It contains the improvements provided by the new version of Scala. For more details, check the Scala release notes: <a href="http://www.scala-lang.org/news/2.10.5">2.10.5</a> &amp; <a href="http://www.scala-lang.org/news/2.11.6">2.11.6</a>.</p>
<p>As usual, this build is available as an <a href="/download/sdk.html">all-in-one bundle</a> and through the <a href="/download/current.html">update sites</a>, for new installations.</p>
<p>Existing installations can be updated using the <code>Help -&gt; Check For Updates</code> feature.</p>
2015-03-05 00:00:00 +0000/blog/rebuild-4.0.0-vfinal-on-scala-2.11.6.html
Scala IDE 4.0.0 on Scala 2.11.5<p>The latest release, Scala IDE 4.0.0, has been re-build on and re-packaged with the latest release of Scala: 2.11.5.</p>
<p>It contains the improvements provided by the new version of Scala. For more details, check the <a href="http://www.scala-lang.org/news/2.11.5">Scala release notes</a>.</p>
<p>As usual, this build is available as an <a href="/download/sdk.html">all-in-one bundle</a> and through the <a href="/download/current.html">update sites</a>, for new installations.</p>
<p>Existing installations can be updated using the <code>Help -&gt; Check For Updates</code> feature.</p>
2015-01-19 00:00:00 +0000/blog/rebuild-4.0.0-vfinal-on-scala-2.11.5.html
Scala IDE 4.0-final is out!<p>After almost one and a half years of development, the next major release of the Scala IDE for Eclipse is out! This is the biggest release so far, packed with new features and improvements, so make sure to try it out right away by checking out our <a href="/download/current.html">download page</a>.</p>
<h2 id="new-and-noteworthy">New and noteworthy</h2>
<h3 id="multiple-scala-versions-support">Multiple Scala versions support</h3>
<p>This was, without any doubt, the biggest shortcoming of the Scala IDE: support for only one version of Scala in a given installation. Finally, this is no longer the case: Scala IDE can now handle projects with different Scala versions in the same workspace. By default, you get two predefined <em>Scala Installations</em>, one for 2.11 and one for 2.10. You can add more and assign any of them to your project. More details can be found <a href="http://scala-ide.org/blog/scala-installations.html">here</a>.</p>
<h3 id="scaladoc">ScalaDoc</h3>
<p>See beautifully rendered ScalaDoc right in your favorite IDE! ScalaDoc is currently available in code completion and hover windows, and fully implements the ScalaDoc specification: inherited documentation, macro support and variable substitution. Try it out on the most complex APIs (like Scala reflection) and see how things become so much easier!</p>
<h3 id="save-actions">Save Actions</h3>
<p>The Scala editor now has specific actions that can be performed on every save: <em>Format code</em>, <em>Remove trailing whitespace</em> or <em>Add newline at the end of the file</em>.</p>
<h3 id="new-file-wizard">New File Wizard</h3>
<p>In addition to the existing Scala wizards you can now use a simple <a href="http://scala-ide.org/docs/4.0.x/features/wizards/index.html">New File</a> wizard that can use user-configured templates for the contents. Quickly create a trait or a class, and you can even change your mind in the middle: no need to start a new wizard.</p>
<h3 id="more-efficient-resource-management">More efficient resource management</h3>
<p>The Scala presentation compiler is a powerful tool, but comes with a large memory footprint. In this release we completely reworked the way <em>errors as you type</em> are handled, and buffer changes until the user stops typing or invokes a semantic action, such as code completion. At that point we ship all changes to the compiler, leading to vastly improved allocation rates while typing.</p>
<p>In addition to that, unused compilers are shutdown after a configurable amount of time. This should bring down memory consumption in workspaces with lots of projects.</p>
<h3 id="editor-improvements">Editor improvements</h3>
<p>Many changes went into making the Scala editor more convenient. From better handling of spaces and TABs, to <a href="http://scala-ide.org/docs/4.0.x/features/typingviewing/code-completion.html">smarter code completion</a> patterns, auto-indentation and template handling or <a href="http://scala-ide.org/docs/4.0.x/features/typingviewing/indent-guide.html">indentation guides</a>.</p>
<p>Hovers have been revamped, and now you can change the font and rendering of anything displayed in the Scala hover window using CSS or the usual preferences window. Debug hovers now let you inspect a variable when debugging, just like the <em>Variables</em> view does.</p>
<p>A few more <a href="http://scala-ide.org/docs/4.0.x/features/typingviewing/quick-fixes.html">quickfixes</a>, like <em>Implement Abstract Member</em>, <em>Create Method</em> or <em>Add Explicit Type</em> make coding even easier.</p>
<h3 id="scala-color-theme">Scala color theme</h3>
<p>The Scala IDE packaged download now comes with better defaults (UTF-8, auto-refresh, building in the background), and with a special edition of <a href="http://eclipsecolorthemes.org/?view=theme&amp;id=31291">Solarized Light</a>, better suited for Scala code. Make sure to try it out by selecting it from <strong>General -&gt; Appearance -&gt; Eclipse Color Theme</strong>.</p>
<p><a href="http://scala-ide.org/resources/images/blog/scala-color-theme.png">
<img src="http://scala-ide.org/resources/images/blog/scala-color-theme.png" align="center" />
</a></p>
<h2 id="stats">Stats</h2>
<p>As for every major release, we’ll take a look at some statistics from our bug database.</p>
<ul>
<li>519 tickets closed</li>
<li>322 fixed tickets (the difference being due to invalid or duplicate tickets)</li>
<li>the median time for a bug being open is 49 days. This large interval is due to our cleaning up the bug database and closing some really old and outdated tickets. If we consider only tickets created <em>after</em> the 3.0 release, the median time goes down to 16 days</li>
</ul>
<pre>
Tickets fixed:
78 Simon Schäfer
61 Iulian Dragos
40 (unassigned)
33 Mirco Dotta
29 Mads Hartmann Jensen
26 François Garillot
17 Luc Bourlier
15 Mirko Stocker
5 Donny Nadolny
3 nicolas.scarcella
2 danstryder
2 Grzegorz Kossakowski
2 Jerzy.Muller
2 Trond Bjerkestrand
1 Anonymous
1 David Bernard
1 Hubert Plociniczak
1 Michał Pociecha
1 odersky
1 pelotom
1 Pouria Mellati
</pre>
<p>The large number of unassigned tickets can be explained by having tickets that stand for bugs in upstream projects, like the presentation compiler or scala-refactoring. In other cases the person that fixed the bug stopped watching the Assembla repository, so we couldn’t assign the ticket to them anymore (thanks Assembla!). In other cases we simply couldn’t identify who fixed the problem: typically an old bug that was fixed as a side-effect of fixing another issue. </p>
<p>Lastly, we looked at the distribution of the day of the week when a ticket was fixed or created. It seems that Monday is the least productive day (not counting weeekends), while tickets are created rather evenly throughout the week, with a significant drop during weekends.</p>
<p><a href="http://scala-ide.org/resources/images/blog/tickets-closed-created.png">
<img src="http://scala-ide.org/resources/images/blog/tickets-closed-created.png" width="100%" />
</a></p>
<h2 id="thanks">Thanks</h2>
<p>This release packs an incredible number of features, and includes the work of many Scala enthusiasts. We’d like to thank every one of them for their tremendous support.</p>
<pre>
Commits:
371 Simon Schaefer
187 Iulian Dragos
162 François Garillot
92 Luc Bourlier
90 Mirco Dotta
15 Daniel Chia
12 Donny Nadolny
8 Adriaan Moors
8 Michał Pociecha
5 François Garillot
4 Jerzy Müller
4 Grzegorz Kossakowski
4 Jedd Haberstro
4 Lukas Wegmann
4 VladimirNik
3 Trond Bjerkestrand
2 Alden Torres
2 Tom Crockett
2 nscarcella
2 Pouria Mellati
2 Jason Zaugg
1 Robin Green
1 Emac
1 Jerzy Muller
1 Rafał Krzewski
1 Matthias Langer
1 Mirco Dotta
1 Eric Molitor
1 Mirko Stocker
1 Eugene Vigdorchik
</pre>
2014-12-15 00:00:00 +0000/blog/release-notes-4.0.0-vfinal.html
Scala IDE 4.0-RC4 is out!<p>We just released Scala IDE 4.0.0 RC4, fixing a few regressions before the final build. The full <a href="/blog/release-notes-4.0.0-RC1.html">release notes</a> for more information about new and noteworthy features in 4.0, and the <a href="/docs/changelog.html">changelog</a> for all the details.</p>
<p>We fixed two bugs
- hyperlinking crashes causing spurious errors
- compiler crashes while typing might sometimes lead to error dialogs popping up</p>
<p>You can upgrade your installation (or download a pre-packaged IDE) from the usual <a href="/download/milestone.html">download page</a>.</p>
2014-11-30 00:00:00 +0000/blog/release-notes-4.0.0-RC2.html
Scala IDE 4.0-RC2 is out!<p>We just released Scala IDE 4.0.0 RC2, fixing a regression that caused spurious errors during builds <a href="https://scala-ide-portfolio.assembla.com/spaces/scala-ide/tickets/1002319">#1002319</a>. The full <a href="/blog/release-notes-4.0.0-RC1.html">release notes</a> for more information about new and noteworthy features in 4.0, and the <a href="/docs/changelog.html">changelog</a> for all the details.</p>
<p>You can upgrade your installation (or download a pre-packaged IDE) from the usual <a href="/download/milestone.html">download page</a>.</p>
2014-10-28 00:00:00 +0000/blog/release-notes-4.0.0-RC2.html
Scala IDE 4.0-RC1 is out!<p>After almost one and a half years of development, the next major release of the Scala IDE for Eclipse is almost out! This is the biggest release so far, packed with new features and improvements, so make sure to try it out right away by checking out our <a href="/download/milestone.html">download page</a>.</p>
<p>This is the first release candidate, and if no blockers are found during the next week or so, it will become the final release. We’ll probably try to synchronize the release with the upcoming Scala 2.11.4 release.</p>
<h2 id="new-and-noteworthy">New and noteworthy</h2>
<h3 id="multiple-scala-versions-support">Multiple Scala versions support</h3>
<p>This was, without any doubt, the biggest shortcoming of the Scala IDE: support for only one version of Scala in a given installation. Finally, this is no longer the case: Scala IDE can now handle projects with different Scala versions in the same workspace. By default, you get two predefined <em>Scala Installations</em>, one for 2.11 and one for 2.10. You can add more and assign any of them to your project. More details can be found <a href="http://scala-ide.org/blog/scala-installations.html">here</a>.</p>
<h3 id="scaladoc">ScalaDoc</h3>
<p>See beautifully rendered ScalaDoc right in your favorite IDE! ScalaDoc is currently available in code completion and hover windows, and fully implements the ScalaDoc specification: inherited documentation, macro support and variable substitution. Try it out on the most complex APIs (like Scala reflection) and see how things become so much easier!</p>
<h3 id="save-actions">Save Actions</h3>
<p>The Scala editor now has specific actions that can be performed on every save: <em>Format code</em>, <em>Remove trailing whitespace</em> or <em>Add newline at the end of the file</em>.</p>
<h3 id="new-file-wizard">New File Wizard</h3>
<p>In addition to the existing Scala wizards you can now use a simple <a href="http://scala-ide.org/docs/4.0.x/features/wizards/index.html">New File</a> wizard that can use user-configured templates for the contents. Quickly create a trait or a class, and you can even change your mind in the middle: no need to start a new wizard.</p>
<h3 id="more-efficient-resource-management">More efficient resource management</h3>
<p>The Scala presentation compiler is a powerful tool, but comes with a large memory footprint. In this release we completely reworked the way <em>errors as you type</em> are handled, and buffer changes until the user stops typing or invokes a semantic action, such as code completion. At that point we ship all changes to the compiler, leading to vastly improved allocation rates while typing.</p>
<p>In addition to that, unused compilers are shutdown after a configurable amount of time. This should bring down memory consumption in workspaces with lots of projects.</p>
<h3 id="editor-improvements">Editor improvements</h3>
<p>Many changes went into making the Scala editor more convenient. From better handling of spaces and TABs, to <a href="http://scala-ide.org/docs/4.0.x/features/typingviewing/code-completion.html">smarter code completion</a> patterns, auto-indentation and template handling or <a href="http://scala-ide.org/docs/4.0.x/features/typingviewing/indent-guide.html">indentation guides</a>.</p>
<p>Hovers have been revamped, and now you can change the font and rendering of anything displayed in the Scala hover window using CSS or the usual preferences window. Debug hovers now let you inspect a variable when debugging, just like the <em>Variables</em> view does.</p>
<p>A few more <a href="http://scala-ide.org/docs/4.0.x/features/typingviewing/quick-fixes.html">quickfixes</a>, like <em>Implement Abstract Member</em>, <em>Create Method</em> or <em>Add Explicit Type</em> make coding even easier.</p>
<h3 id="scala-color-theme">Scala color theme</h3>
<p>The Scala IDE packaged download now comes with better defaults (UTF-8, auto-refresh, building in the background), and with a special edition of <a href="http://eclipsecolorthemes.org/?view=theme&amp;id=31291">Solarized Light</a>, better suited for Scala code. Make sure to try it out by selecting it from <strong>General -&gt; Appearance -&gt; Eclipse Color Theme</strong>.</p>
<p><a href="http://scala-ide.org/resources/images/blog/scala-color-theme.png">
<img src="http://scala-ide.org/resources/images/blog/scala-color-theme.png" align="center" />
</a></p>
<h2 id="stats">Stats</h2>
<p>As for every major release, we’ll take a look at some statistics from our bug database.</p>
<ul>
<li>519 tickets closed</li>
<li>322 fixed tickets (the difference being due to invalid or duplicate tickets)</li>
<li>the median time for a bug being open is 49 days. This large interval is due to our cleaning up the bug database and closing some really old and outdated tickets. If we consider only tickets created <em>after</em> the 3.0 release, the median time goes down to 16 days</li>
</ul>
<pre>
Tickets fixed:
78 Simon Schäfer
61 Iulian Dragos
40 (unassigned)
33 Mirco Dotta
29 Mads Hartmann Jensen
26 François Garillot
17 Luc Bourlier
15 Mirko Stocker
5 Donny Nadolny
3 nicolas.scarcella
2 danstryder
2 Grzegorz Kossakowski
2 Jerzy.Muller
2 Trond Bjerkestrand
1 Anonymous
1 David Bernard
1 Hubert Plociniczak
1 Michał Pociecha
1 odersky
1 pelotom
1 Pouria Mellati
</pre>
<p>The large number of unassigned tickets can be explained by having tickets that stand for bugs in upstream projects, like the presentation compiler or scala-refactoring. In other cases the person that fixed the bug stopped watching the Assembla repository, so we couldn’t assign the ticket to them anymore (thanks Assembla!). In other cases we simply couldn’t identify who fixed the problem: typically an old bug that was fixed as a side-effect of fixing another issue. </p>
<p>Lastly, we looked at the distribution of the day of the week when a ticket was fixed or created. It seems that Monday is the least productive day (not counting weeekends), while tickets are created rather evenly throughout the week, with a significant drop during weekends.</p>
<p><a href="http://scala-ide.org/resources/images/blog/tickets-closed-created.png">
<img src="http://scala-ide.org/resources/images/blog/tickets-closed-created.png" width="100%" />
</a></p>
<h2 id="thanks">Thanks</h2>
<p>This release packs an incredible number of features, and includes the work of many Scala enthusiasts. We’d like to thank every one of them for their tremendous support.</p>
<pre>
Commits:
371 Simon Schaefer
187 Iulian Dragos
162 François Garillot
92 Luc Bourlier
90 Mirco Dotta
15 Daniel Chia
12 Donny Nadolny
8 Adriaan Moors
8 Michał Pociecha
5 François Garillot
4 Jerzy Müller
4 Grzegorz Kossakowski
4 Jedd Haberstro
4 Luegg
4 VladimirNik
3 Trond Bjerkestrand
2 Tom Crockett
2 nscarcella
2 Pouria Mellati
2 Alden Torres
1 Emac
1 Jerzy Muller
1 Eugene Vigdorchik
1 Jason Zaugg
1 Eric Molitor
1 Mirko Stocker
1 Rafał Krzewski
1 Robin Green
</pre>
2014-10-17 00:00:00 +0000/blog/release-notes-4.0.0-RC1.html
Development news - Towards Luna-M4 !<p>After more than six weeks since our latest milestone release, we wanted to give you an update on the upcoming Scala-IDE M4 release, and on how things stand in the current development.</p>
<h1 id="better-scala-installation-support-">Better Scala Installation support !</h1>
<p>First of all, we want to thank every one of you that helped us test <a href="/blog/scala-installations.html">multiple Scala version support</a>, dubbed in-house as “Scala Installations support”. We’re especially grateful to Scott Carey, Michał Pociecha, Grzegorz Kossakowski, and Benyi Wang for their comments.</p>
<p>Thanks to your requests and bug reports, some features related to Scala installations have already hit the latest nigtly. You can get them at the usual <a href="/download/nightly.html">nightly update-site</a>.</p>
<ul>
<li>
<p>We have improved the persistence of your settings, and your project’s choice of Scala Installation, closing a bug in the process. We hope all issues have been found and fixed, but just in case some of you may face some complex interaction we have added detailed logging on the storage of preferences . So, if you think you have seen some of those issues, we’d <em>really</em> like to see your logs. Here’s how to <a href="/docs/current-user-doc/features/logging/index.html">activate debug logging</a>.</p>
</li>
<li>
<p>Many of you have multiple projects which version they want to switch quickly, without having to open project preferences for each project. So, choosing a Scala Installation is now a multi-select action: just choose your target projects, right-click, go to the Scala menu, and choose ‘Set the Scala Installation’, as below.</p>
</li>
</ul>
<p><a href="http://scala-ide.org/resources/images/xsource-screenshots/new-support/multiselect-action.png">
<img src="http://scala-ide.org/resources/images/xsource-screenshots/new-support/multiselect-action.png" width="100%" alt="The new mult-select action for setting a Scala Installation." />
</a></p>
<ul>
<li>
<p>Some of you wanted to import their projects from sbt-eclipse, using the <a href="https://github.com/typesafehub/sbteclipse/wiki/Using-sbteclipse#withbundledscalacontainers"><code>withBundledScalaContainers</code></a> option (here’s <a href="/blog/Xsource-compatibility.html#using-sbteclipse">more</a> on how to do this). But Scala-IDE required additional configuration after importing a project from the sbt-eclipse generated files. This is no longer needed : Scala-IDE figures out wich version of scala your project is using from its classpath, and configures itself correctly based on that.</p>
</li>
<li>
<p>Finally, we have noticed an <a href="https://github.com/sonatype/m2eclipse-scala/issues/30">issue</a> in the interaction of this mutli-version support with <a href="https://github.com/sonatype/m2eclipse-scala/">m2eclipse-scala</a>, and we are working actively with <a href="https://github.com/davidB">David Bernard</a> to solve it quickly.</p>
</li>
</ul>
<h1 id="a-new-committer-">A New Committer !</h1>
<p><a href="https://github.com/sschaef">Simon Schäffer</a> has made many fantastic contributions to Scala-IDE over more than two years, most recently leading a <a href="https://www.google-melange.com/gsoc/proposal/public/google/gsoc2014/sschaef/5629499534213120">great</a> Google Summer of Code project. Some of our users have thanked him for “saving their eyes”. He’s such a force behind the improvement of the Scala-IDE that we’ve given him well-deserved commit rights on the repository.</p>
<h1 id="directions-and-upcoming-features">Directions and upcoming features</h1>
<p>But Scala Installations are just a small part of what we are working on. Of course it would be foolish to promiss anything or announce any deadlines. But here are some next steps we are hopeful about:</p>
<ul>
<li>
<p>We are hard at work on a long-open enhancement request: displaying Scaladoc on hover and completion. This is work that has its origin in an old pull-request of <a href="https://github.com/vigdorchik">Eugene Vigdorchik</a> (which we are tremendously grateful for).</p>
</li>
<li>
<p>We want to provide plugin developers with an API. While the developers in our <a href="https://github.com/scala-ide/ecosystem">ecosystem</a> have always been tremendously reactive, we think they would like not having to recompile their plugins with every one of our releases, and working with code they can depend on.</p>
</li>
<li>
<p>We have lately seen tremendous work from Simon on a new file wizard, and the look of hovers. He has pursued in this direction of a cleaner, more extensible (and prettier) IDE, and we have a couple of very impressive contributions under review.</p>
</li>
</ul>
<h1 id="get-involved-">Get Involved !</h1>
<p>As we strive towards our Luna release, your tests and comments are more useful than ever, so, chime in on <a href="https://groups.google.com/forum/#!forum/scala-ide-user">the mailing list</a>, report issues on our <a href="https://www.assembla.com/spaces/scala-ide/tickets">bug tracker</a>, and let us know what you think on <a href="https://twitter.com/ScalaIde">twitter</a> !</p>
2014-09-17 00:00:00 +0000/blog/development-news.html
Scala IDE 4.0.0-M3<h1 id="the-third-milestone-for-scala-ide-400">The third milestone for Scala-IDE 4.0.0</h1>
<p>We are very happy to announce the third milestone release of
Scala-IDE 4.0.0 ! We are making significant steps towards our
Lithium release, with cool features along the way.</p>
<p>Don’t forget those milestone releases are there for <em>you</em>, users, to help
work out the possible kinks. So, try them out, and let us know what you
think ! You’ll find out how to do that on our
<a href="http://scala-ide.org/docs/community.html">community page</a>.</p>
<p>There are two major new features in this milestone:</p>
<ul>
<li>
<p>redesigned support to work with a “hot-swappable” Scala version. The IDE
now lets you not only choose which Scala version you want building your
projects, but it also lets you plug in your own custom Scala
Installation. This integrates with the 2.10/2.11 Scala version support,
so that a single version of the IDE lets you work on both Scala 2.10 and
Scala 2.11 projects.</p>
<p>We have written <a href="http://scala-ide.org/blog/scala-installations.html">a blog post</a> detailing this feature.</p>
</li>
<li>
<p>a New Scala File Wizard! We have a new interface for creating new Scala
Classes, Traits, … It’s minimalistic, and removes everything that’s
not needed for hacking in Scala. It’s also more extensible. Have a look
at <a href="http://scala-ide.org/blog/new-file-wizard.html">the blog post</a> to learn about it. We think you’ll like it !</p>
</li>
</ul>
<p>Also, note have an <a href="http://scala-ide.org/docs/4.0.x/index.html">updated documentation section</a> for the upcoming 4.0.0.</p>
<h1 id="other-highlights">Other Highlights</h1>
<p>This release fixes many bugs, and we invite you to read the
<a href="http://scala-ide.org/docs/changelog.html#m3-2014-07-25">Changelog</a> for a full description. Here are some interesting
excerpts:</p>
<ul>
<li>a redesigned Bug Report Dialog</li>
<li>new extraction refactorings, such as Extract Value, Local, Method,
Parameter, Closure, …</li>
<li>the IDE now shows a value on variable hover in suspended Debug mode</li>
<li>a fix for auto-breaking comment lines</li>
</ul>
<h1 id="thanks">Thanks</h1>
<p>We had great contributions from our users these last few months! Massive
thanks to Simon Schäfer (<a href="https://github.com/sschaef">@sschaef</a>) for his
contributions, and to Pouria Mellati
(<a href="https://github.com/pmellati">@pmellati</a>) and Lukas Wegmann
(<a href="https://github.com/Luegg">@Luegg</a>) for their pull requests!</p>
<h1 id="installation">Installation</h1>
<p>This release is available for both Eclipse Juno (4.2) and Kepler
(4.3), so head down to the <a href="/download/milestone.html">download page</a> or just use the following update site:</p>
<p><a href="http://download.scala-ide.org/sdk/lithium/e38/scala211/dev/site/">http://download.scala-ide.org/sdk/lithium/e38/scala211/dev/site/</a></p>
<p>We also have experimental support for Eclipse Luna, and you can try it out from the following update site:</p>
<p><a href="http://download.scala-ide.org/sdk/lithium/e44/scala211/dev/site/">http://download.scala-ide.org/sdk/lithium/e44/scala211/dev/site/</a></p>
<p>Happy Scala coding!</p>
2014-07-24 00:00:00 +0000/blog/release-notes-4.0.0-M3.html
New Scala Wizard<p>With Scala IDE 4.0.0-M3 a new wizard finds its way into the codebase. In contrast to the existing wizards, which are based on the concept of the Java wizards, this new wizard goes a completely different way.</p>
<p>The design goal was to provide less configuration options in order to be simpler and easier to use for everyone. The following screenshot depicts this design goal best:</p>
<p><img src="http://scala-ide.org/resources/images/new-file-wizard.png" alt="New Scala Wizard" /></p>
<p>You can reach this new wizard by pressing <code>Ctrl+3</code> to open the quick access search field, where it can be found under the name “New Scala File”:</p>
<p><a href="http://scala-ide.org/resources/images/search-field-scala-file-entry.png">
<img src="http://scala-ide.org/resources/images/search-field-scala-file-entry.png" width="100%" alt="Quick Access Search Field" />
</a></p>
<p>Another way to navigate to reach the wizard is to navigate to the “New” menu of Eclipse and select “New Scala File”:</p>
<p><img src="http://scala-ide.org/resources/images/new-menu-scala-file-entry.png" alt="New Menu Scala File Entry" /></p>
<p>Please note that your Eclipse may cache the wizard entries in the “New” menu. Therefore, if you can’t see the entry “New Scala File” you have to navigate to <code>Windows → Customize Perspective → Shortcut → New → Scala Wizards</code> and select the option “New Scala File”.</p>
<h1 id="why-the-change">Why the change?</h1>
<p>The former functionality that allowed you to select a lot of different options to configure the contents of a created file was replaced with basically only three options: The kind of a file, the project and source folder where the file should be put into and its fully qualified name.</p>
<p>This more focused approach shall allow new users to easily understand how to create the file they want. For experienced users it means that the wizards sends them as fast as possible back to the editor, where they can do everything what the old wizards could do but even more.</p>
<p>One further special highlight of this wizard is that its new underlying architecture allows other developers, who want to extend the Scala IDE, to easily build upon it. This basically means that they can create their own file kinds and templates which can be used by the wizard. This makes it easier for Scala IDE users to startup with a specific library or framework once they have third party extensions installed.</p>
<p>We believe that this wizard is easier to understand and to use for everyone and we would like to hear if you agree with that. Whether you like the new wizard or not, tell us your opinion - here on the blog or on the <a href="https://groups.google.com/forum/#!forum/scala-ide-user">mailing lists</a> - we need your feedback to improve the IDE further.</p>
<p>The old wizards do still coexist with the new one to make it easy for you to compare them or to fall back to them if the new one still contains a bug. However, the plan is to remove them with the final release of the upcoming Scala IDE 4, which means that you should definitely speak up if you find a bug or miss some behavior of the old wizards.</p>
<p>You can find a more detailed user guide for the new wizard in our <a href="http://scala-ide.org/docs/4.0.x/features/wizards/index.html">user docs</a> and if you are interested in the new developer API you should take a look at our <a href="http://scala-ide.org/docs/dev/ide-extensions/wizards/index.html">dev docs</a>.</p>
2014-07-17 00:00:00 +0000/blog/new-file-wizard.html
Multiple version support in the IDE - Scala Installations<p>As you probably know, these last few weeks we have been working
on multi-version support in the Scala IDE. We had previous blog
posts describing things here and there, but only the latest
nightly, Scala-IDE 4.0.0-M3, presents the full set of
features. This is the latest update on what you are getting
with multi-version suppport in there.</p>
<h1 id="why-multiple-versions-a-idsec-1a">Why multiple versions ?<a id="sec-1"></a></h1>
<p>The Scala IDE has a strong dependency on Scala : it comes deeply
embedded with an interactive version of the compiler, called the
<a href="http://scala-ide.org/docs/dev/architecture/presentation-compiler.html#scalapresentationcompiler">Presentation Compiler</a>, that it uses to do all the interactive
work on your code: completions, errors as you type, semantic
highlighting, etc.<a id="fnr.1" href="#fn.1">¹</a></p>
<p>So far the Scala IDE was therefore built <em>on</em> and <em>for</em> a
specific version of the Scala Compiler. For editing 2.10
projects, you had to have a version of the IDE compiled for
Scala 2.10. For 2.11, you had to have a version compiled for
Scala 2.11. This led to users working with both 2.11 and 2.10
projects having two installations of Eclipse, with different
flavors of the Scala IDE plugin installed.</p>
<p>This also constrained us developers: since most of the IDE’s
source code had to pass compilation with both 2.10 and 2.11, it
was impossible to remove some obsolete things, led to some
regression headaches, and made use maintain two parallel branches
for the source.</p>
<p>With this multi-version support feature, we want to use a single
version of the IDE, built on the latest version of Scala, to
handle both “modern” projects built using 2.11, as well as “legacy”
projects built with 2.10.</p>
<p>It will also let us retire the 2.10 branch of the IDE builds,
focusing the efforts of our small team on one branch, and
letting us deliver features to our users faster.</p>
<h1 id="scala-multi-version-supporta-idsec-2a">Scala Multi Version Support<a id="sec-2"></a></h1>
<p>The gist of it is the following: the milestone’s IDE is a 2.11
build. The Presentation Compiler it IDE ships with is a part of
Scala 2.11. But its typechecker can run with a specific option,
<code>-Xsource:2.10</code> that lets it work on 2.10 source files. That’s now
a regular <a href="http://www.scala-lang.org/news/2.11.1">scala compiler</a> option, by the way — though please note
it only affects up to the typechecker phase.<a id="fnr.2" href="#fn.2">²</a></p>
<p>So, if you are working on a 2.11 project, nothing changed — this
is business as usual. If you are working on a 2.10 code base, a
few tweaks and settings may be needed, though the IDE will try
to help you.</p>
<p>All you may need to do, then, is to tell the IDE how to deal with
your Scala 2.10 project. For that you need a few things:</p>
<ul>
<li>a setting of compiler options</li>
<li>a consistent classpath</li>
<li>in particular, a compatible Scala classpath container</li>
<li>and optionally, a custom Scala Installation</li>
</ul>
<p>All of this is brought to you by a single toggle, that we will
deal with first, so that those of you in a hurry can start
hacking.</p>
<h1 id="source-levela-idsec-3a">Source Level<a id="sec-3"></a></h1>
<p>To configure a new, fresh project for 2.10 compatibility, you have to
go to project-specific settings: the platform’s default is still
to consider that projects are based on Scala 2.11<a id="fnr.3" href="#fn.3">³</a></p>
<p>Here’s what you’ll see:</p>
<p><a href="http://scala-ide.org/resources/images/xsource-screenshots/installations/compiler-before.png">
<img src="http://scala-ide.org/resources/images/xsource-screenshots/installations/compiler-before.png" width="100%" alt="Unmodified compiler settings view" />
</a></p>
<p>You can now toggle project-specific settings and look at the
drop-down just below it. It displays a list of versioned Scala
installations that should include (at least) both a 2.10 version
and a 2.11 version. Some are labeled as <em>dynamic</em>, others as
<em>fixed</em>.</p>
<p>Here’s an example:</p>
<p><a href="http://scala-ide.org/resources/images/xsource-screenshots/installations/compiler-toggled.png">
<img src="http://scala-ide.org/resources/images/xsource-screenshots/installations/compiler-toggled.png" width="100%" alt="The new Scala installation toggle" />
</a></p>
<p>The meaning of a fixed version is just that: if you select any
fixed version, your project will be type-checked with that
particular version of Scala, for as long as the IDE can find it.<a id="fnr.4" href="#fn.4">⁴</a></p>
<p>The meaning of a dynamic option is that it will get updated in a
binary compatible way as we ship updates of the IDE through
Eclipse <a href="http://wiki.eclipse.org/FAQ_How_do_I_upgrade_Eclipse%253F">update sites</a>. You have the insurance that if you choose
a dynamic 2.11 version, what will be used is the latest
available 2.11 installation the IDE ships with.<a id="fnr.5" href="#fn.5">⁵</a></p>
<p><strong>That’s it</strong> ! You project will be built with the version of
Scala you just chose, and the presentation compiler of the IDE
will process your code in the compatibility mode corresponding
to that version (if appropriate).</p>
<p>Now once you just select one of these options (hopefully a 2.10
installation, since this is what we’re here to do), you will not
see any changes to other compilation options. You’ll have to
press <em>OK</em> for that. But if you subsequently reopen
compiler settings for that project, you’ll see that the
<code>-Xsource:2.10 -Ymacro-expand:none</code> string has been added to your
compiler settings:<a id="fnr.6" href="#fn.6">⁶</a></p>
<p><a href="http://scala-ide.org/resources/images/xsource-screenshots/installations/compiler-after.png">
<img src="http://scala-ide.org/resources/images/xsource-screenshots/installations/compiler-after.png" width="100%" alt="Compiler settings after choosing a legacy installation" />
</a></p>
<p>Note that if you decide to <em>revert</em> that change and come back to
a 2.11 configuration, the IDE will look closely at your project’s
compiler settings as compared to workspace-wide settings. If just
removing scala-version-related makes your project configuration
equivalent to workspace settings, it will automatically revert the
project-specific toggle. your project will again be ruled by
current workspace-wide settings.</p>
<p>Also, note this setting will not affect what your projct is built
with. What your project runs on is, as usual, the compiler it
finds on classpath. But what is actually found on classpath may
vary according to your project’s specific settings.</p>
<h1 id="scala-installation-detectiona-idsec-4a">Scala Installation detection<a id="sec-4"></a></h1>
<p>The IDE will try to understand what version of Scala your project
is designed to work with. It does this by looking at your
<em>resolved</em> classpath. A resolved classpath means “expanded until
it explicitly contains just paths to existing files”. <a id="fnr.7" href="#fn.7">⁷</a>
Files in that classpath will possibly contain a scala-library
jar, in which we know where to look for a version, or other,
external jar files which filename might hint at a Scala version.</p>
<p>If we detect a 2.10 scala library, you’ll see the following
error marker appear in the Problems view:</p>
<p><a href="http://scala-ide.org/resources/images/xsource-screenshots/installations/error-marker.png">
<img src="http://scala-ide.org/resources/images/xsource-screenshots/installations/error-marker.png" width="100%" alt="The error marker for a misconfigured 2.10 project" />
</a></p>
<p>If you try to quick-fix this error (by pressing Ctrl+1 or right-clicking and selecting <em>Quickfix</em>), you’ll see the following dialog:</p>
<p><a href="http://scala-ide.org/resources/images/xsource-screenshots/installations/quickfix.png">
<img src="http://scala-ide.org/resources/images/xsource-screenshots/installations/quickfix.png" width="100%" alt="The Scala Version Marker Quickfix window" />
</a></p>
<p>Opening Project Properties here (by clicking <em>Finish</em>) is
equivalent to doing it through menus, It will toggle
project-specific compiler settings if necessary, and set the
correct compiler flags.</p>
<p>A similar error marker will pop up if you have external 2.10 libraries
in your classpath (e.g. if they were brought there by sbteclipse with cutom options).</p>
<p>Now, if you have a project that was created in Eclipse, or if you
are working on a project which Eclipse configuration has been
generated in the past with a vanilla
<a href="https://github.com/typesafehub/sbteclipse">sbteclipse</a> (with no
particular options), you may notice that those error markers do not
appear. This is because your project is using a Classpath
Container.</p>
<h1 id="a-idclasspath-containersaclasspath-containersa-idsec-5a"><a id="Classpath-Containers"></a>Classpath Containers<a id="sec-5"></a></h1>
<p>Basically, classpath containers are an indirection in your
classpath that is elaborated by the platform Eclipse using
settings.They’re the technical notion behind the Eclipse feature
named <a href="http://help.eclipse.org/juno/index.jsp?topic%3D%252Forg.eclipse.jdt.doc.user%252Freference%252Fpreferences%252Fjava%252Fbuildpath%252Fref-preferences-user-libraries.htm">user libraries.</a></p>
<p>Your project’s physical representation contains a string (a
classpath container <em>path</em>) in its classpath, that Eclipse
resolves depending on its own settings and context.<a id="fnr.8" href="#fn.8">⁸</a> This
has been the way Scala projects in the IDE have been dealt with
so far: your projects contained that indirection as a pointer to
a Scala compiler, so that as you updated your ScalaIDE plugin
over time, your projects were always built with the
latest version of the scala compiler embedded with the IDE.</p>
<p>As of now you have access to the content of the Scala Classpath
Containers. First of all, choosing a project-specific scala
installation in compiler settings, as discussed above, also sets
the classpath container. You can witness that by expanding your
project in the Package Explorer. Here’s how it look for our test
project, set to use the latest 2.10 Scala above:</p>
<p><a href="http://scala-ide.org/resources/images/xsource-screenshots/installations/package-explorer.png">
<img src="http://scala-ide.org/resources/images/xsource-screenshots/installations/package-explorer.png" width="80%" alt="The Scala library Classpath Container as seen in the package Explorer" />
</a></p>
<p>You’ll notice this is not the generic 2.11 container you would
get with a fresh new (and therefore 2.11) project. You can also
see that in the <em>Java Build Path</em> preference page in the project
settings:</p>
<p><a href="http://scala-ide.org/resources/images/xsource-screenshots/installations/properties-build-path.png">
<img src="http://scala-ide.org/resources/images/xsource-screenshots/installations/properties-build-path.png" width="100%" alt="The Scala Library Classpath Container as seen in the Java Build Path" />
</a></p>
<p>You can also edit this classpath container, by right-clicking in
the <em>Package Explorer</em> view, or by clicking <em>Edit</em> on the <em>Java
Build Path</em> Preference page.</p>
<p><a href="http://scala-ide.org/resources/images/xsource-screenshots/installations/edit-container.png">
<img src="http://scala-ide.org/resources/images/xsource-screenshots/installations/edit-container.png" width="100%" alt="Editing a Scala Classpath Container" />
</a></p>
<p>Choosing a particular installation here will have the same
effect as choosing a particular Scala Installation in the
project’s compiler settings, as outlined above. In fact, if you
reopen your project’s settings after applying that classpath
container change, you’ll notice that the settings for your
installation and use of project-specific settings have changed
appropriately.</p>
<p>Note that if you decide to write a plugin, or do something that
depends on the scala compiler as opposed to just the scala
library, you may want to add another specific container to your
classpath: the Scala compiler. This is possible thanks to the
(usual) <em>Add Library</em> menu of the <em>Java Build Path</em> page. Here,
the Scala Compiler choice will take you to a window very similar
to the above.</p>
<p>Beware this choice will also have an impact on your choice of
Scala installation and associated compiler settings. In fact, to
make sure that the compiler and library container settings would
not get out of sync, we had to make sure that classpath container
edition should not fire if you have both Scala-library and
Scala-compiler on classpath. In you do the best way to proceed is
from a project’s choice of Scala Installation, which cascades to
classpath containers — and a quickfix will guide you there if you
try to modify such a classpath container directly anyway.<a id="fnr.9" href="#fn.9">⁹</a></p>
<p>This will let you have a project whose classpath is managed the
way your choice of Scala Installation is : a fixed set of jars if
this is what you choose, or the latest flavor of your favorite
compiler (whether 2.10 or 2.11), in case you select a dynamic
installation.</p>
<p>But so far, we have only seen how to manage the pre-installed,
embedded versions of the scala library and compiler. How about
dealing with custom, personal installations of Scala that you
may want to use in conjunction with your project ?</p>
<h1 id="a-idbyosabyos-bring-your-own-scalaa-idsec-6a"><a id="BYOS"></a>BYOS (Bring Your Own Scala)<a id="sec-6"></a></h1>
<p>If you want to use a custom version of Scala with your project,
there has always been the option of having a manually-managed
classpath. You can either use the <em>Add External Jars</em> function
for the <em>Java Build Path</em> preference page to set up your
scala-compiler and/or scala-library (etc) jars, or you could use
sbteclipse with the <code>withBundledScalaContainers:=false</code>
option, which copies exactly the settings resolved by sbt.</p>
<p>But using this is tedious, and it’s per-project. How about
setting a custom, workspace-wide installation that your projects
can then reuse ?</p>
<p>This is what you can do from the Scala Installations preference
page. You will find it in the preference page for the
workspace.</p>
<p><a href="http://scala-ide.org/resources/images/xsource-screenshots/installations/scala-installations.png">
<img src="http://scala-ide.org/resources/images/xsource-screenshots/installations/scala-installations.png" width="80%" alt="Scala Installations Preference page" />
</a></p>
<p>Notice how there is no notion of <em>dynamic</em> or <em>fixed</em> represented
here: those notions are relevant for a <em>choice</em> of Scala
Installation when you configure a project (dictating how that
choice will be realized accross upgrades). Those are just the
installations that are available to your IDE at the moment.</p>
<p>There you can add and remove an installation according to your
needs. So far, the dialog prompts you for a directory, which
should contain all your jar files, at the root of the
directory. Those should comprise at least of the scala-compiler
and scala-library jar. If there are source jars in that
directory, the IDE will also try to incorporate them in the
installation. It will also try to find extra dependencies
such as scala-reflect.</p>
<p>It will try to do a best effort to understand the version of
your installation given what we know of how such jars are
produced by the compiler build<sup><a id="fnr.10" href="#fn.10">10</a></sup> , and try to check those
jars version is consistent with each other.</p>
<p>Let’s now try to add an installation from the <code>~/.sbt/boot</code>
directory, a place where sbt stores the scala jars it requires to
boot.</p>
<p><a href="http://scala-ide.org/resources/images/xsource-screenshots/installations/sbt-installation.png">
<img src="http://scala-ide.org/resources/images/xsource-screenshots/installations/sbt-installation.png" width="100%" alt="Making an installation from an sbt cache directory" />
</a></p>
<p>A dialog then comes up asking for a name: this name gives you
the option of labeling a custom installation with a tag that is
easier to find in all the dialogs above, or even to have several
names for a given choice of jars.</p>
<p><a href="http://scala-ide.org/resources/images/xsource-screenshots/installations/naming-installation.png">
<img src="http://scala-ide.org/resources/images/xsource-screenshots/installations/naming-installation.png" width="80%" alt="Naming your Scala Installation" />
</a></p>
<p>You can now see your installation listed in all relevant dialogs
mentioned above, and you can select it in Compiler Settings.</p>
<p><a href="http://scala-ide.org/resources/images/xsource-screenshots/installations/custom-installation-visible.png">
<img src="http://scala-ide.org/resources/images/xsource-screenshots/installations/custom-installation-visible.png" width="100%" alt="The custom installation, as seen selected in Compiler setting" />
</a></p>
<p>Note that any scala installation created in that custom manner
is necessarily fixed: dynamic installations vary following
upgrades of the Scala IDE packaged compilers, and we would not
know what to upgrade such a directory-based scala installation
to.</p>
<p>You may also find it constraining to have your scala
installation set as a bunch of jars at the root of a
directory. But it should be possible to convert any setup of a
scala installation to a suitable directory by using symbolic links.</p>
<p>Besides, we firmly intend to implement more ways of defining a
custom scala installation for use in your IDE. If you have a
preferred way (explicitly choosing every jar ? looking at your
maven/ivy cache ?), please <a href="https://groups.google.com/d/forum/scala-ide-dev">let us know</a>.</p>
<p>Finally, note that so far, we only support Scala Versions
posterior to 2.10.0. Indeed, the <code>-Xsource</code> flag only knows so
far how to run both in 2.11 (normal) and 2.10 (compatibility)
modes. But it no longer knows about old typing ways of the past.</p>
<div id="footnotes">
<h2 class="footnotes">Footnotes: </h2>
<div id="text-footnotes">
<div class="footdef"><sup><a id="fn.1" class="footnum" href="#fnr.1">1</a></sup> One important exception to this is building, which is a
batch-mode task that can be delegated to another piece of byte code.</div>
<div class="footdef"><sup><a id="fn.2" class="footnum" href="#fnr.2">2</a></sup> In other terms, there's no way for you to generate
class files for a 2.10 code base using a 2.11 compiler and this
option.</div>
<div class="footdef"><sup><a id="fn.3" class="footnum" href="#fnr.3">3</a></sup> If you are dealing mostly with 2.10 projects, you may be
interested in the 2.10 flavors of the Scala IDE.</div>
<div class="footdef"><sup><a id="fn.4" class="footnum" href="#fnr.4">4</a></sup> The IDE will not lose Scala installation during normal
operation, or through upgrades. But that may occur if you remove
files on your disk, or explicitly remove components (bundles) of
your IDE installation.</div>
<div class="footdef"><sup><a id="fn.5" class="footnum" href="#fnr.5">5</a></sup> Note this is only valid for built-in versions: a dynamic
installation choice will never resolve to a custom Scala
installation, see 6</div>
<div class="footdef"><sup><a id="fn.6" class="footnum" href="#fnr.6">6</a></sup> Notice that this means that the expansion of white-box
macros is not currently possible in the compatibility 2.10
mode. Indeed, macros have known important <a href="http://docs.scala-lang.org/overviews/macros/changelog211.html">recent developments</a>
between 2.10 and 2.11 which makes type checking compatibility
between the two extremely difficult. If you have a significant
project that uses 2.10 whitebox macros, you may want to look at
2.10 flavors of the Scala IDE.</div>
<div class="footdef"><sup><a id="fn.7" class="footnum" href="#fnr.7">7</a></sup> We'll see why and how a classpath might not be
expanded in a moment.</div>
<div class="footdef"><sup><a id="fn.8" class="footnum" href="#fnr.8">8</a></sup> Note that this is also the way, in its default operating
mode, that <a href="https://github.com/typesafehub/sbteclipse">sbteclipse</a> generates ScalaIDE configurations. If you
want sbteclipse to generate an explicit classpath, preserving
the scala version sbt would have chosen for you, you can set the option
`withBundledScalaContainers` to false. More details on using it
<a href="http://scala-ide.org/blog/Xsource-compatibility.html#using-sbteclipse">there</a>.</div>
<div class="footdef"><sup><a id="fn.9" class="footnum" href="#fnr.9">9</a></sup> If you need to know, the issue here is on refreshing the
Java Build Path window, rather than modifying both classpath
containers in the background. We'd be very eager to receive a
contribution from an Eclipse expert on that point !</div>
<div class="footdef"><sup><a id="fn.10" class="footnum" href="#fnr.10">10</a></sup> Technically, we use the `library.properties` file of
your scala-library jar.</div>
</div>
</div>
2014-07-14 00:00:00 +0000/blog/scala-installations.html
More Source level support for Scala IDE<p><img src="http://scala-ide.org/resources/images/arrow.png" alt="Beware" /> <strong>The
contents of this blog post have been superseded by the most
recent nightly. Go <a href="http://scala-ide.org/blog/scala-installations.html">there</a>
for the latest documentation.</strong></p>
<p>We are thinking of uniting the development of the Scala IDE to
just a scala 2.11 branch, while still supporting 2.10
projects. For that, we need rock-solid support for 2.10, and
<strong>you</strong> can make a difference. This blog post is here to give you
news about the development — up to the latest nightly — and
enlist your contributions in reporting possible problems or
errors. More details on <a href="#contributing">how to contribute</a> below.</p>
<h2 id="developments-in-multi-version-support">Developments in multi-version support</h2>
<p>As you <a href="http://scala-ide.org/blog/Xsource-compatibility.html">may have heard</a>, the
latest milestone of the Scala IDE comes with the ability to
interpret both 2.10 and 2.11 projects. In the
<a href="http://scala-ide.org/download/nightly.html">latest nightly</a>,
it’s now much better.</p>
<p>The executive summary is this: the IDE still comes built on and
embedded with a single version of the Scala compiler (the latest
2.11). It runs it to access your code for all interactive
functions (typechecking, etc). But that <em>presentation compiler</em>
now has the ability to run in “<em>2.10 compatibility</em>” mode,
interpreting your types and terms with the logic that was valid
in the legacy version of Scala.</p>
<p>For non-interactive functions (i.e. building), the compiler will
send your code to a regular, unmodified 2.10 compiler that we
ship along the IDE.</p>
<h2 id="classpath-containers">Classpath containers</h2>
<p>So, when using the IDE, your 2.10 projects shouldn’t change. In
particular, their
<a href="http://docs.oracle.com/javase/7/docs/technotes/tools/windows/classpath.html">classpath</a>
should be that of a regular 2.10 project — that is, they should
have the 2.10 scala-library on classpath. So goes for other jars
and libraries you might use, whether 2.10 projects like play or
other compiler-associated jars, like scala-swing.</p>
<p>Projects created with the Scala IDE, or with
<a href="https://github.com/typesafehub/sbteclipse/">sbteclipse</a>, set the
path to the scala-library using a <em>classpath container</em>, an
abstraction designed to help with managing machine-scpecific
paths towards a set of jars. These <em>classpath containers</em> (one
for the lirbary, one for the compiler), in particular, represent
the technical notion behind what Eclipse calls
<a href="http://help.eclipse.org/juno/index.jsp?topic=%2Forg.eclipse.jdt.doc.user%2Freference%2Fpreferences%2Fjava%2Fbuildpath%2Fref-preferences-user-libraries.htm">User Libraries</a>.</p>
<p>These containers, in the latest milestone, always pointed to the
default version of Scala (2.11). To use an IDE-created project
with Scala 2.10, you had to get rid of the classpath container,
and replace it with your own jars in the <em>Java Build Path</em>
menu. Or you could use sbteclipse with the
<code>withBundledScalaContainers := false</code> option to generate an
Eclipse project which would explicitly link to sbt-provided scala
2.10 libraries.</p>
<p>With the
<a href="http://scala-ide.org/download/nightly.html">latest nightly</a> (as
of July 4th), you now have the freedom of configuring the content
of the Scala classpath containers.</p>
<h2 id="new-features">New Features</h2>
<p>The first user-visible change is that the switch between the 2.10
and 2.11 modes is now a clearer, more visible toggle at the
project-specific compiler options level.</p>
<p><a href="http://scala-ide.org/resources/images/xsource-screenshots/new-support/compiler-prefs.png">
<img src="http://scala-ide.org/resources/images/xsource-screenshots/new-support/compiler-prefs.png" width="100%" alt="The new compiler options preference window." />
</a></p>
<p>A dialog will still pop up if your classpath suggests your
project may be configured to run on 2.10, and it has the
same effect as setting the toggle to 2.10 above.</p>
<p>The default for the whole workspace-wide IDE plug-in is still to
run on 2.11 so that you will for now have to make this setting
per-project.</p>
<p>If you now head to the workspace-wide preferences (<em>Window →
Preferences</em> on Windows/Linux, or <em>Eclipse → Preferences</em> on
OSX), you can see under the Scala heading an <em>Installed Scalas</em>
window which lists the Scala versions you can use.</p>
<p><a href="http://scala-ide.org/resources/images/xsource-screenshots/new-support/installed-scalas.png">
<img src="http://scala-ide.org/resources/images/xsource-screenshots/new-support/installed-scalas.png" width="100%" alt="The list of bundles scala installations." />
</a></p>
<p>Those translate directly to your classpath containers, that is
<strong>setting the source level toggle selects the corresponding scala
installation for your project</strong>.</p>
<p>To witness that, you can have a look at your project’s classpath
(<em>Java Build Path</em> in your project’s <em>Properties</em>). Or you can
unfold your project’s details in the <em>Package Explorer</em>. You’ll
see this for a 2.10 project:</p>
<p><a href="http://scala-ide.org/resources/images/xsource-screenshots/new-support/project-container.png">
<img src="http://scala-ide.org/resources/images/xsource-screenshots/new-support/project-container.png" width="80%" alt="The project's classpath container in the Package explorer." />
</a></p>
<p>You also have the option of editing that container (<em>right-click
→ Properties</em> in the Package explorer, <em>double-click</em> or <em>Edit</em>
in the <em>Java Build Path</em> window). You can the choose amongst the
installed Scala versions</p>
<p><a href="http://scala-ide.org/resources/images/xsource-screenshots/new-support/edit-container.png">
<img src="http://scala-ide.org/resources/images/xsource-screenshots/new-support/edit-container.png" width="100%" alt="The choice of scala installations for a lirbary container." />
</a></p>
<p>Beware, that edition does <strong>not</strong> affect your source-level flag
in and of itself, though consistency checks may pop up a dialog
suggesting you to set the source level according to what you just
put in the container.</p>
<h2 id="contributing">Contributing</h2>
<p>We are evaluating the possibility of
<a href="https://groups.google.com/d/msgid/scala-ide-user/CAOwe9fZten-goCOh_aaYuBZKOBi%2BTOMDvgH%2Bk18AQo2F75fiKg%40mail.gmail.com">dropping 2.10 builds of the Scala IDE</a>,
which would save us the time and effort spent maintaining them,
as well as let us enjoy the gains brought by the
<a href="http://docs.scala-lang.org/scala/2.11/">latest scala version</a>. We’d
be able to deliver IDE features much faster ! But this can only
be done if this multi-version support is reliable. For this, we
need testing. <strong>Have any 2.10 projects you want to work on ?
Install the latest nightly, use the 2.10 support, and
<a href="http://scala-ide.org/docs/community.html">tell us</a> about any
problems you encounter !</strong></p>
<h2 id="known-limitations">Known limitations</h2>
<p>The source level toggle in compiler settings does not give
immediate feedback on the “Additional parameters” line of
compiler options, even if it adds <code>-Xsource:2.10
-Ymacro-expand:none</code> to it. If you save, close the compiler
options dialog and reopen it, you should see those compiler
options added explicitly.</p>
<p>There is currently no option to define a custom scala
installation, and use it to configure the classpath container of
your projects. We are actively working on this.</p>
<p>The
<a href="http://scala-ide.org/blog/Xsource-compatibility.html#known-limitations">previous limitations</a>
of the multiple-scala-version support still apply.</p>
2014-07-07 00:00:00 +0000/blog/source-level.html
Scala IDE 4.0.0-M2<h1 id="the-second-milestone-for-scala-ide-400">The second milestone for Scala-IDE 4.0.0</h1>
<p>We are very happy to announce the second milestone release of
Scala-IDE 4.0.0 ! We are progressing towards our Lithium release,
with numerous improvements along the way.</p>
<p>We wanted to make this release available to our users as soon as
possible, to get you the many improvements of the last few
months, but also because we need your help: we are going to
implement the possibility to work with projects set to build with
<a href="/blog/Xsource-compatibility.html">two different Scala versions</a> (2.11
and 2.10 are supported for now), and we would like your help working
out the kinks of this feature.</p>
<p>So download the milestone, try out the feature, and <a href="https://groups.google.com/forum/#!forum/scala-ide-dev">let us</a> <a href="https://www.assembla.com/spaces/scala-ide/tickets">know</a>
what you think!</p>
<h1 id="highlights">Highlights</h1>
<p>This release fixes many bugs, and we invite you to read the
Changelog for a full description. Here are some interesting
excerpts:</p>
<ul>
<li>new and improved menus, with cleaner refactoring choices, and
clearer preferences</li>
<li>reactivated, improved <a href="http://scala-ide.org/docs/current-user-doc/features/typingviewing/code-templates.html">Scala templates</a></li>
<li>file reloads by the Presentation Compiler now happen in sync
with the <a href="http://wiki.eclipse.org/FAQ_How_do_I_use_a_model_reconciler%253F">reconciler</a> mechanism of Eclipse, yielding performance
improvements throughout the interface, notably for semantic
highlighting.</li>
<li>removal of the bundling with scala-continuations plugin</li>
<li><a href="http://scala-ide.org/docs/4.0.x/features/typingviewing/indent-guide.html">indentation guide</a> to visually help edition of Scala code</li>
<li>improvements in indentation</li>
<li>more robust integration with the sbt incremental compiler,
classfiles, virtual files, all yielding performance
improvements</li>
<li>QuickFix for auto-generating method stubs for inherited abstract members</li>
<li>support for the new name hashing algorithm in the Sbt incremental compiler. This feature improves build times by making smarter decisions about what source files require recompilation. It is still experimental (and disabled by default), but we’d like to hear back about any issues you encounter!</li>
<li><a href="/blog/Xsource-compatibility.html">support for several versions of Scala</a>! This brand-new
experimental feature is released early to get help from
beta-testers. Please read the blog post, and <a href="https://www.assembla.com/spaces/scala-ide/tickets/">report</a> any issues.</li>
<li>see the full <a href="docs/changelog.html">changelog</a> for a complete list of changes.</li>
</ul>
<h1 id="thanks">Thanks</h1>
<p>We were blessed with great contributions from our users these
last few months! Heartfelt thanks to Simon Schäefer (<a href="https://github.com/sschaef">@sschaef</a>)
for his repeated contributions, Vladimir Nikolaev (<a href="https://github.com/VladimirNik">@VladimirNik</a>),
Alden Torres (<a href="https://github.com/aldenml">@aldenml</a>), Jerzy Müller (<a href="https://github.com/Kwestor">@Kwestor</a>) and Trond
Bjerkestrand (<a href="https://github.com/tbje">@tbje</a>) for their respective pull requests, and
Scala team members (<a href="https://github.com/adriaanm">@adriaanm</a>, <a href="https://github.com/retronym">@retronym</a>, <a href="https://github.com/gkossakowski">@gkossakowski</a>) for
their invaluable help.</p>
<h1 id="installation">Installation</h1>
<p>This release is available for both Eclipse Juno (4.2) and Kepler
(4.3), so head down to the <a href="/downloads/milestone.html">download page</a> or just use the following update site:</p>
<p><a href="http://download.scala-ide.org/sdk/lithium/e38/scala211/dev/site/">http://download.scala-ide.org/sdk/lithium/e38/scala211/dev/site/</a></p>
<p>We also have experimental support for Eclipse Luna, and you can try it out from the following update site:</p>
<p><a href="http://download.scala-ide.org/sdk/lithium/e44/scala211/dev/site/">http://download.scala-ide.org/sdk/lithium/e44/scala211/dev/site/</a></p>
<p>Happy Scala coding!</p>
2014-05-27 00:00:00 +0000/blog/release-notes-4.0.0-M2.html
Scala IDE support for simultaneous 2.11 and 2.10 projects<p><img src="http://scala-ide.org/resources/images/arrow.png" alt="Beware" /> <strong>The
contents of this blog post have been superseded by the most
recent nightly. Go <a href="http://scala-ide.org/blog/scala-installations.html">there</a>
for the latest documentation.</strong></p>
<h2 id="using-the-ide-with-a-210-project">Using the IDE with a 2.10 project</h2>
<p>As you probably know, <a href="https://typesafe.com/blog/scala-211-has-arrived">Scala 2.11 was released last month</a>! All
crew to the upgrade stations!</p>
<p>But a few weeks ago, @TobiasRoeser <a href="https://twitter.com/TobiasRoeser/status/469833321430913024">tweeted</a>:</p>
<blockquote>
<p>It’s a pity, that @ScalaIDE does not support #Scala 2.10 and 2.11
project at the same time.</p>
</blockquote>
<p>Indeed, Scala 2.10 and 2.11 are not binary-compatible, and since
the Scala IDE runs a version of the compilerbased on
either 2.10 or 2.11 (depending on which Scala IDE <a href="http://scala-ide.org/download/milestone.html">flavor</a> you
download), it couldn’t deal with projects based on mixed major
versions of Scala.</p>
<p>Now, don’t get me wrong: if you have the opportunity of upgrading
to <a href="http://www.scala-lang.org/news/2014/04/21/release-notes-2.11.0.html">Scala 2.11</a>, you most <em>definitely</em> should: the new compiler is
faster, has a lot of <a href="http://docs.scala-lang.org/scala/2.11/">new features</a>, and the lack of language-level
changes allow for a quick and painless upgrade.</p>
<p>But if you’re dependent on projects that haven’t upgraded yet, or
more generally if you work on a legacy code base, you couldn’t
use projects working on two different major versions of Scala in
the same workspace on Scala IDE.</p>
<p>Until now, that is.</p>
<p>An <strong>experimental</strong> flag has been introduced in the Scala 2.11
compiler. Adding <code>-Xsource:2.10</code> makes the type checker run in
“legacy” mode. It will not report errors in some situations where
the 2.11 compiler would (the 2.11 type checker being usually a
bit stricter).</p>
<p>Beware, however: this setting is for now considered <strong>fragile</strong> and
<strong>extremely sensitive</strong> (as with all ambitious things related to the
typechecker). Please <a href="https://issues.scala-lang.org/">report</a> any and all issues of the type
checker doing weird things on your favorite 2.10 project.</p>
<p>But this allows us, on a per-project basis, to make the Scala IDE
deal with projects in 2.10 mode ! You can now add <code>-Xsource:2.10</code>
to the compiler options of your project, and have the Scala IDE
report errors, completions, semantic highlighting just as it
would if it was based on Scala 2.10. Moreover, since we are now
bundling another set of jars for Scala 2.10 in the Scala IDE
plugin (and doing a little bit of wiring), we’ll have the IDE
build your projects using an authentic Scala 2.10 compiler.</p>
<h2 id="how-to-configure-your-project">How to configure your project</h2>
<p>Configuration for the Scala IDE is still business as usual: the
projects you import in your workspace are still assumed to run
with the bundled version of Scala (2.11), and you will need to
make a few changes to make the editor understand your project has
a 2.10 source and build.</p>
<p>First, go to the preference page of your project, and click “Use
project-specific settings” to turn on project-specific
configuration (you’ll have to repeat those steps for every
project for which you want to use the compatibility mode).</p>
<p><a href="http://scala-ide.org/resources/images/xsource-screenshots/project-settings.jpg">
<img src="http://scala-ide.org/resources/images/xsource-screenshots/project-settings.jpg" width="100%" alt="Turning on project-pecific settings" />
</a></p>
<p>Second, click on the source-level option, setting the source for
this project to 2.10. This will automatically add <code>-Xsource:2.10
-Ymacro-expand:none</code> to your compiler settings.</p>
<p><a href="http://scala-ide.org/resources/images/xsource-screenshots/2.11-sourcelevel-before.jpg">
<img src="http://scala-ide.org/resources/images/xsource-screenshots/2.11-sourcelevel-before.jpg" width="100%" alt="Turning on the source level" />
</a></p>
<p>After you close the project, any errors about the classpath in
the problems view should disappear. If you reopen properties,
you’ll see the <code>-Xsource</code> and <code>-Ymacro-expand</code> options have been
added to compiler options.</p>
<p><a href="http://scala-ide.org/resources/images/xsource-screenshots/2.11-sourcelevel-after.jpg">
<img src="http://scala-ide.org/resources/images/xsource-screenshots/2.11-sourcelevel-after.jpg" width="100%" alt="Turning on the source level" />
</a></p>
<h2 id="detecting-projects-which-could-use-the-210-flag">Detecting projects which could use the 2.10 flag</h2>
<p>In case the Scala IDE finds a project configured with a
classpath requiring a 2.10 version of the scala compiler or
library, it will prompt you about it, asking whether you want to
turn on the 2.10 source level configuration using the following
dialog:</p>
<p><a href="http://scala-ide.org/resources/images/xsource-screenshots/error-message.jpg">
<img src="http://scala-ide.org/resources/images/xsource-screenshots/error-message.jpg" width="100%" alt="The error message on seeing a previous classpath." />
</a></p>
<p>Clicking ‘Yes’ on this dialog has the same effect as setting the
source Level to 2.10 above.</p>
<h2 id="using-sbteclipse">Using sbteclipse</h2>
<p>sbteclipse creates an eclipse configuration from your <a href="http://www.scala-sbt.org/">sbt</a>-based
project. In that process, it usually rewrites the required
classpath of your project, to replace the scala-compiler and
scala-library with a generic, version-less compiler
(resp. library) bundle that will automatically match the IDE’s
bundled version.</p>
<p>In the case of a 2.10 project, you don’t want that. You want the
classpath to unambiguously require a 2.10 scala compiler or
library version, which matches the one in your sbt configuration.</p>
<p>To do that, sbteclipse introduces since version 2.5.0 an option
<code>with-bundled-scala-containers</code> (default value: true) which lets
you specify that you want to keep scala-compiler and
scala-library versioning information in creating an Eclipse
configuration.</p>
<p>You can run sbteclipse with the line:
<code>sbt -with-bundled-scala-containers=false eclipse</code></p>
<p>You should then get a Scala project that will ask for the exact
same version of the compiler as the one it’s configured to run
with in sbt.</p>
<h2 id="known-limitations">Known limitations</h2>
<p>First, the compatibility mode introduced by the <code>-Xsource</code> flag
can only be used on a per-project basis. If you want a
workspace-wide 2.10 IDE, you should turn to the 2.10 flavors of
the Scala IDE download.</p>
<p>Since whitebox macros have some <a href="http://docs.scala-lang.org/overviews/macros/changelog211.html">incompatible improvements</a> between
2.11 and 2.10, the IDE is not able to expand macros for you in
compatibility mode. This probably will remain a long-term
limitation of this mode. This is why the <code>-Ymacro-expand:none</code>
setting works conjointly with the <code>-Xsource:2.10</code> setting.</p>
<p>Finally, in case your classpath is not valid, the dialog
described above will appear. However, some classpath checks are
triggered by events sent from the eclipse platform we have little
control over, so that in some cases, you may see this dialogue
pop up twice, one after the other. The second occurence
should not affect any settings. We are very eager for detailed,
reproducible <a href="https://www.assembla.com/spaces/scala-ide/tickets/">bug reports</a> that would let us know precisely about
when this happens.</p>
<p><sup><a id="fn.1" class="footnum" href="#fnr.1">1</a></sup> The <a href="http://scala-ide.org/docs/dev/architecture/presentation-compiler.html">Presentation Compiler</a></p>
2014-05-26 00:00:00 +0000/blog/Xsource-compatibility.html
Scala IDE 3.0.4 final<p>We are very happy to announce the release of the 3.0.4 maintenance release of Scala IDE.</p>
<h2 id="whats-new">What’s new</h2>
<p>This release is a rebuild of Scala IDE 3.0.3 for the latest Scala version 2.11.0, with a few small changes needed to support the updated compiler.</p>
<p>The complete list of improvements in Scala 2.11.0 is available in their <a href="http://www.scala-lang.org/news/2014/04/21/release-notes-2.11.0.html">release notes</a>.</p>
<p>To see what was new in Scala IDE 3.0.3, please see these <a href="/blog/release-notes-3.0.3.html">release notes</a>.</p>
<h2 id="ecosystem">Ecosystem</h2>
<p>As usual, this release is associated with updated versions of the ecosystem plugins:</p>
<ul>
<li>Scala Worksheet 0.2.3</li>
<li>Scala Search 0.2.2</li>
</ul>
<p>The other usual plugins will appear in the update site soon.</p>
<h2 id="installing">Installing</h2>
<p>To install the release on an existing version of Eclipse, use the <a href="/download/current.html">ecosystem update sites</a>:</p>
<ul>
<li>Eclipse 4.x (Juno &amp; Kepler): <a href="http://download.scala-ide.org/sdk/e38/scala211/stable/site/">juno-update-site</a></li>
</ul>
2014-04-21 00:00:00 +0000/blog/release-notes-3.0.4.html
Scala IDE 3.0.3 final<p>We are very happy to announce the release of the final version of the 3.0.3 maintenance release of Scala IDE.</p>
<h2 id="whats-new">What’s new</h2>
<p>This release upgrades the incremental compiler to a newer version (0.13.1) and latest Scala maintenance release (2.10.4). In addition, we have two fixes for mixed Java/Scala projects:</p>
<ul>
<li>No classfiles when building mixed Java/Scala project (<a href="https://www.assembla.com/spaces/scala-ide/tickets/1001995">#1001995</a>)</li>
<li>Don’t scan contents of every file in a Jar to determine if a classfile comes from Scala (<a href="https://www.assembla.com/spaces/scala-ide/tickets/1001999">#1001999</a>)</li>
</ul>
<p>For the complete list of fixes, please see our <a href="http://scala-ide.org/docs/changelog.html#3_0_3">changelog</a>.</p>
<h2 id="ecosystem">Ecosystem</h2>
<p>As usual, this release is associated with updated versions of the ecosystem plugins:</p>
<ul>
<li>Scala Worksheet 0.2.3</li>
<li>Play plugin 0.4.3</li>
<li>ScalaTest plugin 2.9.3</li>
<li>Scala Search 0.2.2</li>
</ul>
<p>As more plugin writers update their releases to 3.0.3, their plugins will appear in the update site.</p>
<h2 id="installing">Installing</h2>
<p>The release can be installed using the <a href="/download/sdk.html">all-in-one bundle</a>, which contains the latest version of Eclipse, Scala IDE, Play plugin and Scala Worksheet.</p>
<p>To install the release on an existing version of Eclipse, use the <a href="/download/current.html">ecosystem update sites</a>:</p>
<ul>
<li>Eclipse 4.x (Juno &amp; Kepler): <a href="http://download.scala-ide.org/sdk/e38/scala210/stable/site/">juno-update-site</a></li>
</ul>
2014-03-31 00:00:00 +0000/blog/release-notes-3.0.3.html
Scala IDE 4.0.0-M1 on Scala 2.11.0-M8<p>We are happy to give you a heads-up to the rebuild of our latest milestone of the Scala IDE, 4.0.0-M1, on the latest milestone from the Scala team, the new 2.11.0-M8.</p>
<h2 id="improvements">Improvements</h2>
<p>The latest Scala milestone fixes more than a hundred issues, of which the IDE takes advantage for both stability and performance.</p>
<p>The complete list of changes is available in the <a href="http://www.scala-lang.org/news/2014/01/28/release-notes-2.11.0-M8.html">Scala announcement</a>.</p>
<p>Other fixes like these are in the works, and will become available as new versions of Scala are released. For the impatient, our <a href="/download/nightly.html">nightlies</a> always contain the latest fixes, as they are merged.</p>
<h2 id="plugins">Plugins</h2>
<p>Living on the bleeding edge doesn’t mean losing all confront. A new build of the Scala worksheet, compatible with the new release, is available. The corresponding build of Scala-search should come momentarily.</p>
<h2 id="installation">Installation</h2>
<p>This release is available for both Eclipse Juno (4.2) and Kepler (4.3) using the following update-site: <a href="http://download.scala-ide.org/sdk/e38/scala211/dev/site/">http://download.scala-ide.org/sdk/e38/scala211/dev/site/</a>.</p>
<p>Happy Scala coding!</p>
2014-01-29 00:00:00 +0000/blog/release-notes-4.0.0-M1_2.11.0-M8.html
Scala IDE 3.0.3-RC01<p>We are very happy to announce the first release candidate for the 3.0.3 maintenance release of Scala IDE.</p>
<h2 id="whats-new">What’s new</h2>
<p>This release upgrades the incremental compiler to the latest version (0.13.1) and latest Scala maintenance release (2.10.4-RC1). In addition, we have two fixes for mixed Java/Scala projects:</p>
<ul>
<li>No classfiles when building mixed Java/Scala project (<a href="https://www.assembla.com/spaces/scala-ide/tickets/1001995">#1001995</a>)</li>
<li>Don’t scan contents of every file in a Jar to determine if a classfile comes from Scala (<a href="https://www.assembla.com/spaces/scala-ide/tickets/1001999">#1001999</a>)</li>
</ul>
<p>For the complete list of fixes, please see our <a href="http://scala-ide.org/docs/changelog.html#3_0_3">changelog</a>.</p>
<h2 id="ecosystem">Ecosystem</h2>
<p>As usual, this release is associated with updated versions of the ecosystem plugins:</p>
<ul>
<li>Scala Worksheet 0.2.1</li>
<li>Play plugin 0.4.1</li>
<li>ScalaTest plugin 2.9.3</li>
<li>JavaToScala plugin 1.2.0</li>
<li>Scala Search 0.2.0</li>
</ul>
<p>As more plugin writers update their releases to 3.0.3, their plugins will appear in the update site.</p>
<h2 id="installing">Installing</h2>
<p>To install the release on an existing version of Eclipse, use the <a href="/download/milestone.html">ecosystem update sites</a>:</p>
<ul>
<li>Eclipse 4.x (Juno &amp; Kepler): <a href="http://download.scala-ide.org/sdk/helium/e38/scala210/dev/site">http://download.scala-ide.org/sdk/helium/e38/scala210/dev/site</a></li>
</ul>
2014-01-09 00:00:00 +0000/blog/release-notes-3.0.3-RC01.html
Scala IDE 4.0.0-M1 on Scala 2.11.0-M7<p>As usual, we are happy to join the announcement of Scala 2.11.0-M7, the latest milestone from the Scala team, with a rebuild of Scala IDE 4.0.0-M1, our own latest milestone.</p>
<h2 id="improvements">Improvements</h2>
<p>The Scala IDE code itself is the one for milestone 1, but we did some work on parts of the compiler used by the IDE. This results in small improvements, like in hyperlinking (<a href="https://issues.scala-lang.org/browse/SI-7915">SI-7915</a>) or completion (<a href="https://issues.scala-lang.org/browse/SI-7280">SI-7280</a>). </p>
<p>The complete list of changes is available in the <a href="http://www.scala-lang.org/news/2013/11/27/release-notes-v2.11.0-M7.html">Scala announcement</a>.</p>
<p>Other fixes like these are in the work, and will become available as new versions of Scala are released. And for the impatient, our <a href="/download/nightly.html">nightlies</a> always contain the latest fixes, as they are merged.</p>
<h2 id="plugins">Plugins</h2>
<p>Living on the bleeding edge doesn’t mean losing all confront. New builds of the Scala worksheet and Scala search, compatible with the new release, are available. And they also take advantage of some of the improvements.</p>
<h2 id="installation">Installation</h2>
<p>This release is available for both Eclipse Juno (4.2) and Kepler (4.3) using the following update-site: <a href="http://download.scala-ide.org/sdk/e38/scala211/dev/site/">http://download.scala-ide.org/sdk/e38/scala211/dev/site/</a>.</p>
<p>Happy Scala coding!</p>
2013-11-27 00:00:00 +0000/blog/release-notes-4.0.0-M1_2.11.0-M7.html
Scala IDE 4.0.0-M1<p>We are happy to announce the first milestone for Scala IDE 4.0.0! This is the first step towards the Lithium release, and sets the stage for future improvements in the API for plugin writers.</p>
<p>The IDE team has been hard at work since the 3.0 release, and most of the work was channeled towards Scala IDE plugins. Our development strategy was to provide a quicker release cycle in smaller bites, so you can get access to new features faster, and us to get feedback earlier. And so the <a href="https://github.com/scala-ide/scala-ide-play2/wiki">Play plugin</a> and <a href="https://github.com/scala-ide/scala-search/wiki/Features">Scala Search</a> were born!</p>
<p>As the ecosystem grows, we realized that the Scala IDE needs to provide a stable API. Besides the plugins already mentioned, the community stepped up and the excellent ScalaTest plugin, as well as InSynth and (soon!) the <a href="https://github.com/dnadolny/java-to-scala-plugin">Java to Scala translator</a> are building on top of the core Scala IDE. Rebuilding the whole ecosystem for each release (even release candidates) becomes prohibitive, and often not necessary. We set to change that in 4.0: we plan to provide a clearly delimited API that can support all existing plugins, semantically versioned, so upgrades are painless (and breakages are foreseeable).</p>
<h2 id="highlights">Highlights</h2>
<p>The first milestone has a few improvements and new features, but this is mainly a synchronization point with plugin writers. As a first step, we cleaned up our build and stop re-packaging the Scala compiler and library bundles. They are prefectly good OSGi bundles by themselves, and simplifies both our build and plugin writers life. The [upgrade notice] details changes needed in plugins.</p>
<p>Here are some of the new features:</p>
<ul>
<li>New quick fixes: <a href="http://scala-ide.org/docs/4.0.x/features/typingviewing/quick-fixes.html">create method</a> or class quick-fix, <a href="http://scala-ide.org/docs/4.0.x/features/typingviewing/quick-fixes.html#Change_Capitalization">change capitalization</a> of mis-spelled method, [add explicit type] to a definition with inferred types</li>
<li>Various improvements in completion on imports</li>
<li><a href="http://scala-ide.org/docs/4.0.x/features/typingviewing/code-completion.html#Completion_overwrites">Completion overwrites</a></li>
<li>Improvements in auto-edits and highlighting inside string interpolation or scaladoc comments</li>
</ul>
<p>Have a look at the <a href="http://scala-ide.org/docs/changelog.html#M1___2013-11-05_">changelog</a> for a comprehensive description of the changes made for this new release.</p>
<h2 id="thanks">Thanks</h2>
<p>We’d like to welcome two new contributors in this release: <a href="https://twitter.com/DanielChiaJH">Daniel Chia</a> (improvements in completions) and <a href="https://github.com/dnadolny">Donny Nadolny</a> (various quick fixes)! Congratulations! We’d like to thank Simon Schaefer, Tom Crocket, Rafał Krzewski, Jedd Haberstro, Eric Molitor and Robin Green for their help with this release!</p>
<h2 id="installation">Installation</h2>
<p>This release is available for both Eclipse Juno (4.2) and Kepler (4.3) using the following update-site: <a href="http://download.scala-ide.org/sdk/e38/scala210/dev/site/">http://download.scala-ide.org/sdk/e38/scala210/dev/site/</a></p>
<p>Happy Scala coding!</p>
2013-11-05 00:00:00 +0000/blog/release-notes-4.0.0-M1.html
Scala IDE 3.0.2 final<p>We are very happy to announce the release of the final version of the 3.0.2 maintenance release of Scala IDE.</p>
<h2 id="whats-new">What’s new</h2>
<p>In addition to the upgrade to the recent Scala 2.10.3 version, it is the first release with official support for Eclipse 4.x (Juno and Kepler). The old Eclipse 3.x platform support is abandoned.</p>
<p>The other main improvements are:</p>
<ul>
<li>Updated the build compiler to use the recently released sbt 0.13.0 (which, among others,
includes an important fix for correctly handling build cancellation, see <a href="https://github.com/sbt/sbt/pull/821">sbt pr #812</a>)</li>
<li>Semantic highlighting now works also on source attachments <a href="https://www.assembla.com/spaces/scala-ide/tickets/1000939">#1000939</a>.</li>
<li>Fixed a race-condition that can lead to “Resource XXX does not exist.” errors (see <a href="https://www.assembla.com/spaces/scala-ide/tickets/1001846">#1001846</a> for details)</li>
</ul>
<p>For the complete list of fixes, please see our <a href="http://scala-ide.org/docs/changelog.html#3_0_2">changelog</a>.</p>
<h2 id="ecosystem">Ecosystem</h2>
<p>As usual, this release is associated with updated versions of the ecosystem plugins (check the <a href="/blog/release-notes-3.0.2-RC01.html">previous announcement</a> for more details):</p>
<ul>
<li>Scala Worksheet 0.2.1</li>
<li>Play plugin 0.4.1</li>
<li>ScalaTest plugin 2.9.3</li>
<li>Scala Search 0.2.0</li>
</ul>
<h2 id="installing">Installing</h2>
<p>The release can be installed using the <a href="/download/sdk.html">all-in-one bundle</a>, which contains the latest version of Eclipse, Scala IDE, Play plugin and Scala Worksheet.</p>
<p>To install the release on an existing version of Eclipse, use the <a href="/download/current.html">ecosystem update sites</a>:</p>
<ul>
<li>Eclipse 4.x (Juno &amp; Kepler): <a href="http://download.scala-ide.org/sdk/e38/scala210/stable/site/">juno-update-site</a></li>
</ul>
<h2 id="thanks">Thanks</h2>
<p>We would like to take the opportunity to thank the community and all contributors for the
amazing work they have done to make this release possible. Special thanks go to
<a href="https://github.com/skyluc">Luc Bourlier</a>, <a href="https://github.com/dotta">Mirco Dotta</a>,
<a href="https://github.com/dragos">Iulian Dragos</a>, <a href="https://github.com/huitseeker">François Garillot</a>,
<a href="https://github.com/jhaberstro">Jedd Haberstro</a>, <a href="https://github.com/mads379">Mads Hartmann</a>,
<a href="https://github.com/gkossakowski">Grzegorz Kossakowski</a>, and <a href="https://github.com/sschaef">Simon Schäfer</a>.</p>
2013-10-22 00:00:00 +0000/blog/release-notes-3.0.2.html