SlideShare a Scribd company logo
Pharo 70/80 kind of
Roadmap:
The key challenges and
first achievements
S. Ducasse RMoD
Clément Béra Pharo Consortium
Roadmap
• Tools
• Cleaning and Improvements
• Language infrastructure
• System enhancements
• VMs
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
Iceberg
• Paid by the consortium
• libgit2
Iceberg
• Potentially for
• Fossil
• Mercurial
A Taste of Pharo 7.0
Exposure on github
Nautilus
Calypso
Calypso & its submarines
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
Calypso
• Multiple panes
• Multiple method definitions
• Incomplete method definitions
• Scoping…
Calypso
• mulitple panes
• multiple method definitions
• incomplete method definitions
• scoping…
New Message Browser
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
Hermes: Binary loader
a code loader that does not require the compiler
to be loaded. It is used to speed up the
bootstrap.
Beacon Logger
• Powerful announcement-based logger
• Clean the left over of previous logging
• Remove many of the transcript show:
GTInspector Enh
• Refreshing back in place
• Another pass at pane
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.
Refactoring 2
• Refactoring 2 is an improved version of
Refactorings developed by Gustavos Santos
• Should used to replace the existing one
Taking advantage of
dependency analyser
Used before committing to warn the user when a
new dependency is introduced in a package.
Roadmap
• Tools
• Cleaning and Improvements
• Language infrastructure
• System enhancements
• VMs
Cleaning
• Nautilus retirement
• Remove old text editor
• Remove Komitter: Iceberg already supports
cherrypicking
• Remove system categorizer: old system
categorizer is not used anymore
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
Old Inspector
• Remove the eyeInspector framework
• But introduce a minimal fallback inspector
• This inspector should work without Spec or any
frameworks
Clean behavior API
• Number of methods in the core Behavior,
ClassDescription and Class requires some
analysis and cleaning
Kernel modularisation effort
• Continuous
• Kind of our DNA :)
Roadmap
• Tools
• Cleaning and Improvements
• Language infrastructure
• System enhancements
• VMs
About classes
Class definition explosion
• subclass:, variableSubclass:, variableByte.. variableWord, weak:
• uses:
• layout:
• tag:
• immediate:, ephemeron
• category:
• package:
• slot:
• instanceVariableNames:, classVariableNames:
Need a fluid API
• Only specify what is used!
• No empty classVariableNames: ‘’
• Handling combinatorial explosion
Class <<< #Box
vars: { #width . #height };
package: #MyPackage.
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)
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!
Working on a “ClassParser”
+ Nodes
• Can handle variations, backward compatibles….
• Support for smart suggestion in class definition
• Avoid ‘*subclass:*’ matches: str
Undefined classes
• How to support loading and managing classes
with an unknown superclass?
• Important to load broken code
• Important for Modules in live environment
Undefined classes
• Pendant of Undeclared
• Read the paper :)
• Support for Module systems
Opal
• Warnings into real objects
• Another pass on the API
Updater
• Atomic loader P. Tesone
• Modular class builder
Ring2
• Ring: modeling a program
• Pavel Krivanek rewrote Ring
• Infrastructure to build tools to manipulate kernels
Roadmap
• Tools
• Cleaning and Improvements
• Language infrastructure
• System enhancements
• VMs
CommandLine
• Clap new command line library
• Scripting :)
• Headless :)
Cleaning Streams
• Make sure that the system does not use the old
streams but the FileStream and ZincDecorator
• Split Stream package
Theme/widgets
• New theme from the beginning
• Better themes/palettes support
• Better and nicer Tabs. Tabs design should be
revisited.
Use OSWindow
• Remove the logic of the windowing/shortcut from
the VM should be continued
• OSWindow should be used instead
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
Roadmap
• Tools
• Cleaning and Improvements
• Language infrastructure
• System enhancements
• VMs
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
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.)
Embeddable VM (P8?)
• VM embedded in external applications
• The application can access objects
Idle / Event-driven VM (P8?)
• Increase VM responsiveness
• Avoid couple per-cent cpu time wasted by active
waiting loop when Pharo does nothing
Android VM (P8?)
Integration of the Android VM build and tests in the
integration setup.
Future work with Event-driven VM
Threaded FFI
All FFI calls should be non-blocking
Large heaps
Incremental GC: Avoiding long pauses
GC tuning API
Retina
High resolution display
Retina resolution display
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,
…
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.
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.
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.)
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
Pharo 70 is exciting
We are excited by the possibilities
You can help, contribute and have fun with us

