Pony
A Brief Programming Language Overview! October 2017
Pony A Brief Programming Language Overview! October 2017 - - PowerPoint PPT Presentation
Pony A Brief Programming Language Overview! October 2017 Disclaimer! I am a fan of some of the ideas in Pony! I am not a Pony programmer Pony contributor etc Disclaimer! Most of the content of these slides is from Deny
A Brief Programming Language Overview! October 2017
Disclaimer! I am a fan of some of the ideas in Pony! I am not a
Disclaimer! Most of the content of these slides is from
(by Clebsch, Drossopoulou, Blessing, and McNeil)
(https://blog.acolyer.org/2016/02/17/deny-capabilities/) Check those out for more info!
Pony is an open-source, object-oriented, actor-model, capabilities- secure, high-performance programming language
Pony describes itself as
Other bullets about Pony (from a podcast in July):
a 4096 core SGI beast
actors is possible
[many common] concurrency problems in Pony
class def
field constructor methods
actor def
field constructor methods behaviors
reference of type ‘S’ with capability ‘k’ a possibly “unaliased” type Reference capabilities (i.e. deny properties)
Image and descriptions borrowed from https://blog.acolyer.org/2016/02/17/deny-capabilities/
iso: Isolated references form static regions: mutable references reachable via the iso reference can only be reached via the iso reference, and immutable references reachable via the iso reference are either globally immutable
Image and descriptions borrowed from https://blog.acolyer.org/2016/02/17/deny-capabilities/
trn: allows an object to be written to
via other aliases held by the same actor. This allows the object to be mutable while still allowing it to transition to an immutable reference capability in the future, in order to share it with another actor.
Image and descriptions borrowed from https://blog.acolyer.org/2016/02/17/deny-capabilities/
Image and descriptions borrowed from https://blog.acolyer.org/2016/02/17/deny-capabilities/
ref: a ref variable can be used to read and write the object within an actor, and
can also be used to read and write the
is denied to any other (global) actor.
val: a val variable is a bit like const, it denotes a variable that is globally immutable – it denies write capabilities both locally and globally (and hence by implication, allows reading from anywhere).
Image and descriptions borrowed from https://blog.acolyer.org/2016/02/17/deny-capabilities/
box: a box variable denies any other actors (global actors) the right to use a variable to write to the object. Other variables within the same actor may be used to write to the object, and other actors may be able to read it (but not both).
Image and descriptions borrowed from https://blog.acolyer.org/2016/02/17/deny-capabilities/
tag: we can alias a tag (pass it as a parameter, assign it to other tag variables), and we can also invoke behaviors on it. (i.e. to send messages to another another actor, you only need a tag reference to it) Note! A tag reference is opaque, i.e. we can only invoke behaviors or compare for identity equality.
Image and descriptions borrowed from https://blog.acolyer.org/2016/02/17/deny-capabilities/
Recall -- Pony is
(since actors GC their own heaps)
Made possible by reference capabilities
Mutable, Doubly Linked List
Persistent list (our old friend)
Persistent list (our old friend)
Persistent list (our old friend)
Pony today?
where they use Pony daily.
feature currently being worked on)
To learn more: https://www.ponylang.org