SlideShare ist ein Scribd-Unternehmen logo
1 von 60
Downloaden Sie, um offline zu lesen
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
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

Weitere ähnliche Inhalte

Was ist angesagt?

Tips and Tricks for Testing Lambda Expressions in Android
Tips and Tricks for Testing Lambda Expressions in AndroidTips and Tricks for Testing Lambda Expressions in Android
Tips and Tricks for Testing Lambda Expressions in Android
David Carver
 
Ratpack - Classy and Compact Groovy Web Apps
Ratpack - Classy and Compact Groovy Web AppsRatpack - Classy and Compact Groovy Web Apps
Ratpack - Classy and Compact Groovy Web Apps
James Williams
 

Was ist angesagt? (20)

JavaFX8 TestFX - CDI
JavaFX8   TestFX - CDIJavaFX8   TestFX - CDI
JavaFX8 TestFX - CDI
 
Neodev
NeodevNeodev
Neodev
 
Java 9, JShell, and Modularity
Java 9, JShell, and ModularityJava 9, JShell, and Modularity
Java 9, JShell, and Modularity
 
(COSCUP 2015) A Beginner's Journey to Mozilla SpiderMonkey JS Engine
(COSCUP 2015) A Beginner's Journey to Mozilla SpiderMonkey JS Engine(COSCUP 2015) A Beginner's Journey to Mozilla SpiderMonkey JS Engine
(COSCUP 2015) A Beginner's Journey to Mozilla SpiderMonkey JS Engine
 
PowerShell 101 - What is it and Why should YOU Care!
PowerShell 101 - What is it and Why should YOU Care!PowerShell 101 - What is it and Why should YOU Care!
PowerShell 101 - What is it and Why should YOU Care!
 
Testing in Scala. Adform Research
Testing in Scala. Adform ResearchTesting in Scala. Adform Research
Testing in Scala. Adform Research
 
Foundations of Zend Framework
Foundations of Zend FrameworkFoundations of Zend Framework
Foundations of Zend Framework
 
Scala in the Wild
Scala in the WildScala in the Wild
Scala in the Wild
 
Inria Tech Talk : Comment améliorer la qualité de vos logiciels avec STAMP
Inria Tech Talk : Comment améliorer la qualité de vos logiciels avec STAMPInria Tech Talk : Comment améliorer la qualité de vos logiciels avec STAMP
Inria Tech Talk : Comment améliorer la qualité de vos logiciels avec STAMP
 
Utilizing the OpenNTF Domino API
Utilizing the OpenNTF Domino APIUtilizing the OpenNTF Domino API
Utilizing the OpenNTF Domino API
 
Road to sbt 1.0: Paved with server (2015 Amsterdam)
Road to sbt 1.0: Paved with server (2015 Amsterdam)Road to sbt 1.0: Paved with server (2015 Amsterdam)
Road to sbt 1.0: Paved with server (2015 Amsterdam)
 
Preparing for java 9 modules upload
Preparing for java 9 modules uploadPreparing for java 9 modules upload
Preparing for java 9 modules upload
 
Stopping the Rot - Putting Legacy C++ Under Test
Stopping the Rot - Putting Legacy C++ Under TestStopping the Rot - Putting Legacy C++ Under Test
Stopping the Rot - Putting Legacy C++ Under Test
 
Just enough app server
Just enough app serverJust enough app server
Just enough app server
 
Robot framework and selenium2 library
Robot framework and selenium2 libraryRobot framework and selenium2 library
Robot framework and selenium2 library
 
Tips and Tricks for Testing Lambda Expressions in Android
Tips and Tricks for Testing Lambda Expressions in AndroidTips and Tricks for Testing Lambda Expressions in Android
Tips and Tricks for Testing Lambda Expressions in Android
 
Developers Testing - Girl Code at bloomon
Developers Testing - Girl Code at bloomonDevelopers Testing - Girl Code at bloomon
Developers Testing - Girl Code at bloomon
 
Ratpack - Classy and Compact Groovy Web Apps
Ratpack - Classy and Compact Groovy Web AppsRatpack - Classy and Compact Groovy Web Apps
Ratpack - Classy and Compact Groovy Web Apps
 