More Related Content

PDF
First-Class Undefined Classes for Pharo, From Alternative Designs to a Unifie...
ESUG
 
PDF
Calypso underhood
ESUG
 
PDF
2021.laravelconf.tw.slides1
LiviaLiaoFontech
 
PDF
Polygot Java EE on the GraalVM
Ryan Cuprak
 
PPTX
Kubernetes Internals
Shimi Bandiel
 
PDF
Java SE 9 modules (JPMS) - an introduction
Stephen Colebourne
 
PDF
Testing Spark and Scala
datamantra
 
PDF
Ratpack JVM_MX Meetup February 2016
Domingo Suarez Torres
 
First-Class Undefined Classes for Pharo, From Alternative Designs to a Unifie...
ESUG
 
Calypso underhood
ESUG
 
2021.laravelconf.tw.slides1
LiviaLiaoFontech
 
Polygot Java EE on the GraalVM
Ryan Cuprak
 
Kubernetes Internals
Shimi Bandiel
 
Java SE 9 modules (JPMS) - an introduction
Stephen Colebourne
 
Testing Spark and Scala
datamantra
 
Ratpack JVM_MX Meetup February 2016
Domingo Suarez Torres
 

What's hot (20)

PDF
JavaFX8 TestFX - CDI
Sven Ruppert
 
PPTX
Neodev
Shimi Bandiel
 
PDF
Java 9, JShell, and Modularity
Mohammad Hossein Rimaz
 
PDF
(COSCUP 2015) A Beginner's Journey to Mozilla SpiderMonkey JS Engine
ZongXian Shen
 
PPTX
PowerShell 101 - What is it and Why should YOU Care!
Thomas Lee
 
PPTX
Testing in Scala. Adform Research
Vasil Remeniuk
 
PDF
Foundations of Zend Framework
Adam Culp
 
PPTX
Scala in the Wild
Tomer Gabel
 
PDF
Inria Tech Talk : Comment améliorer la qualité de vos logiciels avec STAMP
Stéphanie Roger
 
PPTX
Utilizing the OpenNTF Domino API
Oliver Busse
 
PPTX
Road to sbt 1.0: Paved with server (2015 Amsterdam)
Eugene Yokota
 
PPTX
Preparing for java 9 modules upload
Ryan Cuprak
 
PPT
Stopping the Rot - Putting Legacy C++ Under Test
Seb Rose
 
PDF
Just enough app server
Antonio Goncalves
 
PDF
Robot framework and selenium2 library
krishantha_samaraweera
 
PDF
Tips and Tricks for Testing Lambda Expressions in Android
David Carver
 
PDF
Developers Testing - Girl Code at bloomon
Ineke Scheffers
 
PPT
Ratpack - Classy and Compact Groovy Web Apps
James Williams
 
PDF
Testing Legacy Rails Apps
Rabble .
 
PDF
cf.Objective() 2017 - Design patterns - Brad Wood
Ortus Solutions, Corp
 
JavaFX8 TestFX - CDI
Sven Ruppert
 
Java 9, JShell, and Modularity
Mohammad Hossein Rimaz
 
(COSCUP 2015) A Beginner's Journey to Mozilla SpiderMonkey JS Engine
ZongXian Shen
 
PowerShell 101 - What is it and Why should YOU Care!
Thomas Lee
 
Testing in Scala. Adform Research
Vasil Remeniuk
 
Foundations of Zend Framework
Adam Culp
 
Scala in the Wild
Tomer Gabel
 
Inria Tech Talk : Comment améliorer la qualité de vos logiciels avec STAMP
Stéphanie Roger
 
Utilizing the OpenNTF Domino API
Oliver Busse
 
