SlideShare a Scribd company logo
The Erlang Ecosystem
Robert Virding
www.erlang-solutions.com
Background: the problem
β€£Ericsson’s β€œbest seller” AXE
telephone exchanges
(switches) required large
effort to develop and maintain
software.
β€£The problem to solve was how
to make programming these
types of applications easier,
but keeping the same
characteristics.
www.erlang-solutions.com
3
β€£Handle a very large numbers of concurrent activities.
β€£Actions must be performed at a certain point in time or within a certain time.
β€£System distributed over several computers.
β€£Interaction with hardware.
β€£Very large software systems.
β€£Complex functionality such as feature interaction.
β€£Continuous operation over many years.
β€£Software maintenance (reconfiguration etc.) without stopping the system.
β€£Stringent quality and reliability requirements.
β€£Fault tolerance both to hardware failures and software errors.
Bjarne DΓ€cker, November 2000 - Licentiate Thesis
Background: problem domain
β€£Handle a very large numbers of concurrent activities.
β€£Actions must be performed at a certain point in time or within a certain time.
β€£System distributed over several computers.
β€£Interaction with hardware.
β€£Very large software systems.
β€£Complex functionality such as feature interaction.
β€£Continuous operation over many years.
β€£Software maintenance (reconfiguration etc.) without stopping the system.
β€£Stringent quality and reliability requirements.
β€£Fault tolerance both to hardware failures and software errors.
Bjarne DΓ€cker, November 2000 - Licentiate Thesis
Not just telecom
www.erlang-solutions.com
4
Background: some reflections
WE WERE TRYING TO SOLVE THE
PROBLEM
We were not out to implement the actor model
We were not out to implement a functional language
www.erlang-solutions.com
5
Background: some reflections
The language/system

