Pony (programming language): Difference between revisions

Content deleted Content added
Cleaning up accepted Articles for creation submission (AFCH)
UGC in group blog - needs solid mainstream RS
Line 16:
}}
 
'''Pony''' (also referred to as '''ponylang''') is a [[Free software|free]] and [[open-source|open source]], object-oriented, [[actor model]], [[Capability-based security|capabilities-secure]], high performance programming language.{{Sfn|Allen|2024}}<ref name="hnoon">{{cite web |author=Alex Lashkov |date=26 July 2023 |title=The New Wave of Programming Languages: Pony, Zig, Crystal, Vlang, and Julia |url=https://hackernoon.com/the-new-wave-of-programming-languages-exploring-the-hidden-gems |access-date=24 December 2024 |website=Hackernoon}}</ref><ref name="adabeat">{{cite web | date=8 August 2024 |title=Introduction to Actor Model |url=https://adabeat.com/fp/introduction-to-actor-model/ |access-date=8 March 2025 |website=adabeat}}</ref> Pony's reference capabilities allow even mutable data to be safely [[Evaluation strategy#Call by reference|passed by reference]] between actors. [[Garbage collection (computer science)|Garbage collection]] is performed [[Concurrency (computer science)|concurrently]], per-actor, which eliminates the need to pause program execution or [[Tracing garbage collection#Stop-the-world vs. incremental vs. concurrent|"stop the world"]].<ref name="orca">{{cite journal |author1=Sylvan Clebsch | author2=Juliana Franco | author3=Sophia Drossopoulou |date=12 October 2017 |title=Ownership and Reference Counting Based Garbage Collection in the Actor World |url=https://dl.acm.org/doi/10.1145/3133896 |access-date=24 December 2024 |journal=Proc. ACM Program. Lang.| volume=1 | issue=OOPSLA | pages=72:1–72:28 | doi=10.1145/3133896}}</ref><ref name="soc5">{{cite web | publisher=Society 5 Solutions | date=15 October 2024 |title=Introduction to the Pony Programming Language |url=https://www.linkedin.com/pulse/introduction-pony-programming-language-society-5-solutions-llc-s3ppf |access-date=28 December 2024 |website=LinkedIn}}</ref><ref name="dcpony">{{Cite web| author=Daniel Caccamo| year= 2018| title = GoA: Actors with Locally Managed Memory for Go| url= https://uwspace.uwaterloo.ca/bitstreams/b7bb2925-6bd6-49ab-a9b3-bc7581139529/download| access-date=28 December 2024 |website=UWSpace}}</ref> Sylvan Clebsch is the original creator of the language.<ref name="pfintech">{{cite web | author=Charles Humble |date=14 March 2016 |title=Using the Actor-model Language Pony for FinTec |url=https://www.infoq.com/news/2016/03/pony-fintech/ |access-date=24 December 2024 |website=InfoQ}}</ref><ref name="pqc2020">{{cite web |author=Sophia Drossopoulou |date=14 September 2020 |title=Pony, Actors, Causality, Types, and Garbage Collection |url=https://www.infoq.com/presentations/pony-types-garbage-collection/ |access-date=24 December 2024 |website=InfoQ}}</ref> It is now being maintained and developed by members of the Pony team.<ref>{{cite web |title=Team Pony | website=[[GitHub]] |url=https://github.com/orgs/ponylang/people |access-date=28 December 2024}}</ref>
 
==History==
Line 24:
At its core, Pony is a systems language designed around safety and performance.
=== Safety ===
* [[Type safety]] - Pony is a type safe language.<ref name="hnoon"></ref><ref name="jmpony">{{cite web |author=John Mumm |date=19 March 2019 |title=Safely Sharing Data: Reference Capabilities in Pony |url=https://talks.codemotion.com/safely-sharing-data-reference-capabiliti |access-date=28 December 2024 |website=codemotion}}</ref>
* [[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.{{Sfn|Allen|2024}}<ref name="atpony">{{cite conference |author=Ankush Thakur |date=21 December 2024 | title=12 New Programming Languages You Should Know| url=https://geekflare.com/dev/new-programming-languages/| access-date=3 January 2025 |website=geekflare}}</ref>
* [[Exception safety]] - There are no runtime exceptions. All exceptions have defined semantics and are always caught.{{Sfn|MCStone|2023}}
Line 30:
 
=== Performance ===
* Lock-free - By design, Pony avoids the need for traditional locking mechanisms, which eliminates the overhead and contention associated with locks.<ref name="hnoon"></ref><ref name="kgpony"></ref>
* Native code - Pony is an [[ahead-of-time compilation|ahead-of-time compiled language]]. There is no interpreter or virtual machine{{Sfn|Mölle|2017}}<ref name="atpony"></ref>
* Concurrent garbage collection - Each actor's heap is collected separately and concurrently, avoiding the need to "stop the world" for global collection.<ref name="pfintech"></ref><ref name="pqc2020"></ref><ref name="soundness"></ref>