Pony (programming language)

Last updated
Pony
Main galloping.svg
Paradigm Actor model, Object-oriented, Imperative
Designed by Sylvan Clebsch [1]
First appeared28 April 2015;10 years ago (2015-04-28) [2]
Stable release
0.59.0 / April 26, 2025;26 days ago (2025-04-26)
Typing discipline strong, static, inferred, nominal, structural
Implementation language C
License BSD-2. [3]
Website www.ponylang.org
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] 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". [8] [9] [10] Sylvan Clebsch is the original creator of the language. [11] [12] It is now being maintained and developed by members of the Pony team. [13]

Contents

History

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. [14]

Language design

At its core, Pony is a systems language designed around safety and performance.

Safety

Performance

Examples

Hello World

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] [17]

actorMainnewcreate(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. [14] As such, even the environment that allows for printing to standard output is passed as a parameter. [14] [6]

References

  1. "Sylvan Clebsch". ACM .
  2. "First public release". GitHub . 28 April 2015.
  3. "Ponyc/LICENSE at main · ponylang/Ponyc". GitHub .
  4. 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
  5. 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
  6. 1 2 3 4 Allen 2024.
  7. "Introduction to Actor Model". adabeat. 8 August 2024. Retrieved 8 March 2025.
  8. 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.
  9. "Introduction to the Pony Programming Language". LinkedIn. Society 5 Solutions. 15 October 2024. Retrieved 28 December 2024.
  10. Daniel Caccamo (2018). "GoA: Actors with Locally Managed Memory for Go". UWSpace. Retrieved 28 December 2024.
  11. 1 2 Charles Humble (14 March 2016). "Using the Actor-model Language Pony for FinTec". InfoQ. Retrieved 24 December 2024.
  12. 1 2 Sophia Drossopoulou (14 September 2020). "Pony, Actors, Causality, Types, and Garbage Collection". InfoQ. Retrieved 24 December 2024.
  13. "Team Pony". GitHub . Retrieved 28 December 2024.
  14. 1 2 3 4 Kristoffer Grönlund (22 January 2018). Everyone gets a pony!. archive. Linux Conference Australia 2018 (LCA2018) . Retrieved 28 December 2024.
  15. John Mumm (19 March 2019). "Safely Sharing Data: Reference Capabilities in Pony". codemotion. Retrieved 28 December 2024.
  16. 1 2 Ankush Thakur (21 December 2024). 12 New Programming Languages You Should Know. geekflare. Retrieved 3 January 2025.
  17. 1 2 MCStone 2023.
  18. 1 2 Mölle 2017.
  19. Sean T Allen (30 May 2018). "Introduction to the Pony programming language". opensource. Retrieved 28 December 2024.
  20. 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)
  21. 1 2 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