Road to sbt 1.0: Paved with server (2015 Amsterdam)
Eugene Yokota
 
Preparing for java 9 modules upload
Ryan Cuprak
 
Stopping the Rot - Putting Legacy C++ Under Test
Seb Rose
 
Just enough app server
Antonio Goncalves
 
Robot framework and selenium2 library
krishantha_samaraweera
 
Tips and Tricks for Testing Lambda Expressions in Android
David Carver
 
Developers Testing - Girl Code at bloomon
Ineke Scheffers
 
Ratpack - Classy and Compact Groovy Web Apps
James Williams
 
Testing Legacy Rails Apps
Rabble .
 
cf.Objective() 2017 - Design patterns - Brad Wood
Ortus Solutions, Corp
 
Ad

Similar to A Taste of Pharo 7.0 (20)

PDF
Pharo 10 and beyond
ESUG
 
PPTX
Symfony2 for legacy app rejuvenation: the eZ Publish case study
Gaetano Giunta
 
PPTX
virtualization-vs-containerization-paas
rajdeep
 
PPTX
Habitat talk at CodeMonsters Sofia, Bulgaria Nov 27 2018
Mandi Walls
 
PPTX
Fluo CICD OpenStack Summit
Miguel Zuniga
 
KEY
Portable infrastructure with puppet
lkanies
 
PDF
Continuous Delivery the Hard Way with Kubernetes
Weaveworks
 
PDF
Versioning for Developers
Michelangelo van Dam
 
PDF
321 codeincontainer brewbox
Lino Telera
 
PPTX
Write Once and REALLY Run Anywhere | OpenStack Summit HK 2013
dotCloud
 
PDF
stackconf 2020 | Replace your Docker based Containers with Cri-o Kata Contain...
NETWAYS
 
PPTX
The Art and Zen of Managing Nagios With Puppet
Mike Merideth
 
PPTX
Intro Docker october 2013
dotCloud
 
PDF
Cloudsolutionday 2016: DevOps workflow with Docker on AWS
AWS Vietnam Community
 
PDF
Zephyr Introduction - Nordic Webinar - Sept. 24.pdf
AswathRangaraj1
 
PDF
Continuous Delivery the hard way with Kubernetes
Luke Marsden
 
PPTX
Docker for the enterprise
Bert Poller
 
PPTX
Kubernetes Manchester - 6th December 2018
David Stockton
 
PDF
StarlingX - A Platform for the Distributed Edge | Ildiko Vancsa
Vietnam Open Infrastructure User Group
 
PPTX
Tuenti Release Workflow
Tuenti
 
Pharo 10 and beyond
ESUG
 
Symfony2 for legacy app rejuvenation: the eZ Publish case study
Gaetano Giunta
 
virtualization-vs-containerization-paas
rajdeep
 
Habitat talk at CodeMonsters Sofia, Bulgaria Nov 27 2018
Mandi Walls
 
Fluo CICD OpenStack Summit
Miguel Zuniga
 
Portable infrastructure with puppet
lkanies
 
Continuous Delivery the Hard Way with Kubernetes
Weaveworks
 
Versioning for Developers
Michelangelo van Dam
 
321 codeincontainer brewbox
Lino Telera
 
Write Once and REALLY Run Anywhere | OpenStack Summit HK 2013
dotCloud
 
stackconf 2020 | Replace your Docker based Containers with Cri-o Kata Contain...
NETWAYS
 
The Art and Zen of Managing Nagios With Puppet
Mike Merideth
 
Intro Docker october 2013
dotCloud
 
Cloudsolutionday 2016: DevOps workflow with Docker on AWS
AWS Vietnam Community
 
Zephyr Introduction - Nordic Webinar - Sept. 24.pdf
AswathRangaraj1
 
Continuous Delivery the hard way with Kubernetes
Luke Marsden
 
Docker for the enterprise
Bert Poller
 
Kubernetes Manchester - 6th December 2018
David Stockton
 
StarlingX - A Platform for the Distributed Edge | Ildiko Vancsa
Vietnam Open Infrastructure User Group
 
Tuenti Release Workflow
Tuenti
 
