SlideShare a Scribd company logo
Run-Fail-Grow: Creating
Tailored Object-Oriented
Runtimes
G. Polito, L. Fabresse, N. Bouraqadi, S. Ducasse,
in Journal of Object Technology
Guille Polito
@guillep
https://guillep.github.io/
A(gain) need for

small and fast startup
• Micro Services
• Container architectures
• Small devices
2
Lets look at an application...
3
MainApp>>start
logger := StdoutLogger new.
logger log: ’Application has started’.
"do something"
logger log: ’Application has finished’.
StdoutLogger»newLine
stdout newLine.
StdoutLogger»log: aMessage
stdout nextPutAll: Time now printString.
stdout nextPutAll: aMessage.
stdout newLine.
RemoteLogger»log: aMessage
| socket |
socket := self newSocket.
socket nextPutAll: Time now printString.
socket nextPutAll: aMessage.
socket newLine.
RemoteLogger»newSocket
"...."
"creates an instance of socket given some configuration"
Log Lib
Base Libs
Logger <<interface>>
StdoutLogger
log:
newLine
App
MainApp
start RemoteLogger
log:
newSocket
Date Time :stdout Socket
4
There is extra stuff!
5
Log Lib
Base Libs
Logger <<interface>>
StdoutLogger
log:
newLine
App
MainApp
start RemoteLogger
log:
newSocket
Date Time :stdout Socket
MainApp>>start
logger := StdoutLogger new.
logger log: ’Application has started’.
"do something"
logger log: ’Application has finished’.
StdoutLogger»newLine
stdout newLine.
StdoutLogger»log: aMessage
stdout nextPutAll: Time now printString.
stdout nextPutAll: aMessage.
stdout newLine.
RemoteLogger»log: aMessage
| socket |
socket := self newSocket.
socket nextPutAll: Time now printString.
socket nextPutAll: aMessage.
socket newLine.
RemoteLogger»newSocket
"...."
"creates an instance of socket given some configuration"
6
MainApp>>start
logger := StdoutLogger new.
logger log: ’Application has started’.
"do something"
logger log: ’Application has finished’.
StdoutLogger»newLine
stdout newLine.
StdoutLogger»log: aMessage
stdout nextPutAll: Time now printString.
stdout nextPutAll: aMessage.
stdout newLine.
RemoteLogger»log: aMessage
| socket |
socket := self newSocket.
socket nextPutAll: Time now printString.
socket nextPutAll: aMessage.
socket newLine.
RemoteLogger»newSocket
"...."
"creates an instance of socket given some configuration"
Log Lib
Base Libs
Logger <<interface>>
StdoutLogger
log:
newLine
App
MainApp
start RemoteLogger
log:
newSocket
Date Time :stdout Socket
7
MainApp>>start
logger := StdoutLogger new.
logger log: ’Application has started’.
"do something"
logger log: ’Application has finished’.
StdoutLogger»newLine
stdout newLine.
StdoutLogger»log: aMessage
stdout nextPutAll: Time now printString.
stdout nextPutAll: aMessage.
stdout newLine.
RemoteLogger»log: aMessage
| socket |
socket := self newSocket.
socket nextPutAll: Time now printString.
socket nextPutAll: aMessage.
socket newLine.
RemoteLogger»newSocket
"...."
"creates an instance of socket given some configuration"
Log Lib
Base Libs
Logger <<interface>>
StdoutLogger
log:
newLine
App
MainApp
start RemoteLogger
log:
newSocket
Date Time :stdout Socket
8
MainApp>>start
logger := StdoutLogger new.
logger log: ’Application has started’.
"do something"
logger log: ’Application has finished’.
StdoutLogger»newLine
stdout newLine.
StdoutLogger»log: aMessage
stdout nextPutAll: Time now printString.
stdout nextPutAll: aMessage.
stdout newLine.
RemoteLogger»log: aMessage
| socket |
socket := self newSocket.
socket nextPutAll: Time now printString.
socket nextPutAll: aMessage.
socket newLine.
RemoteLogger»newSocket
"...."
"creates an instance of socket given some configuration"
Log Lib
Base Libs
Logger <<interface>>
StdoutLogger
log:
newLine
App
MainApp
start RemoteLogger
log:
newSocket
Date Time :stdout Socket
9
10
• Core Libraries take place and are distributed with the language
• Runtime objects take place also



• And some of those are runtime meta-data, used for reflection
But there is not only bloat in



application code
Mariano Martinez Peck, Noury Bouraqadi, Marcus Denker, Stéphane
Ducasse, and Luc Fabresse.

Visualizing objects and memory usage. In Smalltalks 2010
Q: Can we tailor the runtime?


Q: How small can they be?
11
Research questions
a runtime virtualisation infrastructure
+
a run-fail-grow algorithm
12
Our solution in a nutshell
Reference
Application
Nurtured
Application
1. run
3. copy missing
2. fail 4. resume
Code Units
Tornado Run-Fail-Grow
Virtualized Runtime
hypervisor
(empty)
13
Reference
Application
Nurtured
Application
1. run
3. copy missing
2. fail 4. resume
Code Units
Tornado Run-Fail-Grow
hypervisor
Virtualized Runtime
14
Reference
Application
Nurtured
Application
1. run
3. copy missing
2. fail 4. resume
Code Units
Tornado Run-Fail-Grow
hypervisor
Virtualized Runtime
15
Reference
Application
Nurtured
Application
1. run
3. copy missing
2. fail 4. resume
Code Units
Tornado Run-Fail-Grow
hypervisor
Virtualized Runtime
16
Reference
Application
Nurtured
Application
1. run
3. copy missing
2. fail 4. resume
Code Units
Tornado Run-Fail-Grow
hypervisor
Virtualized Runtime
17
Reference
Application
Nurtured
Application
1. run
3. copy missing
2. fail 4. resume
Code Units
Tornado Run-Fail-Grow
hypervisor
Virtualized Runtime
18
How small can we get?
Experiment Size (KB) %Saved
Addition 11 99.99%
Reflective App 32 99.83%
Factorial 100 + I/O 89 99.39%
Seaside Counter 573 96.73%
19
Comparison with