Testing Legacy Rails Apps
Testing Legacy Rails AppsTesting Legacy Rails Apps
Testing Legacy Rails Apps
 
cf.Objective() 2017 - Design patterns - Brad Wood
cf.Objective() 2017 - Design patterns - Brad Woodcf.Objective() 2017 - Design patterns - Brad Wood
cf.Objective() 2017 - Design patterns - Brad Wood
 

Ähnlich wie A Taste of Pharo 7.0

Write Once and REALLY Run Anywhere | OpenStack Summit HK 2013
Write Once and REALLY Run Anywhere | OpenStack Summit HK 2013Write Once and REALLY Run Anywhere | OpenStack Summit HK 2013
Write Once and REALLY Run Anywhere | OpenStack Summit HK 2013
dotCloud
 
Intro Docker october 2013
Intro Docker october 2013Intro Docker october 2013
Intro Docker october 2013
dotCloud
 

Ähnlich wie A Taste of Pharo 7.0 (20)

Pharo 10 and beyond
 Pharo 10 and beyond Pharo 10 and beyond
Pharo 10 and beyond
 
Symfony2 for legacy app rejuvenation: the eZ Publish case study
Symfony2 for legacy app rejuvenation: the eZ Publish case studySymfony2 for legacy app rejuvenation: the eZ Publish case study
Symfony2 for legacy app rejuvenation: the eZ Publish case study
 
virtualization-vs-containerization-paas
virtualization-vs-containerization-paasvirtualization-vs-containerization-paas
virtualization-vs-containerization-paas
 
Habitat talk at CodeMonsters Sofia, Bulgaria Nov 27 2018
Habitat talk at CodeMonsters Sofia, Bulgaria Nov 27 2018Habitat talk at CodeMonsters Sofia, Bulgaria Nov 27 2018
Habitat talk at CodeMonsters Sofia, Bulgaria Nov 27 2018
 
Fluo CICD OpenStack Summit
Fluo CICD OpenStack SummitFluo CICD OpenStack Summit
Fluo CICD OpenStack Summit
 
Portable infrastructure with puppet
Portable infrastructure with puppetPortable infrastructure with puppet
Portable infrastructure with puppet
 
Continuous Delivery the Hard Way with Kubernetes
Continuous Delivery the Hard Way with Kubernetes Continuous Delivery the Hard Way with Kubernetes
Continuous Delivery the Hard Way with Kubernetes
 
Versioning for Developers
Versioning for DevelopersVersioning for Developers
Versioning for Developers
 
321 codeincontainer brewbox
321 codeincontainer brewbox321 codeincontainer brewbox
321 codeincontainer brewbox
 
Write Once and REALLY Run Anywhere | OpenStack Summit HK 2013
Write Once and REALLY Run Anywhere | OpenStack Summit HK 2013Write Once and REALLY Run Anywhere | OpenStack Summit HK 2013
Write Once and REALLY Run Anywhere | OpenStack Summit HK 2013
 
stackconf 2020 | Replace your Docker based Containers with Cri-o Kata Contain...
stackconf 2020 | Replace your Docker based Containers with Cri-o Kata Contain...stackconf 2020 | Replace your Docker based Containers with Cri-o Kata Contain...
stackconf 2020 | Replace your Docker based Containers with Cri-o Kata Contain...
 
The Art and Zen of Managing Nagios With Puppet
The Art and Zen of Managing Nagios With PuppetThe Art and Zen of Managing Nagios With Puppet
The Art and Zen of Managing Nagios With Puppet
 
Intro Docker october 2013
Intro Docker october 2013Intro Docker october 2013
Intro Docker october 2013
 
Cloudsolutionday 2016: DevOps workflow with Docker on AWS
Cloudsolutionday 2016: DevOps workflow with Docker on AWSCloudsolutionday 2016: DevOps workflow with Docker on AWS
Cloudsolutionday 2016: DevOps workflow with Docker on AWS
 
