SlideShare a Scribd company logo
1 of 43
Download to read offline
Pharo Status 
Marcus Denker 
http://www.pharo-project.org
Pharo3: Release April `14 
Started March 2013 
! 
2390 Issue tracker entries with Pharo3 tag closed 
! 
854 Updates
Iceberg 
A lot of Changes! 
Not everything 
visible
Lots of Activity
A lot of Change!
Yet easy to adopt 
Moose switched in two afternoons (two people) 
! 
Others: “I just loaded my packages"
Infrastructure: CI 
https://ci.inria.fr is stable and used a lot 
! 
Every fix is validated automatically before human review 
Every update triggers test run on 3 Architectures 
over 80 projects in pharo-contribution
ci.inria.fr/pharo-contribution/
Infrastructure: Misc 
http://files.pharo.org 
! 
http://get.pharo.org 
! 
SmalltalkHub: http://smalltalkhub.com 
1411 users, >1200 repos
Small Stuff 
Lots of Cleanups 
! 
Lots of tuning (perfomance, memory) 
! 
Lots of small improvements
Lots of larger things 
Closure class now standard in Pharo3 
Terminal output for stderr 
Cleanup Source file related code 
AST Interpreter 
AST based Navigation in Browser 
Komitter 
Launcher 
Font 
Speedup 
….
New Inspector 
Unify Inspector and Explorer 
Make specialised inspectors visible
Athens: Vector Graphics 
New API for Vector Graphics 
Independent of Backend 
For now: Cairo 
Balloon3D for Debugging 
Future: OpenGL
Athens: Demo
Opal Compiler 
Uses RB AST 
! 
IRBuilder: Bytecode backend with high-level builder 
Much easier to change 
Basis for advanced Reflection
New ClassBuilder 
Replaces the old ClassBuilder 
! 
Easier to understand and more flexible 
! 
Basis for First Class Variables (Slots)
New Debugger 
Model now separate from View 
! 
Model is scriptable 
! 
Debugger is extensible with Commands
Command Line 
denker$ ./pharo Pharo.image --list! 
Currently installed Command Line Handlers:! 
Fuel Loads fuel files! 
config Install Configurations! 
save Rename the image and changes file! 
update Load updates! 
printVersion Print image version! 
st Loads and executes .st source files! 
test A command line test runner! 
clean Run image cleanup! 
eval Directly evaluates one line scripts! 
!
A lot of change…
But just one iteration
Pharo4
Pharo4 
Again: To be released Spring 2015 
Already 175 updates 
480 Issues closed 
Very stable
For example… 
Improved Refactorings 
6MB Deployment Image 
ifTrue: on non-Booleans 
Browser and Tool cleanups 
Context Cleanup (MethodContext/ContextPart merge)
In Progress…
First Class Variables 
• First class Instance Variables (Slots) 
! 
• First class globals + class variables
For what? 
• Allows programmers to define behavior 
• Easy reflection on variable access 
• Break on variable read, for example
Property Slots 
Object 
subclass: #PropertyObject 
layout: PointerLayout 
slots: { 
#ivar. 
#property1 => PropertySlot. 
#property2 => PropertySlot. 
... 
#propertyN => PropertySlot. 
}
Property Slots 
Object 
subclass: #PropertyObject 
layout: PointerLayout 
instanceVariables: { 
#ivar. 
#property1 => PropertySlot. 
#property2 => PropertySlot. 
... 
#propertyN => PropertySlot. 
}
Examples 
• BitSlot 
• BooleanSlot 
• Alias 
• Relationships (e.g. one-one, one-many) 
• …. Your Domain level Slot! ==> Magritte
More in Paper from OOPSLA
Advanced Reflection 
• Partial Behavioral Reflection 
• Associate MetaObject with structural object 
• Slots, Globals 
• AST nodes
The Meta Link
Why? 
• Change behaviour for selected AST Nodes or 
Variables 
• “All variable reads” 
• “this message send” 
But without changing the program code!
Uses… 
• Debugger 
• BreakPoints, WatchPoints 
• Profilers 
• Coverage Analysis 
• AOP
One File Pharo 
• .sources, .changes. .image 
! 
• It is time to simplify that!
Epicea 
• Replace .changes 
• High level model: 
• aggregate changes (refactoring) 
• serialized to disk independent of source model
Sources 
• It is 2014: Memory is cheap. 
• Complexity is expensive 
• Why not just put the sources in the image? 
• Externalize when needed (small devices) 
• Code history is in Monticello (or Git)
Bootstrap 
• Create an image from a git repository 
• Control what the image contains 
• Easier to make changes 
• Enforces Modularity
Boostrap 
• Working for Pharo3 as a prototype 
! 
• Can we even use this for Pharo4 on the build 
server?
And more… 
• GT Tools 
• VM related news 
• Spur, Sista, 64bit… 
• ……….. there are lots of talks here
Questions ?

More Related Content

What's hot

Real World Elixir Deployment
Real World Elixir DeploymentReal World Elixir Deployment
Real World Elixir DeploymentPete Gamache
 
Docker and Fluentd
Docker and FluentdDocker and Fluentd
Docker and FluentdN Masahiro
 
Repeating History...On Purpose...with Elixir
Repeating History...On Purpose...with ElixirRepeating History...On Purpose...with Elixir
Repeating History...On Purpose...with ElixirBarry Jones
 
How to Make MPI Awesome: A Proposal for MPI Sessions
How to Make MPI Awesome: A Proposal for MPI SessionsHow to Make MPI Awesome: A Proposal for MPI Sessions
How to Make MPI Awesome: A Proposal for MPI Sessionsinside-BigData.com
 
Terraform modules and (some of) best practices
Terraform modules and (some of) best practicesTerraform modules and (some of) best practices
Terraform modules and (some of) best practicesAnton Babenko
 
Parsing and Rewriting Ruby Templates
Parsing and Rewriting Ruby TemplatesParsing and Rewriting Ruby Templates
Parsing and Rewriting Ruby TemplatesJohn Hawthorn
 
Terraform 0.12 + Terragrunt
Terraform 0.12 + TerragruntTerraform 0.12 + Terragrunt
Terraform 0.12 + TerragruntAnton Babenko
 
Advanced Server Integration with Data and Direct
Advanced Server Integration with Data and DirectAdvanced Server Integration with Data and Direct
Advanced Server Integration with Data and DirectSencha
 
Introduction to the intermediate Python - v1.1
Introduction to the intermediate Python - v1.1Introduction to the intermediate Python - v1.1
Introduction to the intermediate Python - v1.1Andrei KUCHARAVY
 
Python Raster Function - Esri Developer Conference - 2015
Python Raster Function - Esri Developer Conference - 2015Python Raster Function - Esri Developer Conference - 2015
Python Raster Function - Esri Developer Conference - 2015akferoz07
 
Pharo VM Performance
Pharo VM PerformancePharo VM Performance
Pharo VM PerformancePharo
 
JS Fest 2019. Александр Хотемский. Способы распараллеливания тестов в JavaScript
JS Fest 2019. Александр Хотемский. Способы распараллеливания тестов в JavaScriptJS Fest 2019. Александр Хотемский. Способы распараллеливания тестов в JavaScript
JS Fest 2019. Александр Хотемский. Способы распараллеливания тестов в JavaScriptJSFestUA
 
Nice performance using Sf2 cache wrapping Sf1 application
Nice performance using Sf2 cache wrapping Sf1 applicationNice performance using Sf2 cache wrapping Sf1 application
Nice performance using Sf2 cache wrapping Sf1 applicationMarc Weistroff
 
Go from a PHP Perspective
Go from a PHP PerspectiveGo from a PHP Perspective
Go from a PHP PerspectiveBarry Jones
 
Porting a legacy app to python 3
Porting a legacy app to python 3Porting a legacy app to python 3
Porting a legacy app to python 3Mark Rees
 
GenRetry: Simple Exponential Backoff in Elixir
GenRetry: Simple Exponential Backoff in ElixirGenRetry: Simple Exponential Backoff in Elixir
GenRetry: Simple Exponential Backoff in ElixirPete Gamache
 
Messaging, interoperability and log aggregation - a new framework
Messaging, interoperability and log aggregation - a new frameworkMessaging, interoperability and log aggregation - a new framework
Messaging, interoperability and log aggregation - a new frameworkTomas Doran
 
Intro to elixir and phoenix
Intro to elixir and phoenixIntro to elixir and phoenix
Intro to elixir and phoenixJared Smith
 

What's hot (20)

Real World Elixir Deployment
Real World Elixir DeploymentReal World Elixir Deployment
Real World Elixir Deployment
 
Docker and Fluentd
Docker and FluentdDocker and Fluentd
Docker and Fluentd
 
Repeating History...On Purpose...with Elixir
Repeating History...On Purpose...with ElixirRepeating History...On Purpose...with Elixir
Repeating History...On Purpose...with Elixir
 
How to Make MPI Awesome: A Proposal for MPI Sessions
How to Make MPI Awesome: A Proposal for MPI SessionsHow to Make MPI Awesome: A Proposal for MPI Sessions
How to Make MPI Awesome: A Proposal for MPI Sessions
 
Openmp
OpenmpOpenmp
Openmp
 
Terraform modules and (some of) best practices
Terraform modules and (some of) best practicesTerraform modules and (some of) best practices
Terraform modules and (some of) best practices
 
Parsing and Rewriting Ruby Templates
Parsing and Rewriting Ruby TemplatesParsing and Rewriting Ruby Templates
Parsing and Rewriting Ruby Templates
 
Terraform 0.12 + Terragrunt
Terraform 0.12 + TerragruntTerraform 0.12 + Terragrunt
Terraform 0.12 + Terragrunt
 
Advanced Server Integration with Data and Direct
Advanced Server Integration with Data and DirectAdvanced Server Integration with Data and Direct
Advanced Server Integration with Data and Direct
 
Introduction to the intermediate Python - v1.1
Introduction to the intermediate Python - v1.1Introduction to the intermediate Python - v1.1
Introduction to the intermediate Python - v1.1
 
Python Raster Function - Esri Developer Conference - 2015
Python Raster Function - Esri Developer Conference - 2015Python Raster Function - Esri Developer Conference - 2015
Python Raster Function - Esri Developer Conference - 2015
 
Pharo VM Performance
Pharo VM PerformancePharo VM Performance
Pharo VM Performance
 
Spacebrew @ SFPC
Spacebrew @ SFPCSpacebrew @ SFPC
Spacebrew @ SFPC
 
JS Fest 2019. Александр Хотемский. Способы распараллеливания тестов в JavaScript
JS Fest 2019. Александр Хотемский. Способы распараллеливания тестов в JavaScriptJS Fest 2019. Александр Хотемский. Способы распараллеливания тестов в JavaScript
JS Fest 2019. Александр Хотемский. Способы распараллеливания тестов в JavaScript
 
Nice performance using Sf2 cache wrapping Sf1 application
Nice performance using Sf2 cache wrapping Sf1 applicationNice performance using Sf2 cache wrapping Sf1 application
Nice performance using Sf2 cache wrapping Sf1 application
 
Go from a PHP Perspective
Go from a PHP PerspectiveGo from a PHP Perspective
Go from a PHP Perspective
 
Porting a legacy app to python 3
Porting a legacy app to python 3Porting a legacy app to python 3
Porting a legacy app to python 3
 
GenRetry: Simple Exponential Backoff in Elixir
GenRetry: Simple Exponential Backoff in ElixirGenRetry: Simple Exponential Backoff in Elixir
GenRetry: Simple Exponential Backoff in Elixir
 
Messaging, interoperability and log aggregation - a new framework
Messaging, interoperability and log aggregation - a new frameworkMessaging, interoperability and log aggregation - a new framework
Messaging, interoperability and log aggregation - a new framework
 
Intro to elixir and phoenix
Intro to elixir and phoenixIntro to elixir and phoenix
Intro to elixir and phoenix
 

Viewers also liked

VA Smalltalk Update ESUG2014
VA Smalltalk Update ESUG2014VA Smalltalk Update ESUG2014
VA Smalltalk Update ESUG2014ESUG
 
SiouX HTTP Server
SiouX HTTP ServerSiouX HTTP Server
SiouX HTTP ServerESUG
 
Histoire de la voiture électrique
Histoire de la voiture électriqueHistoire de la voiture électrique
Histoire de la voiture électriqueLaVoitureHybride.com
 
Esug java
Esug javaEsug java
Esug javaESUG
 
Smalltalk-80 : hardware and software
Smalltalk-80 : hardware and softwareSmalltalk-80 : hardware and software
Smalltalk-80 : hardware and softwareESUG
 
Managing business processes with Smalltalk
Managing business processes with SmalltalkManaging business processes with Smalltalk
Managing business processes with SmalltalkESUG
 
Inter-Language Reflection
Inter-Language ReflectionInter-Language Reflection
Inter-Language ReflectionESUG
 
The Sport BOF
The Sport BOFThe Sport BOF
The Sport BOFESUG
 
Redesigning with Traits
Redesigning with TraitsRedesigning with Traits
Redesigning with TraitsESUG
 
Runtime Bytecode Transformation for Smalltalk
Runtime Bytecode Transformation for SmalltalkRuntime Bytecode Transformation for Smalltalk
Runtime Bytecode Transformation for SmalltalkESUG
 
Smalltalk Standards Project
Smalltalk Standards ProjectSmalltalk Standards Project
Smalltalk Standards ProjectESUG
 
AIDA/Web 6.0 This is how the Web works!
AIDA/Web 6.0 This is how the Web works!AIDA/Web 6.0 This is how the Web works!
AIDA/Web 6.0 This is how the Web works!ESUG
 
The Moldable Inspector
The Moldable InspectorThe Moldable Inspector
The Moldable InspectorESUG
 
SUnit: latest developments
SUnit: latest developmentsSUnit: latest developments
SUnit: latest developmentsESUG
 
Toward a Methodology to turn Smalltak code into FPGA
Toward a Methodology to turn Smalltak code into FPGAToward a Methodology to turn Smalltak code into FPGA
Toward a Methodology to turn Smalltak code into FPGAESUG
 
Garbage Collection in Smalltalk
Garbage Collection in SmalltalkGarbage Collection in Smalltalk
Garbage Collection in SmalltalkESUG
 
Blogs and RSS – Trawling the Internet for Meaning
Blogs and RSS – Trawling the Internet for MeaningBlogs and RSS – Trawling the Internet for Meaning
Blogs and RSS – Trawling the Internet for MeaningESUG
 
Abstract Interpretation for Dummies
Abstract Interpretation for DummiesAbstract Interpretation for Dummies
Abstract Interpretation for DummiesESUG
 
A Smalltalk Product Company
A Smalltalk Product CompanyA Smalltalk Product Company
A Smalltalk Product CompanyESUG
 

Viewers also liked (20)

VA Smalltalk Update ESUG2014
VA Smalltalk Update ESUG2014VA Smalltalk Update ESUG2014
VA Smalltalk Update ESUG2014
 
SiouX HTTP Server
SiouX HTTP ServerSiouX HTTP Server
SiouX HTTP Server
 
Histoire de la voiture électrique
Histoire de la voiture électriqueHistoire de la voiture électrique
Histoire de la voiture électrique
 
Bab I Pendahuluan
Bab I PendahuluanBab I Pendahuluan
Bab I Pendahuluan
 
Esug java
Esug javaEsug java
Esug java
 
Smalltalk-80 : hardware and software
Smalltalk-80 : hardware and softwareSmalltalk-80 : hardware and software
Smalltalk-80 : hardware and software
 
Managing business processes with Smalltalk
Managing business processes with SmalltalkManaging business processes with Smalltalk
Managing business processes with Smalltalk
 
Inter-Language Reflection
Inter-Language ReflectionInter-Language Reflection
Inter-Language Reflection
 
The Sport BOF
The Sport BOFThe Sport BOF
The Sport BOF
 
Redesigning with Traits
Redesigning with TraitsRedesigning with Traits
Redesigning with Traits
 
Runtime Bytecode Transformation for Smalltalk
Runtime Bytecode Transformation for SmalltalkRuntime Bytecode Transformation for Smalltalk
Runtime Bytecode Transformation for Smalltalk
 
Smalltalk Standards Project
Smalltalk Standards ProjectSmalltalk Standards Project
Smalltalk Standards Project
 
AIDA/Web 6.0 This is how the Web works!
AIDA/Web 6.0 This is how the Web works!AIDA/Web 6.0 This is how the Web works!
AIDA/Web 6.0 This is how the Web works!
 
The Moldable Inspector
The Moldable InspectorThe Moldable Inspector
The Moldable Inspector
 
SUnit: latest developments
SUnit: latest developmentsSUnit: latest developments
SUnit: latest developments
 
Toward a Methodology to turn Smalltak code into FPGA
Toward a Methodology to turn Smalltak code into FPGAToward a Methodology to turn Smalltak code into FPGA
Toward a Methodology to turn Smalltak code into FPGA
 
Garbage Collection in Smalltalk
Garbage Collection in SmalltalkGarbage Collection in Smalltalk
Garbage Collection in Smalltalk
 
Blogs and RSS – Trawling the Internet for Meaning
Blogs and RSS – Trawling the Internet for MeaningBlogs and RSS – Trawling the Internet for Meaning
Blogs and RSS – Trawling the Internet for Meaning
 
Abstract Interpretation for Dummies
Abstract Interpretation for DummiesAbstract Interpretation for Dummies
Abstract Interpretation for Dummies
 
A Smalltalk Product Company
A Smalltalk Product CompanyA Smalltalk Product Company
A Smalltalk Product Company
 

Similar to Pharo Status ESUG 2014

Pharo Status ESUG 2014
Pharo Status ESUG 2014Pharo Status ESUG 2014
Pharo Status ESUG 2014Pharo
 
Pharo3 at Fosdem
Pharo3 at FosdemPharo3 at Fosdem
Pharo3 at FosdemPharo
 
COMMitMDE'18: Eclipse Hawk: model repository querying as a service
COMMitMDE'18: Eclipse Hawk: model repository querying as a serviceCOMMitMDE'18: Eclipse Hawk: model repository querying as a service
COMMitMDE'18: Eclipse Hawk: model repository querying as a serviceAntonio García-Domínguez
 
Smalltalks13 pharo techoverview
Smalltalks13   pharo techoverviewSmalltalks13   pharo techoverview
Smalltalks13 pharo techoverviewPharo
 
Pharo Status (from PharoDays 2015)
Pharo Status (from PharoDays 2015)Pharo Status (from PharoDays 2015)
Pharo Status (from PharoDays 2015)Marcus Denker
 
Pharo Status (Fosdem 2015)
Pharo Status (Fosdem 2015)Pharo Status (Fosdem 2015)
Pharo Status (Fosdem 2015)Pharo
 
BP-7 Share Customization Best Practices
BP-7 Share Customization Best PracticesBP-7 Share Customization Best Practices
BP-7 Share Customization Best PracticesAlfresco Software
 
Machine Learning With H2O vs SparkML
Machine Learning With H2O vs SparkMLMachine Learning With H2O vs SparkML
Machine Learning With H2O vs SparkMLArnab Biswas
 
BP-9 Share Customization Best Practices
BP-9 Share Customization Best PracticesBP-9 Share Customization Best Practices
BP-9 Share Customization Best PracticesAlfresco Software
 
Wait, IPython can do that?! (30 minutes)
Wait, IPython can do that?! (30 minutes)Wait, IPython can do that?! (30 minutes)
Wait, IPython can do that?! (30 minutes)Sebastian Witowski
 
Building cloud-enabled genomics workflows with Luigi and Docker
Building cloud-enabled genomics workflows with Luigi and DockerBuilding cloud-enabled genomics workflows with Luigi and Docker
Building cloud-enabled genomics workflows with Luigi and DockerJacob Feala
 
Spring MVC framework
Spring MVC frameworkSpring MVC framework
Spring MVC frameworkMohit Gupta
 
Developer’s intro to the alfresco platform
Developer’s intro to the alfresco platformDeveloper’s intro to the alfresco platform
Developer’s intro to the alfresco platformAlfresco Software
 
Pharo 7.0 and 8.0 alpha
Pharo 7.0 and 8.0 alphaPharo 7.0 and 8.0 alpha
Pharo 7.0 and 8.0 alphaPharo
 
PLAT-13 Metadata Extraction and Transformation
PLAT-13 Metadata Extraction and TransformationPLAT-13 Metadata Extraction and Transformation
PLAT-13 Metadata Extraction and TransformationAlfresco Software
 
Rapid API Development ArangoDB Foxx
Rapid API Development ArangoDB FoxxRapid API Development ArangoDB Foxx
Rapid API Development ArangoDB FoxxMichael Hackstein
 
VA Smalltalk Update
VA Smalltalk UpdateVA Smalltalk Update
VA Smalltalk UpdateESUG
 

Similar to Pharo Status ESUG 2014 (20)

Pharo Status
Pharo StatusPharo Status
Pharo Status
 
Pharo Status ESUG 2014
Pharo Status ESUG 2014Pharo Status ESUG 2014
Pharo Status ESUG 2014
 
Pharo3 at Fosdem
Pharo3 at FosdemPharo3 at Fosdem
Pharo3 at Fosdem
 
Pharo3 at Fosdem
Pharo3 at FosdemPharo3 at Fosdem
Pharo3 at Fosdem
 
COMMitMDE'18: Eclipse Hawk: model repository querying as a service
COMMitMDE'18: Eclipse Hawk: model repository querying as a serviceCOMMitMDE'18: Eclipse Hawk: model repository querying as a service
COMMitMDE'18: Eclipse Hawk: model repository querying as a service
 
Smalltalks13 pharo techoverview
Smalltalks13   pharo techoverviewSmalltalks13   pharo techoverview
Smalltalks13 pharo techoverview
 
Pharo Status (from PharoDays 2015)
Pharo Status (from PharoDays 2015)Pharo Status (from PharoDays 2015)
Pharo Status (from PharoDays 2015)
 
Pharo Status (Fosdem 2015)
Pharo Status (Fosdem 2015)Pharo Status (Fosdem 2015)
Pharo Status (Fosdem 2015)
 
BP-7 Share Customization Best Practices
BP-7 Share Customization Best PracticesBP-7 Share Customization Best Practices
BP-7 Share Customization Best Practices
 
Machine Learning With H2O vs SparkML
Machine Learning With H2O vs SparkMLMachine Learning With H2O vs SparkML
Machine Learning With H2O vs SparkML
 
BP-9 Share Customization Best Practices
BP-9 Share Customization Best PracticesBP-9 Share Customization Best Practices
BP-9 Share Customization Best Practices
 
Wait, IPython can do that?! (30 minutes)
Wait, IPython can do that?! (30 minutes)Wait, IPython can do that?! (30 minutes)
Wait, IPython can do that?! (30 minutes)
 
Python Tutorial Part 2
Python Tutorial Part 2Python Tutorial Part 2
Python Tutorial Part 2
 
Building cloud-enabled genomics workflows with Luigi and Docker
Building cloud-enabled genomics workflows with Luigi and DockerBuilding cloud-enabled genomics workflows with Luigi and Docker
Building cloud-enabled genomics workflows with Luigi and Docker
 
Spring MVC framework
Spring MVC frameworkSpring MVC framework
Spring MVC framework
 
Developer’s intro to the alfresco platform
Developer’s intro to the alfresco platformDeveloper’s intro to the alfresco platform
Developer’s intro to the alfresco platform
 
Pharo 7.0 and 8.0 alpha
Pharo 7.0 and 8.0 alphaPharo 7.0 and 8.0 alpha
Pharo 7.0 and 8.0 alpha
 
PLAT-13 Metadata Extraction and Transformation
PLAT-13 Metadata Extraction and TransformationPLAT-13 Metadata Extraction and Transformation
PLAT-13 Metadata Extraction and Transformation
 
Rapid API Development ArangoDB Foxx
Rapid API Development ArangoDB FoxxRapid API Development ArangoDB Foxx
Rapid API Development ArangoDB Foxx
 
VA Smalltalk Update
VA Smalltalk UpdateVA Smalltalk Update
VA Smalltalk Update
 

More from 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
 

More from 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
 

Recently uploaded

Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
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
 
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.pdfkalichargn70th171
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
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.pdfkalichargn70th171
 
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 ApplicationsAlberto González Trastoy
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...Health
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
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
 
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
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
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
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceanilsa9823
 
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
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 

Recently uploaded (20)

Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
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 ...
 
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
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
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
 
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
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
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
 
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
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
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...
 
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
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
 
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
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 

Pharo Status ESUG 2014

  • 1. Pharo Status Marcus Denker http://www.pharo-project.org
  • 2. Pharo3: Release April `14 Started March 2013 ! 2390 Issue tracker entries with Pharo3 tag closed ! 854 Updates
  • 3. Iceberg A lot of Changes! Not everything visible
  • 5. A lot of Change!
  • 6. Yet easy to adopt Moose switched in two afternoons (two people) ! Others: “I just loaded my packages"
  • 7. Infrastructure: CI https://ci.inria.fr is stable and used a lot ! Every fix is validated automatically before human review Every update triggers test run on 3 Architectures over 80 projects in pharo-contribution
  • 9. Infrastructure: Misc http://files.pharo.org ! http://get.pharo.org ! SmalltalkHub: http://smalltalkhub.com 1411 users, >1200 repos
  • 10. Small Stuff Lots of Cleanups ! Lots of tuning (perfomance, memory) ! Lots of small improvements
  • 11. Lots of larger things Closure class now standard in Pharo3 Terminal output for stderr Cleanup Source file related code AST Interpreter AST based Navigation in Browser Komitter Launcher Font Speedup ….
  • 12. New Inspector Unify Inspector and Explorer Make specialised inspectors visible
  • 13. Athens: Vector Graphics New API for Vector Graphics Independent of Backend For now: Cairo Balloon3D for Debugging Future: OpenGL
  • 15. Opal Compiler Uses RB AST ! IRBuilder: Bytecode backend with high-level builder Much easier to change Basis for advanced Reflection
  • 16. New ClassBuilder Replaces the old ClassBuilder ! Easier to understand and more flexible ! Basis for First Class Variables (Slots)
  • 17. New Debugger Model now separate from View ! Model is scriptable ! Debugger is extensible with Commands
  • 18. Command Line denker$ ./pharo Pharo.image --list! Currently installed Command Line Handlers:! Fuel Loads fuel files! config Install Configurations! save Rename the image and changes file! update Load updates! printVersion Print image version! st Loads and executes .st source files! test A command line test runner! clean Run image cleanup! eval Directly evaluates one line scripts! !
  • 19. A lot of change…
  • 20. But just one iteration
  • 22. Pharo4 Again: To be released Spring 2015 Already 175 updates 480 Issues closed Very stable
  • 23. For example… Improved Refactorings 6MB Deployment Image ifTrue: on non-Booleans Browser and Tool cleanups Context Cleanup (MethodContext/ContextPart merge)
  • 24.
  • 26. First Class Variables • First class Instance Variables (Slots) ! • First class globals + class variables
  • 27. For what? • Allows programmers to define behavior • Easy reflection on variable access • Break on variable read, for example
  • 28. Property Slots Object subclass: #PropertyObject layout: PointerLayout slots: { #ivar. #property1 => PropertySlot. #property2 => PropertySlot. ... #propertyN => PropertySlot. }
  • 29. Property Slots Object subclass: #PropertyObject layout: PointerLayout instanceVariables: { #ivar. #property1 => PropertySlot. #property2 => PropertySlot. ... #propertyN => PropertySlot. }
  • 30. Examples • BitSlot • BooleanSlot • Alias • Relationships (e.g. one-one, one-many) • …. Your Domain level Slot! ==> Magritte
  • 31. More in Paper from OOPSLA
  • 32. Advanced Reflection • Partial Behavioral Reflection • Associate MetaObject with structural object • Slots, Globals • AST nodes
  • 34. Why? • Change behaviour for selected AST Nodes or Variables • “All variable reads” • “this message send” But without changing the program code!
  • 35. Uses… • Debugger • BreakPoints, WatchPoints • Profilers • Coverage Analysis • AOP
  • 36. One File Pharo • .sources, .changes. .image ! • It is time to simplify that!
  • 37. Epicea • Replace .changes • High level model: • aggregate changes (refactoring) • serialized to disk independent of source model
  • 38.
  • 39. Sources • It is 2014: Memory is cheap. • Complexity is expensive • Why not just put the sources in the image? • Externalize when needed (small devices) • Code history is in Monticello (or Git)
  • 40. Bootstrap • Create an image from a git repository • Control what the image contains • Easier to make changes • Enforces Modularity
  • 41. Boostrap • Working for Pharo3 as a prototype ! • Can we even use this for Pharo4 on the build server?
  • 42. And more… • GT Tools • VM related news • Spur, Sista, 64bit… • ……….. there are lots of talks here