SlideShare une entreprise Scribd logo
1  sur  58
Télécharger pour lire hors ligne
Mission Pharo Kernel
ESUG 2016, Prague
Pavel Krivanek and Christophe Demarey
New libraries
New tools
New tests
More documentation
Pharo is growing
Pharo evolution
Squeak 3.9 Pharo 1.0 Pharo 1.1 Pharo 1.2 Pharo 1.3 Pharo 1.4 Pharo 2.0 Pharo 3.0 Pharo 4.0 Pharo 5.0
Classes
Packages
LOC
Code for future use
Duplicities
Obsolete code
DO-NOT-TOUCH code
Pharo ZEN
● Easy to understand, easy to learn from, easy to change.
● Objects all the way down.
● Examples to learn from.
● Fully dynamic and malleable.
● Beauty in the code, beauty in the comments.
● Simplicity is the ultimate elegance.
● Better a set of small polymorphic classes than a large ugly one.
● Classes structure our vocabulary.
● Messages are our vocabulary.
● Polymorphism is our esperanto.
● Abstraction and composition are our friends.
● Tests are important but can be changed.
● Explicit is better than implicit.
● Magic only at the right place.
● One step at a time.
● There is no unimportant fix.
● Learning from mistakes.
● Perfection can kill movement.
● Quality is a emerging property.
● Simple processes to support progress.
● Communication is key.
● A system with robust abstractions
that a single person can understand.
Modularity
Pharo Kernel
From top
- cleaning
- shrinking
- reloading
From bottom
bootstrapping from zero -
reloading -
From top shrinking and modularization
- started before Pharo
- removing of code is easy
- clean removing is not easy
- reloading is even harder
Morphic reloaded [22.07.2006]
Kernel image evolution in shortcut
BROKEN!
works again
BROKEN!
works again
BROKEN!
works again
BROKEN!
works again
BROKEN!
works again
BROKEN!
works again
BROKEN!
works again
Broken again... [18.8.2016]
Why so hard and long?
Everyone needs to
take of care of
modularity
integrated inintegrated in
development processdevelopment process
(tests, rules, CI jobs)(tests, rules, CI jobs)
CI jobs for Pharo modularization
- since Pharo 2.0
- shrink image
- increase granularity of reloaded modules
- tests
- coverage testing
- experiments (Tanker)
https://ci.inria.fr/pharo/view/6.0-SysConf/
CI jobs for Pharo modularization
Kernel image (shrinked / bootstrapped)
+ Monticello
+ Network support
+ Remote repositories support
+ Metacello
= minimal Pharo
+ SUnit, Display support, UFFI
+ Morphic core, Morphic
+ UI, Basic tools, IDE
= Pharo
Bootstrapped & reloaded from GIT
Let's talk about
BOOTSTRAP
« The process that builds the minimal
infrastructure of a langage 
reusable to define the
langage itself »
Bootstrap
Why do we need a bootstrap ?
● Have a known initial state
● Be able to reproduce the state of a system
● Ensure we can reinitialize the system at any time
● Ease Kernel evolution
● Identify a small subset of the language allowing
the definition of the language itself
Why bootstraping is difficult?
Archaelogy
Dead code!
Strange things
cleanups
Missing code
The dependency hell
Cut dependencies
Code refactoring
How to fix bad dependencies?
Create a new package to isolate functionnalities
Move some methods as extensions to another
package
Re-design completely a functionality
e.g. startup list
...
Tools support
Dependency Analyser
Dependency dashboard
X 2
Dependency visualization
https://ci.inria.fr/pharo/job/Pharo-6.0-Dependenc
yAnalysis/ws/bootstrap-dependency-report-graph.ht
ml
The bootstrap process
1
Day
2
Day
3
Day
4
Day
5
Day
process
6
Day
7
Day
More details
cf phd Guillermo Polito:
https://hal.inria.fr/tel-01251173
Story #2
Road to a working bootstrap
Bootstrap challenge
> language side bootstrap
Language initialization generally done VM side
We want to do it language side (image side):
need to run code on top of a language under
construction
Bootstrap challenge
> language side bootstrap
Road to a working bootstrap
First bootstrapped image!
Road to a working bootstrap
Road to a working bootstrap
We run the image …
… VM crash
Road to a working bootstrap
> some debugging examples
Missing class in the boostrap
e.g. Float
Super class not set
Super class set to a wrong value
Road to a working bootstrap
Compile VM in debug mode
Run bootstrapped
image through
Xcode / LLDB
Road to a working bootstrap
> verifying the bootstrap
Rely on Pharo tests (>8 000 tests)
● Load SUnit
● Load test packages
● Run tests
Wants to know more?
Bootstrap process hosted on Pharo CI server
https://ci.inria.fr/pharo/view/Pharo%20bootstrap/
GitHub repository
https://github.com/guillep/PharoBootstrap
Conclusion
Having a modular system requires a lot of energy
• Easy to break
• Concern of everyone
We now have a working Pharo bootstrapped
image.
We are able to load packages on top to build a full
Pharo-image (UI, IDE, etc.)
Roadmap
Make the boostrap process more robust
Up-to-date package dependencies for the Pharo
image + use of Cargo package manager
Build the official Pharo image on top of the
bootstrap
Make the kernel smaller (e.g. kick out Unicode)
«  Always leave the campground
cleaner than you found it. »
-Boy Scout rule, Uncle Bob