Traditional Tailoring Solutions
criteria
Dedicated

Platforms
Static/Hybrid

Analysis
Dynamic

Analysis
Tornado
20
Comparison with

Traditional Tailoring Solutions
criteria
Dedicated

Platforms
Static/Hybrid

Analysis
Dynamic

Analysis
Tornado
Base libraries
Third-party libraries
Legacy Code
Reflection Support
General Purpose
Infrastructure
Configurability
Dynamic Typing
Minimality
Completeness
21
Comparison with

Traditional Tailoring Solutions
criteria
Dedicated

Platforms
Static/Hybrid

Analysis
Dynamic

Analysis
Tornado
Base libraries
Third-party libraries
Legacy Code
Reflection Support
General Purpose
Infrastructure
Configurability
Dynamic Typing
Minimality
Completeness
22
• Run-fail-grow approach for tailoring
•Works on dynamic languages
• Small memory footprint results (10k!)
Run-Fail-Grow: Creating
Tailored Object-Oriented
Runtimes
G. Polito, L. Fabresse, N. Bouraqadi, S. Ducasse,
in Journal of Object Technology
Guille Polito
@guillep
https://guillep.github.io/23

More Related Content

What's hot

The RED Method: How to monitoring your microservices.
The RED Method: How to monitoring your microservices.The RED Method: How to monitoring your microservices.
The RED Method: How to monitoring your microservices.
Grafana Labs
 
Hacking the Mesh: Extending Istio with WebAssembly Modules | DevNation Tech Talk
Hacking the Mesh: Extending Istio with WebAssembly Modules | DevNation Tech TalkHacking the Mesh: Extending Istio with WebAssembly Modules | DevNation Tech Talk
Hacking the Mesh: Extending Istio with WebAssembly Modules | DevNation Tech Talk
Red Hat Developers
 
Kafka Connect implementation at GumGum
Kafka Connect implementation at GumGumKafka Connect implementation at GumGum
Kafka Connect implementation at GumGum
Karim Lamouri
 
PLNOG 21: Krzysztof Mazepa - Telemetria_ - _ale_o_co_chodzi...
PLNOG 21: Krzysztof Mazepa - Telemetria_ - _ale_o_co_chodzi...PLNOG 21: Krzysztof Mazepa - Telemetria_ - _ale_o_co_chodzi...
PLNOG 21: Krzysztof Mazepa - Telemetria_ - _ale_o_co_chodzi...
PROIDEA
 
Apache Flink Meetup: Sanjar Akhmedov - Joining Infinity – Windowless Stream ...
Apache Flink Meetup:  Sanjar Akhmedov - Joining Infinity – Windowless Stream ...Apache Flink Meetup:  Sanjar Akhmedov - Joining Infinity – Windowless Stream ...
Apache Flink Meetup: Sanjar Akhmedov - Joining Infinity – Windowless Stream ...
Ververica
 
Updates on the Fake Object Pipeline for HSC Survey
Updates on the Fake Object Pipeline for HSC Survey Updates on the Fake Object Pipeline for HSC Survey
Updates on the Fake Object Pipeline for HSC Survey
Song Huang
 
Intro to Functional Programming with RxJava
Intro to Functional Programming with RxJavaIntro to Functional Programming with RxJava
Intro to Functional Programming with RxJava
Mike Nakhimovich
 
Heptio Contour - talk CNCF Nantes
Heptio Contour - talk CNCF NantesHeptio Contour - talk CNCF Nantes
Heptio Contour - talk CNCF Nantes
Gaëlle Acas
 
高速な案件サイクルを支えるデータ基盤 その実践例
高速な案件サイクルを支えるデータ基盤 その実践例高速な案件サイクルを支えるデータ基盤 その実践例
高速な案件サイクルを支えるデータ基盤 その実践例
Recruit Lifestyle Co., Ltd.
 
Business Dashboards using Bonobo ETL, Grafana and Apache Airflow
Business Dashboards using Bonobo ETL, Grafana and Apache AirflowBusiness Dashboards using Bonobo ETL, Grafana and Apache Airflow
Business Dashboards using Bonobo ETL, Grafana and Apache Airflow
Romain Dorgueil
 
[CocoaHeads Tricity] Michał Tuszyński - Modern iOS Apps
[CocoaHeads Tricity] Michał Tuszyński - Modern iOS Apps[CocoaHeads Tricity] Michał Tuszyński - Modern iOS Apps
[CocoaHeads Tricity] Michał Tuszyński - Modern iOS Apps
CocoaHeads Tricity
 
Telemetry Updates - Juno Edition
Telemetry Updates - Juno Edition Telemetry Updates - Juno Edition
Telemetry Updates - Juno Edition
OpenStack Foundation
 
Icinga2 api use cases
Icinga2 api use casesIcinga2 api use cases
Icinga2 api use cases
roy peter
 
Sdn command line controller lab
Sdn command line controller labSdn command line controller lab
Sdn command line controller lab
Guedda houssem eddin
 
Scaling Ethereum using Zero-Knowledge Proofs
Scaling Ethereum using Zero-Knowledge ProofsScaling Ethereum using Zero-Knowledge Proofs
Scaling Ethereum using Zero-Knowledge Proofs
Hyojun Kim
 
BMC Keynote @ 2016 Hadoop Summit
BMC Keynote @ 2016 Hadoop Summit BMC Keynote @ 2016 Hadoop Summit
BMC Keynote @ 2016 Hadoop Summit
Jennifer Stern
 
Reactive Fault Tolerant Programming with Hystrix and RxJava
Reactive Fault Tolerant Programming with Hystrix and RxJavaReactive Fault Tolerant Programming with Hystrix and RxJava
Reactive Fault Tolerant Programming with Hystrix and RxJava
Matt Stine
 
