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,462 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
|
Comment: Another missing citation here: "As such, even the environment that allows for printing to stdout is passed as a parameter." Caleb Stanford (talk) 06:24, 10 March 2025 (UTC)
Comment: Please fix the following: (1) The "Creator of Pony". ACM. reference is not formatted correctly. The title of the website is not "Creator of Pony". (2) "The result is he began development on Pony." This sentence can be removed, as it is implied. (3) "capabilities-secure" should likely have a wikilink. (4) "A few examples of idiomatic Pony follow" There is only one, also the "idiomatic" needs a citation or the word can just be removed. (5) "influenced" and "influenced by" are missing a citation. Caleb Stanford (talk) 06:23, 10 March 2025 (UTC)
Comment: Some parts of the critique seem opinionated. For instance, "stop the world" is a phrase from the references, used when referring to GCs, and originally placed into the lead by a previous editor. As this is still a draft, which has not been reviewed, it looks not to be a problem to correct errors, violations of rules, or grammar. When it comes to matters of opinion or aesthetics, however, that appears to be more problematic or something to have been addressed in talk.Wukuendo (talk) 16:00, 9 March 2025 (UTC)
Comment: I do believe that the topic is potentially notable. While it's mostly an academic language (with some not-so-well-cited papers), the paper "Deny capabilities for safe, fast actors" is quite well-cited. The developer is a real researcher at Microsoft Research, and the language has 5.8K stars on GitHub. The sources here are of mixed quality but there are some real ones.However I think the article draft needs some work. What is "stop the world" in the lead? The references need a bit of cleanup. "Creator of Pony, Google Scholar" is not something to include as a reference. "Deny Capabilities for Safe, Fast Actors" is listed twice, once as a plain PDF. InfoQ sources probably OK. Can you fix these things and try again? Caleb Stanford (talk) 18:10, 8 March 2025 (UTC)
![]() | |
Paradigm | Actor model, Object-oriented, Imperative |
---|---|
Designed by | Sylvan Clebsch[1] |
First appeared | 28 April 2015[2] |
Stable release | 0.58.13
/ March 9, 2025 |
Typing discipline | strong, static, inferred, nominal, structural |
Implementation language | C |
License | BSD-2.[3] |
Website | www |
Influenced by | |
E[4] | |
Influenced | |
Project Verona[5] |
Pony (also referred to as ponylang) is a free and open source, object-oriented, actor model, capabilities-secure, high performance programming language.[6][7][8] Pony's reference capabilities allow even mutable data to be safely passed by reference between actors. Garbage collection is performed concurrently, per-actor, which eliminates the need to pause program execution or "stop the world".[9][10][11] Sylvan Clebsch is the original creator of the language.[12][13] It is now being maintained and developed by members of the Pony team.[14]
History
[edit]The language was created by Sylvan Clebsch, while a PhD 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.[15]
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.[7][16]
- 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.[6][17]
- Exception safety - There are no runtime exceptions. All exceptions have defined semantics and are always caught.[18]
- Concurrency safety - The type system employs reference capabilities to ensure (at compile time) that there are no data races nor deadlocks.[19][20][21][22]
Performance
[edit]- Lock-free - By design, Pony avoids the need for traditional locking mechanisms, which eliminates the overhead and contention associated with locks.[7][15]
- Native code - Pony is an ahead-of-time compiled language. There is no interpreter or virtual machine[19][17]
- Concurrent garbage collection - Each actor's heap is collected separately and concurrently, avoiding the need to "stop the world" for global collection.[12][13][22]
Examples
[edit]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.[6][18]
actor Main
new create(env: Env) =>
env.out.print("Hello, world!")
There are no global variables in Pony, meaning everything must be contained within an instance of a class or an actor.[15] As such, even the environment that allows for printing to standard output is passed as a parameter.[15][6]
References
[edit]- ^ "Sylvan Clebsch". ACM.
- ^ "First public release". GitHub. 28 April 2015.
- ^ "Ponyc/LICENSE at main · ponylang/Ponyc". GitHub.
- ^ Daniele BonettaLuca; Svizzera italiana; Stefan Marr; Walter Binder (2 November 2016). "GEMS: Shared-Memory Parallel Programming for Node.js". oracle. Retrieved 10 March 2025.
Pony is itself inspired by the design of E's programming model
- ^ Liam Tung. "Microsoft opens up Rust-inspired Project Verona programming language on GitHub". ZDNet.
Project Verona, which also borrows concepts from Cyclone, a "safe dialect of C" and Pony, which has key contributors from Microsoft Research
- ^ a b c d 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.
- ^ "Introduction to Actor Model". adabeat. 8 August 2024. Retrieved 8 March 2025.
- ^ 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 d Kristoffer Grönlund (22 January 2018). Everyone gets a pony!. archive. Linux Conference Australia 2018 (LCA2018). Retrieved 28 December 2024.
- ^ John Mumm (19 March 2019). "Safely Sharing Data: Reference Capabilities in Pony". codemotion. Retrieved 28 December 2024.
- ^ 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) - ^ a b Juliana Franco; Sylvain Clebsch; Sophia Drossopoulou; Jan Vitek; Tobias Wrigstad (9 March 2018). "Soundness of a Concurrent Collector for Actors" (PDF). imperial. Retrieved 8 March 2025.
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.