Scala IDE for Eclipse 2.0
After 9 months of intensive work by open source community contributors, users, and the IDE project team at Typesafe, we are proud to release this new version with improved reliability, performance, and responsiveness. New features include error reports as you type, a project builder with dependency tracking, definition hyperlinking, inferred type hovers, code completion, better integration with Java build tools, and more.
A lot of effort has gone into this version of the IDE and we would like to recognize the people who have contributed so much time and energy to the success of the project.
A bit of history
The Scala IDE project began a few of years back, when Miles Sabin layed down the foundations of the open source project and an enthusiastic community formed around the effort to create a free, open-source, Eclipse-based IDE for Scala. In late 2010 the Typesafe team decided to support the open source project, and in September Eugene Vigdorchik became the first full-time engineer to work on the project. At the same time, Typesafe founder and Scala creator Martin Odersky led a reimplementation of the Scala presentation compiler, the engine behind the IDE semantic actions.
For version 2.0 we had some tough decisions to take, and development started with a very limited number of features, aiming for a very reliable core. Naturally, this raised the need for early and frequent feedback from our users: on March 28 we had the first beta of the upcoming 2.0 release. This was followed by a stream of betas (12 in total), packing around 300 closed tickets over the next months. As Eugene moved on to other projects, two other Typesafe engineers joined the IDE team: Iulian Dragos and Mirco Dotta, followed by Luc Bourlier in September. Together with the great community (Mirko Stocker and Matt Russell just to name a few), the IDE took great strides to reach its first production-ready release.
As things moved forward and the 2.0 branch became the main version in use, it became clear that we needed to have more than one IDE version: 2.0 remained the rock-solid branch, where only bug-fixing happens, while 2.1 is the place where new features, such as semantic highlighting or implicit highlighting are developed.
Besides the two IDE versions, we support three versions of the Scala compiler: 2.8.x, 2.9.x and 2.10 (Scala trunk), with nightly builds for all of them, so you can choose what suits you the best: the latest IDE developments on a stable Scala compiler, the stable IDE on the bleeding edge Scala compiler, or even the latest and greatest of both -- like the core Scala team, who uses the Eclipse IDE for their daily scalac development! The choice is yours.
While the IDE always had a vibrant community around it, contributing to the project itself was sometimes challenging for newcomers. On October 4 we moved the project to Github, leading to a much simpler process for contributors. In just a few weeks we had 17 forks, some of which are extremely interesting developments in their own right (for example, check out ScalaGWT, which brings Scala to the GWT framework).
Today we also release a redesign of the Scala IDE web site, along with reworked documentation, including screencasts. Thanks Heather for the awesome work. We believe that the new site is not only pretty, but makes it much easier to find documentation, both for users and contributors (and everyone is a potential contributor). The web site is backed by Git too, so you can contribute by using the awesome Pull Request button!
A look at the future
Even though it's been a long ride, today's release is not the end of the road, but rather a beginning. We can now look at adding new features on a solid base, and great things will come, such as improved compilation speed, find references, and a Scala debugger. Suggest your favorite feature, and help us build the next great IDE.
After the 2.0.0 release we will continue to support the 2.0 branch with maintenance releases including important bug fixes. However, the focus will shift to the 2.1 development stream, and concentrate on the upcoming features. Also, 2.0.0 will be the last version to support the 2.8 compiler. This decision was not taken lightly, but the effort to support 2.8 is substantial and detracts from our ability to innovate on newer releases. We believe that 2.0.0 is a solid release that can help people who cannot upgrade to 2.9.x in the immediate future.
Scala IDE version 2 improves developer productivity through a large number of features. Below we highlight the main ones, but don't forget to check out the full list on the web site, and watch the screencast to see them in action.
- Report errors as you type - The IDE saves you time by type-checking your program as you type, and notifying you of errors before you build. This greatly reduces the number of times you need to build your project during development.
- Project builder with dependency tracking - The IDE saves you time even when you *do* have to build your project: by using sbt's engine for tracking dependencies between source files (and even between dependent projects), the IDE builds only the necessary sources. This is often many fewer than all the source files in your project.
- Definition Hyperlinking - Ctrl-click on an identifier to navigate to its definition. This allows you to concentrate on your program, since you don't need to remember in what source file a certain definition lies. Try it out by surfing through the Scala collection library!
- Content assist - Hit Ctrl-space to see a list of all members you could invoke at a certain point in your program. Even members added through *implicit* conversions are available. Moreover, you can find any class on your classpath, even if it hasn't been imported in your file yet (and the completion engine takes care of adding the import).
- Inferred type hovers - Hover with the mouse over an identifier to see its type. This comes in handy when the compiler infers a different type than what you expect.
And there is more! Check out the full list of features, and download Scala IDE 2.0 today at www.scala-ide.org.