Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
research:plomo [2013/09/20 12:41] mdenkerresearch:plomo [2013/09/21 12:04] (current) – [Other Achievements] stef
Line 57: Line 57:
  
 ==== Work Package One Achievements: Opal Open Compiler Infrastructure ==== ==== Work Package One Achievements: Opal Open Compiler Infrastructure ====
-Opal has been further developed, debugged and released. Opal has been integrated as the new compiler for Pharo. It is stable, robust and is the new compiler for day to day development in Pharo3.0. Opal provides the basis needed for building new layers such as advanced reflective model [Bera13a].  +The compiler framework was used  to build a type system for Pharo: Gradualtalk [Alle13a]. A gradually-typed Smalltalk allows one to enable incremental typing of existing programs. The main design goal of the type system is to support the features of the Smalltalk language, like metaclasses and blocks, live programming, and to accommodate the programming idioms used in practice. We studied a number of existing projects in order to determine the features to include in the type system. As a result, Gradualtalk is a practical approach to gradual types in Smalltalk, with a novel blend of type system features that accommodate most programming idioms. 
-The work consisted to develop + 
-  - a new compiler tool chain with differents phase including the definition of a new IR representation, +In the context of the Gradualtalk type system, we have further developed, debugged and released the compiler framework. Opal has been integrated as the new compiler for Pharo [Bera13a]. It is stable, robust and is the new default compiler for day to day development in Pharo3. Opal provides the basis for many new features in Pharo3 and provides a new foundation for building new layers such as an 
-  - several analyses to generate byte codes, +advanced reflective model. 
-  - handle the introduction of full closures and    + 
-  - handling the mapping between bytecode - IR - AST to support debugging+Opal solves three main problems of the old compiler infrastructure: 
-In essence this work does not move forward the state of the art in compiler technology however it is crucial because it provides the fundamentals that are required to build a new generation of reflective systems. Such reflective systems are keys to support tools (profilers) and new language design (AOP, proxies, isolation). We are now in a position to perform a new iteration on the reflective layer and metaobject protocol we want to design. In 2005 we started to develop new reflective foundations and we learned a lot (partial reflection, metalevel recursion handling, object-centric on the fly propagation, proxies). We are now in a situation to step back and redesign the reflective layer based on all the case we identified and developed.+  - The architecture is not reusable 
 +  - compiler can not be parametrized  
 +  - the mapping between source code and bytecode is overly complex 
 + 
 +In essence the work on the compiler framework does not move forward the state of the art in compiler technology however it has already been proven to be a crucial building block. It provides the fundamentals for many research experiments and new features for Pharo. The work on the type system is one example, others are the many new features of Pharo3 that use parts of the new compiler chain, like AST based navigation in the editor or breakpoints. 
 + 
 +The Opal flexible compiler infrastructure will allow us to build a new generation of reflective systems. Such reflective systems are keys to support tools (profilers) and new language design (AOP, proxies, isolation). We are now in a position to perform a new iteration on the reflective layer and metaobject protocol for Pharo. In 2005 we started to develop new reflective foundations and we learned a lot (partial reflection, metalevel recursion handling, object-centric on the fly propagation, proxies). We are now in a situation to step back and redesign the reflective layer based on all the cases we identified and developed. 
  
 ==== Work Package Two Achievements: A Domain-Specific Language for Change and Event Tracking ==== ==== Work Package Two Achievements: A Domain-Specific Language for Change and Event Tracking ====
Line 69: Line 75:
 We developed EPICEA a new model of changes and an implementation representing all the changes made during development [Dias13a] - By changes we mean: method, class, package definition, modification, removal but also new coding session, refactorings ... It is the basis for a large number of analyses (cherry picking, code review support, replay of sequences, code recovering, browsing in the past) and tools that we will build around change management. In particular EPICEA will be extended to support branch merging and propose new analyses to help developer taking merging decisions. We developed EPICEA a new model of changes and an implementation representing all the changes made during development [Dias13a] - By changes we mean: method, class, package definition, modification, removal but also new coding session, refactorings ... It is the basis for a large number of analyses (cherry picking, code review support, replay of sequences, code recovering, browsing in the past) and tools that we will build around change management. In particular EPICEA will be extended to support branch merging and propose new analyses to help developer taking merging decisions.
  