Contenu connexe

Plus de 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 programmingESUG
 
Technical documentation support in Pharo
Technical documentation support in PharoTechnical documentation support in Pharo
Technical documentation support in PharoESUG
 
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 RoadmapESUG
 
Sequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in PharoSequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in PharoESUG
 
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 resultsESUG
 
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 6ESUG
 
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 GenerationESUG
 
Creating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingCreating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingESUG
 
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 ModesESUG
 
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 ReportESUG
 
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 APIsESUG
 
Garbage Collector Tuning
Garbage Collector TuningGarbage Collector Tuning
Garbage Collector TuningESUG
 
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 CaseESUG
 
Pharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FuturePharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FutureESUG
 
thisContext in the Debugger
thisContext in the DebuggerthisContext in the Debugger
thisContext in the DebuggerESUG
 
Websockets for Fencing Score
Websockets for Fencing ScoreWebsockets for Fencing Score
Websockets for Fencing ScoreESUG
 
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 JavaScriptESUG
 
Advanced Object- Oriented Design Mooc
Advanced Object- Oriented Design MoocAdvanced Object- Oriented Design Mooc
Advanced Object- Oriented Design MoocESUG
 
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 TransformationsESUG
 

Plus de 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
 

Dernier

Test Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendTest Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendArshad QA
 
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 CCTVshikhaohhpro
 
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 WorkerThousandEyes
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...OnePlan Solutions
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️anilsa9823
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AIABDERRAOUF MEHENNI
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
Active Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfActive Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfCionsystems
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfjoe51371421
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about usDynamic Netsoft
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
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 GoalsJhone kinadey
 

Dernier (20)

Test Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendTest Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and Backend
 
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
 
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
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
Active Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfActive Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdf
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdf
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about us
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
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
 

