Draft:Pony (programming language)
![]() | Review waiting, please be patient.
This may take 2 months or more, since drafts are reviewed in no specific order. There are 2,281 pending submissions waiting for review.
Where to get help
How to improve a draft
You can also browse Wikipedia:Featured articles and Wikipedia:Good articles to find examples of Wikipedia's best writing on topics similar to your proposed article. Improving your odds of a speedy review To improve your odds of a faster review, tag your draft with relevant WikiProject tags using the button below. This will let reviewers know a new draft has been submitted in their area of interest. For instance, if you wrote about a female astronomer, you would want to add the Biography, Astronomy, and Women scientists tags. Editor resources
Reviewer tools
|
![]() | |
Paradigm | Actor model, Object-oriented, Imperative |
---|---|
Designed by | Sylvan Clebsch[1] |
First appeared | 28 April 2015[2] |
Stable release | 0.58.9
/ December 29, 2024 |
Typing discipline | strong, static, inferred, nominal, structural |
Implementation language | C |
License | BSD-2.[3] |
Website | www |
Influenced by | |
E | |
Influenced | |
Project Verona |
Pony (also referred to as ponylang) is a free and open source, object-oriented, actor model, capabilities-secure, high performance programming language.[4][5] Pony's reference capabilities allow even mutable data to be safely passed by reference between actors. Garbage collection is performed concurrently, per-actor, without the need to "stop the world".[6][7][8] Sylvan Clebsch is the original creator of the language.[9][10] It is now being maintained and developed by members of the Pony team.[11]
History
[edit]The language was created by Sylvan Clebsch, while a Ph.D student at Imperial College London. His professor at that time was Sophia Drossopoulou, who is also well known for her contributions to computer programming, and as a lecturer. According to developers who have talked to Sylvan, he was frustrated with not having a high performance language that could run concurrent code securely, safely, and more simply. The result is he began development on Pony.[12]
Language design
[edit]At its core, Pony is a systems language designed around safety and performance.
Safety
[edit]- Type Safety - Pony is a type safe language.[13][5]
- Memory Safety - There are no dangling pointers and no buffer overruns. There is no null but optional types can be safely represented using unions with the None type.[4][14]
- Exception Safety - There are no runtime exceptions. All exceptions have defined semantics and they are always caught.[15]
- Concurrency Safety - The type system employs reference capabilities to ensure (at compile time) that your program is free of data races and deadlocks.[16][17][18][19]
Performance
[edit]- Lock-Free - By design, Pony avoids the need for traditional locking mechanisms, which eliminates the overhead and contention associated with locks.[5][12]
- Native Code - Pony is an ahead-of-time (AOT) compiled language. There is no interpreter or virtual machine[16][14]
- Concurrent Garbage Collection - Each actor's heap is collected separately and concurrently, avoiding the need to "stop the world" for global collection.[9][10]
Examples
[edit]A few examples of idiomatic Pony follow.
Hello World
[edit]In Pony, instead of a main function, there is a main actor. The creation of this actor serves as the entry point into the Pony program.[4][15]
actor Main
new create(env: Env) =>
env.out.print("Hello, world!")
There are no global variables in Pony, everything must be contained within an instance of a class or an actor.[12] As such, even the environment that allows for printing to stdout is passed as a parameter.
References
[edit]- ^ "Creator of Pony". Google Scholar.
- ^ "First public release". GitHub. 28 April 2015.
- ^ "Ponyc/LICENSE at main · ponylang/Ponyc". GitHub.
- ^ a b c Allen 2024.
- ^ a b c Alex Lashkov (26 July 2023). "The New Wave of Programming Languages: Pony, Zig, Crystal, Vlang, and Julia". Hackernoon. Retrieved 24 December 2024.
- ^ Sylvan Clebsch; Juliana Franco; Sophia Drossopoulou (12 October 2017). "Ownership and Reference Counting Based Garbage Collection in the Actor World". Proc. ACM Program. Lang. 1 (OOPSLA): 72:1–72:28. doi:10.1145/3133896. Retrieved 24 December 2024.
- ^ "Introduction to the Pony Programming Language". LinkedIn. Society 5 Solutions. 15 October 2024. Retrieved 28 December 2024.
- ^ Daniel Caccamo (2018). "GoA: Actors with Locally Managed Memory for Go". UWSpace. Retrieved 28 December 2024.
- ^ a b Charles Humble (14 March 2016). "Using the Actor-model Language Pony for FinTec". InfoQ. Retrieved 24 December 2024.
- ^ a b Sophia Drossopoulou (14 September 2020). "Pony, Actors, Causality, Types, and Garbage Collection". InfoQ. Retrieved 24 December 2024.
- ^ "Team Pony". GitHub. Retrieved 28 December 2024.
- ^ a b c Kristoffer Grönlund (22 January 2018). Everyone gets a pony!. archive. Linux Conference Australia 2018 (LCA2018). Retrieved 28 December 2024.
- ^ https://www.ponylang.org/media/papers/fast-cheap.pdf
- ^ a b Ankush Thakur (21 December 2024). 12 New Programming Languages You Should Know. geekflare. Retrieved 3 January 2025.
- ^ a b MCStone 2023.
- ^ a b Mölle 2017.
- ^ Sean T Allen (30 May 2018). "Introduction to the Pony programming language". opensource. Retrieved 28 December 2024.
- ^ Sylvan Clebsch; Sophia Drossopoulou; Sebastian Blessing (October 2015). "Deny capabilities for safe, fast actors". In Elisa Gonzalez Boix, Philipp Haller, Alessandro Ricci, Carlos Varela (ed.). AGERE! 2015: Proceedings of the 5th International Workshop on Programming Based on Actors, Agents, and Decentralized Control. Pittsburgh, PA, USA: Association for Computing Machinery. pp. 1–12. doi:10.1145/2824815.2824816. ISBN 9781450339018.
{{cite conference}}
: CS1 maint: multiple names: editors list (link) - ^ John Mumm (19 March 2019). "Safely Sharing Data: Reference Capabilities in Pony". codemotion. Retrieved 28 December 2024.
Further reading
[edit]- Mölle, Andreas (Dec 2017). "Developing concurrent programs with Pony". Linux Magazine (205). ISSN 1536-4674.
- MCStone, Maverick (Dec 2023). Pony Playbook: Mastering the Basics of Concurrent Programming. Independently Published. ISBN 979-8870768175.
- Allen, Corby (Jul 2024). Pony Programming: The Complete Guide to Building High-Performance, Concurrent, and Secure Applications with Pony. Independently Published. ISBN 979-8332662072.