SlideShare una empresa de Scribd logo
1 de 25
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

Más contenido relacionado

La actualidad más candente

Database Build and Release - SQL In The City - Ernest Hwang
Database Build and Release - SQL In The City - Ernest HwangDatabase Build and Release - SQL In The City - Ernest Hwang
Database Build and Release - SQL In The City - Ernest Hwang
Red Gate Software
 
Continuous Integration with Mozmill
Continuous Integration with MozmillContinuous Integration with Mozmill
Continuous Integration with Mozmill
Henrik Skupin
 

La actualidad más candente (20)

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

Similar a Eclipse IDE for Scala (2.9 story)

Ruby on-rails-101-presentation-slides-for-a-five-day-introductory-course-1194...
Ruby on-rails-101-presentation-slides-for-a-five-day-introductory-course-1194...Ruby on-rails-101-presentation-slides-for-a-five-day-introductory-course-1194...
Ruby on-rails-101-presentation-slides-for-a-five-day-introductory-course-1194...
Nilesh Panchal
 
Polyglot Plugin Programming
Polyglot Plugin ProgrammingPolyglot Plugin Programming
Polyglot Plugin Programming
Atlassian
 

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

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

Último

Último (20)

What's New in Teams Calling, Meetings and Devices April 2024
What's New in Teams Calling, Meetings and Devices April 2024What's New in Teams Calling, Meetings and Devices April 2024
What's New in Teams Calling, Meetings and Devices April 2024
 
Overview of Hyperledger Foundation
Overview of Hyperledger FoundationOverview of Hyperledger Foundation
Overview of Hyperledger Foundation
 
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
 
The Metaverse: Are We There Yet?
The  Metaverse:    Are   We  There  Yet?The  Metaverse:    Are   We  There  Yet?
The Metaverse: Are We There Yet?
 
Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024
 
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdfHow Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
 
BT & Neo4j _ How Knowledge Graphs help BT deliver Digital Transformation.pptx
BT & Neo4j _ How Knowledge Graphs help BT deliver Digital Transformation.pptxBT & Neo4j _ How Knowledge Graphs help BT deliver Digital Transformation.pptx
BT & Neo4j _ How Knowledge Graphs help BT deliver Digital Transformation.pptx
 
Intro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджераIntro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджера
 
Long journey of Ruby Standard library at RubyKaigi 2024
Long journey of Ruby Standard library at RubyKaigi 2024Long journey of Ruby Standard library at RubyKaigi 2024
Long journey of Ruby Standard library at RubyKaigi 2024
 
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
 
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
 
Microsoft CSP Briefing Pre-Engagement - Questionnaire
Microsoft CSP Briefing Pre-Engagement - QuestionnaireMicrosoft CSP Briefing Pre-Engagement - Questionnaire
Microsoft CSP Briefing Pre-Engagement - Questionnaire
 
Working together SRE & Platform Engineering
Working together SRE & Platform EngineeringWorking together SRE & Platform Engineering
Working together SRE & Platform Engineering
 
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdfLinux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
 
Oauth 2.0 Introduction and Flows with MuleSoft
Oauth 2.0 Introduction and Flows with MuleSoftOauth 2.0 Introduction and Flows with MuleSoft
Oauth 2.0 Introduction and Flows with MuleSoft
 
Designing for Hardware Accessibility at Comcast
Designing for Hardware Accessibility at ComcastDesigning for Hardware Accessibility at Comcast
Designing for Hardware Accessibility at Comcast
 
AI presentation and introduction - Retrieval Augmented Generation RAG 101
AI presentation and introduction - Retrieval Augmented Generation RAG 101AI presentation and introduction - Retrieval Augmented Generation RAG 101
AI presentation and introduction - Retrieval Augmented Generation RAG 101
 
Powerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara LaskowskaPowerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara Laskowska
 
ECS 2024 Teams Premium - Pretty Secure
ECS 2024   Teams Premium - Pretty SecureECS 2024   Teams Premium - Pretty Secure
ECS 2024 Teams Premium - Pretty Secure
 
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
 

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

Notas del editor

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n