Monitoring as Code: Getting to Monitoring-Driven Development - DEV314 - re:In...
Monitoring as Code: Getting to Monitoring-Driven Development - DEV314 - re:In...Monitoring as Code: Getting to Monitoring-Driven Development - DEV314 - re:In...
Monitoring as Code: Getting to Monitoring-Driven Development - DEV314 - re:In...
Amazon Web Services
 
Garbage collection in .net (basic level)
Garbage collection in .net (basic level)Garbage collection in .net (basic level)
Garbage collection in .net (basic level)
Larry Nung
 
Debugging Complex Systems - Erlang Factory SF 2015
Debugging Complex Systems - Erlang Factory SF 2015Debugging Complex Systems - Erlang Factory SF 2015
Debugging Complex Systems - Erlang Factory SF 2015
lpgauth
 

What's hot (20)

The RED Method: How to monitoring your microservices.
The RED Method: How to monitoring your microservices.The RED Method: How to monitoring your microservices.
The RED Method: How to monitoring your microservices.
 
Hacking the Mesh: Extending Istio with WebAssembly Modules | DevNation Tech Talk
Hacking the Mesh: Extending Istio with WebAssembly Modules | DevNation Tech TalkHacking the Mesh: Extending Istio with WebAssembly Modules | DevNation Tech Talk
Hacking the Mesh: Extending Istio with WebAssembly Modules | DevNation Tech Talk
 
Kafka Connect implementation at GumGum
Kafka Connect implementation at GumGumKafka Connect implementation at GumGum
Kafka Connect implementation at GumGum
 
PLNOG 21: Krzysztof Mazepa - Telemetria_ - _ale_o_co_chodzi...
PLNOG 21: Krzysztof Mazepa - Telemetria_ - _ale_o_co_chodzi...PLNOG 21: Krzysztof Mazepa - Telemetria_ - _ale_o_co_chodzi...
PLNOG 21: Krzysztof Mazepa - Telemetria_ - _ale_o_co_chodzi...
 
Apache Flink Meetup: Sanjar Akhmedov - Joining Infinity – Windowless Stream ...
Apache Flink Meetup:  Sanjar Akhmedov - Joining Infinity – Windowless Stream ...Apache Flink Meetup:  Sanjar Akhmedov - Joining Infinity – Windowless Stream ...
Apache Flink Meetup: Sanjar Akhmedov - Joining Infinity – Windowless Stream ...
 
Updates on the Fake Object Pipeline for HSC Survey
Updates on the Fake Object Pipeline for HSC Survey Updates on the Fake Object Pipeline for HSC Survey
Updates on the Fake Object Pipeline for HSC Survey
 
Intro to Functional Programming with RxJava
Intro to Functional Programming with RxJavaIntro to Functional Programming with RxJava
Intro to Functional Programming with RxJava
 
Heptio Contour - talk CNCF Nantes
Heptio Contour - talk CNCF NantesHeptio Contour - talk CNCF Nantes
Heptio Contour - talk CNCF Nantes
 
高速な案件サイクルを支えるデータ基盤 その実践例
高速な案件サイクルを支えるデータ基盤 その実践例高速な案件サイクルを支えるデータ基盤 その実践例
高速な案件サイクルを支えるデータ基盤 その実践例
 
Business Dashboards using Bonobo ETL, Grafana and Apache Airflow
Business Dashboards using Bonobo ETL, Grafana and Apache AirflowBusiness Dashboards using Bonobo ETL, Grafana and Apache Airflow
Business Dashboards using Bonobo ETL, Grafana and Apache Airflow
 
[CocoaHeads Tricity] Michał Tuszyński - Modern iOS Apps
[CocoaHeads Tricity] Michał Tuszyński - Modern iOS Apps[CocoaHeads Tricity] Michał Tuszyński - Modern iOS Apps
[CocoaHeads Tricity] Michał Tuszyński - Modern iOS Apps
 
Telemetry Updates - Juno Edition
Telemetry Updates - Juno Edition Telemetry Updates - Juno Edition
Telemetry Updates - Juno Edition
 
Icinga2 api use cases
Icinga2 api use casesIcinga2 api use cases
Icinga2 api use cases
 
Sdn command line controller lab
Sdn command line controller labSdn command line controller lab
Sdn command line controller lab
 
Scaling Ethereum using Zero-Knowledge Proofs
Scaling Ethereum using Zero-Knowledge ProofsScaling Ethereum using Zero-Knowledge Proofs
Scaling Ethereum using Zero-Knowledge Proofs
 
BMC Keynote @ 2016 Hadoop Summit
BMC Keynote @ 2016 Hadoop Summit BMC Keynote @ 2016 Hadoop Summit
BMC Keynote @ 2016 Hadoop Summit
 
Reactive Fault Tolerant Programming with Hystrix and RxJava
Reactive Fault Tolerant Programming with Hystrix and RxJavaReactive Fault Tolerant Programming with Hystrix and RxJava
Reactive Fault Tolerant Programming with Hystrix and RxJava
 
Monitoring as Code: Getting to Monitoring-Driven Development - DEV314 - re:In...
Monitoring as Code: Getting to Monitoring-Driven Development - DEV314 - re:In...Monitoring as Code: Getting to Monitoring-Driven Development - DEV314 - re:In...
Monitoring as Code: Getting to Monitoring-Driven Development - DEV314 - re:In...
 
Garbage collection in .net (basic level)
Garbage collection in .net (basic level)Garbage collection in .net (basic level)
Garbage collection in .net (basic level)
 
Debugging Complex Systems - Erlang Factory SF 2015
Debugging Complex Systems - Erlang Factory SF 2015Debugging Complex Systems - Erlang Factory SF 2015
Debugging Complex Systems - Erlang Factory SF 2015
 

