Pony (programming language)

Pony
ParadigmsActor model, object-oriented, imperative
Designed bySylvan Clebsch
First appeared28 April 2015; 11 years ago (2015-04-28)
Stable release
0.72.1 (Beta) / September 13, 2026; 45 days ago (2026-09-13)
Typing disciplinestrong, static, inferred, nominal, structural
Implementation languageC
LicenseBSD 2-clause.
Websitewww.ponylang.io
Influenced by
E
Influenced
Project Verona

Pony (also known as ponylang) is a object-oriented, actor model, capabilities-secure, high performance programming language. 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". Sylvan Clebsch is the original creator of the language. It is now being maintained and developed by members of the Pony team. It is free and open-source software with a BSD 2-clause license.

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.

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 a Pony program, as in this "Hello, World!" program.

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

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; Andy McNeil (October 2015). "Deny capabilities for safe, fast actors". In Gonzalez Boix, Elisa; Haller, Philipp; Ricci, Alessandro; Varela, Carlos (eds.). 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.
  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