Ad

More from ESUG (20)

PDF
ShowUs: Pharo Stream Deck (ESUG 2025, Gdansk)
ESUG
 
PDF
Micromaid: A simple Mermaid-like chart generator for Pharo
ESUG
 
PDF
Directing Generative AI for Pharo Documentation
ESUG
 
PDF
Even Lighter Than Lightweiht: Augmenting Type Inference with Primitive Heuris...
ESUG
 
PDF
Integrating Executable Requirements in Prototyping
ESUG
 
PDF
Composing and Performing Electronic Music on-the-Fly with Pharo and Coypu
ESUG
 
PDF
Gamifying Agent-Based Models in Cormas: Towards the Playable Architecture for...
ESUG
 
PDF
Analysing Python Machine Learning Notebooks with Moose
ESUG
 
PDF
FASTTypeScript metamodel generation using FAST traits and TreeSitter project
ESUG
 
PDF
Migrating Katalon Studio Tests to Playwright with Model Driven Engineering
ESUG
 
PDF
Package-Aware Approach for Repository-Level Code Completion in Pharo
ESUG
 
PDF
Evaluating Benchmark Quality: a Mutation-Testing- Based Methodology
ESUG
 
PDF
An Analysis of Inline Method Refactoring
ESUG
 
PDF
Identification of unnecessary object allocations using static escape analysis
ESUG
 
PDF
Control flow-sensitive optimizations In the Druid Meta-Compiler
ESUG
 
PDF
Clean Blocks (IWST 2025, Gdansk, Poland)
ESUG
 
PDF
Encoding for Objects Matters (IWST 2025)
ESUG
 
PDF
Challenges of Transpiling Smalltalk to JavaScript
ESUG
 
PDF
Immersive experiences: what Pharo users do!
ESUG
 
PDF
ChatPharo: an Open Architecture for Understanding How to Talk Live to LLMs
ESUG
 
ShowUs: Pharo Stream Deck (ESUG 2025, Gdansk)
ESUG
 
Micromaid: A simple Mermaid-like chart generator for Pharo
ESUG
 
Directing Generative AI for Pharo Documentation
ESUG
 
Even Lighter Than Lightweiht: Augmenting Type Inference with Primitive Heuris...
ESUG
 
Integrating Executable Requirements in Prototyping
ESUG
 
Composing and Performing Electronic Music on-the-Fly with Pharo and Coypu
ESUG
 
Gamifying Agent-Based Models in Cormas: Towards the Playable Architecture for...
ESUG
 
Analysing Python Machine Learning Notebooks with Moose
ESUG
 
FASTTypeScript metamodel generation using FAST traits and TreeSitter project
ESUG
 
Migrating Katalon Studio Tests to Playwright with Model Driven Engineering
ESUG
 
Package-Aware Approach for Repository-Level Code Completion in Pharo
ESUG
 
Evaluating Benchmark Quality: a Mutation-Testing- Based Methodology
ESUG
 
An Analysis of Inline Method Refactoring
ESUG
 
Identification of unnecessary object allocations using static escape analysis
ESUG
 
Control flow-sensitive optimizations In the Druid Meta-Compiler
ESUG
 
Clean Blocks (IWST 2025, Gdansk, Poland)
ESUG
 
Encoding for Objects Matters (IWST 2025)
ESUG
 
Challenges of Transpiling Smalltalk to JavaScript
ESUG
 
Immersive experiences: what Pharo users do!
ESUG
 
ChatPharo: an Open Architecture for Understanding How to Talk Live to LLMs
ESUG
 

Recently uploaded (20)

PDF
WatchTraderHub - Watch Dealer software with inventory management and multi-ch...
WatchDealer Pavel
 
PDF
49785682629390197565_LRN3014_Migrating_the_Beast.pdf
Abilash868456
 
PDF
vAdobe Premiere Pro 2025 (v25.2.3.004) Crack Pre-Activated Latest
imang66g
 
PPTX
classification of computer and basic part of digital computer
ravisinghrajpurohit3
 
PDF
Key Features to Look for in Arizona App Development Services
Net-Craft.com
 
