SlideShare una empresa de Scribd logo
1 de 63
Descargar para leer sin conexión
CogVM
Evolution
Clément Béra
Thursday, August 25, 16
CogVM ?
• Smalltalk virtual machine
• DefaultVM for
• Pharo
• Squeak
• Newspeak
• Cuis
Thursday, August 25, 16
Cog Philosophy
• Open source (MIT)
• Simple
• Is the optimization / feature worth the
added complexity ?
• Cross-Platform (Processors, OS, 32/64 bits)
Thursday, August 25, 16
Execution engine
• VM
• Execution engine
• Plugins: graphics, file, etc.
Thursday, August 25, 16
Execution engine
• Interpreter
• JIT
• Memory Manager (including GC)
Thursday, August 25, 16
Evolution
• User and Customer driven
• Where did we start ?
• What problems did we solve ?
Thursday, August 25, 16
Starting blocks
• InterpreterVM
• Made by Dan Ingalls Team
• Simple Interpreter
• Spaghetti stack
• Smart but simple Memory Manager
Thursday, August 25, 16
Performance !
Short-term delivery
Performance for 3D application
Thursday, August 25, 16
Performance !
Short-term delivery
Performance for 3D application
• Fast Interpreter
Thursday, August 25, 16
• Context-to-stack Mapping
• 85% of context allocation removed
• No copying of arguments
• New hash logic
• Primitive function caching
StackVM
Thursday, August 25, 16
Issue
• Closure implementation
• No temporaries
• BlockAlreadyEvaluated error
• Non obvious bugs
• New implementation
Thursday, August 25, 16
0	
2	
4	
6	
8	
10	
12	
14	
Interpreter	 Stack	 Cog	V1	 Cog	V2	 Spur	 Sista	
Binary Tree benchmark
Thursday, August 25, 16
More Performance !
Short-term delivery
Performance for 3D application
Thursday, August 25, 16
More Performance !
Short-term delivery
Performance for 3D application
• First JIT compiler
Thursday, August 25, 16
CogVM
• x86 back-end
• Simple machine code generation
• Except inline caches
Thursday, August 25, 16
Binary Tree benchmark
0	
2	
4	
6	
8	
10	
12	
14	
Interpreter	 Stack	 Cog	V1	 Cog	V2	 Spur	 Sista	
Thursday, August 25, 16
JIT Abstractions
V3
Object
Representation
SimpleStackCogit
Cogit
Implementation
x86
Machine
back-end
Thursday, August 25, 16
Yet More Performance !
Short-term delivery
Performance for 3D application
Thursday, August 25, 16
Yet More Performance !
Short-term delivery
Performance for 3D application
• Second JIT compiler
Thursday, August 25, 16
CogVM
• Machine code generation
• Linear scan register allocation
• Avoids many stack operations
• Register-based calling convention
Thursday, August 25, 16
Binary Tree benchmark
0	
2	
4	
6	
8	
10	
12	
14	
Interpreter	 Stack	 Cog	V1	 Cog	V2	 Spur	 Sista	
Thursday, August 25, 16
JIT Abstractions
V3
Object
Representation
SimpleStackCogit
StackToRegisterMappingCogit
Cogit
Implementation
x86
Machine
back-end
Thursday, August 25, 16
Newspeak support ?
Newspeak is Smalltalk-like
New kind of sends
Thursday, August 25, 16
Newspeak support ?
• Multiple bytecode set support
• Newspeak specific operations
• Interpreter
• Machine code generation
Thursday, August 25, 16
64 bits ?
Images larger than 1 or 2 Gb ?
Moving objects during FFI call-backs ?
Even more performance !
Ephemerons ?
Become is so slow it cannot be used.
Thursday, August 25, 16
64 bits ?
Images larger than 1 or 2 Gb ?
Moving objects during FFI call-backs ?
Even more performance !
Ephemerons ?
Become is so slow it cannot be used.
Short-term delivery
Thursday, August 25, 16
64 bits ?
Images larger than 1 or 2 Gb ?
Moving objects during FFI call-backs ?
Even more performance !
Ephemerons ?
Become is so slow it cannot be used.
Short-term delivery
• New Memory Manager
Thursday, August 25, 16
Spur Memory Manager
• Class-table (efficient caches and compactness)
• Efficient scavenging
• Fast become
• New object layouts (Ephemerons, ShortArrays)
• Memory representation 64-bits compatible
• Pinned objects
• Segmented Memory
Thursday, August 25, 16
Binary Tree benchmark
0	
2	
4	
6	
8	
10	
12	
14	
Interpreter	 Stack	 Cog	V1	 Cog	V2	 Spur	 Sista	
Thursday, August 25, 16
JIT Abstractions
V3
Spur32
Spur64
Object
Representation
SimpleStackCogit
StackToRegisterMappingCogit
Cogit
Implementation
x86
Machine
back-end
V3
Spur32
Spur64
Object
Representation
x86
Machine
back-end
32 bits 64 bits
Thursday, August 25, 16
Raspberry Pi performance ?
Scratch support
Thursday, August 25, 16
• ARMv6 support
Raspberry Pi performance ?
Scratch support
Thursday, August 25, 16
ARMv6 support
• JIT ARMv6 back-end
• JIT abstraction over literal management
• JIT abstraction over CISC / RISC
Thursday, August 25, 16
JIT Abstractions
V3
Spur32
Spur64
Object
Representation
SimpleStackCogit
StackToRegisterMappingCogit
Cogit
Implementation
x86
Machine
back-end
V3
Spur32
Spur64
Object
Representation
x86
ARMv6
MIPSEL
Machine
back-end
32 bits 64 bits
Inline
Outline
Literal
Manager
Thursday, August 25, 16
Ryan (contributor)
Working with the DartVM
Dart runs on more platform than Newspeak.
Thursday, August 25, 16
Ryan (contributor)
Working with the DartVM
Dart runs on more platform than Newspeak.
• MIPSEL support
Thursday, August 25, 16
JIT Abstractions
V3
Spur32
Spur64
Object
Representation
SimpleStackCogit
StackToRegisterMappingCogit
Cogit
Implementation
x86
Machine
back-end
V3
Spur32
Spur64
Object
Representation
x86
ARMv6
MIPSEL
Machine
back-end
32 bits 64 bits
Inline
Outline
Literal
Manager
Thursday, August 25, 16
64 bits support ?
64 bits library binding
Heap over 2Gb
Thursday, August 25, 16
64 bits support ?
64 bits library binding
Heap over 2Gb
• x64 support
• Immediate float
Thursday, August 25, 16
JIT Abstractions
V3
Spur32
Spur64
Object
Representation
Inline
Outline
Literal
Manager
SimpleStackCogit
StackToRegisterMappingCogit
Cogit
Implementation
x86
ARMv6
MIPSEL
x64
Machine
back-end
32 bits 64 bits
Thursday, August 25, 16
Yet even more performance !
Computation lasting
3 to 6 hours
Thursday, August 25, 16
Yet even more performance !
Computation lasting
3 to 6 hours
• Speculative optimizations
Thursday, August 25, 16
SistaVM
• The program introspects
• Optimize the code for performance
• Deoptimize when it took incorrect decisions
Thursday, August 25, 16
Issues
• Bytecode set
• Literal mutability
• Closure implementation
Thursday, August 25, 16
Bytecode set limitations ?
Code generator
tools
Thursday, August 25, 16
Sista bytecode set
• Lifting encoding limitations
• Encode instructions for the Sista / Lowcode
Thursday, August 25, 16
Efficient modification trackers ?
Literal inconsistency ?
Thursday, August 25, 16
• Read-only objects
• IWST talk this afternoon
• Hopefully allows more compiler optimizations
Efficient modification trackers ?
Literal inconsistency ?
Thursday, August 25, 16
Closure implementation
• Method and closure get more similar
• Simplifies part of theVM
• Simplifies the runtime compiler
Thursday, August 25, 16
Integration
• Closed alpha version
• Integrating dependencies:
• Bytecode set integrated
• Read-only objects integrated (but disabled)
• Closure implementation in progress
Thursday, August 25, 16
Binary Tree benchmark
0	
2	
4	
6	
8	
10	
12	
14	
Interpreter	 Stack	 Cog	V1	 Cog	V2	 Spur	 Sista	
Thursday, August 25, 16
JIT Abstractions
V3
Spur32
Spur64
Object
Representation
Inline
Outline
Literal
Manager
SimpleStackCogit
StackToRegisterMappingCogit
RegisterAllocatingCogit
SistaCogit
Cogit
Implementation
x86
ARMv6
MIPSEL
x64
Machine
back-end
32 bits 64 bits
Thursday, August 25, 16
Image compaction ?
Sometimes, large images
when saving
Thursday, August 25, 16
Image compaction ?
Sometimes, large images
when saving
• Better compactor
Thursday, August 25, 16
Pauses ?
0.5 second freezes
in UI application
Thursday, August 25, 16
Pauses ?
0.5 second freezes
in UI application
• Incremental GC
Thursday, August 25, 16
Many hidden parts
...
Thursday, August 25, 16
• C generated from Slang
• Many were fixed
• Towards compilation with -WAll -WError
C compiler warning ?
Thursday, August 25, 16
• LargeInteger plugin more efficient
• Computation moved from 8bits to 32 bits
• Different compilation flags
Faster arithmetic ?
Thursday, August 25, 16
• Slang-to-C compiler
• Many improvements
• Type inference
Slang ?
Thursday, August 25, 16
Contribution
Thursday, August 25, 16
CogVM team
• Started with Eliot Miranda
• Many more contributors now:
• Tim Rowledge
• Clément Béra (myself)
• Nicolas Cellier
• Fabio Niephaus & Tim Felgentreff
• Ryan Macnak
Thursday, August 25, 16
Conclusion
• Lots of new features and improvements over years
• A lot more is incoming
• If you want to support, talk to us !
• ARMv8 ?
• Incremental GC ?
• Performance (escaping, floats) ?
Thursday, August 25, 16

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