Similar to Run-Fail-Grow: Creating Tailored Object Oriented Runtimes

Docker Logging and analysing with Elastic Stack
Docker Logging and analysing with Elastic StackDocker Logging and analysing with Elastic Stack
Docker Logging and analysing with Elastic Stack
Jakub Hajek
 
Docker Logging and analysing with Elastic Stack - Jakub Hajek
Docker Logging and analysing with Elastic Stack - Jakub Hajek Docker Logging and analysing with Elastic Stack - Jakub Hajek
Docker Logging and analysing with Elastic Stack - Jakub Hajek
PROIDEA
 
Node js internal
Node js internalNode js internal
Node js internal
Chinh Ngo Nguyen
 
Introduction to Node.js
Introduction to Node.jsIntroduction to Node.js
Introduction to Node.js
Aaron Rosenberg
 
Plone FSR
Plone FSRPlone FSR
Plone FSR
fulv
 
Code quality par Simone Civetta
Code quality par Simone CivettaCode quality par Simone Civetta
Code quality par Simone Civetta
CocoaHeads France
 
Istio Playground
Istio PlaygroundIstio Playground
Istio Playground
QAware GmbH
 
ConFoo - NuGet beyond Hello World
ConFoo - NuGet beyond Hello WorldConFoo - NuGet beyond Hello World
ConFoo - NuGet beyond Hello World
Maarten Balliauw
 
Collecting 600M events/day
Collecting 600M events/dayCollecting 600M events/day
Collecting 600M events/day
Lars Marius Garshol
 
JS Fest 2018. Никита Галкин. Микросервисная архитектура с переиспользуемыми к...
JS Fest 2018. Никита Галкин. Микросервисная архитектура с переиспользуемыми к...JS Fest 2018. Никита Галкин. Микросервисная архитектура с переиспользуемыми к...
JS Fest 2018. Никита Галкин. Микросервисная архитектура с переиспользуемыми к...
JSFestUA
 
Microsoft & Open Source - a 'brave new world' - ProgSCon 2017
Microsoft & Open Source - a 'brave new world' - ProgSCon 2017Microsoft & Open Source - a 'brave new world' - ProgSCon 2017
Microsoft & Open Source - a 'brave new world' - ProgSCon 2017
Matt Warren
 
Genomic Computation at Scale with Serverless, StackStorm and Docker Swarm
Genomic Computation at Scale with Serverless, StackStorm and Docker SwarmGenomic Computation at Scale with Serverless, StackStorm and Docker Swarm
Genomic Computation at Scale with Serverless, StackStorm and Docker Swarm
Dmitri Zimine
 
Apache Beam (incubating)
Apache Beam (incubating)Apache Beam (incubating)
Apache Beam (incubating)
Apache Apex
 
Integrate Solr with real-time stream processing applications
Integrate Solr with real-time stream processing applicationsIntegrate Solr with real-time stream processing applications
Integrate Solr with real-time stream processing applications
thelabdude
 
Building static libraries for iOS with CocoaPods
Building static libraries for iOS with CocoaPodsBuilding static libraries for iOS with CocoaPods
Building static libraries for iOS with CocoaPods
Sigmapoint
 
Introduction to jQuery
Introduction to jQueryIntroduction to jQuery
Introduction to jQuery
Andres Baravalle
 
IoT-javascript-2019-fosdem
IoT-javascript-2019-fosdemIoT-javascript-2019-fosdem
IoT-javascript-2019-fosdem
Phil www.rzr.online.fr
 
Fullstack workshop
Fullstack workshopFullstack workshop
Fullstack workshop
Assaf Gannon
 
Node.js essentials
 Node.js essentials Node.js essentials
Node.js essentials
Bedis ElAchèche
 
Going Serverless with OpenWhisk
Going Serverless with OpenWhiskGoing Serverless with OpenWhisk
Going Serverless with OpenWhisk
Alex Glikson
 

Similar to Run-Fail-Grow: Creating Tailored Object Oriented Runtimes (20)

Docker Logging and analysing with Elastic Stack
Docker Logging and analysing with Elastic StackDocker Logging and analysing with Elastic Stack
Docker Logging and analysing with Elastic Stack
 
Docker Logging and analysing with Elastic Stack - Jakub Hajek
Docker Logging and analysing with Elastic Stack - Jakub Hajek Docker Logging and analysing with Elastic Stack - Jakub Hajek
Docker Logging and analysing with Elastic Stack - Jakub Hajek
 
Node js internal
Node js internalNode js internal
Node js internal
 
Introduction to Node.js
Introduction to Node.jsIntroduction to Node.js
Introduction to Node.js
 
Plone FSR
Plone FSRPlone FSR
Plone FSR
 
Code quality par Simone Civetta
Code quality par Simone CivettaCode quality par Simone Civetta
Code quality par Simone Civetta
 
Istio Playground
Istio PlaygroundIstio Playground
Istio Playground
 
ConFoo - NuGet beyond Hello World
ConFoo - NuGet beyond Hello WorldConFoo - NuGet beyond Hello World
ConFoo - NuGet beyond Hello World
 
Collecting 600M events/day
Collecting 600M events/dayCollecting 600M events/day
Collecting 600M events/day
 
JS Fest 2018. Никита Галкин. Микросервисная архитектура с переиспользуемыми к...
JS Fest 2018. Никита Галкин. Микросервисная архитектура с переиспользуемыми к...JS Fest 2018. Никита Галкин. Микросервисная архитектура с переиспользуемыми к...
JS Fest 2018. Никита Галкин. Микросервисная архитектура с переиспользуемыми к...
 
Microsoft & Open Source - a 'brave new world' - ProgSCon 2017
Microsoft & Open Source - a 'brave new world' - ProgSCon 2017Microsoft & Open Source - a 'brave new world' - ProgSCon 2017
Microsoft & Open Source - a 'brave new world' - ProgSCon 2017
 