PDF
New Download MiniTool Partition Wizard Crack Latest Version 2025
imang66g
 
PDF
Generating Union types w/ Static Analysis
K. Matthew Dupree
 
PDF
lesson-2-rules-of-netiquette.pdf.bshhsjdj
jasmenrojas249
 
PPTX
Maximizing Revenue with Marketo Measure: A Deep Dive into Multi-Touch Attribu...
bbedford2
 
PPTX
ASSIGNMENT_1[1][1][1][1][1] (1) variables.pptx
kr2589474
 
PPTX
slidesgo-unlocking-the-code-the-dynamic-dance-of-variables-and-constants-2024...
kr2589474
 
PDF
Teaching Reproducibility and Embracing Variability: From Floating-Point Exper...
University of Rennes, INSA Rennes, Inria/IRISA, CNRS
 
PDF
Jenkins: An open-source automation server powering CI/CD Automation
SaikatBasu37
 
PDF
An Experience-Based Look at AI Lead Generation Pricing, Features & B2B Results
Thomas albart
 
PDF
Balancing Resource Capacity and Workloads with OnePlan – Avoid Overloading Te...
OnePlan Solutions
 
PPT
Activate_Methodology_Summary presentatio
annapureddyn
 
PDF
Protecting the Digital World Cyber Securit
dnthakkar16
 
PDF
Bandai Playdia The Book - David Glotz
BluePanther6
 
PPTX
Presentation about variables and constant.pptx
kr2589474
 
PDF
What to consider before purchasing Microsoft 365 Business Premium_PDF.pdf
Q-Advise
 
WatchTraderHub - Watch Dealer software with inventory management and multi-ch...
WatchDealer Pavel
 
49785682629390197565_LRN3014_Migrating_the_Beast.pdf
Abilash868456
 
vAdobe Premiere Pro 2025 (v25.2.3.004) Crack Pre-Activated Latest
imang66g
 
classification of computer and basic part of digital computer
ravisinghrajpurohit3
 
Key Features to Look for in Arizona App Development Services
Net-Craft.com
 
New Download MiniTool Partition Wizard Crack Latest Version 2025
imang66g
 
Generating Union types w/ Static Analysis
K. Matthew Dupree
 
lesson-2-rules-of-netiquette.pdf.bshhsjdj
jasmenrojas249
 
Maximizing Revenue with Marketo Measure: A Deep Dive into Multi-Touch Attribu...
bbedford2
 
ASSIGNMENT_1[1][1][1][1][1] (1) variables.pptx
kr2589474
 
slidesgo-unlocking-the-code-the-dynamic-dance-of-variables-and-constants-2024...
kr2589474
 
Teaching Reproducibility and Embracing Variability: From Floating-Point Exper...
University of Rennes, INSA Rennes, Inria/IRISA, CNRS
 
Jenkins: An open-source automation server powering CI/CD Automation
SaikatBasu37
 
An Experience-Based Look at AI Lead Generation Pricing, Features & B2B Results
Thomas albart
 
Balancing Resource Capacity and Workloads with OnePlan – Avoid Overloading Te...
OnePlan Solutions
 
Activate_Methodology_Summary presentatio
annapureddyn
 
Protecting the Digital World Cyber Securit
dnthakkar16
 
Bandai Playdia The Book - David Glotz
BluePanther6
 
Presentation about variables and constant.pptx
kr2589474
 
What to consider before purchasing Microsoft 365 Business Premium_PDF.pdf
Q-Advise
 