evolved to solve the problem
β€£We had a clear set of criteria for what should go into
the language/system
β–Ή Was it useful?
β–Ή Did it or did it not help build the system?
β€£This made the development of the language/system
very focused
www.erlang-solutions.com
6
Erlang and the system around it was designed
to solve this type of problem
Erlang/OTP provides direct support for these
issues
Background
www.erlang-solutions.com
7
β–Έ Lightweight concurrency
β–Ή Must handle a large number of processes
β–Ή Process creation, context switching and inter-process communication must be
cheap and fast.
β–Έ Asynchronous communication
β–Έ Process isolation
β–Ή What happens in one process must not affect any other process.
β–Έ Error handling
β–Ή The system must be able to detect and handle errors.
β–Έ Continuous evolution of the system
β–Ή We want to upgrade the system while running and with no loss of service.
First Principles
www.erlang-solutions.com
8
Also
β–Έ High level language to get real benefits.
β–Έ The language/system should be simple
β–Ή Simple in the sense that there should be a small number of basic principles, if
these are right then the language will be powerful but easy to comprehend and
use. Small is good.
β–Ή The language should be simple to understand and program.
β–Έ Provide tools for building systems, not solutions
β–Ή We would provide the basic operations needed for building communication
protocols and error handling
First Principles
www.erlang-solutions.com
9
Hard at work developing Erlang
10
β–ΈSimple functional language
β–Ή With a β€œdifferent” syntax
β–ΈIt is safe!
β–Ή For example no pointer errors
β–ΈIt is reasonably high-level
β–Ή At least then it was
β–Ή Still is in many ways
β–ΈDynamically typed!
β–Ή No user defined data-types!
Sequential Language
11
β–ΈTypical features of functional languages
β–Ή Immutable data
β–Ή Immutable variables
β–Ή Extensive use of pattern matching
β–Ή Recursion rules!
Sequential Language
12
<< IpVers:4, HdrLen:4, SrvcType:8, TotLen:16,
ID:16, Flags:3, FragOff:13,
TTL:8, Proto:8, HdrChkSum:16,
SrcIP:32, DestIP:32,
RestDgram/binary >>
β–Έ IP datagram of IP protocol version 4
Sequential Language: high-level binaries
13
Mike Williams:
β€œthree properties of a programming language are central to the
efficient operation of a concurrent language or operating system.
These are: 1) the time to create a process. 2) the time to perform a
context switch between two different processes and 3) the time to
copy a message between two processes.
The performance of any highly-concurrent system is dominated by
these three times.”
Concurrency
14
β–ΈLight-weight processes
β–Ή Millions of Erlang processes possible on one machine
β–ΈAsynchronous message passing
β–Ή Only method of communication between processes
β–Ή Necessary for non-blocking systems
β–Ή Provide basic mechanism
β–Ή Very cheap
β–ΈSelective receive mechanism
β–Ή Allows us to ignore messages which are uninteresting now
β–ΈProcesses are isolated!
β–ΈNO GLOBAL DATA!
Concurrency: core ideas
www.erlang-solutions.com
15
Error Handling: basic premise
ERRORS WILL ALWAYS OCCUR!
www.erlang-solutions.com
16
Error Handling: basic goal
THE SYSTEM MUST NEVER GO DOWN!
Parts may crash and burn
BUT
The system must never go down!
17
Robust systems must always be aware of errors
BUT
Want to avoid writing error checking code everywhere
Want to be able to handle process crashes among cooperating
processes
Interact well with process communication
Error Handling
18
We just want to
Error Handling
Let it crash!
19
β–ΈProcess based
β–ΈIf one process crashes then all cooperating processes should
crash
β–Ή Cooperating processes are linked together
β–Ή Process crashes propagate exit signals along links
β–Ή A process receiving an exit signal crashes
▸”System” processes can monitor them and restart them when
necessary by trapping exits
β–Ή exit signals are converted to messages in the process message queue
β–Ή the process does not crash
β–ΈBut sometimes we do need to handle errors locally
Error Handling
20
How do you build robust systems?
β–ΈAt least you need to ensure
β–Ή Necessary functionality is always available
β–Ή System cleans up when things go wrong
β–ΈMust have at least two machines!
β–Ή Need distribution
Robust Systems
21
Supervision trees
β–ΈSupervisors will start child processes
β–Ή Workers
β–Ή Supervisors
β–ΈSupervisors will monitor

their children
β–Ή Through links and trapping exits
β–ΈSupervisors can restart the

children when they terminate
Robust Systems: necessary functionality
Supervisors
Workers
22
Monitor processes
β–ΈServers monitoring clients
β–Ή Clean-up after then if they crash
β–ΈProcesses monitoring co-workers
β–ΈGroups of co-workers dying together
Robust Systems: system cleanup
23
β–ΈA set of design patterns for building concurrent, fault
tolerant systems
β–ΈGeneric behaviours
β–Ή Implement the design patterns
β–Ή Extensible to support new patterns
β–ΈLibraries
β–ΈSupport tools for building systems/releases
OTP (Open Telecom Platform)
There is nothing about telecoms
in OTP!
24
Systems built with Erlang tend to
be very OS like
β–ΈProvides services
β–ΈVery seldom a central thread of execution
β–Ή At most something which starts β€œtasks”
Systems
25
What is the BEAM?
A virtual machine to run Erlang
26
β–Έ Lightweight, massive concurrency
β–Έ Asynchronous communication
β–Έ Process isolation
β–Έ Error handling
β–Έ Continuous evolution of the system
β–Έ Soft real-time
β–Έ Transparent SMP/multi-core support
β–Έ Interfaces to the outside world
These we seldom have to worry about directly in a language,