Genomic Computation at Scale with Serverless, StackStorm and Docker Swarm
Genomic Computation at Scale with Serverless, StackStorm and Docker SwarmGenomic Computation at Scale with Serverless, StackStorm and Docker Swarm
Genomic Computation at Scale with Serverless, StackStorm and Docker Swarm
 
Apache Beam (incubating)
Apache Beam (incubating)Apache Beam (incubating)
Apache Beam (incubating)
 
Integrate Solr with real-time stream processing applications
Integrate Solr with real-time stream processing applicationsIntegrate Solr with real-time stream processing applications
Integrate Solr with real-time stream processing applications
 
Building static libraries for iOS with CocoaPods
Building static libraries for iOS with CocoaPodsBuilding static libraries for iOS with CocoaPods
Building static libraries for iOS with CocoaPods
 
Introduction to jQuery
Introduction to jQueryIntroduction to jQuery
Introduction to jQuery
 
IoT-javascript-2019-fosdem
IoT-javascript-2019-fosdemIoT-javascript-2019-fosdem
IoT-javascript-2019-fosdem
 
Fullstack workshop
Fullstack workshopFullstack workshop
Fullstack workshop
 
Node.js essentials
 Node.js essentials Node.js essentials
Node.js essentials
 
Going Serverless with OpenWhisk
Going Serverless with OpenWhiskGoing Serverless with OpenWhisk
Going Serverless with OpenWhisk
 

More from Guille Polito

PADR - Engineering for Reseach
PADR - Engineering for ReseachPADR - Engineering for Reseach
PADR - Engineering for Reseach
Guille Polito
 
First-class undefined classes for Pharo
First-class undefined classes for PharoFirst-class undefined classes for Pharo
First-class undefined classes for Pharo
Guille Polito
 
Understanding the Pharo dev Process
Understanding the Pharo dev ProcessUnderstanding the Pharo dev Process
Understanding the Pharo dev Process
Guille Polito
 
Oz Object Spaces - Uqbar Workshop 2013 (spanish)
Oz Object Spaces - Uqbar Workshop 2013 (spanish)Oz Object Spaces - Uqbar Workshop 2013 (spanish)
Oz Object Spaces - Uqbar Workshop 2013 (spanish)
Guille Polito
 
Going Native With DBXTalk - Smalltalks 2013
Going Native With DBXTalk - Smalltalks 2013Going Native With DBXTalk - Smalltalks 2013
Going Native With DBXTalk - Smalltalks 2013
Guille Polito
 
Virtual Smalltalk Images - IWST - ESUG 2013
Virtual Smalltalk Images - IWST - ESUG 2013Virtual Smalltalk Images - IWST - ESUG 2013
Virtual Smalltalk Images - IWST - ESUG 2013
Guille Polito
 
Where am I in my Phd - October 2012
Where am I in my Phd - October 2012Where am I in my Phd - October 2012
Where am I in my Phd - October 2012
Guille Polito
 
Bootstrapping a Smalltalk - Smalltalks 2012
Bootstrapping a Smalltalk - Smalltalks 2012Bootstrapping a Smalltalk - Smalltalks 2012
Bootstrapping a Smalltalk - Smalltalks 2012
Guille Polito
 
DBXTalk - Smalltalks 2011
DBXTalk - Smalltalks 2011DBXTalk - Smalltalks 2011
DBXTalk - Smalltalks 2011
Guille Polito
 

More from Guille Polito (9)

PADR - Engineering for Reseach
PADR - Engineering for ReseachPADR - Engineering for Reseach
PADR - Engineering for Reseach
 
First-class undefined classes for Pharo
First-class undefined classes for PharoFirst-class undefined classes for Pharo
First-class undefined classes for Pharo
 
Understanding the Pharo dev Process
Understanding the Pharo dev ProcessUnderstanding the Pharo dev Process
Understanding the Pharo dev Process
 
Oz Object Spaces - Uqbar Workshop 2013 (spanish)
Oz Object Spaces - Uqbar Workshop 2013 (spanish)Oz Object Spaces - Uqbar Workshop 2013 (spanish)
Oz Object Spaces - Uqbar Workshop 2013 (spanish)
 
Going Native With DBXTalk - Smalltalks 2013
Going Native With DBXTalk - Smalltalks 2013Going Native With DBXTalk - Smalltalks 2013
Going Native With DBXTalk - Smalltalks 2013
 
Virtual Smalltalk Images - IWST - ESUG 2013
Virtual Smalltalk Images - IWST - ESUG 2013Virtual Smalltalk Images - IWST - ESUG 2013
Virtual Smalltalk Images - IWST - ESUG 2013
 
Where am I in my Phd - October 2012
Where am I in my Phd - October 2012Where am I in my Phd - October 2012
Where am I in my Phd - October 2012
 
Bootstrapping a Smalltalk - Smalltalks 2012
Bootstrapping a Smalltalk - Smalltalks 2012Bootstrapping a Smalltalk - Smalltalks 2012
Bootstrapping a Smalltalk - Smalltalks 2012
 
DBXTalk - Smalltalks 2011
DBXTalk - Smalltalks 2011DBXTalk - Smalltalks 2011
DBXTalk - Smalltalks 2011
 

Recently uploaded

Nutraceutical market, scope and growth: Herbal drug technology
Nutraceutical market, scope and growth: Herbal drug technologyNutraceutical market, scope and growth: Herbal drug technology
Nutraceutical market, scope and growth: Herbal drug technology
Lokesh Patil
 
Deep Software Variability and Frictionless Reproducibility
Deep Software Variability and Frictionless ReproducibilityDeep Software Variability and Frictionless Reproducibility
Deep Software Variability and Frictionless Reproducibility
University of Rennes, INSA Rennes, Inria/IRISA, CNRS
 
