Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

A Taste of Pharo 7.0

664 vues

Publié le

First Name: Stephane
Last Name: Ducasse
Video: https://youtu.be/OGkGgx4iymM
Title: A Taste for Pharo 70

In this talk I will present the roadmap for Pharo 70.
- support for Undefined Classes
- Class Parser
- new class definition
- support for namespace (not namespace) modules.
- ...

Bio:

Stéphane is directeur de recherche at Inria. He leads the RMoD
(http://rmod.lille.inria.fr) team. He is expert in two domains:
object-oriented language design and reengineering. He worked on
traits, composable groups of methods. Traits have been introduced in Pharo, Perl, PHP and under a variant into Scala and Fortress. He is also expert on software quality, program understanding, program
visualisations, reengineering and metamodeling. He is one of the
developer of Moose, an open-source software analysis platform
http://www.moosetechnology.org/. He created http://www.synectique.eu/
a company building dedicated tools for advanced software analyses. He
is one of the leader of Pharo (http://www.pharo.org/) a dynamic
reflective object-oriented language supporting live programming. The
objective of Pharo is to create an ecosystem where innovation and
business bloom. He wrote several books such as Functional Programming
in Scheme, Pharo by Example, Deep into Pharo, Object-oriented
Reengineering Patterns, Dynamic web development with Seaside.
According to google his h-index is 51 for more than 11000
citations. He would like to thanks all the researchers making
reference to his work!

Publié dans : Logiciels
  • Soyez le premier à aimer ceci

A Taste of Pharo 7.0

  1. 1. Pharo 70/80 kind of Roadmap: The key challenges and first achievements S. Ducasse RMoD Clément Béra Pharo Consortium
  2. 2. Roadmap • Tools • Cleaning and Improvements • Language infrastructure • System enhancements • VMs
  3. 3. Iceberg • New tool suite to handle modern VCS (Git for now) in Pharo. • More than just putting files in Git! • Central to the development of projects. • The key and first enhancements: • [ Done ] cherry picking • Multiple directories support • Better new development process support
  4. 4. Iceberg • Paid by the consortium • libgit2
  5. 5. Iceberg • Potentially for • Fossil • Mercurial
  6. 6. Exposure on github
  7. 7. Nautilus
  8. 8. Calypso
  9. 9. Calypso & its submarines
  10. 10. Calypso • Basis for Remote Browsing • Fully extensible • No ifs and extensible • Developed by D. Kudriashov for TelePharo (PharmIDE) • Thanks A. Plantec for giving us the name
  11. 11. Calypso • Multiple panes • Multiple method definitions • Incomplete method definitions • Scoping…
  12. 12. Calypso • mulitple panes • multiple method definitions • incomplete method definitions • scoping…
  13. 13. New Message Browser
  14. 14. Bootstrap for REAL • Pharo 70alpha starts from nothing :) • There is an EMPTY Image • Creates a bootstrapped kernel • Loads the compiler! • Loads Metacello! • Loads the rest
  15. 15. Hermes: Binary loader a code loader that does not require the compiler to be loaded. It is used to speed up the bootstrap.
  16. 16. Beacon Logger • Powerful announcement-based logger • Clean the left over of previous logging • Remove many of the transcript show:
  17. 17. GTInspector Enh • Refreshing back in place • Another pass at pane
  18. 18. Cargo/Metacello • Cargo: a new package manager. • It supports the expression of dependencies between packages. • We are currently validating that it can support conditional loading (platform) and building new tooling to express and validate data.
  19. 19. Refactoring 2 • Refactoring 2 is an improved version of Refactorings developed by Gustavos Santos • Should used to replace the existing one
  20. 20. Taking advantage of dependency analyser Used before committing to warn the user when a new dependency is introduced in a package.
  21. 21. Roadmap • Tools • Cleaning and Improvements • Language infrastructure • System enhancements • VMs
  22. 22. Cleaning • Nautilus retirement • Remove old text editor • Remove Komitter: Iceberg already supports cherrypicking • Remove system categorizer: old system categorizer is not used anymore
  23. 23. Cleaning • Old compiler removal: The old compiler should now get unloaded from Pharo. • The old compiler should be moved to an external package and make sure that it can be reloaded. • Encoders are split and repackaged
  24. 24. Old Inspector • Remove the eyeInspector framework • But introduce a minimal fallback inspector • This inspector should work without Spec or any frameworks
  25. 25. Clean behavior API • Number of methods in the core Behavior, ClassDescription and Class requires some analysis and cleaning
  26. 26. Kernel modularisation effort • Continuous • Kind of our DNA :)
  27. 27. Roadmap • Tools • Cleaning and Improvements • Language infrastructure • System enhancements • VMs
  28. 28. About classes
  29. 29. Class definition explosion • subclass:, variableSubclass:, variableByte.. variableWord, weak: • uses: • layout: • tag: • immediate:, ephemeron • category: • package: • slot: • instanceVariableNames:, classVariableNames:
  30. 30. Need a fluid API • Only specify what is used! • No empty classVariableNames: ‘’ • Handling combinatorial explosion Class <<< #Box vars: { #width . #height }; package: #MyPackage.
  31. 31. Possible Designs Class { superclass: #MySuperclass; uses: #MyTrait; vars: { #a. #b }; classVars: { #A. #B }; package: #MyPackage; tags: #(Core). } Class <<< #MyClass superclass: #MySuperclas; uses: #MyTrait; vars: { #a. #b }; classVars: { #A. #B }; package: #MyPackage; tags: #(Core)
  32. 32. Need a class **definition** • a.k.a. AST • traits, slots, kinds…. • Can be manipulated • Support for Smart Suggestions • Need to be able to have **undefined** classes • Important for modules!
  33. 33. Working on a “ClassParser” + Nodes • Can handle variations, backward compatibles…. • Support for smart suggestion in class definition • Avoid ‘*subclass:*’ matches: str
  34. 34. Undefined classes • How to support loading and managing classes with an unknown superclass? • Important to load broken code • Important for Modules in live environment
  35. 35. Undefined classes • Pendant of Undeclared • Read the paper :) • Support for Module systems
  36. 36. Opal • Warnings into real objects • Another pass on the API
  37. 37. Updater • Atomic loader P. Tesone • Modular class builder
  38. 38. Ring2 • Ring: modeling a program • Pavel Krivanek rewrote Ring • Infrastructure to build tools to manipulate kernels
  39. 39. Roadmap • Tools • Cleaning and Improvements • Language infrastructure • System enhancements • VMs
  40. 40. CommandLine • Clap new command line library • Scripting :) • Headless :)
  41. 41. Cleaning Streams • Make sure that the system does not use the old streams but the FileStream and ZincDecorator • Split Stream package
  42. 42. Theme/widgets • New theme from the beginning • Better themes/palettes support • Better and nicer Tabs. Tabs design should be revisited.
  43. 43. Use OSWindow • Remove the logic of the windowing/shortcut from the VM should be continued • OSWindow should be used instead
  44. 44. Killing Freetype Plugins • Current freetype plugin is the source of many bugs and problems • Check work of Raffaillac to use UFFI to do direct call to openGL
  45. 45. Roadmap • Tools • Cleaning and Improvements • Language infrastructure • System enhancements • VMs
  46. 46. 64 bits • Mac and Linux 64 bits VMs stable since Pharo 6 • Since June 2017, Windows 64 bits support • 64 bits as the new standard • Stabilise each part of Pharo dependent • Default releases in 64 bits Thanks to Eliot Miranda and Nicolas Cellier
  47. 47. Headless VM • Merge headless VM from Ronie Salgado’s branch • True headless mode (not with a hidden window) • Enable/Ease future work (embeddable VM, etc.)
  48. 48. Embeddable VM (P8?) • VM embedded in external applications • The application can access objects
  49. 49. Idle / Event-driven VM (P8?) • Increase VM responsiveness • Avoid couple per-cent cpu time wasted by active waiting loop when Pharo does nothing
  50. 50. Android VM (P8?) Integration of the Android VM build and tests in the integration setup. Future work with Event-driven VM
  51. 51. Threaded FFI All FFI calls should be non-blocking
  52. 52. Large heaps Incremental GC: Avoiding long pauses GC tuning API
  53. 53. Retina High resolution display Retina resolution display
  54. 54. Sista preview • First version integrated • 1.5x performance boost • Readable code as fast as performant code • Optional VM: specific constraints • Partial IDE support, literal mutability support, …
  55. 55. Improved block closure • Provides support for byte code compiler copying and clean block optimisations • Reduce complexity of some parts of the JIT Some work remains in IDE support.
  56. 56. Improved bytecode set • Eases bytecode decoding • Lifts compiled code limitations (size of jumps, etc.) • Required for the Sista support Some work remains in debugging support.
  57. 57. Read-Only objects • Work in Pharo 6 • In-image support needs to be improved (fall- back code of primitives, etc.) • Some polishing needs to be done (primitive error code not always correct, etc.)
  58. 58. Literal immutability • Removes hard-to-find errors • Enable compiler optimisations An analysis of the image usage of literal (string mutation, Large Integer mutation) is needed
  59. 59. Pharo 70 is exciting We are excited by the possibilities You can help, contribute and have fun with us

×