except for receiving messages
Properties of the BEAM
27
β–Έ Immutable data
β–Έ Predefined set of data types
β–Έ Pattern matching
β–Έ Functional language
β–Έ Modules/code
β–Έ No global data
These are what we mainly "see" directly in our languages
Properties of the BEAM
Erlang Ecosystem
28
Languages built/running on
top of the BEAM, Erlang and
OTP.
By following β€œthe rules” the
languages openly interact with,
and support, each other
making the whole system more
powerful than any individual
language can ever be.
Erlang Ecosystem
29
The whole system can
interact with other
systems
30
Extending the system
31
β–Έ Languages which keep the basic Erlang execution model and data
types
β–Ή New syntax
β–Ή Different β€œpackaging”
β–Έ Elixir
β–Έ LFE (Lisp Flavoured Erlang
β–Έ Languages which extend the Erlang execution model and data
types
β–Έ Lua
β–Έ Prolog
Extending the system: new skin for the old ceremony
32
The thickness of the skin affects how efficiently the new language
can be implemented and how seamlessly it can interact
Extending the system: new skin for the old ceremony
ERLANG BEAM
OTP
OTP
Erlang
New Language
New Language libraries
33
β–Έβ€œElixir is a dynamic, functional language designed for
building scalable and maintainable applications.”
β–Έβ€œElixir is influenced by Ruby”
β–Ή β€œElixir is NOT Ruby on the Erlang VM”
β–ΈElixir has meta programming capabilities using macros
β–ΈMany libraries and interfaces standardised, rewritten and
extended
β–ΈComes with extensive set of build tools
Elixir
Thin skin
34
β–Έ"LFE, Lisp Flavoured Erlang, is a lisp syntax front-end to the
Erlang system"
β–ΈIt's a real Lisp
β–ΈProvides lots of lisp goodies
β–Ή Real homoiconicity and macros (yay!)
β–ΈSeamlessly interacts with vanilla Erlang/OTP
β–Ή Be able to freely mix vanilla code and LFE code
β–ΈSmall core language
LFE (Lisp Flavoured Erlang)
Thin skin
35
β–Έ"Lua is a powerful, efficient, lightweight, embeddable
scripting language. It supports procedural programming,
object-oriented programming, functional programming,
data-driven programming, and data description."
β–ΈImplements Lua 5.2
β–Ή All of it!
β–ΈShared, mutable, global data
β–ΈLua handling of code
β–Έ...
Lua
Thick skin
Robert Virding
rvirding@gmail.com
robert.virding@erlang-solutions.com
@rvirding

More Related Content

PDF
Combining the strength of erlang and Ruby
PDF
Erlang factory SF 2011 "Erlang and the big switch in social games"
PDF
Erlang factory 2011 london
PDF
Erlang as a cloud citizen, a fractal approach to throughput
PDF
Xen_and_Rails_deployment
PDF
Architecture Evolution at Wooga (AWS Cloud Computing for Developers,)
Β 
PPTX
Parallel and Asynchronous Programming - ITProDevConnections 2012 (Greek)
PPTX
Elm - Could this be the Future of Web Dev?
Combining the strength of erlang and Ruby
Erlang factory SF 2011 "Erlang and the big switch in social games"
Erlang factory 2011 london
Erlang as a cloud citizen, a fractal approach to throughput
Xen_and_Rails_deployment
Architecture Evolution at Wooga (AWS Cloud Computing for Developers,)
Β 
Parallel and Asynchronous Programming - ITProDevConnections 2012 (Greek)
Elm - Could this be the Future of Web Dev?

What's hot (12)

PPTX
Parallel and Asynchronous Programming - ITProDevConnections 2012 (English)
PPT
Devops at Netflix (re:Invent)
PPTX
CQRS Evolved - CQRS + Akka.NET
PPTX
Akka.net versus microsoft orleans
PDF
Intro to elixir and phoenix
PPTX
Python Raster Function - Esri Developer Conference - 2015
PPTX
The Actor Model - Towards Better Concurrency
PPT
Introduction to the intermediate Python - v1.1
PDF
High Performance Systems in Go - GopherCon 2014
PDF
John adams talk cloudy
KEY
Migrating big data
PDF
Go Reactive: Event-Driven, Scalable, Resilient & Responsive Systems
Parallel and Asynchronous Programming - ITProDevConnections 2012 (English)
Devops at Netflix (re:Invent)
CQRS Evolved - CQRS + Akka.NET
Akka.net versus microsoft orleans
Intro to elixir and phoenix
Python Raster Function - Esri Developer Conference - 2015
The Actor Model - Towards Better Concurrency
Introduction to the intermediate Python - v1.1
High Performance Systems in Go - GopherCon 2014
John adams talk cloudy
Migrating big data
Go Reactive: Event-Driven, Scalable, Resilient & Responsive Systems
Ad

Similar to FunctionalConf '16 Robert Virding Erlang Ecosystem (20)

PDF
Wherefore art thou Erlang?, OW2con'18, June 7-8, 2018, Paris
Β 
PDF
Learning Elixir as a Rubyist
PPTX
Epc 3.ppt
PDF
Pilgrim's Progress to the Promised Land by Robert Virding
PDF
OS-Lec-1NJJSALALAIASHIAHILHDLIAHDIHD.pdf
PDF
Operating systems
PDF
Os-unit1-Introduction to Operating Systems.pdf
PPT
Computer Languages
PPTX
Web Quest Of Operating Systems
Β 
PDF
os_1.pdf
PDF
Simplifying debugging for multi-core Linux devices and low-power Linux clusters
PPTX
system software and application software
PPTX
Shamsa altayer
PDF
Concurrency in Operating system_12345678
PPTX
Open shmem
DOC
Richa garg itm
PDF
Joe armstrong erlanga_languageforprogrammingreliablesystems
PPTX
Computer software part 1
PDF
Operating system
PPT
Unit 1_Operating system
Wherefore art thou Erlang?, OW2con'18, June 7-8, 2018, Paris
Β 
Learning Elixir as a Rubyist
Epc 3.ppt
Pilgrim's Progress to the Promised Land by Robert Virding
OS-Lec-1NJJSALALAIASHIAHILHDLIAHDIHD.pdf
Operating systems
Os-unit1-Introduction to Operating Systems.pdf
Computer Languages
Web Quest Of Operating Systems
Β 
os_1.pdf
Simplifying debugging for multi-core Linux devices and low-power Linux clusters
system software and application software
Shamsa altayer
Concurrency in Operating system_12345678
Open shmem
Richa garg itm
Joe armstrong erlanga_languageforprogrammingreliablesystems
Computer software part 1
Operating system
Unit 1_Operating system
Ad

Recently uploaded (20)

PDF
πŸ’° π”πŠπ“πˆ πŠπ„πŒπ„ππ€ππ†π€π πŠπˆππ„π‘πŸ’πƒ π‡π€π‘πˆ 𝐈𝐍𝐈 πŸπŸŽπŸπŸ“ πŸ’°
Β 
PPTX
artificial intelligence overview of it and more
PPTX
Introuction about WHO-FIC in ICD-10.pptx
PPTX
international classification of diseases ICD-10 review PPT.pptx
PPTX
Introduction to Information and Communication Technology
PDF
RPKI Status Update, presented by Makito Lay at IDNOG 10
Β 
PPTX
INTERNET------BASICS-------UPDATED PPT PRESENTATION
PPTX
CHE NAA, , b,mn,mblblblbljb jb jlb ,j , ,C PPT.pptx
PPTX
522797556-Unit-2-Temperature-measurement-1-1.pptx
PPTX
innovation process that make everything different.pptx
PDF
The Internet -By the Numbers, Sri Lanka Edition
Β 
PPT
Design_with_Watersergyerge45hrbgre4top (1).ppt
PDF
WebRTC in SignalWire - troubleshooting media negotiation
PDF
SASE Traffic Flow - ZTNA Connector-1.pdf
PDF
Automated vs Manual WooCommerce to Shopify Migration_ Pros & Cons.pdf
PPTX
Job_Card_System_Styled_lorem_ipsum_.pptx
PDF
Vigrab.top – Online Tool for Downloading and Converting Social Media Videos a...
PDF
Best Practices for Testing and Debugging Shopify Third-Party API Integrations...
PPTX
QR Codes Qr codecodecodecodecocodedecodecode
PDF
Cloud-Scale Log Monitoring _ Datadog.pdf
πŸ’° π”πŠπ“πˆ πŠπ„πŒπ„ππ€ππ†π€π πŠπˆππ„π‘πŸ’πƒ π‡π€π‘πˆ 𝐈𝐍𝐈 πŸπŸŽπŸπŸ“ πŸ’°
Β 
artificial intelligence overview of it and more
Introuction about WHO-FIC in ICD-10.pptx
international classification of diseases ICD-10 review PPT.pptx
Introduction to Information and Communication Technology
RPKI Status Update, presented by Makito Lay at IDNOG 10
Β 
INTERNET------BASICS-------UPDATED PPT PRESENTATION
CHE NAA, , b,mn,mblblblbljb jb jlb ,j , ,C PPT.pptx
522797556-Unit-2-Temperature-measurement-1-1.pptx
innovation process that make everything different.pptx
The Internet -By the Numbers, Sri Lanka Edition
Β 
Design_with_Watersergyerge45hrbgre4top (1).ppt
WebRTC in SignalWire - troubleshooting media negotiation
SASE Traffic Flow - ZTNA Connector-1.pdf
Automated vs Manual WooCommerce to Shopify Migration_ Pros & Cons.pdf
Job_Card_System_Styled_lorem_ipsum_.pptx
Vigrab.top – Online Tool for Downloading and Converting Social Media Videos a...
Best Practices for Testing and Debugging Shopify Third-Party API Integrations...
QR Codes Qr codecodecodecodecocodedecodecode
Cloud-Scale Log Monitoring _ Datadog.pdf

FunctionalConf '16 Robert Virding Erlang Ecosystem

  • 2. www.erlang-solutions.com Background: the problem β€£Ericsson’s β€œbest seller” AXE telephone exchanges (switches) required large effort to develop and maintain software. β€£The problem to solve was how to make programming these types of applications easier, but keeping the same characteristics.
  • 3. www.erlang-solutions.com 3 β€£Handle a very large numbers of concurrent activities. β€£Actions must be performed at a certain point in time or within a certain time. β€£System distributed over several computers. β€£Interaction with hardware. β€£Very large software systems. β€£Complex functionality such as feature interaction. β€£Continuous operation over many years. β€£Software maintenance (reconfiguration etc.) without stopping the system. β€£Stringent quality and reliability requirements. β€£Fault tolerance both to hardware failures and software errors. Bjarne DΓ€cker, November 2000 - Licentiate Thesis Background: problem domain β€£Handle a very large numbers of concurrent activities. β€£Actions must be performed at a certain point in time or within a certain time. β€£System distributed over several computers. β€£Interaction with hardware. β€£Very large software systems. β€£Complex functionality such as feature interaction. β€£Continuous operation over many years. β€£Software maintenance (reconfiguration etc.) without stopping the system. β€£Stringent quality and reliability requirements. β€£Fault tolerance both to hardware failures and software errors. Bjarne DΓ€cker, November 2000 - Licentiate Thesis Not just telecom
  • 4. www.erlang-solutions.com 4 Background: some reflections WE WERE TRYING TO SOLVE THE PROBLEM We were not out to implement the actor model We were not out to implement a functional language
  • 5. www.erlang-solutions.com 5 Background: some reflections The language/system
 evolved to solve the problem β€£We had a clear set of criteria for what should go into the language/system β–Ή Was it useful? β–Ή Did it or did it not help build the system? β€£This made the development of the language/system very focused
  • 6. www.erlang-solutions.com 6 Erlang and the system around it was designed to solve this type of problem Erlang/OTP provides direct support for these issues Background
  • 7. www.erlang-solutions.com 7 β–Έ Lightweight concurrency β–Ή Must handle a large number of processes β–Ή Process creation, context switching and inter-process communication must be cheap and fast. β–Έ Asynchronous communication β–Έ Process isolation β–Ή What happens in one process must not affect any other process. β–Έ Error handling β–Ή The system must be able to detect and handle errors. β–Έ Continuous evolution of the system β–Ή We want to upgrade the system while running and with no loss of service. First Principles
  • 8. www.erlang-solutions.com 8 Also β–Έ High level language to get real benefits. β–Έ The language/system should be simple β–Ή Simple in the sense that there should be a small number of basic principles, if these are right then the language will be powerful but easy to comprehend and use. Small is good. β–Ή The language should be simple to understand and program. β–Έ Provide tools for building systems, not solutions β–Ή We would provide the basic operations needed for building communication protocols and error handling First Principles
  • 10. 10 β–ΈSimple functional language β–Ή With a β€œdifferent” syntax β–ΈIt is safe! β–Ή For example no pointer errors β–ΈIt is reasonably high-level β–Ή At least then it was β–Ή Still is in many ways β–ΈDynamically typed! β–Ή No user defined data-types! Sequential Language
  • 11. 11 β–ΈTypical features of functional languages β–Ή Immutable data β–Ή Immutable variables β–Ή Extensive use of pattern matching β–Ή Recursion rules! Sequential Language
  • 12. 12 << IpVers:4, HdrLen:4, SrvcType:8, TotLen:16, ID:16, Flags:3, FragOff:13, TTL:8, Proto:8, HdrChkSum:16, SrcIP:32, DestIP:32, RestDgram/binary >> β–Έ IP datagram of IP protocol version 4 Sequential Language: high-level binaries
  • 13. 13 Mike Williams: β€œthree properties of a programming language are central to the efficient operation of a concurrent language or operating system. These are: 1) the time to create a process. 2) the time to perform a context switch between two different processes and 3) the time to copy a message between two processes. The performance of any highly-concurrent system is dominated by these three times.” Concurrency
  • 14. 14 β–ΈLight-weight processes β–Ή Millions of Erlang processes possible on one machine β–ΈAsynchronous message passing β–Ή Only method of communication between processes β–Ή Necessary for non-blocking systems β–Ή Provide basic mechanism β–Ή Very cheap β–ΈSelective receive mechanism β–Ή Allows us to ignore messages which are uninteresting now β–ΈProcesses are isolated! β–ΈNO GLOBAL DATA! Concurrency: core ideas
  • 15. www.erlang-solutions.com 15 Error Handling: basic premise ERRORS WILL ALWAYS OCCUR!
  • 16. www.erlang-solutions.com 16 Error Handling: basic goal THE SYSTEM MUST NEVER GO DOWN! Parts may crash and burn BUT The system must never go down!
  • 17. 17 Robust systems must always be aware of errors BUT Want to avoid writing error checking code everywhere Want to be able to handle process crashes among cooperating processes Interact well with process communication Error Handling
  • 18. 18 We just want to Error Handling Let it crash!
  • 19. 19 β–ΈProcess based β–ΈIf one process crashes then all cooperating processes should crash β–Ή Cooperating processes are linked together β–Ή Process crashes propagate exit signals along links β–Ή A process receiving an exit signal crashes ▸”System” processes can monitor them and restart them when necessary by trapping exits β–Ή exit signals are converted to messages in the process message queue β–Ή the process does not crash β–ΈBut sometimes we do need to handle errors locally Error Handling
  • 20. 20 How do you build robust systems? β–ΈAt least you need to ensure β–Ή Necessary functionality is always available β–Ή System cleans up when things go wrong β–ΈMust have at least two machines! β–Ή Need distribution Robust Systems
  • 21. 21 Supervision trees β–ΈSupervisors will start child processes β–Ή Workers β–Ή Supervisors β–ΈSupervisors will monitor
 their children β–Ή Through links and trapping exits β–ΈSupervisors can restart the
 children when they terminate Robust Systems: necessary functionality Supervisors Workers
  • 22. 22 Monitor processes β–ΈServers monitoring clients β–Ή Clean-up after then if they crash β–ΈProcesses monitoring co-workers β–ΈGroups of co-workers dying together Robust Systems: system cleanup
  • 23. 23 β–ΈA set of design patterns for building concurrent, fault tolerant systems β–ΈGeneric behaviours β–Ή Implement the design patterns β–Ή Extensible to support new patterns β–ΈLibraries β–ΈSupport tools for building systems/releases OTP (Open Telecom Platform) There is nothing about telecoms in OTP!
  • 24. 24 Systems built with Erlang tend to be very OS like β–ΈProvides services β–ΈVery seldom a central thread of execution β–Ή At most something which starts β€œtasks” Systems
  • 25. 25 What is the BEAM? A virtual machine to run Erlang
  • 26. 26 β–Έ Lightweight, massive concurrency β–Έ Asynchronous communication β–Έ Process isolation β–Έ Error handling β–Έ Continuous evolution of the system β–Έ Soft real-time β–Έ Transparent SMP/multi-core support β–Έ Interfaces to the outside world These we seldom have to worry about directly in a language,
 except for receiving messages Properties of the BEAM
  • 27. 27 β–Έ Immutable data β–Έ Predefined set of data types β–Έ Pattern matching β–Έ Functional language β–Έ Modules/code β–Έ No global data These are what we mainly "see" directly in our languages Properties of the BEAM
  • 28. Erlang Ecosystem 28 Languages built/running on top of the BEAM, Erlang and OTP. By following β€œthe rules” the languages openly interact with, and support, each other making the whole system more powerful than any individual language can ever be.
  • 29. Erlang Ecosystem 29 The whole system can interact with other systems
  • 31. 31 β–Έ Languages which keep the basic Erlang execution model and data types β–Ή New syntax β–Ή Different β€œpackaging” β–Έ Elixir β–Έ LFE (Lisp Flavoured Erlang β–Έ Languages which extend the Erlang execution model and data types β–Έ Lua β–Έ Prolog Extending the system: new skin for the old ceremony
  • 32. 32 The thickness of the skin affects how efficiently the new language can be implemented and how seamlessly it can interact Extending the system: new skin for the old ceremony ERLANG BEAM OTP OTP Erlang New Language New Language libraries
  • 33. 33 β–Έβ€œElixir is a dynamic, functional language designed for building scalable and maintainable applications.” β–Έβ€œElixir is influenced by Ruby” β–Ή β€œElixir is NOT Ruby on the Erlang VM” β–ΈElixir has meta programming capabilities using macros β–ΈMany libraries and interfaces standardised, rewritten and extended β–ΈComes with extensive set of build tools Elixir Thin skin
  • 34. 34 β–Έ"LFE, Lisp Flavoured Erlang, is a lisp syntax front-end to the Erlang system" β–ΈIt's a real Lisp β–ΈProvides lots of lisp goodies β–Ή Real homoiconicity and macros (yay!) β–ΈSeamlessly interacts with vanilla Erlang/OTP β–Ή Be able to freely mix vanilla code and LFE code β–ΈSmall core language LFE (Lisp Flavoured Erlang) Thin skin
  • 35. 35 β–Έ"Lua is a powerful, efficient, lightweight, embeddable scripting language. It supports procedural programming, object-oriented programming, functional programming, data-driven programming, and data description." β–ΈImplements Lua 5.2 β–Ή All of it! β–ΈShared, mutable, global data β–ΈLua handling of code β–Έ... Lua Thick skin