Comparing Evolved Extractive Text Summary Scores of Bidirectional Encoder Rep...
Comparing Evolved Extractive Text Summary Scores of Bidirectional Encoder Rep...Comparing Evolved Extractive Text Summary Scores of Bidirectional Encoder Rep...
Comparing Evolved Extractive Text Summary Scores of Bidirectional Encoder Rep...
University of Maribor
 
Orion Air Quality Monitoring Systems - CWS
Orion Air Quality Monitoring Systems - CWSOrion Air Quality Monitoring Systems - CWS
Orion Air Quality Monitoring Systems - CWS
Columbia Weather Systems
 
PRESENTATION ABOUT PRINCIPLE OF COSMATIC EVALUATION
PRESENTATION ABOUT PRINCIPLE OF COSMATIC EVALUATIONPRESENTATION ABOUT PRINCIPLE OF COSMATIC EVALUATION
PRESENTATION ABOUT PRINCIPLE OF COSMATIC EVALUATION
ChetanK57
 
DMARDs Pharmacolgy Pharm D 5th Semester.pdf
DMARDs Pharmacolgy Pharm D 5th Semester.pdfDMARDs Pharmacolgy Pharm D 5th Semester.pdf
DMARDs Pharmacolgy Pharm D 5th Semester.pdf
fafyfskhan251kmf
 
Richard's aventures in two entangled wonderlands
Richard's aventures in two entangled wonderlandsRichard's aventures in two entangled wonderlands
Richard's aventures in two entangled wonderlands
Richard Gill
 
Introduction to Mean Field Theory(MFT).pptx
Introduction to Mean Field Theory(MFT).pptxIntroduction to Mean Field Theory(MFT).pptx
Introduction to Mean Field Theory(MFT).pptx
zeex60
 
Salas, V. (2024) "John of St. Thomas (Poinsot) on the Science of Sacred Theol...
Salas, V. (2024) "John of St. Thomas (Poinsot) on the Science of Sacred Theol...Salas, V. (2024) "John of St. Thomas (Poinsot) on the Science of Sacred Theol...
Salas, V. (2024) "John of St. Thomas (Poinsot) on the Science of Sacred Theol...
Studia Poinsotiana
 
Toxic effects of heavy metals : Lead and Arsenic
Toxic effects of heavy metals : Lead and ArsenicToxic effects of heavy metals : Lead and Arsenic
Toxic effects of heavy metals : Lead and Arsenic
sanjana502982
 
role of pramana in research.pptx in science
role of pramana in research.pptx in sciencerole of pramana in research.pptx in science
role of pramana in research.pptx in science
sonaliswain16
 
Earliest Galaxies in the JADES Origins Field: Luminosity Function and Cosmic ...
Earliest Galaxies in the JADES Origins Field: Luminosity Function and Cosmic ...Earliest Galaxies in the JADES Origins Field: Luminosity Function and Cosmic ...
Earliest Galaxies in the JADES Origins Field: Luminosity Function and Cosmic ...
Sérgio Sacani
 
Hemostasis_importance& clinical significance.pptx
Hemostasis_importance& clinical significance.pptxHemostasis_importance& clinical significance.pptx
Hemostasis_importance& clinical significance.pptx
muralinath2
 
GBSN - Microbiology (Lab 4) Culture Media
GBSN - Microbiology (Lab 4) Culture MediaGBSN - Microbiology (Lab 4) Culture Media
GBSN - Microbiology (Lab 4) Culture Media
Areesha Ahmad
 
原版制作(carleton毕业证书)卡尔顿大学毕业证硕士文凭原版一模一样
原版制作(carleton毕业证书)卡尔顿大学毕业证硕士文凭原版一模一样原版制作(carleton毕业证书)卡尔顿大学毕业证硕士文凭原版一模一样
原版制作(carleton毕业证书)卡尔顿大学毕业证硕士文凭原版一模一样
yqqaatn0
 
Mudde & Rovira Kaltwasser. - Populism - a very short introduction [2017].pdf
Mudde & Rovira Kaltwasser. - Populism - a very short introduction [2017].pdfMudde & Rovira Kaltwasser. - Populism - a very short introduction [2017].pdf
Mudde & Rovira Kaltwasser. - Populism - a very short introduction [2017].pdf
frank0071
 
3D Hybrid PIC simulation of the plasma expansion (ISSS-14)
3D Hybrid PIC simulation of the plasma expansion (ISSS-14)3D Hybrid PIC simulation of the plasma expansion (ISSS-14)
3D Hybrid PIC simulation of the plasma expansion (ISSS-14)
David Osipyan
 
GBSN- Microbiology (Lab 3) Gram Staining
GBSN- Microbiology (Lab 3) Gram StainingGBSN- Microbiology (Lab 3) Gram Staining
GBSN- Microbiology (Lab 3) Gram Staining
Areesha Ahmad
 
Leaf Initiation, Growth and Differentiation.pdf
Leaf Initiation, Growth and Differentiation.pdfLeaf Initiation, Growth and Differentiation.pdf
Leaf Initiation, Growth and Differentiation.pdf
RenuJangid3
 
Phenomics assisted breeding in crop improvement
Phenomics assisted breeding in crop improvementPhenomics assisted breeding in crop improvement
Phenomics assisted breeding in crop improvement
IshaGoswami9
 

Recently uploaded (20)

Nutraceutical market, scope and growth: Herbal drug technology
Nutraceutical market, scope and growth: Herbal drug technologyNutraceutical market, scope and growth: Herbal drug technology
Nutraceutical market, scope and growth: Herbal drug technology
 
Deep Software Variability and Frictionless Reproducibility
Deep Software Variability and Frictionless ReproducibilityDeep Software Variability and Frictionless Reproducibility
Deep Software Variability and Frictionless Reproducibility
 
Comparing Evolved Extractive Text Summary Scores of Bidirectional Encoder Rep...
Comparing Evolved Extractive Text Summary Scores of Bidirectional Encoder Rep...Comparing Evolved Extractive Text Summary Scores of Bidirectional Encoder Rep...
Comparing Evolved Extractive Text Summary Scores of Bidirectional Encoder Rep...
 