-Complimentary to that, we developed DIE, a Domain-Specific Aspect Language that provides a set of domain-specific abstractions for building plug-ins to a development environment. It allows tool builders to declare event handlers in a concise and homogeneous way, allowing IDE extensions and tools to express interest in different streams of events seamlessly, with a consistent syntax regardless of the source of the event. +Complementary to that, we developed DIE, a Domain-Specific Aspect Language that provides a set of domain-specific abstractions for building plug-ins to a development environment. It allows tool builders to declare event handlers in a concise and homogeneous way, allowing IDE extensions and tools to express interest in different streams of events seamlessly, with a consistent syntax regardless of the source of the event. 
   
  
 ==== Work Package Three Achievements: Mondrian 2 ==== ==== Work Package Three Achievements: Mondrian 2 ====
  
-Mondrian 2 has been renamed "ROASSAL". Roassal is a visualization engine working on 4 different platforms (PharoVisualWorks, Amber, VASmalltalk). Roassal has been adopted by several companies located in Europe, Australia and North AmericaMaintenance of Roassal and porting effort are supported by Object Profile+Over the last 3 years we have developed Roassal, an agile visualization engine. We have dropped the name Mondrian 2 in favor of Roassal. 
 +Roassal is made to visualize and interact with arbitrary datadefined in terms of objects and their relationshipsRoassal is commonly employed to produce interactive visualizations. The range of applications using Roassal is diverse. For example, the Moose community uses Roassal to visualize software.
  
-The book //Deep Into Pharo// contains two chapters about Roassal.+Roassal is a visualization engine working on 4 different platforms (Pharo, VisualWorks, Amber, VASmalltalk). Roassal has been adopted by several companies (such as LAM http://www.lamrc.com) located in Europe, Australia and North America. Maintenance of Roassal and porting efforts are supported by Object Profile. Roassal is a key element of the Moose open-source analysis platform developed by RMOD and the synectique company (http://www.synectique.eu) spinoff of RMOD.
  
 +Roassal is an engine used by several research group worldwide (RMOD, IRC (FR), SCG (CH), Reveal (CH),...) and the foundations of several research publications (profiler, memory manager, program visualizations,...).
 +
 +The book //Deep Into Pharo// contains two chapters about Roassal.
  
 ==== Work Package Four Achievements: New Profiling Approaches ==== ==== Work Package Four Achievements: New Profiling Approaches ====
  
-Profiling techniques have been co-developed by RMoD and Pleiad. Execution blueprint is new visual representation of a program executionThe blueprint is effective at easily identifying by highlighting performance variations+Profiling techniques have been co-developed by RMoD and Pleiad.  
 +Understanding the root of performance drop or improvement requires analyzing different program executions at a fine grain level. Such an analysis involves dedicated profiling and representation techniques. JProfiler and YourKit, two recognized code profilers fail, on both providing adequate metrics and visual representations, conveying a false sense of the performance variation root. 
 + 
 +We propose performance evolution blueprint, visual support to precisely compare multiple software executionsOur blueprint is offered by Rizel, a code profiler to efficiently explore performance of a set of benchmarks against multiple software revisions.
  
  
Line 105: Line 118:
   *  Faster MSE import.   *  Faster MSE import.
  
