SlideShare a Scribd company logo
Eclipse IDE for Scala
       the 2.9 story




                       Iulian Dragos
             1
Credits
2
Eugene Vigdorchik
Miles Sabin




                     Martin Odersky




                                                          Hubert Plociniczak
  Mirko Stocker




                                          and many more: Matt Russell, Josh Suereth,
                  David Bernard
                                      3
                                               Daniel Ratiu, Donna Malayeri..
Goals
• work with large projects/files
 • Scala compiler (80k LOC), 4-5000 LOC/file
 • advanced use of the type system
   • path-dependent types, self-types, mix-ins
• reliable (no crashes/lock ups)
• responsive (never wait when typing)
                      4
Howto?
• mixed team with compiler and IDE expertise
• ScalaSolutions/Typesafe involvement started
  around September 2010
  • Martin, Eugene and Iulian
• branch ‘wip_experiment’ in the scala-ide
  repo


                     5
• use the full-blown Scala compiler for:
 • interactive error highlight, completion,
    hyperlinking

  • turning Scala symbols into Java model
    elements



                      6
• Why?
 • reuse (type-checker == 1-2 person years)
 • consistency
• Why not?
 • SPEED
 • (no) support for different Scala versions
                     7
Presentation
     Compiler
8
• asynchronous
• interruptible
• targeted
• stop after type-checking

                     9
Presentation Compiler                Eclipse Threads
       Thread

                        Work Queue


                        AskTypeAt




                             10
Presentation Compiler                Eclipse Threads
       Thread

                        Work Queue




                             11
Presentation Compiler                       Eclipse Threads
       Thread

                          Work Queue




                        AskTypeCompletion

     AskTypeAt                 ...




                                12
Presentation Compiler                       Eclipse Threads
        Thread

                           Work Queue




                         AskTypeCompletion

      AskTypeAt                 ...




Result is communicated through a SyncVar
                                 12
• All compiler activity happens on PC thread
• Background compile loaded files when
  work queue is empty

• Check work queue when type checker
  reaches “safe-points” in the AST

• Drop everything when a file is changed
  (AskReload)


                     13
Implementation
14
• 1 type-checker run / instance --> 100s of
  type-check runs / minute

 • memory leaks
 • side-effects/state
 • out-of-order and targeted type-checking

                     15
• compiler changes needed
 • 2.9 compiler has them
 • what about 2.8?
   • David Bernard ‘backports’
   • 2.8.2 preview available now!

                    16
Goals, again


• Reliability, responsiveness over features
• Create a solid foundation for adding
  features




                     17
Versions
• wip_experiment
 • feature freeze, focus on getting the basics
    right
• wip_exp_backports
 • backported many patches
 • new features (SoC - highlight implicits)
                      18
Versioning

                         2.8              2.9


 wip_experiment    2.0.0-beta-28      2.0.0-beta-29


wip_exp_backport   1.0.0-milestones         ?



                         19
20
     Roadmap
• MERGE the two code bases
 • add features on the solid 2.x base



                     21
• 2.0 final release
 • SBT-based builder/SBT console
 • REPL improvements
 • Find References
 • better testing
 • sketch a Scala tools API

                   22
• 2.1
 • Scala aware debugger
 • scalatest/specs integration
 • Better refactoring


                     23
24

More Related Content

PPTX
How to contribute to an open source project and don’t die during the Code Rev...
PPTX
Road to sbt 1.0 paved with server
PPTX
Validating latest changes with XCI
PPTX
The_Little_Jenkinsfile_That_Could
PDF
Start with Angular framework
PDF
Building machine learning applications locally with Spark — Joel Pinho Lucas ...
PPTX
The Next Generation of Java — Oleksandr Navka
PDF
Backing Data Silo Atack: Alfresco sharding, SOLR for non-flat objects
How to contribute to an open source project and don’t die during the Code Rev...
Road to sbt 1.0 paved with server
Validating latest changes with XCI
The_Little_Jenkinsfile_That_Could
Start with Angular framework
Building machine learning applications locally with Spark — Joel Pinho Lucas ...
The Next Generation of Java — Oleksandr Navka
Backing Data Silo Atack: Alfresco sharding, SOLR for non-flat objects

What's hot (20)