Golang Performance : microbenchmarks, profilers, and a war story
Golang Performance : microbenchmarks, profilers, and a war storyGolang Performance : microbenchmarks, profilers, and a war story
Golang Performance : microbenchmarks, profilers, and a war story
 
JavaCro'15 - Docker, Kubernetes and Jube - a new cloud architecture - Aleš Ju...
JavaCro'15 - Docker, Kubernetes and Jube - a new cloud architecture - Aleš Ju...JavaCro'15 - Docker, Kubernetes and Jube - a new cloud architecture - Aleš Ju...
JavaCro'15 - Docker, Kubernetes and Jube - a new cloud architecture - Aleš Ju...
 
Breaking the RpiDocker challenge
Breaking the RpiDocker challenge Breaking the RpiDocker challenge
Breaking the RpiDocker challenge
 
Vert.x devoxx london 2013
Vert.x devoxx london 2013Vert.x devoxx london 2013
Vert.x devoxx london 2013
 
Groovy & Grails eXchange 2012 vert.x presentation
Groovy & Grails eXchange 2012 vert.x presentationGroovy & Grails eXchange 2012 vert.x presentation
Groovy & Grails eXchange 2012 vert.x presentation
 
Understand the iptables step by step
Understand the iptables step by stepUnderstand the iptables step by step
Understand the iptables step by step
 