Orion Air Quality Monitoring Systems - CWS
Orion Air Quality Monitoring Systems - CWSOrion Air Quality Monitoring Systems - CWS
Orion Air Quality Monitoring Systems - CWS
 
PRESENTATION ABOUT PRINCIPLE OF COSMATIC EVALUATION
PRESENTATION ABOUT PRINCIPLE OF COSMATIC EVALUATIONPRESENTATION ABOUT PRINCIPLE OF COSMATIC EVALUATION
PRESENTATION ABOUT PRINCIPLE OF COSMATIC EVALUATION
 
DMARDs Pharmacolgy Pharm D 5th Semester.pdf
DMARDs Pharmacolgy Pharm D 5th Semester.pdfDMARDs Pharmacolgy Pharm D 5th Semester.pdf
DMARDs Pharmacolgy Pharm D 5th Semester.pdf
 
Richard's aventures in two entangled wonderlands
Richard's aventures in two entangled wonderlandsRichard's aventures in two entangled wonderlands
Richard's aventures in two entangled wonderlands
 
Introduction to Mean Field Theory(MFT).pptx
Introduction to Mean Field Theory(MFT).pptxIntroduction to Mean Field Theory(MFT).pptx
Introduction to Mean Field Theory(MFT).pptx
 
Salas, V. (2024) "John of St. Thomas (Poinsot) on the Science of Sacred Theol...
Salas, V. (2024) "John of St. Thomas (Poinsot) on the Science of Sacred Theol...Salas, V. (2024) "John of St. Thomas (Poinsot) on the Science of Sacred Theol...
Salas, V. (2024) "John of St. Thomas (Poinsot) on the Science of Sacred Theol...
 
Toxic effects of heavy metals : Lead and Arsenic
Toxic effects of heavy metals : Lead and ArsenicToxic effects of heavy metals : Lead and Arsenic
Toxic effects of heavy metals : Lead and Arsenic
 
role of pramana in research.pptx in science
role of pramana in research.pptx in sciencerole of pramana in research.pptx in science
role of pramana in research.pptx in science
 
Earliest Galaxies in the JADES Origins Field: Luminosity Function and Cosmic ...
Earliest Galaxies in the JADES Origins Field: Luminosity Function and Cosmic ...Earliest Galaxies in the JADES Origins Field: Luminosity Function and Cosmic ...
Earliest Galaxies in the JADES Origins Field: Luminosity Function and Cosmic ...
 
Hemostasis_importance& clinical significance.pptx
Hemostasis_importance& clinical significance.pptxHemostasis_importance& clinical significance.pptx
Hemostasis_importance& clinical significance.pptx
 
GBSN - Microbiology (Lab 4) Culture Media
GBSN - Microbiology (Lab 4) Culture MediaGBSN - Microbiology (Lab 4) Culture Media
GBSN - Microbiology (Lab 4) Culture Media
 
原版制作(carleton毕业证书)卡尔顿大学毕业证硕士文凭原版一模一样
原版制作(carleton毕业证书)卡尔顿大学毕业证硕士文凭原版一模一样原版制作(carleton毕业证书)卡尔顿大学毕业证硕士文凭原版一模一样
原版制作(carleton毕业证书)卡尔顿大学毕业证硕士文凭原版一模一样
 
Mudde & Rovira Kaltwasser. - Populism - a very short introduction [2017].pdf
Mudde & Rovira Kaltwasser. - Populism - a very short introduction [2017].pdfMudde & Rovira Kaltwasser. - Populism - a very short introduction [2017].pdf
Mudde & Rovira Kaltwasser. - Populism - a very short introduction [2017].pdf
 
3D Hybrid PIC simulation of the plasma expansion (ISSS-14)
3D Hybrid PIC simulation of the plasma expansion (ISSS-14)3D Hybrid PIC simulation of the plasma expansion (ISSS-14)
3D Hybrid PIC simulation of the plasma expansion (ISSS-14)
 
GBSN- Microbiology (Lab 3) Gram Staining
GBSN- Microbiology (Lab 3) Gram StainingGBSN- Microbiology (Lab 3) Gram Staining
GBSN- Microbiology (Lab 3) Gram Staining
 
Leaf Initiation, Growth and Differentiation.pdf
Leaf Initiation, Growth and Differentiation.pdfLeaf Initiation, Growth and Differentiation.pdf
Leaf Initiation, Growth and Differentiation.pdf
 
Phenomics assisted breeding in crop improvement
Phenomics assisted breeding in crop improvementPhenomics assisted breeding in crop improvement
Phenomics assisted breeding in crop improvement
 