A Taste of Pharo 7.0

  • 1. Pharo 70/80 kind of Roadmap: The key challenges and first achievements S. Ducasse RMoD Clément Béra Pharo Consortium
  • 2. Roadmap • Tools • Cleaning and Improvements • Language infrastructure • System enhancements • VMs
  • 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. Iceberg • Paid by the consortium • libgit2
  • 5. Iceberg • Potentially for • Fossil • Mercurial
  • 10. Calypso & its submarines
  • 11. 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
  • 12. Calypso • Multiple panes • Multiple method definitions • Incomplete method definitions • Scoping…
  • 13. Calypso • mulitple panes • multiple method definitions • incomplete method definitions • scoping…
  • 15. 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
  • 16. Hermes: Binary loader a code loader that does not require the compiler to be loaded. It is used to speed up the bootstrap.
  • 17. Beacon Logger • Powerful announcement-based logger • Clean the left over of previous logging • Remove many of the transcript show:
  • 18. GTInspector Enh • Refreshing back in place • Another pass at pane
  • 19. 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.
  • 20. Refactoring 2 • Refactoring 2 is an improved version of Refactorings developed by Gustavos Santos • Should used to replace the existing one
  • 21. Taking advantage of dependency analyser Used before committing to warn the user when a new dependency is introduced in a package.
  • 22. Roadmap • Tools • Cleaning and Improvements • Language infrastructure • System enhancements • VMs
  • 23. Cleaning • Nautilus retirement • Remove old text editor • Remove Komitter: Iceberg already supports cherrypicking • Remove system categorizer: old system categorizer is not used anymore
  • 24. 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
  • 25. Old Inspector • Remove the eyeInspector framework • But introduce a minimal fallback inspector • This inspector should work without Spec or any frameworks
  • 26. Clean behavior API • Number of methods in the core Behavior, ClassDescription and Class requires some analysis and cleaning
  • 27. Kernel modularisation effort • Continuous • Kind of our DNA :)
  • 28. Roadmap • Tools • Cleaning and Improvements • Language infrastructure • System enhancements • VMs
  • 30. Class definition explosion • subclass:, variableSubclass:, variableByte.. variableWord, weak: • uses: • layout: • tag: • immediate:, ephemeron • category: • package: • slot: • instanceVariableNames:, classVariableNames:
  • 31. Need a fluid API • Only specify what is used! • No empty classVariableNames: ‘’ • Handling combinatorial explosion Class <<< #Box vars: { #width . #height }; package: #MyPackage.
  • 32. 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)
  • 33. 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!
  • 34. Working on a “ClassParser” + Nodes • Can handle variations, backward compatibles…. • Support for smart suggestion in class definition • Avoid ‘*subclass:*’ matches: str
  • 35. Undefined classes • How to support loading and managing classes with an unknown superclass? • Important to load broken code • Important for Modules in live environment
  • 36. Undefined classes • Pendant of Undeclared • Read the paper :) • Support for Module systems
  • 37. Opal • Warnings into real objects • Another pass on the API
  • 38. Updater • Atomic loader P. Tesone • Modular class builder
  • 39. Ring2 • Ring: modeling a program • Pavel Krivanek rewrote Ring • Infrastructure to build tools to manipulate kernels
  • 40. Roadmap • Tools • Cleaning and Improvements • Language infrastructure • System enhancements • VMs
  • 41. CommandLine • Clap new command line library • Scripting :) • Headless :)
  • 42. Cleaning Streams • Make sure that the system does not use the old streams but the FileStream and ZincDecorator • Split Stream package
  • 43. Theme/widgets • New theme from the beginning • Better themes/palettes support • Better and nicer Tabs. Tabs design should be revisited.
  • 44. Use OSWindow • Remove the logic of the windowing/shortcut from the VM should be continued • OSWindow should be used instead
  • 45. 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
  • 46. Roadmap • Tools • Cleaning and Improvements • Language infrastructure • System enhancements • VMs
  • 47. 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
  • 48. 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.)
  • 49. Embeddable VM (P8?) • VM embedded in external applications • The application can access objects
  • 50. Idle / Event-driven VM (P8?) • Increase VM responsiveness • Avoid couple per-cent cpu time wasted by active waiting loop when Pharo does nothing
  • 51. Android VM (P8?) Integration of the Android VM build and tests in the integration setup. Future work with Event-driven VM
  • 52. Threaded FFI All FFI calls should be non-blocking
  • 53. Large heaps Incremental GC: Avoiding long pauses GC tuning API
  • 55. 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, …
  • 56. 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.
  • 57. 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.
  • 58. 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.)
  • 59. 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
  • 60. Pharo 70 is exciting We are excited by the possibilities You can help, contribute and have fun with us