EC2 Storage for Docker 150526b
EC2 Storage for Docker   150526bEC2 Storage for Docker   150526b
EC2 Storage for Docker 150526b
 
Kafka Summit SF 2017 - One Day, One Data Hub, 100 Billion Messages: Kafka at ...
Kafka Summit SF 2017 - One Day, One Data Hub, 100 Billion Messages: Kafka at ...Kafka Summit SF 2017 - One Day, One Data Hub, 100 Billion Messages: Kafka at ...
Kafka Summit SF 2017 - One Day, One Data Hub, 100 Billion Messages: Kafka at ...
 
Rapid Application Design in Financial Services
Rapid Application Design in Financial ServicesRapid Application Design in Financial Services
Rapid Application Design in Financial Services
 
JavaScript Engines and Event Loop
JavaScript Engines and Event Loop JavaScript Engines and Event Loop
JavaScript Engines and Event Loop
 
About Clack
About ClackAbout Clack
About Clack
 
Couch to OpenStack: Cinder - August 6, 2013
Couch to OpenStack: Cinder - August 6, 2013Couch to OpenStack: Cinder - August 6, 2013
Couch to OpenStack: Cinder - August 6, 2013
 
Wso2 con 2014-us-tutorial-apache stratos-wso2 private paas with docker integr...
Wso2 con 2014-us-tutorial-apache stratos-wso2 private paas with docker integr...Wso2 con 2014-us-tutorial-apache stratos-wso2 private paas with docker integr...
Wso2 con 2014-us-tutorial-apache stratos-wso2 private paas with docker integr...
 