Zephyr Introduction - Nordic Webinar - Sept. 24.pdf
Zephyr Introduction - Nordic Webinar - Sept. 24.pdfZephyr Introduction - Nordic Webinar - Sept. 24.pdf
Zephyr Introduction - Nordic Webinar - Sept. 24.pdf
 
Continuous Delivery the hard way with Kubernetes
Continuous Delivery the hard way with KubernetesContinuous Delivery the hard way with Kubernetes
Continuous Delivery the hard way with Kubernetes
 
Docker for the enterprise
Docker for the enterpriseDocker for the enterprise
Docker for the enterprise
 
Kubernetes Manchester - 6th December 2018
Kubernetes Manchester - 6th December 2018Kubernetes Manchester - 6th December 2018
Kubernetes Manchester - 6th December 2018
 
StarlingX - A Platform for the Distributed Edge | Ildiko Vancsa
StarlingX - A Platform for the Distributed Edge | Ildiko VancsaStarlingX - A Platform for the Distributed Edge | Ildiko Vancsa
StarlingX - A Platform for the Distributed Edge | Ildiko Vancsa
 
Tuenti Release Workflow
Tuenti Release WorkflowTuenti Release Workflow
Tuenti Release Workflow
 

Mehr von ESUG

Workshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programmingWorkshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programming
ESUG
 
The Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and RoadmapThe Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and Roadmap
ESUG
 
Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...
ESUG
 
Analyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early resultsAnalyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early results
ESUG
 
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
ESUG
 
A Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test GenerationA Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test Generation
ESUG
 
Creating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingCreating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic Programming
ESUG
 
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution ModesThreaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
ESUG
 
Exploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience ReportExploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience Report
ESUG
 
Pharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIsPharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIs
ESUG
 
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame CaseImproving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
ESUG
 
Pharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FuturePharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and Future
ESUG
 
A New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and TransformationsA New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and Transformations
ESUG
 

Mehr von ESUG (20)

Workshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programmingWorkshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programming
 
Technical documentation support in Pharo
Technical documentation support in PharoTechnical documentation support in Pharo
Technical documentation support in Pharo
 
The Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and RoadmapThe Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and Roadmap
 
Sequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in PharoSequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in Pharo
 
Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...
 
Analyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early resultsAnalyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early results
 
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
 
A Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test GenerationA Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test Generation
 
Creating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingCreating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic Programming
 
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution ModesThreaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
 
Exploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience ReportExploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience Report
 
Pharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIsPharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIs
 
Garbage Collector Tuning
Garbage Collector TuningGarbage Collector Tuning
Garbage Collector Tuning
 
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame CaseImproving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
 
Pharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FuturePharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and Future
 
thisContext in the Debugger
thisContext in the DebuggerthisContext in the Debugger
thisContext in the Debugger
 
Websockets for Fencing Score
Websockets for Fencing ScoreWebsockets for Fencing Score
Websockets for Fencing Score
 
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScriptShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
 
Advanced Object- Oriented Design Mooc
Advanced Object- Oriented Design MoocAdvanced Object- Oriented Design Mooc
Advanced Object- Oriented Design Mooc
 
A New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and TransformationsA New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and Transformations
 

Kürzlich hochgeladen

The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
shinachiaurasa2
 

Kürzlich hochgeladen (20)

Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
LEVEL 5 - SESSION 1 2023 (1).pptx - PDF 123456
LEVEL 5   - SESSION 1 2023 (1).pptx - PDF 123456LEVEL 5   - SESSION 1 2023 (1).pptx - PDF 123456
LEVEL 5 - SESSION 1 2023 (1).pptx - PDF 123456
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
 
Pharm-D Biostatistics and Research methodology
Pharm-D Biostatistics and Research methodologyPharm-D Biostatistics and Research methodology
Pharm-D Biostatistics and Research methodology
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdf
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
 
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
 
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdfThe Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
ManageIQ - Sprint 236 Review - Slide Deck
ManageIQ - Sprint 236 Review - Slide DeckManageIQ - Sprint 236 Review - Slide Deck
ManageIQ - Sprint 236 Review - Slide Deck
 

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
  • 6.
  • 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