PDF
Raffaele Rialdi
PPTX
DotNext 2017 in Moscow - Challenges of Managing CoreFX repo -- Karel Zikmund
PPTX
What I Learned From Writing a Test Framework (And Why I May Never Write One A...
PPTX
Database automated build and test - SQL In The City Cambridge
PDF
GenRetry: Simple Exponential Backoff in Elixir
PDF
Database Build and Release - SQL In The City - Ernest Hwang
PDF
Java Application Servers Are Dead!
PDF
ELK Stack
PDF
From Virtual Machines to Containers
PDF
Continuous Integration with Mozmill
PDF
Javantura v4 - Support SpringBoot application development lifecycle using Ora...
PDF
Intro to elixir and phoenix
PDF
Rails 5 subjective overview
PPTX
.NET Standard - Introduction
PDF
Jenkins Reviewbot
PPTX
Why Kotlin?
ODP
Developing Microservices using Spring - Beginner's Guide
PDF
Development with JavaFX 9 in JDK 9.0.1
PDF
Javantura v4 - FreeMarker in Spring web - Marin Kalapać
Raffaele Rialdi
DotNext 2017 in Moscow - Challenges of Managing CoreFX repo -- Karel Zikmund
What I Learned From Writing a Test Framework (And Why I May Never Write One A...
Database automated build and test - SQL In The City Cambridge
GenRetry: Simple Exponential Backoff in Elixir
Database Build and Release - SQL In The City - Ernest Hwang
Java Application Servers Are Dead!
ELK Stack
From Virtual Machines to Containers
Continuous Integration with Mozmill
Javantura v4 - Support SpringBoot application development lifecycle using Ora...
Intro to elixir and phoenix
Rails 5 subjective overview
.NET Standard - Introduction
Jenkins Reviewbot
Why Kotlin?
Developing Microservices using Spring - Beginner's Guide
Development with JavaFX 9 in JDK 9.0.1
Javantura v4 - FreeMarker in Spring web - Marin Kalapać
Ad

Similar to Eclipse IDE for Scala (2.9 story) (20)

PDF
Rethinking the debugger
PDF
Scala at Treasure Data
PPT
Evolving IGN’s New APIs with Scala
PDF
Ruby on-rails-101-presentation-slides-for-a-five-day-introductory-course-1194...
PPTX
Containers, Serverless and Functions in a nutshell
PDF
Использование AzureDevOps при разработке микросервисных приложений
PDF
Tips For Maintaining OSS Projects
PPTX
Kafka 0.8.0 Presentation to Atlanta Java User's Group March 2013
PPTX
Scala-Ls1
PPTX
Static analysis of java enterprise applications
PDF
Bootstraping real world Jakarta EE/MicroProfile microservices with Maven Arch...
PPTX
Spark Kernel Talk - Apache Spark Meetup San Francisco (July 2015)
PPTX
Kubernetes Manchester - 6th December 2018
PDF
Martin Odersky: What's next for Scala
PDF
Scala Native: Ahead of Time
PDF
My sql tutorial-oscon-2012
PDF
Queick: A Simple Job Queue System for Python
PDF
Polyglot Plugin Programming
PPTX
A full Machine learning pipeline in Scikit-learn vs in scala-Spark: pros and ...
PDF
Expanding beyond SPL -- More language support in IBM Streams V4.1
Rethinking the debugger
Scala at Treasure Data
Evolving IGN’s New APIs with Scala
Ruby on-rails-101-presentation-slides-for-a-five-day-introductory-course-1194...
Containers, Serverless and Functions in a nutshell
Использование AzureDevOps при разработке микросервисных приложений
Tips For Maintaining OSS Projects
Kafka 0.8.0 Presentation to Atlanta Java User's Group March 2013
Scala-Ls1
Static analysis of java enterprise applications
Bootstraping real world Jakarta EE/MicroProfile microservices with Maven Arch...
Spark Kernel Talk - Apache Spark Meetup San Francisco (July 2015)
Kubernetes Manchester - 6th December 2018
Martin Odersky: What's next for Scala
Scala Native: Ahead of Time
My sql tutorial-oscon-2012
Queick: A Simple Job Queue System for Python
Polyglot Plugin Programming
A full Machine learning pipeline in Scikit-learn vs in scala-Spark: pros and ...
Expanding beyond SPL -- More language support in IBM Streams V4.1
Ad

Recently uploaded (20)

PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
Encapsulation_ Review paper, used for researhc scholars
PPTX
Group 1 Presentation -Planning and Decision Making .pptx
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
Assigned Numbers - 2025 - Bluetooth® Document
PDF
Encapsulation theory and applications.pdf
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PPTX
Spectroscopy.pptx food analysis technology
PPTX
cloud_computing_Infrastucture_as_cloud_p
PPTX
Tartificialntelligence_presentation.pptx
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
NewMind AI Weekly Chronicles - August'25-Week II
PDF
August Patch Tuesday
PDF
Machine learning based COVID-19 study performance prediction
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
A comparative analysis of optical character recognition models for extracting...
PDF
A comparative study of natural language inference in Swahili using monolingua...
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Encapsulation_ Review paper, used for researhc scholars
Group 1 Presentation -Planning and Decision Making .pptx
Diabetes mellitus diagnosis method based random forest with bat algorithm
Network Security Unit 5.pdf for BCA BBA.
Assigned Numbers - 2025 - Bluetooth® Document
Encapsulation theory and applications.pdf
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Spectroscopy.pptx food analysis technology
cloud_computing_Infrastucture_as_cloud_p
Tartificialntelligence_presentation.pptx
Digital-Transformation-Roadmap-for-Companies.pptx
Advanced methodologies resolving dimensionality complications for autism neur...
NewMind AI Weekly Chronicles - August'25-Week II
August Patch Tuesday
Machine learning based COVID-19 study performance prediction
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
A comparative analysis of optical character recognition models for extracting...
A comparative study of natural language inference in Swahili using monolingua...

Eclipse IDE for Scala (2.9 story)

  • 1. Eclipse IDE for Scala the 2.9 story Iulian Dragos 1
  • 3. Eugene Vigdorchik Miles Sabin Martin Odersky Hubert Plociniczak Mirko Stocker and many more: Matt Russell, Josh Suereth, David Bernard 3 Daniel Ratiu, Donna Malayeri..
  • 4. Goals • work with large projects/files • Scala compiler (80k LOC), 4-5000 LOC/file • advanced use of the type system • path-dependent types, self-types, mix-ins • reliable (no crashes/lock ups) • responsive (never wait when typing) 4
  • 5. Howto? • mixed team with compiler and IDE expertise • ScalaSolutions/Typesafe involvement started around September 2010 • Martin, Eugene and Iulian • branch ‘wip_experiment’ in the scala-ide repo 5
  • 6. • use the full-blown Scala compiler for: • interactive error highlight, completion, hyperlinking • turning Scala symbols into Java model elements 6
  • 7. • Why? • reuse (type-checker == 1-2 person years) • consistency • Why not? • SPEED • (no) support for different Scala versions 7
  • 8. Presentation Compiler 8
  • 9. • asynchronous • interruptible • targeted • stop after type-checking 9
  • 10. Presentation Compiler Eclipse Threads Thread Work Queue AskTypeAt 10
  • 11. Presentation Compiler Eclipse Threads Thread Work Queue 11
  • 12. Presentation Compiler Eclipse Threads Thread Work Queue AskTypeCompletion AskTypeAt ... 12
  • 13. Presentation Compiler Eclipse Threads Thread Work Queue AskTypeCompletion AskTypeAt ... Result is communicated through a SyncVar 12
  • 14. • All compiler activity happens on PC thread • Background compile loaded files when work queue is empty • Check work queue when type checker reaches “safe-points” in the AST • Drop everything when a file is changed (AskReload) 13
  • 16. • 1 type-checker run / instance --> 100s of type-check runs / minute • memory leaks • side-effects/state • out-of-order and targeted type-checking 15
  • 17. • compiler changes needed • 2.9 compiler has them • what about 2.8? • David Bernard ‘backports’ • 2.8.2 preview available now! 16
  • 18. Goals, again • Reliability, responsiveness over features • Create a solid foundation for adding features 17
  • 19. Versions • wip_experiment • feature freeze, focus on getting the basics right • wip_exp_backports • backported many patches • new features (SoC - highlight implicits) 18
  • 20. Versioning 2.8 2.9 wip_experiment 2.0.0-beta-28 2.0.0-beta-29 wip_exp_backport 1.0.0-milestones ? 19
  • 21. 20 Roadmap
  • 22. • MERGE the two code bases • add features on the solid 2.x base 21
  • 23. • 2.0 final release • SBT-based builder/SBT console • REPL improvements • Find References • better testing • sketch a Scala tools API 22
  • 24. • 2.1 • Scala aware debugger • scalatest/specs integration • Better refactoring 23
  • 25. 24

Editor's Notes