OpenStack Trove in Production at eBay - Trove Day 2014
OpenStack Trove in Production at eBay - Trove Day 2014OpenStack Trove in Production at eBay - Trove Day 2014
OpenStack Trove in Production at eBay - Trove Day 2014
 
Travel with your mock server
Travel with your mock serverTravel with your mock server
Travel with your mock server
 
PostgreSQL Sharding and HA: Theory and Practice (PGConf.ASIA 2017)
PostgreSQL Sharding and HA: Theory and Practice (PGConf.ASIA 2017)PostgreSQL Sharding and HA: Theory and Practice (PGConf.ASIA 2017)
PostgreSQL Sharding and HA: Theory and Practice (PGConf.ASIA 2017)
 
Collect distributed application logging using fluentd (EFK stack)
Collect distributed application logging using fluentd (EFK stack)Collect distributed application logging using fluentd (EFK stack)
Collect distributed application logging using fluentd (EFK stack)
 
K8s in 2hours
K8s in 2hoursK8s in 2hours
K8s in 2hours
 
Kafka Summit SF 2017 - Shopify Flash Sales with Apache Kafka
Kafka Summit SF 2017 - Shopify Flash Sales with Apache KafkaKafka Summit SF 2017 - Shopify Flash Sales with Apache Kafka
Kafka Summit SF 2017 - Shopify Flash Sales with Apache Kafka
 
Developing High Performance Application with Aerospike & Go
Developing High Performance Application with Aerospike & GoDeveloping High Performance Application with Aerospike & Go
Developing High Performance Application with Aerospike & Go
 

Similar a The Cog VM evolution

How to Build a High-Performance VM for Squeak/Smalltalk in Your Spare Time: A...
How to Build a High-Performance VM for Squeak/Smalltalk in Your Spare Time: A...How to Build a High-Performance VM for Squeak/Smalltalk in Your Spare Time: A...
How to Build a High-Performance VM for Squeak/Smalltalk in Your Spare Time: A...
ESUG
 

Similar a The Cog VM evolution (20)

2014 11-05 hpcac-kniep_christian_dockermpi
2014 11-05 hpcac-kniep_christian_dockermpi2014 11-05 hpcac-kniep_christian_dockermpi
2014 11-05 hpcac-kniep_christian_dockermpi
 
cadec-2017-golang
cadec-2017-golangcadec-2017-golang
cadec-2017-golang
 
Introduction to IoT.JS
Introduction to IoT.JSIntroduction to IoT.JS
Introduction to IoT.JS
 
Jfokus 2016 - A JVMs Journey into Polyglot Runtimes
Jfokus 2016 - A JVMs Journey into Polyglot RuntimesJfokus 2016 - A JVMs Journey into Polyglot Runtimes
Jfokus 2016 - A JVMs Journey into Polyglot Runtimes
 