Run-Fail-Grow: Creating Tailored Object Oriented Runtimes

  • 1. Run-Fail-Grow: Creating Tailored Object-Oriented Runtimes G. Polito, L. Fabresse, N. Bouraqadi, S. Ducasse, in Journal of Object Technology Guille Polito @guillep https://guillep.github.io/
  • 2. A(gain) need for
 small and fast startup • Micro Services • Container architectures • Small devices 2
  • 3. Lets look at an application... 3
  • 4. MainApp>>start logger := StdoutLogger new. logger log: ’Application has started’. "do something" logger log: ’Application has finished’. StdoutLogger»newLine stdout newLine. StdoutLogger»log: aMessage stdout nextPutAll: Time now printString. stdout nextPutAll: aMessage. stdout newLine. RemoteLogger»log: aMessage | socket | socket := self newSocket. socket nextPutAll: Time now printString. socket nextPutAll: aMessage. socket newLine. RemoteLogger»newSocket "...." "creates an instance of socket given some configuration" Log Lib Base Libs Logger <<interface>> StdoutLogger log: newLine App MainApp start RemoteLogger log: newSocket Date Time :stdout Socket 4
  • 5. There is extra stuff! 5
  • 6. Log Lib Base Libs Logger <<interface>> StdoutLogger log: newLine App MainApp start RemoteLogger log: newSocket Date Time :stdout Socket MainApp>>start logger := StdoutLogger new. logger log: ’Application has started’. "do something" logger log: ’Application has finished’. StdoutLogger»newLine stdout newLine. StdoutLogger»log: aMessage stdout nextPutAll: Time now printString. stdout nextPutAll: aMessage. stdout newLine. RemoteLogger»log: aMessage | socket | socket := self newSocket. socket nextPutAll: Time now printString. socket nextPutAll: aMessage. socket newLine. RemoteLogger»newSocket "...." "creates an instance of socket given some configuration" 6
  • 7. MainApp>>start logger := StdoutLogger new. logger log: ’Application has started’. "do something" logger log: ’Application has finished’. StdoutLogger»newLine stdout newLine. StdoutLogger»log: aMessage stdout nextPutAll: Time now printString. stdout nextPutAll: aMessage. stdout newLine. RemoteLogger»log: aMessage | socket | socket := self newSocket. socket nextPutAll: Time now printString. socket nextPutAll: aMessage. socket newLine. RemoteLogger»newSocket "...." "creates an instance of socket given some configuration" Log Lib Base Libs Logger <<interface>> StdoutLogger log: newLine App MainApp start RemoteLogger log: newSocket Date Time :stdout Socket 7
  • 8. MainApp>>start logger := StdoutLogger new. logger log: ’Application has started’. "do something" logger log: ’Application has finished’. StdoutLogger»newLine stdout newLine. StdoutLogger»log: aMessage stdout nextPutAll: Time now printString. stdout nextPutAll: aMessage. stdout newLine. RemoteLogger»log: aMessage | socket | socket := self newSocket. socket nextPutAll: Time now printString. socket nextPutAll: aMessage. socket newLine. RemoteLogger»newSocket "...." "creates an instance of socket given some configuration" Log Lib Base Libs Logger <<interface>> StdoutLogger log: newLine App MainApp start RemoteLogger log: newSocket Date Time :stdout Socket 8
  • 9. MainApp>>start logger := StdoutLogger new. logger log: ’Application has started’. "do something" logger log: ’Application has finished’. StdoutLogger»newLine stdout newLine. StdoutLogger»log: aMessage stdout nextPutAll: Time now printString. stdout nextPutAll: aMessage. stdout newLine. RemoteLogger»log: aMessage | socket | socket := self newSocket. socket nextPutAll: Time now printString. socket nextPutAll: aMessage. socket newLine. RemoteLogger»newSocket "...." "creates an instance of socket given some configuration" Log Lib Base Libs Logger <<interface>> StdoutLogger log: newLine App MainApp start RemoteLogger log: newSocket Date Time :stdout Socket 9
  • 10. 10 • Core Libraries take place and are distributed with the language • Runtime objects take place also
 
 • And some of those are runtime meta-data, used for reflection But there is not only bloat in
 
 application code Mariano Martinez Peck, Noury Bouraqadi, Marcus Denker, Stéphane Ducasse, and Luc Fabresse.
 Visualizing objects and memory usage. In Smalltalks 2010
  • 11. Q: Can we tailor the runtime? 
 Q: How small can they be? 11 Research questions
  • 12. a runtime virtualisation infrastructure + a run-fail-grow algorithm 12 Our solution in a nutshell
  • 13. Reference Application Nurtured Application 1. run 3. copy missing 2. fail 4. resume Code Units Tornado Run-Fail-Grow Virtualized Runtime hypervisor (empty) 13
  • 14. Reference Application Nurtured Application 1. run 3. copy missing 2. fail 4. resume Code Units Tornado Run-Fail-Grow hypervisor Virtualized Runtime 14
  • 15. Reference Application Nurtured Application 1. run 3. copy missing 2. fail 4. resume Code Units Tornado Run-Fail-Grow hypervisor Virtualized Runtime 15
  • 16. Reference Application Nurtured Application 1. run 3. copy missing 2. fail 4. resume Code Units Tornado Run-Fail-Grow hypervisor Virtualized Runtime 16
  • 17. Reference Application Nurtured Application 1. run 3. copy missing 2. fail 4. resume Code Units Tornado Run-Fail-Grow hypervisor Virtualized Runtime 17
  • 18. Reference Application Nurtured Application 1. run 3. copy missing 2. fail 4. resume Code Units Tornado Run-Fail-Grow hypervisor Virtualized Runtime 18
  • 19. How small can we get? Experiment Size (KB) %Saved Addition 11 99.99% Reflective App 32 99.83% Factorial 100 + I/O 89 99.39% Seaside Counter 573 96.73% 19
  • 20. Comparison with
 Traditional Tailoring Solutions criteria Dedicated
 Platforms Static/Hybrid
 Analysis Dynamic
 Analysis Tornado 20
  • 21. Comparison with
 Traditional Tailoring Solutions criteria Dedicated
 Platforms Static/Hybrid
 Analysis Dynamic
 Analysis Tornado Base libraries Third-party libraries Legacy Code Reflection Support General Purpose Infrastructure Configurability Dynamic Typing Minimality Completeness 21
  • 22. Comparison with
 Traditional Tailoring Solutions criteria Dedicated
 Platforms Static/Hybrid
 Analysis Dynamic
 Analysis Tornado Base libraries Third-party libraries Legacy Code Reflection Support General Purpose Infrastructure Configurability Dynamic Typing Minimality Completeness 22
  • 23. • Run-fail-grow approach for tailoring •Works on dynamic languages • Small memory footprint results (10k!) Run-Fail-Grow: Creating Tailored Object-Oriented Runtimes G. Polito, L. Fabresse, N. Bouraqadi, S. Ducasse, in Journal of Object Technology Guille Polito @guillep https://guillep.github.io/23