Mission Pharo Kernel

  • 1. Mission Pharo Kernel ESUG 2016, Prague Pavel Krivanek and Christophe Demarey
  • 2. New libraries New tools New tests More documentation Pharo is growing
  • 3. Pharo evolution Squeak 3.9 Pharo 1.0 Pharo 1.1 Pharo 1.2 Pharo 1.3 Pharo 1.4 Pharo 2.0 Pharo 3.0 Pharo 4.0 Pharo 5.0 Classes Packages LOC
  • 4. Code for future use Duplicities Obsolete code DO-NOT-TOUCH code
  • 5.
  • 6. Pharo ZEN ● Easy to understand, easy to learn from, easy to change. ● Objects all the way down. ● Examples to learn from. ● Fully dynamic and malleable. ● Beauty in the code, beauty in the comments. ● Simplicity is the ultimate elegance. ● Better a set of small polymorphic classes than a large ugly one. ● Classes structure our vocabulary. ● Messages are our vocabulary. ● Polymorphism is our esperanto. ● Abstraction and composition are our friends. ● Tests are important but can be changed. ● Explicit is better than implicit. ● Magic only at the right place. ● One step at a time. ● There is no unimportant fix. ● Learning from mistakes. ● Perfection can kill movement. ● Quality is a emerging property. ● Simple processes to support progress. ● Communication is key. ● A system with robust abstractions that a single person can understand.
  • 9. From top - cleaning - shrinking - reloading From bottom bootstrapping from zero - reloading -
  • 10. From top shrinking and modularization - started before Pharo - removing of code is easy - clean removing is not easy - reloading is even harder Morphic reloaded [22.07.2006]
  • 11. Kernel image evolution in shortcut BROKEN! works again BROKEN! works again BROKEN! works again BROKEN! works again BROKEN! works again BROKEN! works again BROKEN! works again Broken again... [18.8.2016]
  • 12. Why so hard and long? Everyone needs to take of care of modularity integrated inintegrated in development processdevelopment process (tests, rules, CI jobs)(tests, rules, CI jobs)
  • 13. CI jobs for Pharo modularization - since Pharo 2.0 - shrink image - increase granularity of reloaded modules - tests - coverage testing - experiments (Tanker) https://ci.inria.fr/pharo/view/6.0-SysConf/
  • 14. CI jobs for Pharo modularization Kernel image (shrinked / bootstrapped) + Monticello + Network support + Remote repositories support + Metacello = minimal Pharo + SUnit, Display support, UFFI + Morphic core, Morphic + UI, Basic tools, IDE = Pharo
  • 17. « The process that builds the minimal infrastructure of a langage 
reusable to define the langage itself » Bootstrap
  • 18. Why do we need a bootstrap ? ● Have a known initial state ● Be able to reproduce the state of a system ● Ensure we can reinitialize the system at any time ● Ease Kernel evolution ● Identify a small subset of the language allowing the definition of the language itself
  • 19. Why bootstraping is difficult?
  • 21.
  • 29. How to fix bad dependencies? Create a new package to isolate functionnalities Move some methods as extensions to another package Re-design completely a functionality e.g. startup list ...
  • 35.
  • 36. 1 Day
  • 37.
  • 38. 2 Day
  • 39. 3 Day
  • 40. 4 Day
  • 42. 6 Day
  • 43. 7 Day
  • 44. More details cf phd Guillermo Polito: https://hal.inria.fr/tel-01251173
  • 46. Road to a working bootstrap
  • 47. Bootstrap challenge > language side bootstrap Language initialization generally done VM side We want to do it language side (image side): need to run code on top of a language under construction
  • 49. Road to a working bootstrap First bootstrapped image!
  • 50. Road to a working bootstrap
  • 51. Road to a working bootstrap We run the image … … VM crash
  • 52. Road to a working bootstrap > some debugging examples Missing class in the boostrap e.g. Float Super class not set Super class set to a wrong value
  • 53. Road to a working bootstrap Compile VM in debug mode Run bootstrapped image through Xcode / LLDB
  • 54. Road to a working bootstrap > verifying the bootstrap Rely on Pharo tests (>8 000 tests) ● Load SUnit ● Load test packages ● Run tests
  • 55. Wants to know more? Bootstrap process hosted on Pharo CI server https://ci.inria.fr/pharo/view/Pharo%20bootstrap/ GitHub repository https://github.com/guillep/PharoBootstrap
  • 56. Conclusion Having a modular system requires a lot of energy • Easy to break • Concern of everyone We now have a working Pharo bootstrapped image. We are able to load packages on top to build a full Pharo-image (UI, IDE, etc.)
  • 57. Roadmap Make the boostrap process more robust Up-to-date package dependencies for the Pharo image + use of Cargo package manager Build the official Pharo image on top of the bootstrap Make the kernel smaller (e.g. kick out Unicode)
  • 58. «  Always leave the campground cleaner than you found it. » -Boy Scout rule, Uncle Bob