Multimedia support in WebKitGTK and WPE, current status and plans (GStreamer ...
Multimedia support in WebKitGTK and WPE, current status and plans (GStreamer ...Multimedia support in WebKitGTK and WPE, current status and plans (GStreamer ...
Multimedia support in WebKitGTK and WPE, current status and plans (GStreamer ...
 
How to Build a High-Performance VM for Squeak/Smalltalk in Your Spare Time: A...
How to Build a High-Performance VM for Squeak/Smalltalk in Your Spare Time: A...How to Build a High-Performance VM for Squeak/Smalltalk in Your Spare Time: A...
How to Build a High-Performance VM for Squeak/Smalltalk in Your Spare Time: A...
 
Linux on RISC-V with Open Source Hardware (Open Source Summit Japan 2020)
Linux on RISC-V with Open Source Hardware (Open Source Summit Japan 2020)Linux on RISC-V with Open Source Hardware (Open Source Summit Japan 2020)
Linux on RISC-V with Open Source Hardware (Open Source Summit Japan 2020)
 
Cincom Roadmap ESUG2014
Cincom Roadmap ESUG2014Cincom Roadmap ESUG2014
Cincom Roadmap ESUG2014
 
Introduction to Micronaut - JBCNConf 2019
Introduction to Micronaut - JBCNConf 2019Introduction to Micronaut - JBCNConf 2019
Introduction to Micronaut - JBCNConf 2019
 
"Making Computer Vision Software Run Fast on Your Embedded Platform," a Prese...
"Making Computer Vision Software Run Fast on Your Embedded Platform," a Prese..."Making Computer Vision Software Run Fast on Your Embedded Platform," a Prese...
"Making Computer Vision Software Run Fast on Your Embedded Platform," a Prese...
 
The fight for surviving in the IoT world
The fight for surviving in the IoT worldThe fight for surviving in the IoT world
The fight for surviving in the IoT world
 
The fight for surviving in the IoT world - Radu Vunvulea
The fight for surviving in the IoT world - Radu VunvuleaThe fight for surviving in the IoT world - Radu Vunvulea
The fight for surviving in the IoT world - Radu Vunvulea
 
Bandwidth: Use Cases for Elastic Cloud on Kubernetes
Bandwidth: Use Cases for Elastic Cloud on Kubernetes Bandwidth: Use Cases for Elastic Cloud on Kubernetes
Bandwidth: Use Cases for Elastic Cloud on Kubernetes
 
QT 프로그래밍 기초(basic of QT programming tutorial)
QT 프로그래밍 기초(basic of QT programming tutorial)QT 프로그래밍 기초(basic of QT programming tutorial)
QT 프로그래밍 기초(basic of QT programming tutorial)
 
Comparing Next-Generation Container Image Building Tools
 Comparing Next-Generation Container Image Building Tools Comparing Next-Generation Container Image Building Tools
Comparing Next-Generation Container Image Building Tools
 
Linux on RISC-V with Open Hardware (ELC-E 2020)
Linux on RISC-V with Open Hardware (ELC-E 2020)Linux on RISC-V with Open Hardware (ELC-E 2020)
Linux on RISC-V with Open Hardware (ELC-E 2020)
 
Hot to build continuously processing for 24/7 real-time data streaming platform?
Hot to build continuously processing for 24/7 real-time data streaming platform?Hot to build continuously processing for 24/7 real-time data streaming platform?
Hot to build continuously processing for 24/7 real-time data streaming platform?
 
Cincom Smalltalk Roadmap ESUG 2013
Cincom Smalltalk Roadmap ESUG 2013Cincom Smalltalk Roadmap ESUG 2013
Cincom Smalltalk Roadmap ESUG 2013
 
[KubeCon EU 2020] containerd Deep Dive
[KubeCon EU 2020] containerd Deep Dive[KubeCon EU 2020] containerd Deep Dive
[KubeCon EU 2020] containerd Deep Dive
 
NET core 2 e i fratelli
NET core 2 e i fratelliNET core 2 e i fratelli
NET core 2 e i fratelli
 

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

Más 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
 

Último

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
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
VishalKumarJha10
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
mohitmore19
 

Último (20)

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-...
 
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
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
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 ...
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
 
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdfAzure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024
 
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
 
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
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdf
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
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
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
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
 
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...
 
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
 
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 🔝✔️✔️
 

The Cog VM evolution