-We participated to the new release of Pharo 2.0 and Pharo 3.0+We participated to the new release of Pharo 1.4 and 2.0 and are actively developing Pharo3 (http://pharo-project.org). The speed of Pharo development is increasing with each versionFor Pharo2, a list of changes can be found on the [[http://code.google.com/p/pharo/wiki/ActionsInPharo20|website]]. 
 +PLOMO members contributed many smaller and larger improvements found while doing the research work described in this report. When visiting, PLOMO members take care to organize Pharo Sprints, open meetings focussed on fixing bugs and integrating features. 
 + 
 +A small example for how PLOMO directly contributed can be seen with the type system work. While type-checking the code of the Pharo system, a number of problems where detected. Examples where dead code, wrong inheritance relationships between classes and others. All these problems have been fixed in Pharo2. 
 + 
 +For Pharo3, PLOMO contributed in a major way: the Opal Compiler replaced the old default compiler infrastructure.
  
  
Line 118: Line 136:
   - Enhanced Opal to support type annotations. Opal is developed and maintained by RMoD.   - Enhanced Opal to support type annotations. Opal is developed and maintained by RMoD.
   - [[http://objectprofile.com|ObjectProfile]] is a new company based in Chile. Its business plan is essentially focused on Pharo and Roassal.    - [[http://objectprofile.com|ObjectProfile]] is a new company based in Chile. Its business plan is essentially focused on Pharo and Roassal. 
 +  - Released Pharo 1.3 (http://www.pharo.org)
 +
  
 === 2012 === === 2012 ===
Line 135: Line 155:
   - Paper: “How (and Why) Developers Use the Dynamic Features of Programming Languages: The Case of Smalltalk”,
O. Calláu, R. Robbes, É. Tanter, D. Röthlisberger — EMSE, in press
Empirical Software Engineering (Springer)   - Paper: “How (and Why) Developers Use the Dynamic Features of Programming Languages: The Case of Smalltalk”,
O. Calláu, R. Robbes, É. Tanter, D. Röthlisberger — EMSE, in press
Empirical Software Engineering (Springer)
   - Paper: “Extensions during Software Evolution: Do Objects Meet Their Promise? ”,
R. Robbes, D. Röthlisberger, É. Tanter — ECOOP 2012, 26th European Conference on Object-Oriented Programming   - Paper: “Extensions during Software Evolution: Do Objects Meet Their Promise? ”,
R. Robbes, D. Röthlisberger, É. Tanter — ECOOP 2012, 26th European Conference on Object-Oriented Programming
 +  - Released Pharo 1.4 (http://www.pharo.org)
 +
  
  
Line 144: Line 166:
   - Participated to Moose 4.8 release (http://www.moosetechnology.org).   - Participated to Moose 4.8 release (http://www.moosetechnology.org).
   - Released Pharo 2.0 (http://www.pharo.org)   - Released Pharo 2.0 (http://www.pharo.org)
 +  - Integrated the Opal Compiler in the Pharo3 development branch.
 +
  
 === Supervised PhD students === === Supervised PhD students ===
  
-  - Vanessa Peña, PhD student Universidad de Chile. She is working on test coverage and domain specific analyses+  - Juraj Kubelka, PhD student Universidad de Chile.
   - Juan Pablo Sandoval, PhD student Universidad de Chile.   - Juan Pablo Sandoval, PhD student Universidad de Chile.
   - Martin Dias, PhD student, RMoD, Inria.   - Martin Dias, PhD student, RMoD, Inria.
Line 153: Line 177:
 === Startups Using our Results === === Startups Using our Results ===
  
-  - [[http://www.synectique.eu|Synectique]] is a company delivering dedicated software analysis. Synectique uses Roassal to visually report the analysis of customer source code. The founding process started in 2012, and is expected to be finished in 2013.+  - [[http://www.synectique.eu|Synectique]] is a company delivering dedicated software analyses. Synectique uses Roassal to visually report customer source code analysis. The founding process started in 2012, and the company was created in June 2013.
   - [[http://objectprofile.com|ObjectProfile]] was founded in 2011 in Chile. Its business plan is essentially focused on Pharo and Roassal. Object Profile offers support of its products to RMoD and Synectique. A number of features of Roassal have been designed to meet Synectique's requirements (e.g., the navigation and scrolling options).   - [[http://objectprofile.com|ObjectProfile]] was founded in 2011 in Chile. Its business plan is essentially focused on Pharo and Roassal. Object Profile offers support of its products to RMoD and Synectique. A number of features of Roassal have been designed to meet Synectique's requirements (e.g., the navigation and scrolling options).
 ===== Research Visits  ===== ===== Research Visits  =====
Line 167: Line 191:
  
 == From PLEIAD to RMoD == == From PLEIAD to RMoD ==
-  * Vanessa Peña and Alexandre Bergel, Aug 15 until Aug 20, 2011. From Aug 20 until Aug 28 they attended [[ESUG|http://www.esug.org/wiki/pier/Conferences/2011]], a conference co-organized by RMoD. The topic of this research visit is test coverage and software visualization. Result of the research activity on software visualization and code profiling have been presented at ESUG. +  * Vanessa Peña and Alexandre Bergel, Aug 15 until Aug 20, 2011. From Aug 20 until Aug 28 they attended [[http://www.esug.org/wiki/pier/Conferences/2011/|ESUG]], a conference co-organized by RMoD. The topic of this research visit is test coverage and software visualization. Result of the research activity on software visualization and code profiling have been presented at ESUG. 
   * Romain Robbes from July 18 until July 24, 2011. Partially funded by Pleiad.   * Romain Robbes from July 18 until July 24, 2011. Partially funded by Pleiad.
   * Esteban Allende from July 19 until October 2, 2011. Esteban's stay was partially funded by the French Embassy in Chile.    * Esteban Allende from July 19 until October 2, 2011. Esteban's stay was partially funded by the French Embassy in Chile. 
Line 206: Line 230:
 === 2012 === === 2012 ===
   * Johan Fabry, Andy Kellens, Simon Denier and Stéphane Ducasse.  //AspectMaps: Extending Moose to Visualize AOP Software//, In Elsevier Science of Computer Programming, Special issue on Experimental Software Toolkits, 2012. [[http://dx.doi.org/10.1016/j.scico.2012.02.007]]   * Johan Fabry, Andy Kellens, Simon Denier and Stéphane Ducasse.  //AspectMaps: Extending Moose to Visualize AOP Software//, In Elsevier Science of Computer Programming, Special issue on Experimental Software Toolkits, 2012. [[http://dx.doi.org/10.1016/j.scico.2012.02.007]]
-  * Benjamin Van Ryseghem, Stéphane Ducasse, Johan Fabry, //Spec: a Framework for the Specification and Reuse of UIs and their Models//  In Proceedings of the 4th International Workshop on Smalltalk Technologies (IWST'12), Collocated with ESUG, August 2012. ACM Digital Library[[http://dx.doi.org/10.1145/2448963.2448965]]+  * Benjamin Van Ryseghem, Stéphane Ducasse, Johan Fabry, //Spec: a Framework for the Specification and Reuse of UIs and their Models//  In Proceedings of the 4th International Workshop on Smalltalk Technologies (IWST'12), Collocated with ESUG, August 2012. ACM Digital Library [[http://dx.doi.org/10.1145/2448963.2448965]]
   * Juan Pablo Sandoval, //Tracking Down Software Changes Responsible for Performance Loss//In Proceedings of the 4th International Workshop on Smalltalk Technologies (IWST'12), Collocated with ESUG, August 2012. ACM Digital Library [[http://dx.doi.org/10.1145/2448963.2448966]]   * Juan Pablo Sandoval, //Tracking Down Software Changes Responsible for Performance Loss//In Proceedings of the 4th International Workshop on Smalltalk Technologies (IWST'12), Collocated with ESUG, August 2012. ACM Digital Library [[http://dx.doi.org/10.1145/2448963.2448966]]
  
Line 217: Line 241:
   * Clément Béra and Marcus Denker, Towards a flexible Pharo Compiler,  in International Workshop on Smalltalk Technologies, 2013. [[http://rmod.lille.inria.fr/web/pier/publications/bib?&query=Bera13a|online]]   * Clément Béra and Marcus Denker, Towards a flexible Pharo Compiler,  in International Workshop on Smalltalk Technologies, 2013. [[http://rmod.lille.inria.fr/web/pier/publications/bib?&query=Bera13a|online]]
  
-=== In the pipeline ===+=== In Preparation and Under Review === 
   * Romain Robbes, Johan Fabry, Marcus Denker, //DIE: A Domain Specific Aspect Language for IDE Events//, accepted with major revision at Journal of Universal Computer Science.   * Romain Robbes, Johan Fabry, Marcus Denker, //DIE: A Domain Specific Aspect Language for IDE Events//, accepted with major revision at Journal of Universal Computer Science.
-  * Benjamin Van Ryseghem, Stéphane Ducasse, Johan Fabry, Alain Plantec //Seamless reuse of customizable user interfaces with Spec//, Elsevier Science of Computer Programs, in preparation+  * Benjamin Van Ryseghem, Stéphane Ducasse, Johan Fabry, Alain Plantec //Seamless reuse of customizable user interfaces with Spec//, accepted with minor revisions in Elsevier Science of Computer Programs.
   * Romain Robbes, Damien Pollet, Michele Lanza, //Improving change prediction by replaying fine-grained development histories//, In preparation.   * Romain Robbes, Damien Pollet, Michele Lanza, //Improving change prediction by replaying fine-grained development histories//, In preparation.